C++课程设计报告学生成绩统计系统.doc
《C++课程设计报告学生成绩统计系统.doc》由会员分享,可在线阅读,更多相关《C++课程设计报告学生成绩统计系统.doc(18页珍藏版)》请在沃文网上搜索。
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(
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 报告 学生 成绩 统计 系统