ImageVerifierCode 换一换
格式:DOC , 页数:18 ,大小:137.46KB ,
资源ID:851537      下载积分:20 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-851537.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++课程设计报告学生成绩统计系统.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

C++课程设计报告学生成绩统计系统.doc

1、目 录一、课题设计任务分析-二、程序模块设计分析-三、程序的实现思路-四、程序流程图-五、源代码及注释-六、测试情况-七、小结-一、课程设计任务分析:(1)需求分析:能够实现学生学号、姓名、各科成绩的录入;能够实现对学生信息的浏览、查找、删除;弄够实现对学生信息按学号顺序显示,成绩排名;能够对各科成绩统计情况输出。(2)系统功能要求:要求实现如下功能: 成绩的输入(学号、姓名、英语、数学、C+语言)。成绩统计(各科平均成绩、各科成绩“优秀”“良好”“中等”“及格” “不及格”的人数及其所占比例)。总成绩统计(学生的总成绩、平均成绩及成绩排名)。 成绩的统计结果显示。 学生数据的添加、修改、与删

2、除。 学生数据的读取与存储。(3)系统的功能分析:资料维护:系统维护包括对各学生姓名、成绩、学号的录入操作,对数据表中的信息进行浏览。成绩查询:可以对学生成绩进行详细查询及各科成绩的优秀和不及格人数、各科总平均成绩等相关信息的浏览。排序显示:包括统计学生排名成绩、不及格科目情况、各科总平均成绩。二、程序模块设计分析:(1)添加数据: 把用户输入的数据添加到学生类对象数组中,然后再将其入堆,使其有序。 (2)删除数据: 由用户输入要删除的学生的学号,然后将其从学生类对象数组中删除,使数组中的数据仍然有序。(3)查找数据: 由用户输入要查找的学生的学号,然后调用 leo 类中关于查找的函数,将查找

3、结果显示 在屏幕上。(4)显示数据: 调用 leo 类中关于显示数据的函数,把所有的学生数据都显示在屏幕上。 (5)清除数据: 调用 leo 类中关于清除数据的函数,把所有的学生数据都清空。(6)退出程序: 若用户输入了数字 0,则主函数结束循环,同时程序也就结束了。三、程序的实现思路:先创建一个学生元素类,用于存放学生的各种数据。然后创建另一个类,把数据存储, 可便进行各种操作。本程序中比较核心的技术就是用到了堆排序,将学生按优先级(高的排 前面,低的排后面)的大小进行有序排列。堆排序的时间复杂度较一般排序(如:冒泡,选 择等)来得低,可使程序显示数据时效率更高。(1)“成绩录入”模块:序号

4、录入:对各个学生序号录入;数据录入:对学生科目和成绩进行录入。(2)“查询修改”模块:可以对学生数据进行指定查找、修改或查看全部学生信息;选择输出单科成绩统计情况。(3)“排序显示”模块:可自行按学号顺序显示所有学生信息;可选择查看学生总分排名,排序显示到用户屏幕。四、程序流程图:程序中一共包括了六个模块,分别是:添加模块、删除模块、排序模块、统计模块、查找模块、界面模块。 (1)添加信息:(2)删除信息:(3)信息排序:(4)统计信息:(5)查找信息:(6)界面模块:五、源代码及注释:#include#include#include#include#define max 300using n

5、amespace std;struct student string num;string name;float english;float math;float cyuyan;/定义c+float geten()return english;float getma()return math;float getcy()return cyuyan;string getnu()return num;string getna()return name;int rank3;int row;/排名int sinto(string,string,float,float,float);/输入数据void o

6、utput();/输出数据float sum();/ 求和float average();/求平均void subject();/成绩分类; void shows()/普通函数coutsetw(6)排名setw(6)学号setw(10)姓名setw(6)英语setw(6)数学setw(6)c+setw(6)总分setw(10)平均分endl;int student:sinto(string a1,string a2,float b1,float b2,float b3 )num=a1;name=a2;english=b1;math=b2;cyuyan=b3;return 0;void stud

7、ent:output()/输出coutsetw(6)rowsetw(6)numsetw(10)namesetw(6)englishsetw(6)mathsetw(6)cyuyansetw(6)sum()setw(10)setiosflags(ios:fixed)setprecision(1)average()endl;coutsetiosflags(ios:fixed)setprecision(0);float student:sum()/求总分 return english+math+cyuyan;float student:average()/求平均分return sum()/3;void

8、 student:subject() int n;rank0=(int)english;rank1=(int)math;rank2=(int)cyuyan;for(int i=0;i3;i+) n=ranki/10;switch(n) case 9:n=1;break;case 8:n=2;break;case 7:n=3;break;case 6:n=4;break;default:n=5;ranki=n;/类student结束/类leo开始class leoprivate:student itemmax;int size;public:leo();void lsize(int);/设置数组

9、大小void lempty();/清空void linsert();/添加void ldelet(string);/删除void lsearch(string);/查找void lmodify(string);/修改void lsort();/成绩分类void lrow();/排序 void obave();/求平均void lview();/显示全部数据void lcin();/从磁盘输出void lcout();/储存到磁盘;leo:leo() student itemmax;lsize(0);void leo:lsize(int i)size=i;void leo:lempty() ls

10、ize(0);cout学生数据清除成功endl;cout当前无学生数据。请添加!endl;void leo:ldelet(string a) int k=0;string c;for(int i=0;isize;i+)if(itemi.getn()=a)cout你将要删除的数据如下:endl;shows();itemi.output();coutc;if(c=y|c=Y) itemi=item-size;k=1; if(k!=1)coutn删除失败!endl;else coutn删除成功!max)cout超出范围,不能再添加!endl;else coutn请输入学号、姓名、英语、数学、c+成绩

11、:a1a2b1b2b3;for(int i=0;isize;i+)if(itemi.getnu()=a1) mn+;cout输入的数据与下面的数据重复!endl;shows();/输出重复的学号,姓名,英语,数学,c+成绩itemi.output();if(!mn)itemsize+.sinto(a1,a2,b1,b2,b3);coutn添加成功!;couta;void leo:lsearch(string a)/查找int N=0;for(int i=0;isize;i+)if(itemi.getnu()=a)N+;shows();/输出学号,姓名,英语,数学,c+itemi.output(

12、);if(!N)cout输入有误或该学生数据不存在endl;void leo:lmodify(string a)/修改 if(size=0)cout当前学生数据为空,请添加!endl;elseint N=0;for(int i=0;isize;i+)if(itemi.getnu()=a) N+;cout你将要修改的数据如下:endl;shows();itemi.output();cout请输入要修改学生的学号,姓名,英语,数学,c+成绩a1a2b1b2b3;itemi.sinto(a1,a2,b1,b2,b3);cout修改成功!endl;if(!N)cout输入的学号有误!1)for(int

13、 i=0;isize-1;i+) temb=itemi;for(int j=i+1;jsize;j+)if(itemi.sum()itemj.sum() itemi=itemj;itemj=temb; item0.row=1;for(int i=0;iitemi+1.sum() itemi+1.row=i+2;else itemi+1.row=i+1;/并列排名else if(size=1) item0.row=1;void leo:lview()/显示if(size=0)cout当前学生数据为空,请添加!endl;else cout共有学生数据size条endlendl;shows();fo

14、r(int i=0;isize;i+) itemi.output();void leo:obave()/统计科目 if(size!=0)float sum3=0;for(int i=0;isize;i+)sum0+=itemi.geten();sum1+=itemi.getma();sum2+=itemi.getcy();cout英语平均的成绩为:setiosflags(ios:fixed)setprecision(1)sum0/sizen;cout数学平均的成绩为:sum1/sizen;coutc+的平均成绩是:sum2/sizen;coutsetiosflags(ios:fixed)set

15、precision(0)endl;else cout当前无学生数据,请添加!;void leo:lsort() /成绩分类 int p3300;float tem=100.00/size;string a3=英语,数学,c+;if(size!=0) for(int i=0;isize;i+) itemi.subject();p0i=itemi.rank0;p1i=itemi.rank1;p2i=itemi.rank2;for(int k=0;k3;k+) int b5=0; for(int i=0;isize;i+) switch(pki)case 1: b0+;break;case 2: b

16、1+;break;case 3: b2+;break;case 4: b3+;break;case 5: b4+;break;default:break; coutak成绩分类人数: 优b0人 良b1人 中b2人 及格b3人 不及格b4人endl;coutsetiosflags(ios:fixed)setprecision(1)ak成绩分类比例: 优(float)b0*tem% 良(float)b1*tem% 中(float)b2*tem% 及格(float)b3*tem% 不及格(float)b4*tem%endlendl;coutsetiosflags(ios:fixed)setpreci

17、sion(0)endl;void leo:lcin() string a300,b300;float c300,d300,e300;int f300;ifstream infile(ok.txt,ios:in);if(! infile) cerr初次使用此系统,请选择先清除所有数据。endl;for(int i=0;iaibicidieifi;itemsize.sinto(ai,bi,ci,di,ei);size+;if(fi=1) break; infile.close();void leo:lcout()ofstream outfile(ok.txt,ios:out);if(! outfi

18、le) cerr文件打开失败!endl;for(int i=0;isize;i+)outfileitemi.num itemi.name itemi.english itemi.math itemi.cyuyan size-iendl;outfile.close();void showmenu()cout ;cout|*|endl;cout ;cout|欢迎使用学生成绩统计管理系统|endl;cout ;cout|*|endl;cout ;cout| 1.显示:显示所有学生数据(按总分排序)|endl;cout ;cout| 2.查看:查看所有统计结果 |endl;cout ;cout| 3.

19、添加:插入一个学生数据 |endl;cout ;cout| 4.删除:删除一个学生数据 |endl;cout ;cout| 5.查找: 查找指定学生数据 |endl;cout ;cout| 6.修改:修改指定学生数据 |endl;cout ;cout| 7.清空:清除所有学生数据 |endl;cout ;cout| 8.帮助:查看系统注意事项 |endl;cout ;cout| 0.退出:将数据保存到磁盘 |endl;cout ;void showtip() coutntt操作完成!endl;couttt选择0-8继续endl;int main()leo leo1;string c=s,a;s

20、ystem(cls);/清屛showmenu();cout正在打开文件,请稍后!endl;leo1.lcin();coutc;while(c!=0)system(cls);showmenu();if(c=1) cout你选择了1,学生数据显示如下:endlendl;leo1.lrow();/排序leo1.lview();if(c=2) cout你选择了2,统计结果如下:endl;leo1.obave();/各科平均成绩,leo1.lsort();/各科分类情况if(c=3) cout你选择了3,请输入学生数据;leo1.linsert();if(c=4) cout你选择了4,请输入要删除的学号

21、:a;leo1.ldelet(a);if(c=5)cout你选择了5,请输入要查找的学号:a;leo1.lsearch(a);if(c=6)cout你选择了6,请输入要修改的学号:a;leo1.lmodify(a);if(c=7) cout你选择了7,全部数据将要清空endl;cout你确定清空吗?输入y确定,n退出a;if(a=y|a=Y)leo1.lempty ();if(c=8) cout1.本系统最多可容纳300个学生数据.endl;cout2.如不能正常添加数据,请检查使用前是否清空了数据.endl;cout3.选择相应的数字输入,不同数据间留空隔,输完后按回车键 .endl;cou

22、t4.注意操作完后将数据保存.c;system(cls);leo1.lcout();cout欢迎下次使用!endl;return 0;六、测试情况:程序测试结果良好,基本实现了所有要求。运行结果截图如下:刚运行系统之前首先要清空所有学生数据,然后才能添加数据。七、小结:经过一个学期以来在老师的指导下对C+程序设计的学习, 我学到了C+的基本理论知识,了解了C+作为一种面向对象的程序设计语言的思想,这些知识为我的课程设计实践和进一步学习打下了坚实的基础。在这一个月的课程设计中,我体会颇多,学到了很多的东西。也加强了对这门课程的认识,复习了以前的知识。通过小组成员的努力,最终顺利的完成了这次课程设

23、计。虽然这次课设是在参考程序的基础上进行的,但我们也做了一点修改,但改进并不明显,而且有些部分仍不是很理解,还是创新能力缺乏,知识内容掌握的不完全,并且仍有一些地方的改动使程序无法达到理想效果。另外由于时间紧迫,任务重,对知识的了解仍不广泛,造成系统还存在某些缺陷,功能上还不完善。通过这次课设,我认识到自己在哪些方面还不足,需要继续提高。与此同时,我意识到,c+是一门很有内涵的课程,它不仅需要自己独立查阅资料,还需要集体的合作,进行讨论,还学会了许多老师课本上没讲的东西,如int void的区别,setw的意思等,加深了对这门课程的理解,了解了更多知识,受益匪浅。总而言之,这次课程设计让我收获很大。参考文献:谭浩强, C+程序设计(第二版),清华大学出版社,2011年8月出版2012年9月24日

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922