《学生选课系统C++新修订》由会员分享,可在线阅读,更多相关《学生选课系统C++新修订(15页珍藏版)》请在金锄头文库上搜索。
1、目目 录录 一、需求分析 .11 二、程序的主要功能 .11 三、程序运行平台 .11 四、系统总框架图 .11 五、程序类的说明 .11 六、模块分析 .13 七、比较有特色的函数 .14 八、存在的不足与对策 .15 九、程序源代码 .15 2 一、需求分析一、需求分析 选课在大学生活中是必不可少的, 为了能让学生们更加便利的查看并选择各 种课程,自然就需要一个网络结构,建立一个选课系统,这样可以方便管理学生 和课程等内容。 二、程序的主要功能二、程序的主要功能 1、添加功能: 添加课程以及学生的各类信息保存到一个文件中。 2、删除功能: 能够对一个学生或课程的信息按照编号进行删除。 3、
2、浏览功能: 可以查看学生信息课程信息以及学生的选课信息。 4、选课功能: 学生可以通过输入自己的学号进入选择界面,选择各种不同的课程。 5、修改功能: 用于修改错误的学生信息或者课程信息。 三、程序运行平台三、程序运行平台 Windows8.1 操作系统 VC+6.0 四、系统总框架图四、系统总框架图 系统总框架图 五、程序类的说明五、程序类的说明 student 类的声明类的声明 class student public: double xuehao; 主 函 数 信 息 录 入 信 息 浏 览 选 择 课 程 删 除 信 息 修 改 信 息 退 出 程 序 3 char name100;
3、char major100; char coursename100; course 类的声明类的声明 class course public: double coursenum; char coursename50; char coursetapy50; double xuefen; double xueshi; char courseteacher50; 六、模块分析六、模块分析 1. 信息录入模块 按照提示输入所需数字,进入添加界面后添加课程以及学生的各类信息,最终保存到 一个文件中,用以之后读取。 2. 信息浏览模块 可以用来查看学生信息和课程信息以及学生的选课信息。 3. 修改信息模块
4、 用于修改错误的学生信息或者课程信息。 4. 删除信息模块 能够对一个学生或课程的信息按照编号进行删除。 5. 选择课程模块 学生可以通过输入自己的学号进入选择界面,选择各种不同的课程。 七、比较有特色的函数七、比较有特色的函数 void selectCoures()/选课函数 student stu;/用于保存将要选课的那名同学的信息 int countCoures=0;/用来统计该学生选了多少门课程 int countStudent=0;/用来统计学生的个数 loop: coutendlm_xuehao; ifstream is(studentInfo.text,ios:binary);
5、is.seekg(0,ios:beg); while(!is.peek() is.read(char *)( /从“studentInfo.text”文件中一次读取 学生的信息 4 if(m_xuehao = stu.xuehao) loob: countStudent+; cout请输入学号为m_xuehaom_coursenum; ifstream inCourse(courses.text,ios:binary); /用于从courses.text文件中 找出该同学想选择的课程信息 inCourse.seekg(0,ios:beg); while(!inCourse.eof() /选课的
6、核心代码 course cus;/用于此同学将要选择的课程信息 inCourse.read(char *)( if(m_coursenum = cus.coursenum) /若找到那门课程则选它 countCoures+; strcpy(stu.coursename,cus.coursename); ofstream outStu(selectCourseResult.text,ios:binary|ios:app);/现将选课的 同学信息放入选课结果的文件中 outStu.write(char *)( outStu.close(); cout学号为m_xuehao成功选了课程号为m_cou
7、rsenum的 课程!2) cout同学:你选择的课程已经超过countCoures门了!endl; break; if(countCoures = 0) cout没有这门课程,还要继续选择其他课程吗 y/n?ch; if(y=ch)|(Y=ch) goto loob; else break; inCourse.close(); 5 if(countStudent=0) cout没有这个学生,是否重新输入 y/n?ch; if(y=ch)|(Y=ch) goto loop; is.close(); menu(); 八、存在的不足与对策八、存在的不足与对策 由于设计者水平有限及时间等方面的原因,
8、该系统的功能比较简单,只能输入较少的 课程以及学生信息。些许不足请老师多多谅解。今后会学习更多的编程技巧,不断的提高程 序设计水平。 九、程序源代码九、程序源代码 #include #include #include #include #include #include using namespace std; void menu() /主菜单 coutendl; cout 学生选课系统 endl; cout 1. 信息录入 endl; cout 2. 信息浏览 endl; cout 3. 选择课程 endl; cout 4. 删除信息 endl; cout 5. 修改信息 endl; cou
9、t 6. 退出程序 endl; class student public: double xuehao; char name100; char major100; char coursename100; 6 void set() /学生信息录入 student stu; coutendl; coutstu.xuehao; coutstu.name; coutstu.major; ofstream out(studentInfo.text,ios:app|ios:binary); out.write(char *)( out.close(); menu(); void checkstudent(
10、) /查询学生信息 student stu; cout学生学号t 学生姓名t 所学专业endl; ifstream is(studentInfo.text,ios:binary); while(!is.peek() is.read(char *)( cout stu.xuehaottstu.namettstu.majorttendl; is.close(); menu(); void cancleStudent() /删除学生信息 string xueHaoNum,line,xuehao; ifstream fin(studentInfo.text.text); fstream outfile
11、(studentInfo.text.text,ios:trunc|ios:out); /打开一个文件进行写操作和使同名 文件被删除 coutendl; coutxueHaoNum; while(!fin.eof() getline(fin,line); istringstream stream(line); /串流输入 xueHaoNum = line.substr(0,line.find( ,0); 7 if(xuehao != xueHaoNum) outfilelineendl; outfile.close(); fin.close(); fstream f(studentInfo.te
12、xt,ios:trunc|ios:out); /打开一个文件进行写操作和使同名文件被删 除 ifstream outf(studentInfo.text); foutf.rdbuf(); outf.close(); f.close(); coutendl; menu(); void changestudent() /修改学生信息 student stu; int mark; coutendl; coutxuehao; ifstream is(studentInfo.text,ios:binary); for(int i=0;!is.eof();i+) is.seekg(48*i); /对输入文件定位,第一个参数是偏移量,第二个参数是基地址 is.read(char *)( if(stu.xuehao=xuehao) coutstu.name; coutstu.major; cout修改完毕!endlendl; mark=48*i; menu(); break; is.close(); if(stu.xuehao!=xuehao) cout没有这个学生!endlendl; menu(); 8 else ofstream os(studentInfo.text,