下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、需求分析 2二、程序的主要功能 2三、程序运行平台 2四、系统总框架图 2五、程序类的说明 3六、模块分析 4七、比较有特色的函数 4八、存在的不足与对策 8九、程序源代码 8一、需求分析选课在大学生活中是必不可少的,为了能让学生们更加便利的查看并选择各 种课程,自然就需要一个网络结构,建立一个选课系统,这样可以方便管理学生 和课程等内容。二、程序的主要功能1、添加功能:添加课程以及学生的各类信息保存到一个文件中。2、删除功能:能够对一个学生或课程的信息按照编号进行删除。3、浏览功能:可以查看学生信息课程信息以及学生的选课信息。4、选课功能:学生可以通过输入自己的学号进入选择界面,选择各种
2、不同的课程。5、修改功能:用于修改错误的学生信息或者课程信息。三、程序运行平台Win dows8.1操作系统VC+6.0四、系统总框架图主函数V系统总框架图五、程序类的说明?stude nt 类的声明class stude ntpublic:double xuehao;char name100;char major100;char course name100;?course类的声明 class coursepublic:double course num;char course name50;char coursetapy50;double xuefe n;double xueshi;cha
3、r courseteacher50;六、模块分析1. 信息录入模块按照提示输入所需数字,进入添加界面后添加课程以及学生的各类信息,最终保存到 一个文件中,用以之后读取。2. 信息浏览模块可以用来查看学生信息和课程信息以及学生的选课信息。3修改信息模块用于修改错误的学生信息或者课程信息。4. 删除信息模块能够对一个学生或课程的信息按照编号进行删除。5. 选择课程模块学生可以通过输入自己的学号进入选择界面,选择各种不同的课程。七、比较有特色的函数void selectCoures()选课函数stude nt stu;用于保存将要选课的那名同学的信息int cou ntCoures=0;用来统计该学
4、生选了多少门课程int cou ntStude nt=0;用来统计学生的个数loop:cout«e ndlvv"请输入你的学生学号:"double m_xuehao,m_course num;/利用学号和课程号分别找出哪位同学选了哪门课cin>> m_xuehao;ifstream is("stude ntln fo.text",ios:b in ary);is.seekg(0,ios:beg);while(!is.peek()is.read(char *)(&stu),sizeof(stu); /从“ stude ntln
5、 fo.text ”文件中一次读取学生的信息if(m_xuehao = stu.xuehao)loob:coun tStude nt+;cout«"请输入学号为"<<m xuehaovv"的学生想要选择的课程编码(1001-9999):"cin>> m_course num;ifstream in Course("courses.text",ios:bi nary);/ 用于从"courses.text"文件中找出该同学想选择的课程信息in Course.seekg(0,ios:b
6、eg);while(!i nCourse.eof()/选课的核心代码course cus;/用于此同学将要选择的课程信息in Course.read(char *)(&cus),sizeof(cus);if(m_course num = cus.course num)/若找到那门课程则选它coun tCoures+;strcpy(stu.course name,cus.course name);ofstream outStu("selectCourseResult.text",ios:bi nary|ios:app);/现将选课的同学信息放入选课结果的文件中outS
7、tu.write(char *)(&stu),sizeof(stu);outStu.close();cout«"学号为"<<m_xuehao<<" 成功选了 课程号为"<<m_coursenum<<" 的课程!"<<endl;if(co un tCoures>2)cout«"同学:你选择的课程已经超过"vvcou ntCouresvv" 门 了 !"<<e ndl;break;if(co u
8、n tCoures = 0)coutvv"没有这门课程,还要继续选择其他课程吗y/n?"v<endl;char ch;cin> >ch;if('y'=ch)|('Y'=ch)goto loob;elsebreak;in Course.close();if(cou ntStude nt=0)coutvv"没有这个学生,是否重新输入y/n?"v<endl;char ch;cin> >ch;if('y'=ch)|('Y'=ch)goto loop;is.clos
9、e();menu();八、存在的不足与对策只能输入较少的课不断的提高程序由于设计者水平有限及时间等方面的原因,该系统的功能比较简单,程以及学生信息。些许不足请老师多多谅解。今后会学习更多的编程技巧,设计水平。九、程序源代码#in clude<iostream>#in clude<ctype.h>#in clude<stri ng>#in clude<ioma nip>#in clude<fstream>#in clude<sstream> using n amespace std;void men u() / 主菜单cou
10、t<<e ndl;cout<<"学生选课系统"<<e ndl;cout<<" 1.信息录入"<<e ndl;cout<<" 2.信息浏览"<<e ndl;cout<<" 3.选择课程"<<e ndl;cout<<" 4.删除信息"<<e ndl;cout<<" 5.修改信息"<<e ndl;cout<<&quo
11、t; 6.退出程序"<<e ndl;class stude ntpublic:double xuehao;char name100;char major100;char course name100;void set() /学生信息录入stude nt stu;cout<<e ndl;cout<<"请输入学生学号:";cin> >stu.xuehao;cout<<" 请输入学生姓名:";cin> >stu. name;cout<<" 请输入学生专业:&
12、quot;;cin> >stu.major;ofstream out("stude ntl nfo.text",ios:app|ios:b in ary);out.write(char *)(& stu),sizeof(stu);out.close();men u();void checkstude nt() /查询学生信息stude nt stu;cout<<"学生学号t学生姓名t所学专业"<<endl;ifstream is("stude ntln fo.text",ios:b in a
13、ry);while(!is.peek()is.read(char *)(& stu),sizeof(stu);cout<<""<<stu.xuehao<<"tt"<<stu .n ame<<"tt"<<stu.major<<"tt"<<e ndl;is.close();men u();void can cleStude nt() /删除学生信息stri ng xueHaoNum,li ne,xuehao;ifst
14、ream fin ("stude ntln fo.text.text");个文件进行写操作fstreamoutfile("studentlnfo.text.text",ios:trunc|ios:out);/ 打开和使同名文件被删除cout<<e ndl;cout<<"请输入您要删除学生的学号:";cin> >xueHaoNum;while(!fi n.eof()getli ne(fi n,lin e);istri ngstream stream(li ne); /串流输入xueHaoNum = l
15、in e.substr(0,li ne.fi nd(” ",0);if(xuehao != xueHaoNum)outfile<<li ne<<e ndl;outfile.close();fin. close();fstreamf("studentlnfo.text",ios:trunc|ios:out);/ 打开一个文件进行写操作和使同名文件被删除ifstream outf("stude ntl nfo.text");f<<outf.rdbuf();outf.close();f.close();cout&l
16、t;<e ndl;men u();void cha ngestude nt() /修改学生信息stude nt stu;int mark;cout<<e ndl;cout<<"请输入需要修改信息的学生学号"double xuehao;cin> >xuehao;ifstream is("stude ntln fo.text",ios:b in ary);for(i nt i=0;!is.eof();i+)is.seekg(48*i); /对输入文件定位,第一个参数是偏移量,第二个参数是基地址is.read(char
17、 *)(&stu),sizeof(stu);if(stu.xuehao=xuehao)cout<<"请输入要修改的学生姓名"cin> >stu. name;cout<<"请输入要修改的学生专业"cin> >stu.major;cout<<"修改完毕!"<<endl<<endl;mark=48*i;men u();break;is.close();if(stu.xuehao!=xuehao)cout<<"没有这个学生!&qu
18、ot;<<endl<<endl;men u();elseofstream os("stude ntl nfo.text",ios:i n|ios:b in ary);os.seekp(mark);os.write(char *)( &stu),sizeof(stu);os.close();;class course / 课程类public:double course num;char course name50;char coursetapy50;double xuefe n;double xueshi;char courseteacher5
19、0;void set() / 课程信息录入course cus;cout<<"请输入课程编码:";cin> >cus.course num;cout<<"请输入课程名称:";cin> >cus.course name;cout<<"请输入课程类型:";cin> >cus.coursetapy;cout<<"请输入课程学分:";cin> >cus.xuefe n;cout<<"请输入课程学时:&quo
20、t;;cin> >cus.xueshi;cout<<"请输入主讲教师:";cin> >cus.courseteacher;ofstream os("courses.text",ios:b in ary|ios:app);os.write(char *)(&cus),sizeof(cus);os.close();men u();void checkcourse() /浏览课程信息cout<<e ndl;ifstream is("courses.text",ios:b in ary)
21、;主讲教师"<<endl;cout<<"课程编码课程名称课程类型课程学分课程学时course cus;临时保存课程信息while(!is.peek() / 检测文件结束is.read(char*)(&cus),sizeof(cus);cout<<""<<cus.course num <<"t"<<cus.coursetapy<<"t"<<cus.xuefe n<<"t"<&l
22、t;cus.courseteacher<<e ndl; /setw()是控制输入的宽度is.close();men u();void can clecourse() /删除课程信息stri ng course nu m,li ne,course;ifstream fin ("courses.text");fstreamoutfile("courses.text",ios:tr un c|ios:out);打开文件被删除cout<<e ndl;cout<<"请输入您要删除课程的编码 :";cin>
23、; >course num;"<<cus.course name<<"t"<<cus.xueshi<<"个文件进行写操作和使同名while(!fi n.eof()getli ne(fi n,lin e);istri ngstream stream(li ne); / 串流输入 course num = lin e.substr(O,li ne.fi nd(” ",0); if(course != course num) outfile<<li ne<<e ndl;ou
24、tfile.close();fin. close();fstreamf("courses.text",ios:trunc|ios:out);/打开一个文件进行写操作和使同名文件被删除ifstream outf("courses.text");f<<outf.rdbuf();outf.close();f.close();cout<<e ndl;men u();void chan gecourse() / 修改课程信息 course cus;int mark;cout<<e ndl;cout<<"请输
25、入要修改课程信息的编码"double course num;cin> >course num;ifstream is("courses.text",ios:b in ary);for(i nt i=0;!is.eof();i+)is.seekg(28*i); /对输入文件定位,第一个参数是偏移量,第二个参数是基地址is.read(char *)(& cus),sizeof(cus);if(cus.course num=course num)cout<<"请输入要修改的课程名称"cin> >cus.co
26、urse name;cout<<"请输入要修改的课程类型"cin> >cus.coursetapy;cout<<"请输入要修改的课程学分"cin> >cus.xuefe n;cout<<"请输入要修改的课程学时"cin> >cus.xueshi;cout<<"请输入要修改的主讲教师"cin> >cus.courseteacher;cout<<"修改完毕!"<<endl<&
27、lt;endl;mark=28*i;men u();break;is.close();if(cus.course num !=course num)cout<<"没有这门课程!"<<endl<<endl;men u();elseofstream os("courses.text",ios:i n|ios:b in ary);os.seekp(mark);os.write(char *)(& cus),sizeof(cus);os.close();void selectCoures()选课函数stude nt s
28、tu;int coun tCoures=0;int coun tStude nt=O;loop:cout<<e ndl<<"请输入你的学生学号:"double m_xuehao,m_course num;/禾U用学号和课程号分别找出哪位同学选了哪门课cin>> m_xuehao;ifstream is("stude ntln fo.text",ios:b in ary);is.seekg(0,ios:beg);while(!is.peek()is.read(char *)(&stu),sizeof(stu);
29、/从"studentlnfo.text” 文件中一次读取学生的信息if(m_xuehao = stu.xuehao)loob:coun tStude nt+;cout<<"请输入学号为"<<m_xuehao<<"的学生想要选择的课程编码(1001-9999):"cin>> m_course num;ifstreaminCourse("courses.text",ios:binary);/ 用于从"courses.text"文件中找出该同学想选择的课程信息in
30、 Course.seekg(0,ios:beg);while(!i nCourse.eof()选课核心代码course cus;用于此同学将要选择的课程信息in Course.read(char *)(&cus),sizeof(cus);if(m_course num = cus.course num)coun tCoures+;strcpy(stu.course name,cus.course name);ofstreamoutStu("selectCourseResult.text",ios:b in ary|ios:app);放入选课结果的文件中outStu.
31、write(char *)(&stu),sizeof(stu);outStu.close();cout<<" 学号为"<<m_xuehao<<" 成功选了 课程号为程!"<<e ndl;if(coun tCoures>2)cout<<"同学:你选择的课程已经超过"<<cou ntCoures<<"break;现将选课的同学信息"<<m_coursenum<<"的课门了 !"&
32、lt;<endl;if(co un tCoures = 0)cout<<"没有这门课程,还要继续选择其他课程吗y/n?"<<endl;char ch;cin> >ch;if('y'=ch)|('Y'=ch)goto loob;elsebreak;in Course.close();if(coun tStude nt=0)cout<<"没有这个学生,是否重新输入y/n?"<<endl;char ch;cin> >ch;if('y'=
33、ch)|('Y'=ch)goto loop;is.close();men u();void scan Result。/查询选课结果stude nt stu;/用于保存将要选课的那名同学的信息cout<<"学生学号t学生姓名t所学专业t选课名称"<<endl;ifstream is("selectCourseResult.text",ios:b in ary);for(i nt i=O;!is.peek();i+)is.read(char*)(& stu),sizeof(stu);cout<<st
34、u.xuehao<<"tt"<<stu .n ame<<"tt"<<stu.major<<"tt"<<stu.course n ame<<e ndl;is.close();men u();void set() / 信息录入菜单cout<<e ndl;cout<<"1.录入学生信息"<<e ndl;cout<<"2.录入课程信息"<<e ndl;cout&
35、lt;<"3.返回前面菜单"<<e ndl<<e ndl;stude nt stu;course cus;int choose;cout<<" 请输入选项序号:";cin> >choose;switch(choose)case 1: stu.set();break;case 2: cus.set();break;case 3: menu ();break;default: cout<<"没有这个选项,请重新输入,谢谢!"<<endl;set();break;
36、void check() / 查询信息cout<<e ndl;cout<<"1.查询学生信息"<<e ndl;cout<<"2.查询课程信息"<<e ndl;cout<<"3.查询学生选课结果信息"<<e ndl;cout<<"4.返回主要菜单"<<e ndl<<e ndl;cout<<" 请输入选项序号"int choose;cin> >choose;stude nt stu;course cus;switch(choose)case 1: stu.checkstude nt();break;case 2: cus.checkcourse();break;case 3: sca nResult();break;case 4: menu( );break;void can
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026马踏春风筑梦行
- 微量氧传感研究-洞察与解读
- 多模态图像融合识别-洞察与解读
- 智能感知在田间监控中的应用-洞察与解读
- 基于智能合约的结算-洞察与解读
- 多维度绩效评价体系构建-洞察与解读
- 状态远程诊断-洞察与解读
- 多源遥感数据配准-洞察与解读
- 正念之师说课材料
- 2025 九年级道德与法治下册新发展格局构建策略课件
- 2026年春节后复工复产安全培训第一课
- 2026年中国银发经济深度报告:8万亿市场下的细分赛道机会
- 藤县介绍教学课件
- 2026年部编版新教材语文小学三年级下册教学计划(含进度表)
- GB/T 8642-2025热喷涂抗拉结合强度的测定
- 期末冲刺备考总动员校长在教师会议上讲话:五字诀精实盯严稳
- 秋季学期末会议分管德育工作副校长讲话:勇担职责强德育凝心聚力助发展
- 2025年数字化货运物流平台运营项目可行性研究报告
- 2026年中国头皮健康行业发展展望及投资策略报告
- 安全生产管理奖惩制度
- 2023年眼镜行业培训教材中级验光员职业资格培训教程
评论
0/150
提交评论