学生选课系统C++(共15页).doc

上传人:飞****2 文档编号:13519304 上传时间:2022-04-29 格式:DOC 页数:15 大小:54.50KB
返回 下载 相关 举报
学生选课系统C++(共15页).doc_第1页
第1页 / 共15页
学生选课系统C++(共15页).doc_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《学生选课系统C++(共15页).doc》由会员分享,可在线阅读,更多相关《学生选课系统C++(共15页).doc(15页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上目 录一、需求分析选课在大学生活中是必不可少的,为了能让学生们更加便利的查看并选择各种课程,自然就需要一个网络结构,建立一个选课系统,这样可以方便管理学生和课程等内容。二、程序的主要功能1、添加功能:添加课程以及学生的各类信息保存到一个文件中。2、删除功能:能够对一个学生或课程的信息按照编号进行删除。3、浏览功能:可以查看学生信息课程信息以及学生的选课信息。4、选课功能:学生可以通过输入自己的学号进入选择界面,选择各种不同的课程。5、修改功能:用于修改错误的学生信息或者课程信息。三、程序运行平台Windows8.1操作系统VC+6.0四、系统总框架图主 函 数信息录入

2、信息浏览选择课程删除信息修改信息退出程序 系统总框架图五、程序类的说明 student类的声明class student public:double xuehao; char name100; char major100; char coursename100; course类的声明class coursepublic:double coursenum;char coursename50; char coursetapy50;double xuefen; double xueshi; char courseteacher50; 六、模块分析1. 信息录入模块按照提示输入所需数字,进入添加界面后

3、添加课程以及学生的各类信息,最终保存到一个文件中,用以之后读取。2. 信息浏览模块可以用来查看学生信息和课程信息以及学生的选课信息。3. 修改信息模块用于修改错误的学生信息或者课程信息。4. 删除信息模块能够对一个学生或课程的信息按照编号进行删除。5. 选择课程模块学生可以通过输入自己的学号进入选择界面,选择各种不同的课程。七、比较有特色的函数void selectCoures()/选课函数 student stu;/用于保存将要选课的那名同学的信息int countCoures=0;/用来统计该学生选了多少门课程int countStudent=0;/用来统计学生的个数loop:couten

4、dlm_xuehao;ifstream is(studentInfo.text,ios:binary);is.seekg(0,ios:beg);while(!is.peek()is.read(char *)(&stu),sizeof(stu); /从“studentInfo.text”文件中一次读取学生的信息 if(m_xuehao = stu.xuehao)loob:countStudent+; cout请输入学号为m_xuehaom_coursenum;ifstream inCourse(courses.text,ios:binary); /用于从courses.text文件中找出该同学想

5、选择的课程信息inCourse.seekg(0,ios:beg);while(!inCourse.eof()/选课的核心代码course cus;/用于此同学将要选择的课程信息inCourse.read(char *)(&cus),sizeof(cus); if(m_coursenum = cus.coursenum) /若找到那门课程则选它countCoures+;strcpy(stu.coursename,cus.coursename);ofstream outStu(selectCourseResult.text,ios:binary|ios:app);/现将选课的同学信息放入选课结果的

6、文件中outStu.write(char *)(&stu),sizeof(stu);outStu.close();cout学号为m_xuehao成功选了课程号为m_coursenum的课程!2)cout同学:你选择的课程已经超过countCoures门了!endl;break;if(countCoures = 0)cout没有这门课程,还要继续选择其他课程吗y/n?ch;if(y=ch)|(Y=ch)goto loob;elsebreak;inCourse.close();if(countStudent=0)cout没有这个学生,是否重新输入y/n?ch;if(y=ch)|(Y=ch)goto

7、 loop;is.close();menu(); 八、存在的不足与对策由于设计者水平有限及时间等方面的原因,该系统的功能比较简单,只能输入较少的课程以及学生信息。些许不足请老师多多谅解。今后会学习更多的编程技巧,不断的提高程序设计水平。九、程序源代码#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.

8、 删除信息 endl;cout 5. 修改信息 endl;cout 6. 退出程序 endl;class student public:double xuehao; char name100; char major100; char coursename100;void set() /学生信息录入student stu;coutendl;coutstu.xuehao;coutstu.name;coutstu.major;ofstream out(studentInfo.text,ios:app|ios:binary);out.write(char *)(&stu),sizeof(stu); o

9、ut.close(); menu(); void checkstudent() /查询学生信息student stu;cout学生学号t学生姓名t所学专业endl;ifstream is(studentInfo.text,ios:binary); while(!is.peek()is.read(char *)(& stu),sizeof(stu); cout stu.xuehaottstu.namettstu.majorttendl; is.close();menu();void cancleStudent() /删除学生信息string xueHaoNum,line,xuehao; ifst

10、ream fin(studentInfo.text.text); fstream outfile(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);if(xuehao != xueHaoNum) outfilelineendl; outfile.close

11、();fin.close();fstream f(studentInfo.text,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(

12、);i+)is.seekg(48*i); /对输入文件定位,第一个参数是偏移量,第二个参数是基地址is.read(char *)(&stu),sizeof(stu); if(stu.xuehao=xuehao)coutstu.name;coutstu.major;cout修改完毕!endlendl;mark=48*i;menu();break;is.close();if(stu.xuehao!=xuehao)cout没有这个学生!endlendl;menu();elseofstream os(studentInfo.text,ios:in|ios:binary); os.seekp(mark)

13、;os.write(char *)(&stu),sizeof(stu); os.close(); ;class course /课程类public:double coursenum; char coursename50; char coursetapy50; double xuefen; double xueshi; char courseteacher50; void set() /课程信息录入course cus; coutcus.coursenum;coutcus.coursename;coutcus.coursetapy;coutcus.xuefen;coutcus.xueshi;co

14、utcus.courseteacher;ofstream os(courses.text,ios:binary|ios:app);os.write(char *)(&cus),sizeof(cus); os.close(); menu();void checkcourse() /浏览课程信息coutendl;ifstream is(courses.text,ios:binary); cout课程编码 课程名称 课程类型 课程学分 课程学时 主讲教师endl;course cus;/临时保存课程信息while(!is.peek() /检测文件结束 is.read(char*)(&cus),siz

15、eof(cus); cout cus.coursenumt cus.coursenamet cus.coursetapyt cus.xuefent cus.xueshi cus.courseteacherendl; /setw()是控制输入的宽度is.close();menu();void canclecourse() /删除课程信息string coursenum,line,course; ifstream fin(courses.text); fstream outfile(courses.text,ios:trunc|ios:out);/ 打开一个文件进行写操作和使同名文件被删除cout

16、endl;coutcoursenum; while(!fin.eof() getline(fin,line); istringstream stream(line); /串流输入coursenum = line.substr(0,line.find( ,0);if(course != coursenum) outfilelineendl; outfile.close();fin.close();fstream f(courses.text,ios:trunc|ios:out); /打开一个文件进行写操作和使同名文件被删除ifstream outf(courses.text); foutf.rd

17、buf();outf.close();f.close(); coutendl;menu();void changecourse() /修改课程信息course cus;int mark;coutendl;coutcoursenum;ifstream is(courses.text,ios:binary); for(int i=0;!is.eof();i+)is.seekg(28*i); /对输入文件定位,第一个参数是偏移量,第二个参数是基地址is.read(char *)(& cus),sizeof(cus); if(cus.coursenum=coursenum)coutcus.course

18、name;coutcus.coursetapy;coutcus.xuefen;coutcus.xueshi;coutcus.courseteacher;cout修改完毕!endlendl;mark=28*i;menu();break;is.close();if(cus.coursenum!=coursenum)cout没有这门课程!endlendl;menu();else ofstream os(courses.text,ios:in|ios:binary); os.seekp(mark);os.write(char *)(& cus),sizeof(cus); os.close();void

19、 selectCoures()/选课函数 student stu;int countCoures=0;int countStudent=0;loop:coutendlm_xuehao;ifstream is(studentInfo.text,ios:binary);is.seekg(0,ios:beg);while(!is.peek()is.read(char *)(&stu),sizeof(stu); /从“studentInfo.text”文件中一次读取学生的信息 if(m_xuehao = stu.xuehao)loob:countStudent+; cout请输入学号为m_xuehao

20、m_coursenum;ifstream inCourse(courses.text,ios:binary); /用于从courses.text文件中找出该同学想选择的课程信息inCourse.seekg(0,ios:beg);while(!inCourse.eof()/选课核心代码course cus;/用于此同学将要选择的课程信息inCourse.read(char *)(&cus),sizeof(cus); if(m_coursenum = cus.coursenum) countCoures+;strcpy(stu.coursename,cus.coursename);ofstream

21、 outStu(selectCourseResult.text,ios:binary|ios:app);/现将选课的同学信息放入选课结果的文件中outStu.write(char *)(&stu),sizeof(stu);outStu.close();cout学号为m_xuehao成功选了课程号为m_coursenum的课程!2)cout同学:你选择的课程已经超过countCoures门了!endl;break;if(countCoures = 0)cout没有这门课程,还要继续选择其他课程吗y/n?ch;if(y=ch)|(Y=ch)goto loob;elsebreak;inCourse.

22、close();if(countStudent=0)cout没有这个学生,是否重新输入y/n?ch;if(y=ch)|(Y=ch)goto loop;is.close();menu();void scanResult()/查询选课结果student stu;/用于保存将要选课的那名同学的信息cout学生学号t学生姓名t所学专业t选课名称endl;ifstream is(selectCourseResult.text,ios:binary);for(int i=0;!is.peek();i+) is.read(char*)(&stu),sizeof(stu);coutstu.xuehaottst

23、u.namettstu.majorttstu.coursenameendl; is.close();menu(); void set() /信息录入菜单 coutendl;cout1. 录入学生信息endl;cout2. 录入课程信息endl;cout3. 返回前面菜单endlendl; student stu;course cus;int choose;coutchoose;switch(choose)case 1: stu.set();break; case 2: cus.set();break; case 3: menu();break;default: cout没有这个选项,请重新输入

24、,谢谢!endl;set();break;void check() /查询信息 coutendl;cout1. 查询学生信息endl;cout2. 查询课程信息endl;cout3. 查询学生选课结果信息endl;cout4. 返回主要菜单endlendl;coutchoose;student stu;course cus;switch(choose)case 1: stu.checkstudent();break; case 2: cus.checkcourse();break; case 3: scanResult();break; case 4: menu();break;void ca

25、ncle() /删除信息coutendl;cout1. 删除学生信息endl;cout2. 删除课程信息endl;cout3. 返回主要菜单endlendl;coutchoose;switch(choose)case 1: stu.cancleStudent();break; case 2: cus.canclecourse();break; case 3: menu();break;default: cout没有这个选项,请重新输入,谢谢!endl;break;void change() /修改信息coutendl;cout1. 修改学生信息endl;cout2. 修改课程信息endl;co

26、ut3. 返回主要菜单endlendl;coutchoose;switch(choose)case 1: stu.changestudent();break; case 2: cus.changecourse();break; case 3: coutendl;menu();break;default: cout没有这个选项,请重新输入,谢谢!endl;change();int main() /主函数system(color 3f);menu();do coutendlchoose;switch(choose)case 1: set();break; case 2: check();break; case 3: selectCoures();break; case 4: cancle();break; case 5: change();break; case 6: exit(1);while(1);return 0;专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com