




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上上海电力学院高级程序设计C+课程设计 题目: 学生综合测评系统 院系: 计算机科学与技术学院 专业年级: 计算机科学与技术 学生姓名: 学号: 指导教师: 2013年1月目录1 需求分析本系统旨在便于学校管理和查阅学生信息并计算学生的考试成绩和名次以及综合测评成绩和名次。每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、高等数学、物理、英语三门单科成绩、同学互评分、品德成绩、任课教师评分。考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。程序的基本功能:1学生信息处理:(1) 输入学生信息、学号、姓名、性别、家庭
2、住址、联系电话,按学号以小到大的顺序存入文件中。(2) 插入(修改)同学信息。(3) 删除同学信息。(4) 浏览学生信息。2学生数据处理:(1) 按考试科目录入学生成绩并且按公式:考试成绩(语文+数学+外语)/3 计算考试成绩,并计算考试名次。 (2) 学生测评数据输入并计算综合测评总分及名次。(3) 学生数据管理。(4) 学生数据查询。3学生综合信息输出2 概要设计根据需求分析中的描述,知道需要一个帐户类型,由于基本数据类型无法实现将一个用户的信息绑定在一起,所以需要定义一个抽象数据类型帐户,命名为Student,其定义如下:class Studentpublic:int num;/学号st
3、ring name;/姓名string sex;/性别string address;/家庭住址string phone;/联系电话double english;/英语成绩double math;/数学成绩double physics;/物理分数double average;/考试成绩double grade1;/同学互评分double grade2;/品德成绩double grade3;/任课教室评分double gradesum;/综合测评成绩int ranking1;/考试名次int ranking2;/综合测评名次;为了方便外部函数进行操作,以上全为共有变量。定义一个对象数组Studen
4、t stud100;方便对Student类中数据进行输入和输出以及排序等等功能。外部操作函数有:void read()/从文件中读取学生信息函数void show()/显示学生信息函数void save()/保存学生信息函数void SR()/输入学生信息函数void SC()/删除学生信息函数void TJ()/添加学生信息函数void XG()/修改学生信息函数void PM1()/计算考试成绩以及排名函数void PM2()/计算综合测评成绩以及排名函数void sn()/按学生学号查找学生信息void sm()/按学生姓名查找学生信息void Fire()/学生信息管理界面void s
5、tatistics()/学生成绩统计管理界面void inquiry()/学生查询管理界面void about()/关于系统界面void thanks()/退出程序界面主函数为学生测评系统主界面3、详细设计void read() char filename20; cout<<"从文件中读取信息!"<<endl; cout<<"请输入文件名:"<<endl; cin>>filename; cout<<"请问要读取几名学生信息:"<<endl; cin&g
6、t;>n; ifstream infile; infile.open(filename,ios:in|ios:out); if(!infile) cerr<<"open error!"<<endl; exit(1); int i=0; do infile>>studi.num>>>>studi.sex>>studi.address >>studi.phone>>studi.english>>studi.math >>studi.p
7、hysics>>studi.grade1 >>studi.grade2>>studi.grade3; i+; while(!infile.eof(); infile.close(); cout<<"读取成功!"<<endl; 以上为读取文件中学生信息的函数,当信息成功读取后才可进行修改或添加或删除,所以在许多外部函数里面都必须要有读取函数的功能为前提。void save() int i; char filename20; cout<<"将记录保存在文件夹!"<<endl;
8、 cout<<"请输入文件名:" cin>>filename; ofstream outfile(filename); if(!outfile)cerr<<"open error!"<<endl;/保存时按学号排序,采用冒泡排序法实现数组内的排序 for(i=0;i<n;i+)outfile<<studi.num<<" "<<<<" "<<studi.sex<<"
9、; "<<studi.address<<" " <<studi.phone<<" "<<studi.english<<" "<<studi.math<<" "<<studi.physics<<" " <<studi.grade1<<" "<<studi.grade2<<" "<
10、;<studi.grade3<<endl; outfile.close(); cout<<"保存成功!"<<endl;在每次保存时都先按学号排序,保证信息是按学号从小到大的顺序存入文件。在输入、修改、添加和删除函数的末端都有保存函数以实现信息的保存。void XG() read();begin:string find_name; int i; cout<<"请输入你要修改的学生名字:"<<endl; cin>>find_name; for(i=0;i<n;i+) if(s
11、=find_name) /输出修改前学生信息if(!=find_name) cout<<"can't find this name"<<endl;cout<<"请重新查找!"<<endl;goto begin;cout<<"请输入新的信息:"<<endl;cout<<"学号:"<<' 'cin>>studi.num; cout<<&qu
12、ot;修改成功,是否保存?(y/n)"<<endl;cin>>press;switch(press)case 'y' : save();break;default: cout<<"不保存!"break;基于数组形式对数据进行修改。基本上所有函数都是基于数组进行操作,像删除函数是用循环先匹配类中的一个数据,找到之后再以此开始用对象数组后面的替换掉前一个,以实现删除功能。 string SC_name; cout<<"请输入你要删除的学生名字:"<<endl;int i=0
13、;cin>>SC_name; while(!=SC_name && i<n) i+; /查找判断 if(=SC_name) for(int j=i;j<n+1;j+)studi.num=studi+1.num; =studi+1.name; 考试成绩排名和综合测评成绩排名都是采用冒泡排序法实现: double temp100;for(int a=0;a<n;a+)/计算考试成绩并赋值给tempstuda.average=(studa.english+studa.math+studa.phy
14、sics)/3;tempa=studa.average;double t;for(int j=0;j<n;j+) /temp中的考试成绩按从大到小冒泡排序for(int k=0;k<n-1-j;k+)f(tempk<tempk+1)t=tempk; tempk=tempk+1; tempk+1=t;for(int q=0;q<n;q+)/判定考试成绩名次for(int p=0;p<n;p+)if(studp.average=tempq)studp.ranking1=q+1;最后各种界面函数通过switch语句进行调用,以实现各种功能来完成此系统: void Fir
15、e()/学生信息管理系统界面 while(choose!=0) /输出界面样式略。 cout<<"tt 请输入0-5之间的任意一数字:"<<' ' cin>>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
16、();break; case 5:system("cls");show();break; default:cout<<"tt 输入错误或返回主界面"<<'n'break;4、 用户使用手册4.1 环境设置将已创建扩展名为cpp在VC6.0中运行即可,如图所示。4.2 操作步骤编译每个扩展名为.cpp的文件,如果有编译错误,则根据提示修改,否则编译成功。最后编译、连接和运行测试程序文件,输入数据并测试程序的各种操作。如图所示。 在当前的Dos窗口中,输入要执行的功能号码,如输入1,然后单击回车,则显示如图所示。此为学
17、生信息管理界面,输入要执行的功能号码,如输入1,然后单击回车,则显示如图所示。 按提示输入3个学生信息并保存至文件1.txt中,完成后返回学生信息管理界面,输入要执行的功能号码,如输入5,然后单击回车,然后输入文件名1.txt和要读取几名学生信息,如输入3,则显示如图所示。 如上所示,按照提示内容输入功能号并回车确认就能正确使用本系统。5、 使用的主要技术 文本文件的读写、数组。6、 总结 经过一个学期对C+程序设计的学习,我学习到了基本的理论知识,了解到了C+语言程序设计的思想,这些知识都为我的课程设计和进一步学习打下了坚实的基础。在为期一周的的C+课程设计中,我体会颇多,学到了很多东西。我
18、加强了对C+程序设计这门课程的认识,并且复习了自己以前学过的知识。这些都使得我对计算机语言的学习有了更深入的认识。像学生测评系统这样的程序设计,经历了平时在课堂和考试中不会出现的问题和考验。而这些问题,并不是只靠课本就可以轻易解决的。所以,锻炼了我们独立思考和解决问题的能力。特别是向老师提问时,老师教会了我调试程序的方法,让我更容易发现自己所犯的错误。在老师和同学的帮助下,通过自己的努力,终于完成了这次学生测评系统的课程设计,虽然还有缺陷,但过程中所摸索到的经验是一笔宝贵的财富。总而言之,这次课程设计让我收获很大。附录#include<iostream>#include<fs
19、tream>#include<string>#include<iomanip>using namespace std;char press;int choose=1;int n;class Studentpublic:int num;/学号string name;/姓名string sex;/性别string address;/家庭住址string phone;/联系电话double english;/英语成绩double math;/数学成绩double physics;/物理分数double average;/考试成绩double grade1;/同学互评分d
20、ouble grade2;/品德成绩double grade3;/任课教室评分double gradesum;/综合测评成绩int ranking1;/考试名次int ranking2;/综合测评名次;Student stud100;/读取学生信息void read() char filename20; cout<<"从文件中读取信息!"<<endl; cout<<"请输入文件名:"<<endl; cin>>filename; cout<<"请问要读取几名学生信息:&quo
21、t;<<endl; cin>>n; ifstream infile; infile.open(filename,ios:in|ios:out); if(!infile) cerr<<"open error!"<<endl; exit(1); int i=0; do infile>>studi.num>>>>studi.sex>>studi.address >>studi.phone>>studi.english>>studi
22、.math >>studi.physics>>studi.grade1 >>studi.grade2>>studi.grade3; i+; while(!infile.eof(); infile.close(); cout<<"读取成功!"<<endl; /-显示学生信息-void show()read();cout<<"学号 "<<"姓名 "<<"性别 "<<"家庭地址 "&
23、lt;<"联系方式 "<<"英语 "<<"高数 "<<"物理 "<<"同学互评 "<<"品德成绩 "<<"教师评分"<<endl;for(int i=0;i<n;i+)cout<<studi.num;cout.width(5);cout<<;cout.width(5);cout<<studi.sex;cou
24、t.width(8);cout<<studi.address;cout.width(8);cout<<studi.phone;cout.width(6);cout<<studi.english;cout.width(6);cout<<studi.math;cout.width(6);cout<<studi.physics;cout.width(6);cout<<studi.grade1;cout.width(8);cout<<studi.grade2;cout.width(8);cout<<stud
25、i.grade3<<endl;/保存学生信息void save() int i; char filename20; cout<<"将记录保存在文件夹!"<<endl; cout<<"请输入文件名:" cin>>filename; ofstream outfile(filename); if(!outfile)cerr<<"open error!"<<endl;/-保存时按学号排序-int temp100;for(int a=0;a<n;a+)te
26、mpa=studa.num;int t;for(int j=0;j<n;j+)for(int k=0;k<n-1-j;k+)if(tempk>tempk+1)t=tempk;tempk=tempk+1;tempk+1=t;int tempnum;string tempname;string tempsex;string tempaddress;string tempphone;double tempenglish;double tempmath;double tempphysics;double tempgrade1;double tempgrade2;double temp
27、grade3;for(int q=0;q<n;q+)for(int p=0;p<n;p+)if(studp.num=tempq)tempnum=studp.num;tempname=;tempsex=studp.sex;tempaddress=studp.address;tempphone=studp.phone;tempenglish=studp.english;tempmath=studp.math;tempphysics=studp.physics;tempgrade1=studp.grade1;tempgrade2=studp.grade2;tempgr
28、ade3=studp.grade3;studp.num=studq.num;=;studp.sex=studq.sex;studp.address=studq.address;studp.phone=studq.phone;studp.english=studq.english;studp.math=studq.math;studp.physics=studq.physics;studp.grade1=studq.grade2;studp.grade2=studq.grade2;studp.grade3=studq.grade3;studq.num=te
29、mpnum;=tempname;studq.sex=tempsex;studq.address=tempaddress;studq.phone=tempphone;studq.english=tempenglish;studq.math=tempmath;studq.physics=tempphysics;studq.grade1=tempgrade1;studq.grade2=tempgrade2;studq.grade3=tempgrade3;for(i=0;i<n;i+)outfile<<studi.num<<" "&
30、lt;<<<" "<<studi.sex<<" "<<studi.address<<" " <<studi.phone<<" "<<studi.english<<" "<<studi.math<<" "<<studi.physics<<" " <<studi.gra
31、de1<<" "<<studi.grade2<<" "<<studi.grade3<<endl; outfile.close(); cout<<"保存成功!"<<endl;/输入学生资料void SR() cout<<"请根据你的需要输入学生的个数:" cin>>n;for(int a=0;a<n;a+)cout<<"请输入第"<<a+1<<&qu
32、ot;个学生资料:"<<endl; cout<<"学号:"<<' 'cin>>studa.num; cout<<"姓名:"<<' 'cin>>; cout<<"性别:"<<' 'cin>>studa.sex; cout<<"家庭住址:"<<' 'cin>>studa.a
33、ddress; cout<<"联系方式:"<<' 'cin>>studa.phone; cout<<"英语成绩:"<<' 'cin>>studa.english; cout<<"物理成绩:"<<' 'cin>>studa.physics;cout<<"高数成绩:"<<' 'cin>>studa.math; co
34、ut<<"同学互评:"<<' 'cin>>studa.grade1;cout<<"品德成绩:"<<' 'cin>>studa.grade2;cout<<"任课教师评分:"<<' 'cin>>studa.grade3; cout<<"输入成功,学生资料是否保存?(y/n)"<<endl; cin>>press; switch(p
35、ress)case 'y' : save();break;default: cout<<"不保存!"break;/删除资料void SC() read();dostring SC_name; cout<<"请输入你要删除的学生名字:"<<endl;int i=0;cin>>SC_name; while(!=SC_name && i<n) i+; /查找判断 if(=SC_name) for(int j=i;j<n+1;j+)
36、studi.num=studi+1.num; =studi+1.name; studi.sex=studi+1.sex; studi.address=studi+1.address; studi.phone=studi+1.phone; studi.english=studi+1.english; studi.math=studi+1.math;studi.physics=studi+1.physics;studi.grade1=studi+1.grade1;studi.grade2=studi+1.grade2;studi.grade3=studi+1.grade3; c
37、out<<"删除成功!"<<endl; n=n-1;save(); else if(i=n) cout<<"can't find this name"<<endl;cout<<"该信息不存在,无法删除!"<<endl; cout<<"(是否继续操作?(y/n)"<<endl; cin>>press;while(press='y'|press='Y') ;/添加学生信息v
38、oid TJ() read();docout<<"请添加新的学生信息"<<endl;cout<<"新的学生学号:"cin>>studn.num;cout<<"新学生姓名:"cin>>;cout<<"新学生性别:"cin>>studn.sex;cout<<"新学生家庭地址:"cin>>studn.address;cout<<"新学生的联系
39、方式:"cin>>studn.phone;cout<<"新学生的英语成绩:"cin>>studn.english;cout<<"新学生的高数成绩:"cin>>studn.math;cout<<"新学生的物理成绩"cin>>studn.physics;cout<<"新学生的同学互评分"cin>>studn.grade1;cout<<"新学生的品德成绩"cin>&g
40、t;studn.grade2;cout<<"新学生的任课教师评分"cin>>studn.grade3;n+;cout<<"(是否继续操作?(y/n)"<<endl;cin>>press;while(press='y'|press='Y');cout<<"添加成功,学生资料是否保存?(y/n)"<<endl;cin>>press;switch(press)case 'y' : save();br
41、eak;default: cout<<"不保存!"break;/修改学生信息void XG() read();begin:string find_name; int i; cout<<"请输入你要修改的学生名字:"<<endl; cin>>find_name; for(i=0;i<n;i+) if(=find_name) cout<<<<" "<<"has been found:"<
42、;<endl; cout<<"学生的学号:"<<studi.num<<" "<<"姓名:"<<<<" "<<"性别:"<<studi.sex<<" "<<"家庭住址:"<<studi.address<<" "<<"联系方式:"<&l
43、t;studi.phone<<" "<<"英语成绩:"<<studi.english<<" "<<"高数成绩:"<<studi.math<<" " <<"物理成绩:"<<studi.physics<<" "<<"同学互评分:"<<studi.grade1<<" "
44、<<"品德成绩:"<<studi.grade2<<" "<<"任课教师评分:"<<studi.grade3<<endl; break; if(!=find_name) cout<<"can't find this name"<<endl;cout<<"请重新查找!"<<endl;goto begin;cout<<"请输入新的信息
45、:"<<endl;cout<<"学号:"<<' 'cin>>studi.num;cout<<"姓名:"<<' 'cin>>;cout<<"性别:"<<' 'cin>>studi.sex;cout<<"家庭住址:"<<' 'cin>>studi.address; cout
46、<<"联系方式:"<<' 'cin>>studi.phone; cout<<"英语成绩:"<<' 'cin>>studi.english; cout<<"物理成绩:"<<' 'cin>>studi.physics;cout<<"高数成绩:"<<' 'cin>>studi.math;cout<<&qu
47、ot;同学互评分:"<<' 'cin>>studi.grade1;cout<<"品德成绩:"<<' 'cin>>studi.grade2;cout<<"任课教师评分:"<<' 'cin>>studi.grade3;cout<<"修改成功,是否保存?(y/n)"<<endl;cin>>press;switch(press)case 'y
48、9; : save();break;default: cout<<"不保存!"break;/-计算考试成绩并按考试成绩排名-void PM1()read(); double temp100;for(int a=0;a<n;a+)/studa.average=(studa.english+studa.math+studa.physics)/3;tempa=studa.average;double t;for(int j=0;j<n;j+)/temp中的考试成绩按从大到小冒泡排序for(int k=0;k<n-1-j;k+)if(tempk<
49、tempk+1)t=tempk;tempk=tempk+1;tempk+1=t;for(int q=0;q<n;q+)/判定考试成绩名次for(int p=0;p<n;p+)if(studp.average=tempq)studp.ranking1=q+1;cout<<"学号 "<<" 姓名 "<<"考试成绩 "<<"考试成绩排名"<<endl;for(int b=0;b<n;b+)cout<<studb.num;cout.w
50、idth(10);cout<<;cout.width(10);cout<<studb.average;cout.width(10);cout<<studb.ranking1<<endl;cout<<"是否要保存到文件中?(y/n)"<<endl;cin>>press;switch(press)case 'y':int i;char filename20; cout<<"请输入文件名:" cin>>filename
51、; ofstream outfile(filename); if(!outfile)cerr<<"open error!"<<endl; for(i=0;i<n;i+)outfile<<"学号:"<<studi.num<<" 姓名:"<<<<" 考试成绩:"<<studi.average<<" 考试成绩排名"<<studi.ranking1<&l
52、t;endl; outfile.close();cout<<"保存成功!"<<endl;break;default: cout<<"不保存!"break;/-计算综合测评成绩并按综合测评成绩排名-void PM2()read();double temp100;for(int a=0;a<n;a+)/studa.gradesum=(studa.english+studa.math+studa.physics)/3)*0.6+studa.grade1*0.1+studa.grade2*0.1+studa.grade3
53、*0.2;tempa=studa.gradesum;double t;for(int j=0;j<n;j+)/temp中的综合测评成绩按从大到小冒泡排序for(int k=0;k<n-1-j;k+)if(tempk<tempk+1)t=tempk;tempk=tempk+1;tempk+1=t;for(int q=0;q<n;q+)/判定综合测评成绩名次for(int p=0;p<n;p+)if(studp.gradesum=tempq)studp.ranking2=q+1;cout<<"学号 "<<" 姓名
54、"<<"综合测评成绩 "<<"综合测评排名"<<endl;for(int b=0;b<n;b+)cout<<studb.num;cout.width(10);cout<<;cout.width(10);cout<<studb.gradesum;cout.width(10);cout<<studb.ranking2<<endl;/按学生学号查找资料void sn() read();doint find_num; cout<
55、;<"请输入你要查询的学号:"<<' ' cin>>find_num;int i; for(i=0;i<n;i+)if(studi.num=find_num) cout<<"学号为"<<studi.num<<"的学生的资料已找到:"<<endl;cout<<"学号:"<<studi.num<<' '<<"姓名:"<<stu
56、<<' '<<"性别:"<<studi.sex<<' '<<"家庭地址:"<<studi.address<<' '<<"联系方式:"<<studi.phone<<' '<<"英语成绩:"<<studi.english<<' '<<"高数成绩:&qu
57、ot;<<studi.math<<' '<<"物理成绩:"<<studi.physics<<' '<<"同学互评分:"<<studi.grade1<<' '<<"品德成绩:"<<studi.grade2<<' '<<"任课教师评分:"<<studi.grade3<<endl;break;
58、if(studi.num!=find_num) cout<<"can't find this num"<<endl;cout<<"(是否继续操作?(y/n)"<<endl;cin>>press;while(press='y'|press='Y');/按学生姓名查找资料void sm() read();dostring find_name;cout<<"请输入你要查询的姓名:"<<' 'cin>
59、;>find_name;int i;for(i=0;i<n;i+)if(=find_name) cout<<"姓名为"<<<<"的学生的资料已找到"<<endl;cout<<"学号:"<<studi.num<<' '<<"姓名:"<<<<' '<<"性别:"<<studi.sex<<' '<<"家庭地址:"<<studi.address<<' '<<"联系方式:"<<studi.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保护大气大气保护承诺书3篇
- 纺织品企业信息技术应用与管理考核试卷
- 渔业可持续发展的创新模式考核试卷
- 纺织品在运动器材的人体工程学考核试卷
- 医疗器械质量管理体系认证考核试卷
- 【课件】第六单元写作《发挥联想和想象》课件-2024-2025学年统编版语文七年级上册
- 2025设备采购合同范本 项目管理合同范本
- 2025租赁委托合同协议书范本
- 工程吊顶装修合同书样本二零二五年
- 二零二五版塔吊司机劳务合同书
- 有色金属冶金概论总论
- 砂石料单价编制
- 海藻学知到章节答案智慧树2023年烟台大学
- 六年级下册道德与法治期中测试卷含答案【考试直接用】
- EIM Book 1 Unit 11 Promise,promise单元知识要点
- 全陕西师范大学《716文学综合》考研真题详解下载全
- 引航梯的位置和标识及保养记录
- 外科学急性化脓性腹膜炎
- 苯酚的分子组成和结构课件
- 《罗织经》全文及翻译
- GB∕T 26077-2021 金属材料 疲劳试验 轴向应变控制方法
评论
0/150
提交评论