学生选课系统C++知识_第1页
学生选课系统C++知识_第2页
学生选课系统C++知识_第3页
学生选课系统C++知识_第4页
学生选课系统C++知识_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、需求分析2.二、程序的主要功能2.三、程序运行平台2.四、系统总框架图2.五、程序类的说明2.六、模块分析3.七、比较有特色的函数3.八、存在的不足与对策5.九、程序源代码5.、需求分析选课在大学生活中是必不可少的,为了能让学生们更加便利的查看并选择各种课程,自然就需要一个网络结构,建立一个选课系统,这样可以方便管理学生和课程等内容。二、程序的主要功能1、添加功能:添加课程以及学生的各类信息保存到一个文件中。2、删除功能:能够对一个学生或课程的信息按照编号进行删除。3、浏览功能:可以查看学生信息课程信息以及学生的选课信息。4、选课功能:学生可以通过输入自己的学号进入选择界面,选择各种不同的

2、课程。5、修改功能:用于修改错误的学生信息或者课程信息。三、程序运行平台Windows8.1操作系统VC+6.0四、系统总框架图系统总框架图五、程序类的说明?student类的声明classstudentpublic:doublexuehao;charname100;charmajor100;charcoursename100;?course类的声明classcoursepublic:doublecoursenum;charcoursename50;charcoursetapy50;doublexuefen;doublexueshi;charcourseteacher50;六、模块分析1. 信

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

4、统计学生的个数loop:cout<<endl<<"请输入你的学生学号:"doublem_xuehao,m_coursenum;剂用学号和课程号分别找出哪位同学选了哪门课cin>>m_xuehao;ifstreamis("studentInfo.text",ios:binary);is.seekg(0,ios:beg);while(!is.peek()is.read(char*)(&stu),sizeof(stu);/从“studentInfo.text”文件中一次读取学生的信息if(m_xuehao=stu.x

5、uehao)loob:countStudent+;cout<<"请输入学号为"<<m_xuehao<<"的学生想要选择的课程编码(1001-9999):"cin>>m_coursenum;ifstreaminCourse("courses.text",ios二binary);用于从"courses.text'文件中找出该同学想选择的课程信息inCourse.seekg(0,ios:beg);while(!inCourse.eof()/选课的核心代码coursecus;/

6、用于此同学将要选择的课程信息inCourse.read(char*)(&cus),sizeof(cus);if(m_coursenum=cus.coursenum)/若找到那门课程则选它countCoures+;strcpy(stu.coursename,cus.coursename);ofstreamoutStu("selectCourseResult.text”,ios:binary|ios二app);/®将选课的同学信息放入选课结果的文件中outStu.write(char*)(&stu),sizeof(stu);outStu.close();cout

7、<<"学号为"<<m_xuehao<<"成功选了课程号为"<<m_coursenum<<"的课程!"<<endl;if(countCoures>2)cout<<"同学:你选择的课程已经超过"<<countCoures<<"门了!"<<endl;break;if(countCoures=0)cout<<"没有这门课程,还要继续选择其他课程吗y/n?&q

8、uot;<<endl;charch;cin>>ch;if('y'=ch)|('Y'=ch)gotoloob;elsebreak;inCourse.close();if(countStudent=0)cout<<"没有这个学生,是否重新输入y/n?"<<endl;charch;cin>>ch;if('y'=ch)|('Y'=ch)gotoloop;is.close();menu();八、存在的不足与对策由于设计者水平有限及时间等方面的原因,该系统的功能比

9、较简单,只能输入较少的课程以及学生信息。些许不足请老师多多谅解。今后会学习更多的编程技巧,不断的提高程序设计水平。九、程序源代码#include<iostream>#include<ctype.h>#include<string>#include<iomanip>#include<fstream>#include<sstream>usingnamespacestd;voidmenu()/主菜单cout<<endl;cout<<"学生选课系统"<<endl;cout&l

10、t;<"1.信息录入"<<endl;cout<<"2.信息浏览"<<endl;cout<<"3.选择课程"<<endl;cout<<"4.删除信息"<<endl;cout<<"5.修改信息"<<endl;cout<<"6.退出程序"<<endl;classstudentpublic:doublexuehao;charname100;char

11、major100;charcoursename100;voidset()/学生信息录入studentstu;cout<<endl;cout<<"请输入学生学号:"cin>>stu.xuehao;cout<<"请输入学生姓名:"cin>>;cout<<"请输入学生专业:"cin>>stu.major;ofstreamout("studentInfo.text",ios:app|ios:binary);out.write

12、(char*)(&stu),sizeof(stu);out.close();menu();voidcheckstudent()/查询学生信息studentstu;cout<<"学生学号t学生姓名t所学专业"<<endl;ifstreamis("studentInfo.text",ios:binary);while(!is.peek()is.read(char*)(&stu),sizeof(stu);cout<<""<<stu.xuehao<<"tt&

13、quot;<<<<"tt"<<stu.major<<"tt"<<endl;is.close();menu();voidcancleStudent()/删除学生信息stringxueHaoNum,line,xuehao;ifstreamfin("studentInfo.text.text");fstreamoutfile("studentInfo.text.text",ios:trunc|ios:out);/打开一个文件进行写操作和使同名文件

14、被删除cout<<endl;cout<<"请输入您要删除学生的学号:"cin>>xueHaoNum;while(!fin.eof()getline(fin,line);istringstreamstream(line);/串流输入xueHaoNum=line.substr(0,line.find("",0);if(xuehao!=xueHaoNum)outfile<<line<<endl;outfile.close();fin.close();fstreamf("studentInfo

15、.text",ios:trunc|ios:out);/打开一个文件进行写操作和使同名文件被删除ifstreamoutf("studentInfo.text");f<<outf.rdbuf();outf.close();f.close();cout<<endl;menu();voidchangestudent()/修改学生信息studentstu;intmark;cout<<endl;cout<<"请输入需要修改信息的学生学号"doublexuehao;cin>>xuehao;ifstr

16、eamis("studentInfo.text",ios:binary);for(inti=0;!is.eof();i+)is.seekg(48*i);/对输入文件定位,第一个参数是偏移量,第二个参数是基地址is.read(char*)(&stu),sizeof(stu);if(stu.xuehao=xuehao)cout<<"请输入要修改的学生姓名"cin>>;cout<<"请输入要修改的学生专业"cin>>stu.major;cout<<"

17、;修改完毕!"<<endl<<endl;mark=48*i;menu();break;is.close();if(stu.xuehao!=xuehao)cout<<"没有这个学生!"<<endl<<endl;menu();elseofstreamos("studentInfo.text",ios:in|ios:binary);os.seekp(mark);os.write(char*)(&stu),sizeof(stu);os.close();classcourse/课程类pu

18、blic:doublecoursenum;charcoursename50;charcoursetapy50;doublexuefen;doublexueshi;charcourseteacher50;voidset()/课程信息录入coursecus;cout<<"请输入课程编码:"cin>>cus.coursenum;cout<<"请输入课程名称:"cin>>cus.coursename;cout<<"请输入课程类型:"cin>>cus.coursetapy;

19、cout<<"请输入课程学分:"cin>>cus.xuefen;cout<<"请输入课程学时:"cin>>cus.xueshi;cout<<"请输入主讲教师:"cin>>cus.courseteacher;ofstreamos("courses.text",ios:binary|ios:app);os.write(char*)(&cus),sizeof(cus);os.close();menu();voidcheckcourse()/浏

20、览课程信息cout<<endl;ifstreamis("courses.text",ios:binary);cout<<"课程编码课程名称课程类型课程学分课程学时主讲教师"<<endl;coursecus;临时保存课程信息while(!is.peek()/检测文件结束is.read(char*)(&cus),sizeof(cus);cout<<""<<cus.coursenum<<"t"<<cus.coursename<

21、;<"t"<<cus.coursetapy<<"t"<<cus.xuefen<<"t"<<cus.xueshi<<""<<cus.courseteacher<<endl;setw()是控制输入的宽度is.close();menu();voidcanclecourse()/删除课程信息stringcoursenum,line,course;ifstreamfin("courses.text");f

22、streamoutfile("courses.text",ios:trunc|ios:out);/删除cout<<endl;cout<<"请输入您要删除课程的编码:"cin>>coursenum;while(!fin.eof()getline(fin,line);istringstreamstream(line);/串流输入coursenum=line.substr(0,line.find("",0);if(course!=coursenum)outfile<<line<<e

23、ndl;outfile.close();fin.close();fstreamf("courses.text",ios:trunc|ios:out);/打开一个文件进行写操作和使同名文件被删除ifstreamoutf("courses.text");f<<outf.rdbuf();outf.close();f.close();cout<<endl;menu();打开一个文件进行写操作和使同名文件被个文件进行写操作和使同名文件被删除voidchangecourse()/修改课程信息coursecus;intmark;cout<

24、<endl;cout<<"请输入要修改课程信息的编码"doublecoursenum;cin>>coursenum;ifstreamis("courses.text",ios:binary);for(inti=0;!is.eof();i+)is.seekg(28*i);/对输入文件定位,第一个参数是偏移量,第二个参数是基地址is.read(char*)(&cus),sizeof(cus);if(cus.coursenum=coursenum)cout<<"请输入要修改的课程名称"cin

25、>>cus.coursename;cout<<"请输入要修改的课程类型"cin>>cus.coursetapy;cout<<"请输入要修改的课程学分"cin>>cus.xuefen;cout<<"请输入要修改的课程学时"cin>>cus.xueshi;cout<<"请输入要修改的主讲教师"cin>>cus.courseteacher;cout<<"修改完毕!"<<e

26、ndl<<endl;mark=28*i;menu();break;is.close();if(cus.coursenum!=coursenum)cout<<"没有这门课程!"<<endl<<endl;menu();elseofstreamos("courses.text",ios:in|ios:binary);os.seekp(mark);os.write(char*)(&cus),sizeof(cus);os.close();voidselectCoures()/选课函数studentstu;in

27、tcountCoures=0;intcountStudent=0;loop:cout<<endl<<"请输入你的学生学号:"doublem_xuehao,m_coursenum;/利用学号和课程号分别找出哪位同学选了哪门课cin>>m_xuehao;ifstreamis("studentInfo.text",ios:binary);is.seekg(0,ios:beg);while(!is.peek()is.read(char*)(&stu),sizeof(stu);/从“studentInfo.text”文件

28、中一次读取学生的信息if(m_xuehao=stu.xuehao)loob:countStudent+;cout<<"请输入学号为"<<m_xuehao<<"的学生想要选择的课程编码(1001-9999):"cin>>m_coursenum;ifstreaminCourse("courses.text",ios:binary);/用于从"courses.text"文件中找出该同学想选择的课程信息inCourse.seekg(0,ios:beg);while(!inCo

29、urse.eof()/选课核心代码coursecus;用于此同学将要选择的课程信息inCourse.read(char*)(&cus),sizeof(cus);if(m_coursenum=cus.coursenum)countCoures+;strcpy(stu.coursename,cus.coursename);ofstreamoutStu("selectCourseResult.text",ios:binary|ios:app);/现将选课的同学信息放入选课结果的文件中outStu.write(char*)(&stu),sizeof(stu);out

30、Stu.close();cout<<"学号为"<<m_xuehao<<"成功选了课程号为"<<m_coursenum<<"的课程!"<<endl;if(countCoures>2)cout<<"同学:你选择的课程已经超过"<<countCoures<<"门了!"<<endl;break;if(countCoures=0)cout<<"没有这门课程,还

31、要继续选择其他课程吗y/n?"<<endl;charch;cin>>ch;if('y'=ch)|('Y'=ch)gotoloob;elsebreak;inCourse.close();if(countStudent=0)cout<<"没有这个学生,是否重新输入y/n?"<<endl;charch;cin>>ch;if('y'=ch)|('Y'=ch)gotoloop;is.close();menu();voidscanResult()/查询选

32、课结果studentstu;用于保存将要选课的那名同学的信息cout<<"学生学号t学生姓名t所学专业t选课名称"<<endl;ifstreamis("selectCourseResult.text",ios:binary);for(inti=0;!is.peek();i+)is.read(char*)(&stu),sizeof(stu);cout<<stu.xuehao<<"tt"<<<<"tt"<<stu

33、.major<<"tt"<<stu.coursename<<endl;is.close();menu();voidset()/信息录入菜单cout<<endl;cout<<"1.录入学生信息"<<endl;cout<<"2.录入课程信息"<<endl;cout<<"3.返回前面菜单"<<endl<<endl;studentstu;coursecus;intchoose;cout<

34、<"请输入选项序号:"cin>>choose;switch(choose)case 1: stu.set();break;case 2: cus.set();break;case 3: menu();break;default:cout<<"没有这个选项,请重新输入,谢谢!"<<endl;set();break;voidcheck()/查询信息1cout<<endl;cout<<"1.查询学生信息"<<endl;cout<<"2.查询课

35、程信息"<<endl;cout<<"3.查询学生选课结果信息"<<endl;cout<<"4.版Ini)竹紧的"<<endl<<endl;心M_L女小cout<<"请输入选项序号口p;intchoose;cin>>choose;studentstu;coursecus;switch(choose)case 1: stu.checkstudent();break;case 2: cus.checkcourse();break;case 3: scanResult();break;case 4: menu();b

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论