计算机高级语言C课程设计:学生成绩统计管理系统.doc

上传人:sccc 文档编号:4865082 上传时间:2023-05-20 格式:DOC 页数:35 大小:126.01KB
返回 下载 相关 举报
计算机高级语言C课程设计:学生成绩统计管理系统.doc_第1页
第1页 / 共35页
计算机高级语言C课程设计:学生成绩统计管理系统.doc_第2页
第2页 / 共35页
计算机高级语言C课程设计:学生成绩统计管理系统.doc_第3页
第3页 / 共35页
计算机高级语言C课程设计:学生成绩统计管理系统.doc_第4页
第4页 / 共35页
计算机高级语言C课程设计:学生成绩统计管理系统.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《计算机高级语言C课程设计:学生成绩统计管理系统.doc》由会员分享,可在线阅读,更多相关《计算机高级语言C课程设计:学生成绩统计管理系统.doc(35页珍藏版)》请在三一办公上搜索。

1、湖南科技学院课程设计报告 课程名称:计算机高级语言(C+)课程设计课程设计题目:学生成绩统计管理系统系:数 学 系专 业:信息与计算科学年级、班:信计0801姓 名:XX学 号:200805002109指导教师:XXX职 称:讲师200X年XX月XX日目录 1需求分析32概要设计33程序实现思路44设计总结45参考文献56源代码6一. 需求分析学生成绩统计管理系统是为某班级成绩统计管理的一个系统。其中包括学号、姓名、英语、数学、C+语言,各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例,学生的总成绩、平均成绩及成绩排名,是为方便班级的管理人员对学生的信

2、息进行管理而设计,主要的功能有成绩的输入、成绩统计、总成绩统计、成绩的统计结果显示, 学生数据的添加、修改、与删除,学生数据的读取与存储等,并提出系统开发的过程,以求获得更大范围的应用。 二.概要设计1.本程序所用到的所有抽象数据类型的定义如下:序号成员名数据类型含义1numlong学号2namestring姓名3sumdouble总分4rangeint排名5avedouble平均分6scoredouble记录数组2.主程序流程 long num; string name;double scoren; double sum;double ave; int range;double ave; /

3、平均成绩int range; class student class all void input(); void count();void sort();void selectsort();void search(); void insert();int del(); void student:Exit();void display(); 3.各程序模块的功能void input(); /输入void count(); /计算void sort(); /按学号升序排列void selectsort(); /按总成绩降序排列void search(); /查询void insert(); /插

4、入int del(); /删除void student:Exit();/修改数据void display(); /显示void count(); /计算成员函数void average(); /计算平均值成员函数void display(); /显示成员函数 三、程序实现思路1.设计菜单实现功能成绩的输入(学号、姓名、英语、数学、C+语言)。成绩统计(各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例)。总成绩统计(学生的总成绩、平均成绩及成绩排名)。成绩的统计结果显示。学生数据的添加、修改、与删除。学生数据的读取与存储。2.设计类与对象class st

5、udent /建立学生类,用于存储学生个人信息public:long num; /学号string name; /姓名double scoren;/学生科目成绩 double sum; /总成绩double ave; /平均成绩int range; /排名 void input(); /输入void count(); /计算void sort(); /按学号升序排列void selectsort(); /按总成绩降序排列void search(); /查询void insert(); /插入 int del(); /删除 void student:Exit();/修改数据void displa

6、y(); /显示stuN;class all /建立整体类,用来存放学生整体信息public: double ave; /每学科的平均成绩 int people5; /每学科的各等级人数 double percent5; /每学科的各等级人数比例void count(); /计算成员函数void average(); /计算平均值成员函数void display(); /显示成员函数aln;3.通过类的调用实现功能设计case 0:cout*endl;cout数学科统计结果为endl;cout*endl;coutendl;break;case 1:cout*endl;cout英语科统计结果为e

7、ndl;cout*endl;coutendl;break;case 2:cout*endl;coutC+统计结果为endl;cout*endl;coutendl;break;case 3:if(total=0) cout数组为空,请在主菜单中选择1添加数据endl;else cout学生信息为:endl; stutotal.count(); stutotal.display();/显示 coutendl; break;case 4:if(total=0) cout数组为空,请在主菜单中选择1添加数据endl;elsecout各科学生成绩为:endl;aln.average();aln.coun

8、t(); aln.display();coutendl;break;case 5:if(total=0) cout数组为空,请在主菜单中选择1添加数据endl;elsedo stutotal.search();cout查询成功,继续查询请输入Y/y:endl; cout退出请按其他键endl; fflush(stdin); ch=getchar();while(ch=Y|ch=y);break;case 6:if(total=0) cout数组为空,请在主菜单中选择1添加数据endl;elsedostutotal.Exit(); /修改cout修改成功,继续修改请输入Y/y:endl;cout

9、退出请按其他键endl;fflush(stdin);ch=getchar();while(ch=Y|ch=y);break;case 7:if(total=0) cout数组为空,请在主菜单中选择1添加数据endl;else do system(cls); stutotal.insert(); /插入 total+; cout插入成功,继续插入请输入Y/y:endl; cout退出请按其他键endl; fflush(stdin); ch=getchar(); coutendl;while(ch=Y|ch=y);break;case 8:if(total=0)cout数组为空,请在主菜单中选择1

10、添加数据endl;elsedo system(cls); if(stutotal.del() /删除 total-; /人数-1 system(cls); else cout该学号不存在endl; system(pause); system(cls); cout删除成功,继续删除请输入Y/y:endl; cout退出该选择请按其他键endl; fflush(stdin); ch=getchar(); coutendl;while(ch=Y|ch=y); break;case 9: cout此操作将删除所有记录endl; cout继续该操作请输入Y/y:endl; cout退出请按其他键endl

11、; fflush(stdin); ch=getchar(); if(ch=Y|ch=y) total=0; break;default:cout确定要退出吗?endl; cout退出请输入Y/y:endl; fflush(stdin); ch=getchar(); coutendl; if(ch=y|ch=Y) exit(0); break; system(pause); while(1);四、设计总结演绎 每一个程序都是不同的,即便是在相似的模式下,也依旧存在着内容上的细微差别。精心的演绎,这才是最重要的。因为每一个程序就是一段人生历练。 题记从开始的懵懂与紧张,到现在的了解与欣喜,伴随着那

12、无数的“error”和“warning”闪烁,我渐渐学会了在失败中成长。是的,学习C+这门课程就是我的一次历练,而这次的课程设计让我获益良多。通过为期两周的努力,挑战程序设计的难度,终于将程序正确地运行。虽说只是一个简单的程序,但它却见证了我从编写、调试、修改、运行、再修改等一系列的过程,收录了我努力后的小小成果。我欣喜,因为我实现了一个从理论到实践的飞跃;我感怀,因为有同学和老师的帮助和支持。在这个“演绎”的过程中,有时一个小小的错误就让我改了将近一个小时。平时看老师很快的将错误挑出,并熟练的改正,觉得是轻而易举的事,可是这次实践让我学会了从细微之处着手。有时一个错误没有改出来使得其他的错误

13、没有显现出来,但是改动某个地方或者调换某两块的程序的位置,潜在的错误就会弹出。从错误中,我发现了自己的不足,同时也学会让自己学会如何面对这些不足。 运用结构体、类等新学的内容让我再次感受到了学习的重要性。都说“万变不离其宗”,书本是我们课后学习的参照。因为没有重视书本,让我在编译时不断翻看,这也坚定了我努力学好这门课程的决心。 五、参考文献 1.谭浩强C+程序设计清华出版社 2007,5六、源代码学生成绩统计管理程序#include /引用库函数#include /引用控制符处理#include /字符串using namespace std;#define N 100 /宏定义#define

14、 n 3class student /建立学生类,用于存储学生个人信息public:long num; /学号string name; /姓名double scoren; /学生科目成绩double sum; /总成绩double ave; /平均成绩int range; /排名void input(); /输入void count(); /计算void sort(); /按学号升序排列void selectsort(); /按总成绩降序排列void search(); /查询void insert(); /插入int del(); /删除void student:Exit(); /修改数据v

15、oid display(); /显示stuN;class all /建立整体类,用来存放学生整体信息public:double ave; /每学科的平均成绩int people5; /每学科的各等级人数double percent5; /每学科的各等级人数比例void count(); /计算成员函数void average(); /计算平均值成员函数void display(); /显示成员函数aln;int total=0; /定义全局变量void student:input() /输入学生个人信息cout请输入学生信息:endl;cout学号setw(8)姓名setw(12)数学成绩se

16、tw(10)英语成绩setw(10)C+成绩setw(10)stutotal.num;cinsetw(10)stutotal.name;for(int j=0;jsetw(10)stutotal.scorej;void student:selectsort() /按总成绩降序排列student aa;int i,j;for(i=0;itotal-1;i+)for(j=i+1;jtotal;j+)if(stui.sumstuj.sum) aa=stuj;stuj=stui;stui=aa;void student:count() /计算总成绩、平均成绩stutotal.selectsort();

17、for(int i=0;itotal;i+)stui.sum=0;for(int j=0;jn;j+)stui.sum+=stui.scorej;stui.ave=stui.sum/n;void student:sort() /按学号升序排列student abc;int i,j;for(i=0;itotal-1;i+)for(j=i+1;jstuj.num)abc=stuj;stuj=stui;stui=abc;void student:display() /显示学生个人信息selectsort(); /调用按总成绩降序排列函数cout学号setw(10)姓名setw(10)数学成绩setw

18、(10)英语成绩setw(10)C+成绩setw(10)平均成绩setw(10)总成绩setw(10)排名endl;for(int i=0;itotal;i+)stui.range=i+1;coutsetw(10)stui.numsetw(10)stui.name;for(int j=0;jn;j+)coutsetw(10)stui.scorej;coutsetw(10)stui.avesetw(10)stui.sumsetw(10)stui.rangeendl;void all:average() /计算各科的平均成绩for(int j=0;jn;j+)long double a=0;for

19、(int i=0;itotal;i+)a+=stui.scorej;alj.ave=a/double(total);void all:count() /计算各科的各等级人数及其比例for(int j=0;jn;j+)int a=0,b=0,c=0,d=0,e=0;for(int i=0;itotal;i+)if(stui.scorej60)a+;else if(stui.scorej70)b+;else if(stui.scorej80)c+;else if(stui.scorej90)d+;elsee+;alj.people0=a; /数学科不及格人数alj.people1=b; /数学科及

20、格人数alj.people2=c; /数学科中等人数alj.people3=d; /数学科良好人数alj.people4=e; /数学科优秀人数alj.percent0=a/double(total); /数学科不及格人数所占的比例alj.percent1=b/double(total); /数学科及格人数所占的比例alj.percent2=c/double(total); /数学科中等人数所占的比例alj.percent3=d/double(total); /数学科良好人数所占的比例alj.percent4=e/double(total); /数学科优秀人数所占的比例void all:dis

21、play() /输出整体信息for(int j=0;jn;j+)switch(j)case 0:cout*endl;cout数学科统计结果为endl;cout*endl;coutendl;break;case 1:cout*endl;cout英语科统计结果为endl;cout*endl;coutendl;break;case 2:cout*endl;coutC+统计结果为endl;cout*endl;coutendl;break;cout平均成绩为:alj.aveendl;coutendl;cout不及格人数为:alj.people0endl;cout及格人数为:alj.people1endl

22、;cout中等人数为:alj.people2endl;cout良好人数为:alj.people3endl;cout优秀人数为:alj.people4endl;cout不及格人数为:alj.percent0endl;cout及格人数比为:alj.percent1endl;cout中等人数为:alj.percent2endl;cout良好人数比为:alj.percent3endl;cout优秀人数比为:alj.percent4endl;coutendl;void student:search() /查询int find_num;bool flag=false;cout请输入要查找的学生的学号fin

23、d_num;for(int i=0;itotal;i+)if(stui.num=find_num) /如果要找的学号与其中某一个学生的学号相同coutsetw(10)stui.numendl;cout已经找到该学生信息,他的有关信息是:endl;coutsetw(10)stui.name;for(int j=0;jn;j+)coutsetw(10)stui.scorej;coutsetw(10)stui.avesetw(10)setw(10)stui.sumsetw(10)stui.rangeendl; /输出学生信息flag=true;break; if(flag=false)cout找不到

24、该学生的学号endl; /如找不到输出找不到信息void student:Exit() /修改int ID;bool flag=false;string name1;cout请输入要修改的学生的信息endl;coutsetw(12)学号:setw(12)endl;cout姓名:setw(12)endl;cout数学成绩:setw(12)endl;cout英语成绩:setw(12)endl;coutC+成绩:ID;cinname1;for(int i=0;itotal;i+)if(stui.num=ID)stui.num=ID;stui.name=name1;flag=true;break;if

25、(flag=false)cout找不到该学生的学号endl;void student:insert() /插入int a;string aa;double x,y,z;stutotal.sort(); /调用按学号升序排列函数cout请输入要插入的学生的信息endl; /输入要插入学生的信息coutsetw(12)学号setw(12)姓名setw(12)数学成绩setw(12)英语成绩setw(12)C+成绩aaaxyz;stutotal.num=a;stutotal.name=aa;stutotal.score0=x;stutotal.score1=y;stutotal.score2=z;i

26、nt student:del() /删除int i,j,abc;cout请输入要删除的学号:abc;stutotal.sort(); /调用按学号升序排列函数for(i=0;itotal;i+)if(abc=stui.num) /如果某一个学生的学号与要删除的学生的学号相同break;if(itotal)for(j=i;jtotal;j+)stuj=stuj+1;return 1;elsereturn 0;void menu(); /显示主菜单class student;class all;void student:display();void all:display(); /显示学生信息vo

27、id student:insert(); /插入学生(自动排序)int student:del(); /删除学生void student:search(); /按学号查询int main()class student stuN;class all aln;char ch;int select; /total为学生总数,select为选择dosystem(cls);menu();cout请输入你的选择:select;system(cls);switch(select)case 1:dosystem(cls);stutotal.input();total+; /人数+1cout输入成功,继续输入请

28、输入Y/y:endl;cout退出请输入其他键endl;fflush(stdin);ch=getchar();while(ch=Y|ch=y);coutendl;break;case 2:if(total=0)cout数组为空,请在主菜单中选择1添加数据endl;elsecout学生信息为:endl;stutotal.count();stutotal.display(); /显示coutendl;break;case 3:if(total=0)cout数组为空,请在主菜单中选择1添加数据endl;elsecout各科学生成绩为:endl;aln.average();aln.count();al

29、n.display();coutendl;break;case 4:if(total=0)cout数组为空,请在主菜单中选择1添加数据endl;elsedostutotal.search();cout查询成功,继续查询请输入Y/y:endl;cout退出请按其他键endl;fflush(stdin);ch=getchar();while(ch=Y|ch=y);break;case 5:if(total=0)cout数组为空,请在主菜单中选择1添加数据endl;elsedostutotal.Exit(); /修改cout修改成功,继续修改请输入Y/y:endl;cout退出请按其他键endl;f

30、flush(stdin);ch=getchar();while(ch=Y|ch=y);break;case 6:if(total=0)cout数组为空,请在主菜单中选择1添加数据endl;elsedosystem(cls);stutotal.insert(); /插入total+;cout插入成功,继续插入请输入Y/y:endl;cout退出请按其他键endl;fflush(stdin);ch=getchar();coutendl;while(ch=Y|ch=y);break;case 7:if(total=0)cout数组为空,请在主菜单中选择1添加数据endl;elsedosystem(c

31、ls);if(stutotal.del() /删除total-; /人数-1system(cls);elsecout该学号不存在endl;system(pause);system(cls);cout删除成功,继续删除请输入Y/y:endl;cout退出该选择请按其他键endl;fflush(stdin);ch=getchar();coutendl;while(ch=Y|ch=y);break;case 8:cout此操作将删除所有记录endl;cout继续该操作请输入Y/y:endl;cout退出请按其他键endl;fflush(stdin);ch=getchar();if(ch=Y|ch=y

32、)total=0;break;default:cout确定要退出吗?endl;cout退出请输入Y/y:endl;fflush(stdin);ch=getchar();coutendl;if(ch=y|ch=Y) exit(0);break;system(pause);while(1);void menu()cout|-|endl;cout| 学生成绩统计管理系统 |endl;cout|-|endl;cout| 1.输入: 输入所有学生信息 |endl;cout| 2.显示:学生个人信息统计数据 |endl;cout| 3.显示:各科成绩统计结果数据(比例) |endl;cout| 4.查询:查找指定学生(按学号) |endl;cout| 5.修改:修改指定学生信息 |endl;cout| 6.插入:插入一条学生信息 |endl;cout| 7.删除:删除指定学生信息 |endl;cout| 8.清除:清除所有学生记录 |endl;cout| 9.退出: 安全地退出本系统 |endl;cout|-|endl;35

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号