学生综合测评系统 C++设计书的汇报材料

上传人:痛*** 文档编号:86635897 上传时间:2022-05-08 格式:DOC 页数:29 大小:1.01MB
返回 下载 相关 举报
学生综合测评系统 C++设计书的汇报材料_第1页
第1页 / 共29页
学生综合测评系统 C++设计书的汇报材料_第2页
第2页 / 共29页
学生综合测评系统 C++设计书的汇报材料_第3页
第3页 / 共29页
点击查看更多>>
资源描述
word某某电力学院高级程序设计C+课程设计题目: 学生综合测评系统院系: 计算机科学与技术学院 专业年级: 计算机科学与技术 学生某某:学号: 20111695 指导教师:2013年1月目录目录21需求分析32概要设计33详细设计64用户使用手册74.1 环境设置74.2 操作步骤85程序创新点166使用的主要技术167总结16附录161 需求分析本系统旨在便于学校管理和查阅学生信息并计算学生的考试成绩和名次以与综合测评成绩和名次。每个学生的信息为:学号、某某、性别、家庭住址、联系、高等数学、物理、英语三门单科成绩、同学互评分、品德成绩、任课教师评分。考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。程序的根本功能:1学生信息处理:(1)输入学生信息、学号、某某、性别、家庭住址、联系,按学号以小到大的顺序存入文件中。(2) 插入修改同学信息。(3) 删除同学信息。(4) 浏览学生信息。2学生数据处理:(1)按考试科目录入学生成绩并且按公式:考试成绩语文+数学+外语/3 计算考试成绩,并计算考试名次。(2) 学生测评数据输入并计算综合测评总分与名次。(3) 学生数据管理。(4) 学生数据查询。3学生综合信息输出2 概要设计根据需求分析中的描述,知道需要一个某某类型,由于根本数据类型无法实现将一个用户的信息绑定在一起,所以需要定义一个抽象数据类型某某,命名为Student,其定义如下:class Studentpublic:int num;/学号string 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;/综合测评名次;为了方便外部函数进展操作,以上全为共有变量。定义一个对象数组Student 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 statistics()/学生成绩统计管理界面void inquiry()/学生查询管理界面void about()/关于系统界面void thanks()/退出程序界面主函数为学生测评系统主界面3、详细设计void read() char filename20; cout从文件中读取信息!endl; cout请输入文件名:filename; cout请问要读取几名学生信息:n; ifstream infile; infile.open(filename,ios:in|ios:out); if(!infile) cerropen error!studi.numstudi.namestudi.sexstudi.address studi.phonestudi.englishstudi.math studi.physicsstudi.grade1 studi.grade2studi.grade3; i+; while(!infile.eof(); infile.close(); cout读取成功!endl; 以上为读取文件中学生信息的函数,当信息成功读取后才可进展修改或添加或删除,所以在许多外部函数里面都必须要有读取函数的功能为前提。void save() int i; char filename20; cout将记录保存在文件夹!endl; coutfilename; ofstream outfile(filename); if(!outfile)cerropen error!endl;/保存时按学号排序,采用冒泡排序法实现数组内的排序for(i=0;in;i+)outfilestudi.num studi.name studi.sex studi.address studi.phone studi.english studi.math studi.physics studi.grade1 studi.grade2 studi.grade3endl; outfile.close(); cout保存成功!endl;在每次保存时都先按学号排序,保证信息是按学号从小到大的顺序存入文件。在输入、修改、添加和删除函数的末端都有保存函数以实现信息的保存。void XG() read();begin:string find_name; int i; cout请输入你要修改的学生名字:find_name; for(i=0;in;i+) if(studi.name=find_name) /输出修改前学生信息if(studi.name!=find_name) coutcant find this nameendl;cout请重新查找!endl;goto begin;cout请输入新的信息:endl;cout学号:studi.num;cout修改成功,是否保存?(y/n)press;switch(press)case y : save();break;default: cout不保存!;break;基于数组形式对数据进展修改。根本上所有函数都是基于数组进展操作,像删除函数是用循环先匹配类中的一个数据,找到之后再以此开始用对象数组后面的替换掉前一个,以实现删除功能。string SC_name; cout请输入你要删除的学生名字:SC_name; while(studi.name!=SC_name & in) i+; /查找判断 if(studi.name=SC_name) for(int j=i;jn+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.physics)/3;tempa=studa.average;double t;for(int j=0;jn;j+)/temp中的考试成绩按从大到小冒泡排序for(int k=0;kn-1-j;k+)f(tempktempk+1)t=tempk;tempk=tempk+1;tempk+1=t;for(int q=0;qn;q+)/判定考试成绩名次for(int p=0;pn;p+)if(studp.average=tempq)studp.ranking1=q+1;最后各种界面函数通过switch语句进展调用,以实现各种功能来完成此系统:void Fire()/学生信息管理系统界面while(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 输入错误或返回主界面n;break;4、 用户使用手册4.1 环境设置将已创建扩展名为cpp在VC6.0中运行即可,如下列图。4.2 操作步骤编译每个扩展名为.cpp的文件,如果有编译错误,如此根据提示修改,否如此编译成功。最后编译、连接和运行测试程序文件,输入数据并测试程序的各种操作。如下列图。在当前的Dos窗口中,输入要执行的功能,如输入1,然后单击回车,如此显示如下列图。此为学生信息管理界面,输入要执行的功能,如输入1,然后单击回车,如此显示如下列图。 按提示输入3个学生信息并保存至文件1.txt中,完成后返回学生信息管理界面,输入要执行的功能,如输入5,然后单击回车,然后输入文件名1.txt和要读取几名学生信息,如输入3,如此显示如下列图。如上所示,按照提示内容输入功能号并回车确认就能正确使用本系统。5、 使用的主要技术 文本文件的读写、数组。6、 总结 经过一个学期对C+程序设计的学习,我学习到了根本的理论知识,了解到了C+语言程序设计的思想,这些知识都为我的课程设计和进一步学习打下了坚实的根底。在为期一周的的C+课程设计中,我体会颇多,学到了很多东西。我加强了对C+程序设计这门课程的认识,并且复习了自己以前学过的知识。这些都使得我对计算机语言的学习有了更深入的认识。像学生测评系统这样的程序设计,经历了平时在课堂和考试中不会出现的问题和考验。而这些问题,并不是只靠课本就可以轻易解决的。所以,锻炼了我们独立思考和解决问题的能力。特别是向教师提问时,教师教会了我调试程序的方法,让我更容易发现自己所犯的错误。在教师和同学的帮助下,通过自己的努力,终于完成了这次学生测评系统的课程设计,虽然还有缺陷,但过程中所摸索到的经验是一笔宝贵的财富。总而言之,这次课程设计让我收获很大。附录#include#include#include#includeusing 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;/同学互评分double grade2;/品德成绩double grade3;/任课教室评分double gradesum;/综合测评成绩int ranking1;/考试名次int ranking2;/综合测评名次;Student stud100;/读取学生信息void read() char filename20; cout从文件中读取信息!endl; cout请输入文件名:filename; cout请问要读取几名学生信息:n; ifstream infile; infile.open(filename,ios:in|ios:out); if(!infile) cerropen error!studi.numstudi.namestudi.sexstudi.address studi.phonestudi.englishstudi.math studi.physicsstudi.grade1 studi.grade2studi.grade3; i+; while(!infile.eof(); infile.close(); cout读取成功!endl; /-显示学生信息-void show()read();cout学号 某某 性别 家庭地址 联系方式 英语 高数 物理 同学互评 品德成绩 教师评分endl;for(int i=0;in;i+)coutstudi.num;cout.width(5);coutstudi.name;cout.width(5);coutstudi.sex;cout.width(8);coutstudi.address;cout.width(8);coutstudi.phone;cout.width(6);coutstudi.english;cout.width(6);coutstudi.math;cout.width(6);coutstudi.physics;cout.width(6);coutstudi.grade1;cout.width(8);coutstudi.grade2;cout.width(8);coutstudi.grade3endl;/保存学生信息void save() int i; char filename20; cout将记录保存在文件夹!endl; coutfilename; ofstream outfile(filename); if(!outfile)cerropen error!endl;/-保存时按学号排序-int temp100;for(int a=0;an;a+)tempa=studa.num;int t;for(int j=0;jn;j+)for(int k=0;ktempk+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 tempgrade3;for(int q=0;qn;q+)for(int p=0;pn;p+)if(studp.num=tempq)tempnum=studp.num;tempname=studp.name;tempsex=studp.sex;tempaddress=studp.address;tempphone=studp.phone;tempenglish=studp.english;tempmath=studp.math;tempphysics=studp.physics;tempgrade1=studp.grade1;tempgrade2=studp.grade2;tempgrade3=studp.grade3;studp.num=studq.num;studp.name=studq.name;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=tempnum;studq.name=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;in;i+)outfilestudi.num studi.name studi.sex studi.address studi.phone studi.english studi.math studi.physics studi.grade1 studi.grade2 studi.grade3endl; outfile.close(); cout保存成功!endl;/输入学生资料void SR() coutn;for(int a=0;an;a+)cout请输入第a+1个学生资料:endl; cout学号:studa.num; cout某某:studa.name; cout性别:studa.sex; cout家庭住址:studa.address; cout联系方式:studa.phone; cout英语成绩:studa.english; cout物理成绩:studa.physics;cout高数成绩:studa.math; cout同学互评:studa.grade1;cout品德成绩:studa.grade2;cout任课教师评分:studa.grade3; cout输入成功,学生资料是否保存?(y/n)press; switch(press)case y : save();break;default: cout不保存!;break;/删除资料void SC() read();dostring SC_name; cout请输入你要删除的学生名字:SC_name; while(studi.name!=SC_name & in) i+; /查找判断 if(studi.name=SC_name) for(int j=i;jn+1;j+)studi.num=studi+1.num; studi.name=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; cout删除成功!endl; n=n-1;save(); else if(i=n) coutcant find this nameendl;cout该信息不存在,无法删除!endl; cout(是否继续操作?(y/n)press;while(press=y|press=Y) ;/添加学生信息void TJ() read();docout请添加新的学生信息endl;coutstudn.num;coutstudn.name;coutstudn.sex;coutstudn.address;coutstudn.phone;coutstudn.english;coutstudn.math;coutstudn.physics;coutstudn.grade1;coutstudn.grade2;coutstudn.grade3;n+;cout(是否继续操作?(y/n)press;while(press=y|press=Y);cout添加成功,学生资料是否保存?(y/n)press;switch(press)case y : save();break;default: cout不保存!;break;/修改学生信息void XG() read();begin:string find_name; int i; cout请输入你要修改的学生名字:find_name; for(i=0;in;i+) if(studi.name=find_name) coutstudi.name has been found:endl; cout学生的学号:studi.num 某某:studi.name 性别:studi.sex 家庭住址:studi.address 联系方式:studi.phone 英语成绩:studi.english 高数成绩:studi.math 物理成绩:studi.physics 同学互评分:studi.grade1 品德成绩:studi.grade2 任课教师评分:studi.grade3endl; break; if(studi.name!=find_name) coutcant find this nameendl;cout请重新查找!endl;goto begin;cout请输入新的信息:endl;cout学号:studi.num;cout某某:studi.name;cout性别:studi.sex;cout家庭住址:studi.address; cout联系方式:studi.phone; cout英语成绩:studi.english; cout物理成绩:studi.physics;cout高数成绩: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;for(int a=0;an;a+)/studa.average=(studa.english+studa.math+studa.physics)/3;tempa=studa.average;double t;for(int j=0;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=0;qn;q+)/判定考试成绩名次for(int p=0;pn;p+)if(studp.average=tempq)studp.ranking1=q+1;cout学号 某某 考试成绩 考试成绩排名endl;for(int b=0;bn;b+)coutstudb.num;cout.width(10);coutstudb.name;cout.width(10);coutstudb.average;cout.width(10);coutstudb.ranking1endl;cout是否要保存到文件中?(y/n)press;switch(press)case y:int i;char filename20; coutfilename; ofstream outfile(filename); if(!outfile)cerropen error!endl; for(i=0;in;i+)outfile学号:studi.num 某某:studi.name 考试成绩:studi.average 考试成绩排名studi.ranking1endl; outfile.close();cout保存成功!endl;break;default: cout不保存!;break;/-计算综合测评成绩并按综合测评成绩排名-void PM2()read();double temp100;for(int a=0;an;a+)/studa.gradesum=(studa.english+studa.math+studa.physics)/3)*0.6+studa.grade1*0.1+studa.grade2*0.1+studa.grade3*0.2;tempa=studa.gradesum;double t;for(int j=0;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=0;qn;q+)/判定综合测评成绩名次for(int p=0;pn;p+)if(studp.gradesum=tempq)studp.ranking2=q+1;cout学号 某某 综合测评成绩 综合测评排名endl;for(int b=0;bn;b+)coutstudb.num;cout.width(10);coutstudb.name;cout.width(10);coutstudb.gradesum;cout.width(10);coutstudb.ranking2endl;/按学生学号查找资料void sn() read();doint find_num; cout请输入你要查询的学号:find_num;int i; for(i=0;in;i+)if(studi.num=find_num) cout学号为studi.num的学生的资料已找到:endl;cout学号:studi.num 某某:studi.name 性别:studi.sex 家庭地址:studi.address 联系方式:studi.phone 英语成绩:studi.english 高数成绩:studi.math 物理成绩:studi.physics 同学互评分:studi.grade1 品德成绩:studi.grade2 任课教师评分:studi.grade3endl;break;if(studi.num!=find_num) coutcant find this numendl;cout(是否继续操作?(y/n)press;while(press=y|press=Y);/按学生某某查找资料void sm() read();dostring find_name;cout请输入你要查询的某某:find_name;int i;for(i=0;in;i+)if(studi.name=find_name) cout某某为studi.name的学生的资料已找到endl;cout学号:studi.num 某某:studi.name 性别:studi.sex 家庭地址:studi.address 联系方式:studi.phone 英语成绩:studi.english 高数成绩:studi.math 物理成绩:studi.physics 同学互评分:studi.grade1 品德成绩:studi.grade2 任课教师评分:studi.grade3endl;break;if(studi.name!=find_name) coutcant find this nameendl;cout(是否继续操作?(y/n)press;while(press=y|press=Y);/学生信息管理界面void Fire()while(choose!=0) coutttt*endl; coutttt*endl; coutttt* 学生信息管理 *endl; coutttt* *endl; coutttt* 1.录入学生信息 *endl; coutttt* 2.删除学生信息 *endl; coutttt* 3.添加学生信息 *endl; coutttt* 4.修改学生信息 *endl; coutttt* 5.显示学生信息 *endl; coutttt* 0.返回 *endl; coutttt* *endl; coutttt* 按Enter继续 *endl; coutttt*endl; coutttt*endl; 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 输入错误或返回主界面n;break; /学生成绩统计管理界面void statistics()while(choose!=0) coutttt*endl; coutttt*endl; coutttt* 学生成绩统计管理 *endl; coutttt* *endl; coutttt* 1.按考试成绩排名 *endl; coutttt* 2.按综合测评排名 *endl; coutttt* 0.返回 *endl; coutttt* *endl; coutttt* 按Enter继续 *endl; coutttt*endl; coutttt*endl; couttt 请输入0-2之间的任意一数字:choose; switch(choose) case 1:system(cls); PM1();break; case 2:system(cls); PM2();break; default:couttt 输入错误或返回主界面n;break; /学生查询管理界面void inquiry()while(choose!=0) coutttt*endl; coutttt*endl; coutttt* 学生查询管理 *endl; coutttt* *endl; coutttt* 1.按学号查询 *endl; coutttt* 2.按某某查询 *endl; coutttt* 0.返回
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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