C++学生成绩统计管理系统总汇(最新最全)_第1页
C++学生成绩统计管理系统总汇(最新最全)_第2页
C++学生成绩统计管理系统总汇(最新最全)_第3页
C++学生成绩统计管理系统总汇(最新最全)_第4页
C++学生成绩统计管理系统总汇(最新最全)_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 南 昌 大 学C+ 选 修 课课程设计报告 题 目: 学 院:专 业:姓 名: 学 号: 电 话:2016年6月17日目录 1需求分析32概要设计33程序实现思路44设计总结45参考文献56源代码6一、需求分析经过研一下学期C+选修课的学习,对C+基于对象的程序设计有了一定的认识,根据所学的知识,设计学生成绩管理系统。学生成绩统计管理系统是为某班级成绩统计管理的一个系统。为方便班级的管理人员对学生的信息进行管理,该系统中包括学号、姓名、大学物理、高数、C+语言,各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例,学生的总成绩、平均成绩及成绩排名.通过仔

2、细研究借鉴众多相关毕业设计研究等文献资料(见参考文献一),学习书籍谭浩强面向对象的C+程序设计编写了该成绩管理系统。主要的功能有学生数据的增加、删除、修改、查询,另外实现一些统计的功能,例如:成绩的输入、成绩统计、总成绩统计、成绩的统计结果显示。二、概要设计1、本程序所用到的所有抽象数据类型的定义如下:序号成员名数据类型含义1numlong学号2namestring姓名3sumdouble总分4rangeint排名5avedouble平均分6scoredouble记录数组2、各程序模块的功能void input(); /输入void count(); /计算void sort(); /按学号升

3、序排列void selectsort(); /按总成绩降序排列void insert(); /增加int del(); /删除void student::Exit(); /修改void search(); /查询void display(); /显示以下为统计模块:void count(); /计算成员函数void average(); /计算平均值成员函数void display(); /显示成员函数三、程序实现思路1。设计菜单实现功能成绩的输入(学号、姓名、大学物理、高数、C+语言)。成绩统计(各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格的人数及其所占比例)。总成

4、绩统计(学生的总成绩、平均成绩及成绩排名)。成绩的统计结果显示。学生数据的增加、修改、与删除。学生数据的读取与存储。2.设计类与对象class student /建立学生student类,目的是存储学生个人信息public:long num; /学号string name; /姓名double scoren; /学生科目成绩 double sum; /总成绩double ave; /平均成绩int range; /排名 void insert(); /增加 int del(); /删除void search(); /查询void student::Exit();/修改void display(

5、); /显示void input(); /输入void count(); /计算void sort(); /按学号升序排列void selectsort(); /按总成绩降序排列stuN;class all /建立整体all类,目的是存放学生整体信息public: double ave; /每学科的平均成绩 int people5; /每学科的各等级人数 double percent5; /每学科的各等级人数比例void count(); /计算成员函数 void average(); /计算平均值成员函数 void display(); /显示成员函数 aln;3.通过类的调用实现功能设计c

6、ase 0:cout”*”endl;cout高数科统计结果为”endl;cout”*endl;coutendl;break;case 1:cout*endl;cout”大学物理科统计结果为endl;cout*endl;coutendl;break;case 2:cout”*”endl;cout”C+统计结果为”endl;cout*”endl;coutendl;break;case 3:if(total=0) cout”数组为空,请在主菜单中选择1增加数据endl;else cout”学生信息为:”endl; stutotal。count(); stutotal。display();/显示 co

7、utendl; break;case 4:if (total=0) cout数组为空,请在主菜单中选择1增加数据endl;elsecout”各科学生成绩为:”endl;aln。average();aln。count(); 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

8、=y);break;case 6:if(total=0) cout”数组为空,请在主菜单中选择1增加数据”endl;elsedostutotal。Exit(); /修改cout修改成功,继续修改请输入Y/y:”endl;cout”退出请按其他键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:”en

9、dl; cout退出请按其他键”endl; fflush(stdin); ch=getchar(); coutendl;while(ch=Y|ch=y);break;case 8:if(total=0)cout数组为空,请在主菜单中选择1增加数据”endl;elsedo system(cls”); if(stutotal。del()) /删除 total-; /人数1 system(cls”); else cout”该学号不存在endl; system(pause); system(”cls”); cout删除成功,继续删除请输入Y/y:endl; cout”退出该选择请按其他键endl; f

10、flush(stdin); ch=getchar(); coutendl;while(ch=Y|ch=y); break;case 9: cout此操作将删除所有记录”endl; cout”继续该操作请输入Y/y:endl; cout”退出请按其他键”endl; 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); br

11、eak; system(”pause); while(1);四、设计总结通过为期两周的努力,挑战程序设计的难度,终于将程序正确地运行。虽说只是一个简单的程序,但它却见证了我从编写、调试、修改、运行、再修改等一系列的过程,收录了我努力后的小小成果.从不断调试中遇到的错误中,我发现了自己的不足,同时也学会让自己如何面对挑战。 运用结构体、类等新学的内容让我再次感受到了学习的重要性。都说“万变不离其宗”,书本是我们课后学习的参照。因为没有重视书本,让我在编译时不断翻看,这也坚定了我努力学好这门课程的决心。 五、参考文献 1.谭浩强C+程序设计清华出版社 2007,5六、源代码学生成绩统计管理程序in

12、clude /引用库函数#include /引用控制符处理#includestring /字符串using namespace std;define N 100 /宏定义define n 3class student /建立学生类,用于存储学生个人信息public:long num; /学号string name; /姓名double scoren; /学生科目成绩double sum; /总成绩double ave; /平均成绩int range; /排名void input(); /输入void count(); /计算void sort(); /按学号升序排列void selectsor

13、t(); /按总成绩降序排列void search(); /查询void insert(); /增加int del(); /删除void student:Exit(); /修改数据void display(); /显示stuN;class all /建立整体类,用来存放学生整体信息public:double ave; /每学科的平均成绩int people5; /每学科的各等级人数double percent5; /每学科的各等级人数比例void count(); /计算成员函数void average(); /计算平均值成员函数void display(); /显示成员函数aln;int t

14、otal=0; /定义全局变量void student::input() /输入学生个人信息cout”请输入学生信息:”endl;cout”学号”setw(8)”姓名setw(12)”高数成绩setw(10)”大学物理成绩”setw(10)”C+成绩setw(10)stutotal。num;cinsetw(10);for(int j=0;jn;j+)cinsetw(10)stutotal。scorej;void student::selectsort() /按总成绩降序排列student aa;int i,j;for(i=0;itotal1;i+)for(j=i+1;

15、jtotal;j+)if(stui.sumstuj。sum) aa=stuj;stuj=stui;stui=aa;void student:count() /计算总成绩、平均成绩stutotal。selectsort();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

16、;stuj=stui;stui=abc;void student:display() /显示学生个人信息selectsort(); /调用按总成绩降序排列函数cout”学号”setw(10)”姓名”setw(10)高数成绩setw(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);for(int j=0;jn;j+)coutsetw(10)stui。scorej;co

17、utsetw(10)stui.avesetw(10)stui。sumsetw(10)stui.rangeendl;void all::average() /计算各科的平均成绩for(int j=0;jn;j+)long double a=0;for(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+;e

18、lse if(stui。scorej70)b+;else if(stui。scorej80)c+;else if(stui.scorej90)d+;elsee+;alj。people0=a; /高数科不及格人数alj。people1=b; /高数科及格人数alj。people2=c; /高数科中等人数alj.people3=d; /高数科良好人数alj。people4=e; /高数科优秀人数alj。percent0=a/double(total); /高数科不及格人数所占的比例alj.percent1=b/double(total); /高数科及格人数所占的比例alj。percent2=c/d

19、ouble(total); /高数科中等人数所占的比例alj。percent3=d/double(total); /高数科良好人数所占的比例alj。percent4=e/double(total); /高数科优秀人数所占的比例void all:display( ) /输出整体信息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

20、:cout”*endl;cout”C+统计结果为”endl;cout*”endl;coutendl;break;cout平均成绩为:”alj。aveendl;coutendl;cout”不及格人数为:”alj。people0endl;cout”及格人数为:”alj.people1endl;cout中等人数为:alj。people2endl;cout良好人数为:”alj.people3endl;cout优秀人数为:alj.people4endl;cout不及格人数为:”alj。percent0endl;cout”及格人数比为:alj.percent1endl;cout中等人数为:alj。perc

21、ent2endl;cout”良好人数比为:alj。percent3endl;cout”优秀人数比为:alj.percent4endl;coutendl;void student:search() /查询int find_num;bool flag=false;cout请输入要查找的学生的学号find_num;for(int i=0;itotal;i+)if(stui.num=find_num) /如果要找的学号与其中某一个学生的学号相同coutsetw(10)stui。numendl;cout”已经找到该学生信息,他的有关信息是:endl;coutsetw(10);for(i

22、nt 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”找不到该学生的学号endl; /如找不到输出”找不到信息void student:Exit() /修改int ID;bool flag=false;string name1;cout”请输入要修改的学生的信息endl;coutsetw(12)学号:”setw(12)endl;cout”姓名:”setw(

23、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;=name1;flag=true;break;if(flag=false)cout”找不到该学生的学号endl;void student:insert() /增加int a;string aa;double x,y,z;stutotal.sort(); /调用按学号升序排列函数cout请输入要增加的学生的信息”endl; /输入

24、要增加学生的信息coutsetw(12)学号setw(12)”姓名setw(12)高数成绩setw(12)”大学物理成绩setw(12)”C+成绩aaaxyz;stutotal.num=a;=aa;stutotal。score0=x;stutotal。score1=y;stutotal.score2=z;int student::del() /删除int i,j,abc;coutabc;stutotal。sort(); /调用按学号升序排列函数for(i=0;itotal;i+)if(abc=stui。num) /如果某一个学生的学号与要删除的学生的学号相同break

25、;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(); /显示学生信息void student::insert(); /增加学生(自动排序)int student:del(); /删除学生void student::search(); /按学号查询int main() /主函数class student stuN;class all aln;char ch

26、;int select; /total为学生总数,select为选择dosystem(”cls);menu();cout请输入你的选择:select;system(”cls);switch(select)case 1:dosystem(cls);stutotal。input();total+; /人数+1cout输入成功,继续输入请输入Y/y:endl;cout”退出请输入其他键”endl;fflush(stdin);ch=getchar();while(ch=Y|ch=y);coutendl;break;case 2:if(total=0)cout”数组为空,请在主菜单中选择1增加数据end

27、l;elsecout”学生信息为:”endl;stutotal.count();stutotal.display(); /显示coutendl;break;case 3:if(total=0)cout数组为空,请在主菜单中选择1增加数据endl;elsecout各科学生成绩为:endl;aln.average();aln.count();aln.display();coutendl;break;case 4:if(total=0)cout”数组为空,请在主菜单中选择1增加数据endl;elsedostutotal。search();cout”查询成功,继续查询请输入Y/y:endl;cout”

28、退出请按其他键”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;fflush(stdin);ch=getchar();while(ch=Y|ch=y);break;case 6:if(total=0)cout数组为空,请在主菜单中选择1增加数据endl;elsedosystem(cls);stutotal

29、。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(cls”);if(stutotal。del() /删除total; /人数1system(”cls);elsecout”该学号不存在endl;system(pause”);system(cls”);cout删除成功,继续删除请输入Y/y

30、: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)total=0;break;default:cout”确定要退出吗?”endl;cout退出请输入Y/y:endl;fflush(stdin);ch=getchar();coutendl;if(ch=y|ch=Y) e

31、xit(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”|

32、 8.清除:清除所有学生记录 ”endl;cout| 9。退出: 安全地退出本系统 |endl;cout”-|#include string。hinclude stdlib。hinclude class student /定义一个学生类public:int number;char name20;double point3; double sum; student()number=0;student(int num,char na20,double math,double english,double cpp) number=num;for(int i=0;i20;i+)namei=nai;po

33、int0=math;point1=english;point2=cpp;double add() /求个人总成绩 sum=0;for(int i=0;i3;i+)sum=sum+pointi;return sum;;void list();void newstu();void infile();void add();void del(); void xiugai();void see_grade();void tongji();void totaltongji();void outfile();void lei();void restart();student stu80; int z=0;c

34、har r50;char set_code10=”123”; /设定密码double T10; char string10;void main() for(int time=1;time4;time+) /设定三次输入密码的机会 cout”*请输入密码:; cinstring; cout”n”; if (strcmp(string,set_code)=0)cout”ttt*欢迎来到学生成绩统计管理系统*endl;break; else cout!!输入密码有错误,请重新输入!endl; if(time=4) exit(1);list();void list() /选择菜单 cout”n; co

35、ut”ttt本系统由软件工程编写*endl;coutn”; coutttt=*=*=*=*=*=endl;cout”tttt 系统菜单endl;cout”ttt=*=*=*=*=*=*=*=*=*=*=endl;couttttt 1新建学生名单endl;cout”tttt 读取学生成绩endl;couttttt 3添加学生成绩endl;cout”tttt 删除学生成绩”endl;couttttt 5修改学生资料”单人资料查询”endl;couttttt 成绩统计”endl;cout总成绩统计”endl;couttttt 储存学生成绩endl;cout”tttt 退出程序endl;cout”tt

36、t=*=*=*=*=*=*=”;int a;coutendla;coutendl;switch(a)case 1:newstu();break;case 2:infile();break;case 3:add();break;case 4:del();break;case 5:xiugai();break;case 6:see_grade();break;case 7:tongji();break;case 8:totaltongji();break;case 9:outfile();break;case 10:cout”退出程序”endl;break;default:cout输入错误endl

37、;void newstu() /case_1 新建学生名单char y;for(int i=0;i80;i+) coutstui。number;;cout请输入学生的数学成绩:;cinstui。point0;coutstui.point1;coutstui.point2;cout”是否要继续进行学生资料的输入?y/n:;ciny;if(y=n)i=80;else coutendl;cout”新建学生名单完成,”;restart();void infile() /case_2 读取学生成绩fstream in;coutendl;in.open(f:学生名单.dat”,i

38、os::in|ios:binary);if(!in) cout”无法找到指定文件。”endl;abort();for(int i=0;i80;i+) /从文件逐个导入学生成绩 in。read(char*)&stui,sizeof(stui);in。close();cout学生成绩已读取完毕endl;coutendl;lei();restart();void add() /case_3 添加学生lei();coutstuz。number;;coutstuz。point0;cout请输入学生的英语成绩:;cinstuz.point1;cout”请输入学生的C+成绩:”;c

39、instuz.point2;cout添加完毕”endl;restart();void del() /case_4 删除学生 int n,m;lei();cout请输入将要删除的学生的学号:”;cinn;for(int i=0;iz;i+) if(stui.number=n)m=i;stum。number=0;for(i=m;i80m;i+) /将被删除学号后面的所有学号依次上移一位stui.number=stui+1。number;for(int j=0;j20;j+)j=stui+1。namej;stui。point0=stui+1。point0;stui.point1=stui+1.point1;stui.point2=stui+1.point2;cout”已删除成功endl;restart();void xiugai() /case_5 修改学生成绩 int n,m;lei();cout

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论