学生综合测评系统C++设计报告材料_第1页
学生综合测评系统C++设计报告材料_第2页
学生综合测评系统C++设计报告材料_第3页
免费预览已结束,剩余27页可下载查看

下载本文档

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

文档简介

1、某某电力学院高级程序设计C+课程设计题 目:学生综合测评系统院 系:计算机科学与技术学院专业年级:计算机科学与技术学生某某:学号:20111695指导教师:2013年1月目录目录21 .需求分析32. 概要设计43. 详细设计64. 用户使用手册94.1环境设置94.2操作步骤105. 程序创新点 错误!未定义书签。6. 使用的主要技术 错误!未定义书签7 .总结错误!未定义书签。附录错误!未定义书签。1需求分析本系统旨在便于学校管理和查阅学生信息并计算学生的考试成绩 和名次以与综合测评成绩和名次。每个学生的信息为:学号、某某、 性别、家庭住址、联系、高等数学、物理、英语三门单科成绩、同学互评

2、分、品德成绩、任课教师评分。考试平均成绩、同学互评分、 品德成绩、任课教师评分分别占综合测评总分的60%, 10%, 10%,20%。程序的根本功能:1 .学生信息处理:(1) 输入学生信息、学号、某某、性别、家庭住址、联系,按学号以小到大的顺序存入文件中。(2) 插入修改同学信息。(3) 删除同学信息。(4) 浏览学生信息。2 .学生数据处理:(1) 按考试科目录入学生成绩并且按公式:考试成绩=语文+数学+外语/3计算考试成绩,并计算考试名次。(2) 学生测评数据输入并计算综合测评总分与名次。(3) 学生数据管理。(4) 学生数据查询。3.学生综合信息输出2. 概要设计根据需求分析中的描述,

3、知道需要一个某某类型,由于根本数据 类型无法实现将一个用户的信息绑定在一起,所以需要定义一个抽象 数据类型某某,命名为Student,其定义如下:class Stude ntpublic:int num;/ 学号stri ng n ame; 某某string sex;/性另Ustr ing address;/ 家庭住址stri ng phone;/ 联系double en glish;/ 英语成绩double math;/ 数学成绩double physics;/ 物理分数double average;/ 考试成绩double grade1;/同学互评分double grade2;/ 品德成绩

4、double grade3;/任课教室评分double gradesum;/综合测评成绩int rankin g1;/ 考试名次in t ra nki ng2;综合测评名次;为了方便外部函数进展操作,以上全为共有变量。定义一个对象数组Student stud1OO;方便对Student类中数据进展 输入和输出以与排序等等功能。外部操作函数有:void read()从文件中读取学生信息函数void show()显示学生信息函数void save()保存学生信息函数void SR()/输入学生信息函数void SC()/删除学生信息函数void TJ()/添加学生信息函数void XG()修改学生

5、信息函数void PM1()计算考试成绩以与排名函数void PM2()/计算综合测评成绩以与排名函数void sn()按学生学号查找学生信息void sm()/按学生某某查找学生信息void Fire()/学生信息管理界面void statistics()/学生成绩统计管理界面void inquiry()/学生查询管理界面void about()/关于系统界面void tha nks()退出程序界面主函数为学生测评系统主界面3、详细设计void read()char file name20;cout从文件中读取信息!e ndl;cout请输入文件名: file name;cout请问要读取几

6、名学生信息:e ndl;cinn;ifstream in file;in file.ope n( file name,ios:i n|ios:out);if(!i nfile)cerrope n error!studi. num studi. namestudi.sexstudi.addressstudi.ph on estudi.e nglishstudi.mathstudi.physicsstudi.grade1studi.grade2studi.grade3;i+;while(!i nfile.eof();in file.close();cout读取成功!endl;以上为读取文件中学生信

7、息的函数,当信息成功读取后才可进展 修改或添加或删除,所以在许多外部函数里面都必须要有读取函数的 功能为前提。void save()int i;char file name20;cout将记录保存在文件夹 !e ndl;cout file name;ofstream outfile(file name);if(!outfile)cerrope n error!e ndl;/保存时按学号排序,采用冒泡排序法实现数组内的排序 for(i=0;i n ;i+)outfilestudi. numstudi. namestudi.sexstudi.addressstudi.pho nestudi.e n

8、glishstudi.mathstudi.physicsstudi.grade1 studi.grade2 studi.grade3endl;outfile.close();cout保存成功!endl;在每次保存时都先按学号排序,保证信息是按学号从小到大的顺 序存入文件。在输入、修改、添加和删除函数的末端都有保存函数以 实现信息的保存。void XG()read();begin:string find_name;int i;cout请输入你要修改的学生名字:e ndl;cinfind_n ame;for(i=0;i n;i+)if(studi. name=fi nd_n ame)/输出修改前学

9、生信息if(studi. name!=fi nd_n ame)coutca nt find this n amee ndl;cout请重新查找!endl;goto begi n;cout请输入新的信息:endl;cout学号: studi. num;cout修改成功,是否保存 ?(y/n) press;switch(press)case y : save();break;default: cout不保存!;break;基于数组形式对数据进展修改。根本上所有函数都是基于数组进展操作,像删除函数是用循环先匹配类中的一个数据,找到之后再以此开始用对象数组后面的替换掉前一个,以实现删除功能。stri

10、ng SC_n ame;cout请输入你要删除的学生名字: SC_ name;while(studi. name!=SC_ name & in)i+;/查找判断if(studi. name=SC_ name)for(i nt j=i;j n+1;j+)studi. num=studi+1. num;studi. name=studi+1. name;考试成绩排名和综合测评成绩排名都是采用冒泡排序法实现:double temp100;for(int a=0;an;a+)/计算考试成绩并赋值给tempstuda.average=(studa.english+studa.math+studa.phy

11、sics)/ 3; tempa=studa.average;double t;for(i nt j=0;j n;j+)/temp中的考试成绩按从大到小冒泡排序for(int k=0;kn-1-j;k+)f(tempktempk+1)t=tempk;tempk=tempk+1;tempk+1=t;for(int q=O;qn;q+)判定考试成绩名次for(i nt p=O;p n; p+)if(studp.average=tempq)studp.ra nkin g1=q+1;最后各种界面函数通过switch语句进展调用,以实现各种功能来完成此系统:void Fire()学生信息管理系统界面whi

12、le(choose!=0) /输出界面样式略。couttt请输入0-5之间的任意一数字: choose;switch(choose)case 1:system(cls);SR();break;case 2:system(cls);SC();break;case 3:system(cls);TJ();break;case 4:system(cls);XG();break;case 5:system(cls);show();break;default:couttt输入错误或返回主界面 2AD喑如i-Eliwiml: .laiI IIP* l iMMI I- Th I*4Jm瞰祝皿冲_- Jt 曹w

13、Tp、OTEmJ-iiHra* i +1- I wrwCal. * H#ni Bi|g|1 rtmwf -b:5MM jQlMtf Hl 4tMip *F*-0 W|4HC|+汕呻*4n|tcBahiie*!* 佥H0 A Ih -町曹*| 疔孕th|_*|(M ft*-! w-Hben_*;.T它H KS|1llnrludria rViLlrl 却 I liur jtfK-G.: flM i Eiwdi iKMhl*罩M2呼誉吨dEK atSXHLC9H Xktu k /-l*J_l_f Wt 詢 hi在当前的Dos窗口中,输入要执行的功能,如输入1,然后单击回车,如此显示如下列图、】;诵谨

14、辽件憩Debuggh学生信息管理1.2.息EK息意白3 上日洁信ig.信 生生生生生 ir请,:和0 k间的二贡一豹F _此为学生信息管理界面,输入要执行的功能,如输入1,然后单后输入文件名1.txt和要读取几名学生信息,如输入 3,如此显示如 下列图。r】;审建交申DebugAexb 请问曼读取几名学生信息: arlZMHlL69b 生二2G11172E 爭四Z0111895l/J性别家庭地址联茶片二英话喜数物珅同学頁评品鷄成结教师评汁1Z354&7B 987&51224S959Bb白蕙息息息 - 七4-匸-3一4 二 SO犷12 3 4 5 B按Fnt叶继学如上所示,按照提示内容输入功能号

15、并回车确认就能正确使用本系 统。5、使用的主要技术文本文件的读写、数组。6、总结经过一个学期对C+程序设计的学习,我学习到了根本的理 论知识,了解到了 C+语言程序设计的思想,这些知识都为我的课程 设计和进一步学习打下了坚实的根底。在为期一周的的C+课程设计中,我体会颇多,学到了很多东西。 我加强了对C+程序设计这门课程的认识,并且复习了自己以前学过 的知识。这些都使得我对计算机语言的学习有了更深入的认识。像学生测评系统这样的程序设计,经历了平时在课堂和考试中不会出现的 问题和考验。而这些问题,并不是只靠课本就可以轻易解决的。 所以, 锻炼了我们独立思考和解决问题的能力。特别是向教师提问时,教

16、师教会了我调试程序的方法,让我更容易发现自己所犯的错误。在教师和同学的帮助下,通过自己的努力,终于完成了这次学生 测评系统的课程设计,虽然还有缺陷,但过程中所摸索到的经验是一 笔宝贵的财富。总而言之,这次课程设计让我收获很大。附录#in clude#in clude#in clude#in cludeusing n amespace std;char press;i nt choose=1;i nt n;class Stude ntpublic:int num; 学号string name;/ 某某string sex;/ 性别string address;/ 家庭住址string phone

17、;/ 联系double english;/ 英语成绩double math;/ 数学成绩double physics;/ 物理分数double average;/ 考试成绩double grade1;/同学互评分double grade2;/ 品德成绩double grade3;/任课教室评分double gradesum;/综合测评成绩intranking1;/ 考试名次int ranking2;/综合测评名次;Stude nt stud1OO;/读取学生信息 void read()char file name20;cout从文件中读取信息!e ndl;cout请输入文件名: file na

18、me;cout请问要读取几名学生信息:e ndl;cinn;ifstream in file;in file.ope n(file name,ios:i n|ios:out);if(!i nfile)cerrope n error!studi. namestudi.sexstudi.addressstudi.ph on estudi.e nglishstudi.mathstudi.physicsstudi.grade1studi.grade2studi.grade3;i+;while(!i nfile.eof();in file.close();cout读取成功!endl;/显示学生信息 vo

19、id show()read();cout学号某某 性别家庭地址联系方式”英语高数物理同学互评品德成绩教师评分endl; for(i nt i=0;i n ;i+)coutstudi. num;cout.width(5);coutstudi. name;cout.width(5);coutstudi.sex;cout.width(8);coutstudi.address;cout.width(8);coutstudi.ph one;cout.width(6);coutstudi.e nglish;cout.width(6);coutstudi.math;cout.width(6);coutstu

20、di.physics;cout.width(6);coutstudi.grade1;cout.width(8);coutstudi.grade2;cout.width(8);coutstudi.grade3e ndl;/保存学生信息void save()int i;char file name20;cout将记录保存在文件夹 !e ndl; cout file name;ofstream outfile(file name);if(!outfile)cerrope n error!e ndl;/保存时按学号排序int temp100;for(i nt a=0;a n; a+)tempa=stu

21、da. num;int t;for(i nt j=O;j n ;j+)for(int k=O;ktempk+1)t=tempk; tempk=tempk+1; tempk+1=t;int temp num;stri ng temp name;stri ng tempsex;stri ng tempaddress;stri ng tempph one;double tempe nglish;double tempmath;double tempphysics;double tempgrade1;double tempgrade2;double tempgrade3;for(i nt q=0;qn

22、; q+)for(i nt p=O;p n; p+)if(studp. num=tempq)temp num=studp. num;temp name=studp. name;tempsex=studp.sex;tempaddress=studp.address;tempph on e=studp.ph one;tempe nglish=studp.e nglish;tempmath=studp.math;tempphysics=studp.physics;tempgrade仁studp.grade1;tempgrade2=studp.grade2;tempgrade3=studp.grade

23、3;studp. num=studq. num;studp. name=studq. name;studp.sex=studq.sex;studp.address=studq.address;studp.ph on e=studq.ph one;studp.e nglish=studq.e nglish;studp.math=studq.math;studp.physics=studq.physics;studp.grade1=studq.grade2;studp.grade2=studq.grade2;studp.grade3=studq.grade3;studq. num=temp num

24、;studq. name=temp name;studq.sex=tempsex;studq.address=tempaddress;studq.ph on e=tempph one;studq.e nglish=tempe nglish;studq.math=tempmath;studq.physics=tempphysics;studq.grade1=tempgrade1;studq.grade2=tempgrade2;studq.grade3=tempgrade3;for(i=0;i n;i+)outfilestudi. num studi. name studi.sex studi.a

25、ddressstudi.pho ne studi.e nglish studi.mathstudi.physicsstudi.grade1 studi.grade2 studi.grade3e ndl;outfile.close();cout保存成功!endl;/输入学生资料void SR()cout请根据你的需要输入学生的个数:;cinn;for(i nt a=0;a n; a+)cout请输入第a+1个学生资料:endl; cout学号: studa. num;cout某某:;cout性别:”cout家庭住址cout联系方式cout英语成绩cout物理成绩cout高数成

26、绩cout同学互评cout品德成绩cout任课教师评分: studa.sex; studa.address; studa.pho ne; studa.e nglish; studa.physics; studa.math; studa.grade1; studa.grade2; studa.grade3;cout输入成功,学生资料是否保存?(y/n) press;switch(press)case y : save();break;default: cout不保存!;break;/void SC()read();do删除资料stri ng SC_n ame;cout请输入你要删除的学生名字:

27、SC_ name;while(studi. name!=SC_name & in) i+;if(studi. name=SC_iname)for(i nt j=i;j n+1;j+)studi. num=studi+1. num; studi. name=studi+1. name; studi.sex=studi+1.sex;studi.address=studi+1.address; studi.ph on e=studi+1.ph one; studi.e nglish=studi+1.e nglish; studi.math=studi+1.math; studi.physics=st

28、udi+1.physics; studi.grade1=studi+1.grade1; studi.grade2=studi+1.grade2; studi.grade3=studi+1.grade3;cout删除成功!endl;n=n-1; save();else if(i=n)coutca nt find this n amee ndl; cout该信息不存在,无法删除!e ndl;cout(是否继续操作?(y/n) press;while(press=y|press=Y);/ void TJ()read();docout请添加新的学生信息 e ndl; coutstudn.num; co

29、;coutstudn.sex;coutstudn.address;cout stud n.pho ne;coutstud n.e nglish;cout新学生的高数成绩:;ci nstud n.math;cout新学生的物理成绩 ”;cinstudn.physics;coutstud n.grade1;cout新学生的品德成绩 ”;cinstudn.grade2;coutstud n.grade3;n+;cout(是否继续操作?(y/n)press;while(press=y|press=Y);cout添加成功,学生资料是否保存?(y/n) press;switch(p

30、ress)case y : save();break;default: cout不保存!;break;/修改学生信息void XG()read();begin:string find_name;int i;cout请输入你要修改的学生名字:e ndl;cinfind_n ame;for(i=0;i n; i+)if(studi. name=fi nd_n ame)coutstudi. name has bee n foun d:e ndl; cout学生的学号:studi.num某某:性别:studi.sex家庭住址:studi.address联系方式:studi.phon

31、e英语成绩:studi.english高数成绩:studi.math物理成绩:studi.physics同学互评分:studi.grade1品德成绩:studi.grade2任课教师评分:studi.grade3endl; break;if(studi. name!=fi nd_n ame)coutcant find this nameendl; cout请重新查找!endl;goto begi n;cout请输入新的信息:endl; cout学号: studi. num; cout某某: studi. name; cout性别:studi.sex;cout家庭住址 cout联系方式 cout

32、英语成绩 cout物理成绩 cout高数成绩 studi.address; studi.ph one; studi.e nglish; studi.physics; studi.math;cout同学互评分:studi.grade1; cout品德成绩:studi.grade2;cout任课教师评分:studi.grade3; cout修改成功,是否保存 ?(y/n) press;switch(press)case y : save();break; default: cout不保存!;break;/计算考试成绩并按考试成绩排名 void PM1()read();double temp100;

33、for(i nt a=0;a n; a+)/studa.average=(studa.english+studa.math+studa.physics)/ 3; tempa=studa.average;double t;for(i nt j=O;j n ;j+)/temp 中的考试成绩按从大到小冒泡排序for(int k=O;kn-1-j;k+)if(tempktempk+1)t=tempk;tempk=tempk+1;tempk+1=t;for(int q=O;qn;q+)判定考试成绩名次for(i nt p=0;p n; p+)if(studp.average=tempq)studp.ra

34、 nkin g1=q+1;cout学号 某某考试成绩考试成绩排名endl;for(i nt b=O;b n ;b+)coutstudb. num;cout.width(10);coutstudb. name;cout.width(10);coutstudb.average;cout.width(10);coutstudb.ra nkin g1e ndl;cout是否要保存到文件中?(y/n) press;switch(press)case y:int i;char file name20;cout file name;ofstream outfile(file name);if(!outfil

35、e)cerrope n error!e ndl;for(i=0;i n;i+)outfile学号:studi.num某某: 考试成绩:studi.average 考试成绩排名studi.ranking1endl;outfile.close();cout保存成功!endl;break;default: cout不保存!;break;计算综合测评成绩并按综合测评成绩排名 void PM2()read();double temp100;for(i nt a=0;a n; a+)studa.gradesum=(studa.e nglish+studa.math+studa.phys

36、ics)/ 3)*0.6+studa.grade1*0.1+stud a.grade2*0.1+studa.grade3*0.2; tempa=studa.gradesum;double t;for(i nt j=O;jn ;j+)/temp 中的综合测评成绩按从大到小冒泡排序for(int k=0;kn-1-j;k+)if(tempktempk+1)t=tempk;tempk=tempk+1;tempk+1=t;for(int q=O;qn;q+)判定综合测评成绩名次for(i nt p=0;p n; p+)if(studp.gradesum=tempq)studp.ra nkin g2=q

37、+1;cout学号 某某综合测评成绩综合测评排名endl;for(i nt b=O;b n ;b+)coutstudb. num; cout.width(IO);coutstudb. name;cout.width(10);coutstudb.gradesum;cout.width(10);coutstudb.ra nkin g2e ndl;/按学生学号查找资料void sn()read();doint find_num;cout请输入你要查询的学号:;cinfind_num;int i;for(i=0;i n ;i+)if(studi. num=fi nd_num):e ndl;cout学号

38、为studi.num的学生的资料已找到 cout学号:studi. num某某:性别:studi.sex家庭地址:studi.address联系方式:studi.phone英语成绩:studi.english高数成绩:studi.math物理成绩:studi.physics同学互评分:studi.grade1品德成绩:studi.grade2任课教师评分:studi.grade3endl; break;if(studi. num !=fi nd_num)coutca nt find this num e ndl;cout(是否继续操作?(y/n) press;/ while

39、(press=y|press=Y);按学生某某查找资料void sm()read();dostring find_name;cout请输入你要查询的某某:;cinfind_n ame;int i;for(i=0;i n ;i+)if(studi. name=fi nd_n ame)e ndl;cout某某为的学生的资料已找到 cout学号:studi. num某某:性别:studi.sex家庭地址:studi.address联系方式:studi.phone英语成绩:studi.english高数成绩:studi.math物理成绩:studi.physic

40、s同学互评分:studi.grade1品德成绩:studi.grade2任课教师评分:studi.grade3endl; break;if(studi. name!=fi nd_n ame)coutca nt find this n amee ndl; cout(是否继续操作? (y/n) press; while(press=y|press=Y);/学生信息管理界面void Fire()while(choose!=0)coutvttt*ve ndlcoutvttt*ve ndlcoutttt*学生信息管理*e ndl;coutttt*e ndl;coutttt*1.录入学生信息*e ndl;coutttt*2删除学生信息*e ndl;coutttt*3添加学生信息*e ndl;coutttt*4修改学生信息*e ndl;coutttt*5.显示学生信息*e ndl;coutttt*0返回*e ndl;coutttt*e ndl;coutttt*按Enter继续*e ndl;coutttt*e ndl;coutttt*e ndl;couttt请输入0-5之间的任意一数字: choose;switch(choose)ca

温馨提示

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

评论

0/150

提交评论