c学生成绩统计管理系统总汇.docx

上传人:b****5 文档编号:14363369 上传时间:2023-06-22 格式:DOCX 页数:93 大小:320.69KB
下载 相关 举报
c学生成绩统计管理系统总汇.docx_第1页
第1页 / 共93页
c学生成绩统计管理系统总汇.docx_第2页
第2页 / 共93页
c学生成绩统计管理系统总汇.docx_第3页
第3页 / 共93页
c学生成绩统计管理系统总汇.docx_第4页
第4页 / 共93页
c学生成绩统计管理系统总汇.docx_第5页
第5页 / 共93页
c学生成绩统计管理系统总汇.docx_第6页
第6页 / 共93页
c学生成绩统计管理系统总汇.docx_第7页
第7页 / 共93页
c学生成绩统计管理系统总汇.docx_第8页
第8页 / 共93页
c学生成绩统计管理系统总汇.docx_第9页
第9页 / 共93页
c学生成绩统计管理系统总汇.docx_第10页
第10页 / 共93页
c学生成绩统计管理系统总汇.docx_第11页
第11页 / 共93页
c学生成绩统计管理系统总汇.docx_第12页
第12页 / 共93页
c学生成绩统计管理系统总汇.docx_第13页
第13页 / 共93页
c学生成绩统计管理系统总汇.docx_第14页
第14页 / 共93页
c学生成绩统计管理系统总汇.docx_第15页
第15页 / 共93页
c学生成绩统计管理系统总汇.docx_第16页
第16页 / 共93页
c学生成绩统计管理系统总汇.docx_第17页
第17页 / 共93页
c学生成绩统计管理系统总汇.docx_第18页
第18页 / 共93页
c学生成绩统计管理系统总汇.docx_第19页
第19页 / 共93页
c学生成绩统计管理系统总汇.docx_第20页
第20页 / 共93页
亲,该文档总共93页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c学生成绩统计管理系统总汇.docx

《c学生成绩统计管理系统总汇.docx》由会员分享,可在线阅读,更多相关《c学生成绩统计管理系统总汇.docx(93页珍藏版)》请在冰点文库上搜索。

c学生成绩统计管理系统总汇.docx

c学生成绩统计管理系统总汇

南昌大学

C++选修课

课程设计报告

题目:

学院:

专业:

姓名:

学号:

电话:

2016年6月17日

1.需求分析…………………………………………3

2.概要设计…………………………………………3

3.程序实现思路……………………………………4

4.设计总结…………………………………………4

5.参考文献…………………………………………5

6.源代码……………………………………………6

一、需求分析

经过研一下学期C++选修课的学习,对C++基于对象的程序设计有了一定的认识,根据所学的知识,设计学生成绩管理系统。

学生成绩统计管理系统是为某班级成绩统计管理的一个系统。

为方便班级的管理人员对学生的信息进行管理,该系统中包括学号、姓名、大学物理、高数、C++语言,各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例,学生的总成绩、平均成绩及成绩排名。

通过仔细研究借鉴众多相关毕业设计研究等文献资料(见参考文献一),学习书籍谭浩强《面向对象的C++程序设计》编写了该成绩管理系统。

主要的功能有学生数据的增加、删除、修改、查询,另外实现一些统计的功能,例如:

成绩的输入、成绩统计、总成绩统计、成绩的统计结果显示。

二、概要设计

1、本程序所用到的所有抽象数据类型的定义如下:

序号

成员名

数据类型

含义

1

num

long

学号

2

name

string

姓名

3

sum

double

总分

4

range

int

排名

5

ave

double

平均分

6

score[]

double

记录数组

2、各程序模块的功能

voidinput();//输入

voidcount();//计算

voidsort();//按学号升序排列

voidselectsort();//按总成绩降序排列

voidinsert();//增加

intdel();//删除

voidstudent:

:

Exit();//修改

voidsearch();//查询

voiddisplay();//显示

以下为统计模块:

voidcount();//计算成员函数

voidaverage();//计算平均值成员函数

voiddisplay();//显示成员函数

三、程序实现思路

1.设计菜单实现功能

①成绩的输入(学号、姓名、大学物理、高数、C++语言)。

②成绩统计(各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例)。

③总成绩统计(学生的总成绩、平均成绩及成绩排名)。

④成绩的统计结果显示。

⑤学生数据的增加、修改、与删除。

⑥学生数据的读取与存储。

2.设计类与对象

classstudent//建立学生student类,目的是存储学生个人信息

{

public:

longnum;//学号

stringname;//姓名

doublescore[n];//学生科目成绩

doublesum;//总成绩

doubleave;//平均成绩

intrange;//排名

voidinsert();//增加

intdel();//删除

voidsearch();//查询

voidstudent:

:

Exit();//修改

voiddisplay();//显示

voidinput();//输入

voidcount();//计算

voidsort();//按学号升序排列

voidselectsort();//按总成绩降序排列

}stu[N];

classall//建立整体all类,目的是存放学生整体信息

{

public:

doubleave;//每学科的平均成绩

intpeople[5];//每学科的各等级人数

doublepercent[5];//每学科的各等级人数比例

voidcount();//计算成员函数

voidaverage();//计算平均值成员函数

voiddisplay();//显示成员函数

}al[n];

3.通过类的调用实现功能设计

case0:

cout<<"*******************"<

cout<<"高数科统计结果为"<

cout<<"*******************"<

cout<

break;

case1:

cout<<"*******************"<

cout<<"大学物理科统计结果为"<

cout<<"*******************"<

cout<

break;

case2:

cout<<"*******************"<

cout<<"C++统计结果为"<

cout<<"*******************"<

cout<

break;

case3:

if(total==0)

cout<<"数组为空,请在主菜单中选择1增加数据"<

else

{

cout<<"学生信息为:

"<

stu[total].count();

stu[total].display();//显示

cout<

}

break;

case4:

if(total==0)

cout<<"数组为空,请在主菜单中选择1增加数据"<

else

{

cout<<"各科学生成绩为:

"<

al[n].average();

al[n].count();

al[n].display();

cout<

}

break;

case5:

if(total==0)

cout<<"数组为空,请在主菜单中选择1增加数据"<

else

do

{

stu[total].search();

cout<<"查询成功,继续查询请输入Y/y:

"<

cout<<"退出请按其他键"<

fflush(stdin);

ch=getchar();

}

while(ch=='Y'||ch=='y');

break;

case6:

if(total==0)

cout<<"数组为空,请在主菜单中选择1增加数据"<

else

do

{

stu[total].Exit();//修改

cout<<"修改成功,继续修改请输入Y/y:

"<

cout<<"退出请按其他键"<

fflush(stdin);

ch=getchar();

}

while(ch=='Y'||ch=='y');

break;

case7:

if(total==0)

cout<<"数组为空,请在主菜单中选择1增加数据"<

else

do

{

system("cls");

stu[total].insert();//增加

total++;

cout<<"增加成功,继续增加请输入Y/y:

"<

cout<<"退出请按其他键"<

fflush(stdin);

ch=getchar();

cout<

}

while(ch=='Y'||ch=='y');

break;

case8:

if(total==0)

cout<<"数组为空,请在主菜单中选择1增加数据"<

else

do

{

system("cls");

if(stu[total].del())//删除

{

total--;//人数-1

system("cls");

}

else

{

cout<<"该学号不存在"<

system("pause");

system("cls");

}

cout<<"删除成功,继续删除请输入Y/y:

"<

cout<<"退出该选择请按其他键"<

fflush(stdin);

ch=getchar();

cout<

}

while(ch=='Y'||ch=='y');

break;

case9:

cout<<"此操作将删除所有记录"<

cout<<"继续该操作请输入Y/y:

"<

cout<<"退出请按其他键"<

fflush(stdin);

ch=getchar();

if(ch=='Y'||ch=='y')

{

total=0;

}

break;

default:

cout<<"确定要退出吗?

"<

cout<<"退出请输入Y/y:

"<

fflush(stdin);

ch=getchar();

cout<

if(ch=='y'||ch=='Y')

{

exit(0);

}

break;

}

system("pause");

}while

(1);

}

四、设计总结

通过为期两周的努力,挑战程序设计的难度,终于将程序正确地运行。

虽说只是一个简单的程序,但它却见证了我从编写、调试、修改、运行、再修改等一系列的过程,收录了我努力后的小小成果。

从不断调试中遇到的错误中,我发现了自己的不足,同时也学会让自己如何面对挑战。

运用结构体、类等新学的内容让我再次感受到了学习的重要性。

都说“万变不离其宗”,书本是我们课后学习的参照。

因为没有重视书本,让我在编译时不断翻看,这也坚定了我努力学好这门课程的决心。

五、参考文献

1.谭浩强《C++程序设计》清华出版社2007,5

六、源代码

学生成绩统计管理程序

#include//引用库函数

#include//引用控制符处理

#include//字符串

usingnamespacestd;

#defineN100//宏定义

#definen3

classstudent//建立学生类,用于存储学生个人信息

{

public:

longnum;//学号

stringname;//姓名

doublescore[n];//学生科目成绩

doublesum;//总成绩

doubleave;//平均成绩

intrange;//排名

voidinput();//输入

voidcount();//计算

voidsort();//按学号升序排列

voidselectsort();//按总成绩降序排列

voidsearch();//查询

voidinsert();//增加

intdel();//删除

voidstudent:

:

Exit();//修改数据

voiddisplay();//显示

}stu[N];

classall//建立整体类,用来存放学生整体信息

{

public:

doubleave;//每学科的平均成绩

intpeople[5];//每学科的各等级人数

doublepercent[5];//每学科的各等级人数比例

voidcount();//计算成员函数

voidaverage();//计算平均值成员函数

voiddisplay();//显示成员函数

}al[n];

inttotal=0;//定义全局变量

voidstudent:

:

input()//输入学生个人信息

{

cout<<"请输入学生信息:

"<

cout<<"学号"<

<<"高数成绩"<

<

cin>>setw(10)>>stu[total].num;

cin>>setw(10)>>stu[total].name;

for(intj=0;j

cin>>setw(10)>>stu[total].score[j];

}

voidstudent:

:

selectsort()//按总成绩降序排列

{

studentaa;

inti,j;

for(i=0;i

for(j=i+1;j

{

if(stu[i].sum

{aa=stu[j];

stu[j]=stu[i];

stu[i]=aa;

}

}

}

voidstudent:

:

count()//计算总成绩、平均成绩

{

stu[total].selectsort();

for(inti=0;i

{

stu[i].sum=0;

for(intj=0;j

stu[i].sum+=stu[i].score[j];

stu[i].ave=stu[i].sum/n;

}

}

voidstudent:

:

sort()//按学号升序排列

{

studentabc;

inti,j;

for(i=0;i

for(j=i+1;j

if(stu[i].num>stu[j].num)

{

abc=stu[j];

stu[j]=stu[i];

stu[i]=abc;

}

}

voidstudent:

:

display()//显示学生个人信息

{

selectsort();//调用按总成绩降序排列函数

cout<<"学号"<

<<"高数成绩"<

<

<

for(inti=0;i

{

stu[i].range=i+1;

cout<

for(intj=0;j

cout<

cout<

<

}

}

voidall:

:

average()//计算各科的平均成绩

{

for(intj=0;j

{

longdoublea=0;

for(inti=0;i

{a+=stu[i].score[j];

al[j].ave=a/double(total);

}

}

}

voidall:

:

count()//计算各科的各等级人数及其比例

{

for(intj=0;j

{

inta=0,b=0,c=0,d=0,e=0;

for(inti=0;i

{

if(stu[i].score[j]<60)

a++;

elseif(stu[i].score[j]<70)

b++;

elseif(stu[i].score[j]<80)

c++;

elseif(stu[i].score[j]<90)

d++;

else

e++;

al[j].people[0]=a;//高数科不及格人数

al[j].people[1]=b;//高数科及格人数

al[j].people[2]=c;//高数科中等人数

al[j].people[3]=d;//高数科良好人数

al[j].people[4]=e;//高数科优秀人数

al[j].percent[0]=a/double(total);//高数科不及格人数所占的比例

al[j].percent[1]=b/double(total);//高数科及格人数所占的比例

al[j].percent[2]=c/double(total);//高数科中等人数所占的比例

al[j].percent[3]=d/double(total);//高数科良好人数所占的比例

al[j].percent[4]=e/double(total);//高数科优秀人数所占的比例

}

}

}

voidall:

:

display()//输出整体信息

{

for(intj=0;j

{

switch(j)

{

case0:

cout<<"*******************"<

cout<<"高数科统计结果为"<

cout<<"*******************"<

cout<

break;

case1:

cout<<"*******************"<

cout<<"大学物理科统计结果为"<

cout<<"*******************"<

cout<

break;

case2:

cout<<"*******************"<

cout<<"C++统计结果为"<

cout<<"*******************"<

cout<

break;

}

cout<<"平均成绩为:

"<

cout<

cout<<"不及格人数为:

"<

cout<<"及格人数为:

"<

cout<<"中等人数为:

"<

cout<<"良好人数为:

"<

cout<<"优秀人数为:

"<

cout<<"不及格人数为:

"<

cout<<"及格人数比为:

"<

cout<<"中等人数为:

"<

cout<<"良好人数比为:

"<

cout<<"优秀人数比为:

"<

cout<

}

}

voidstudent:

:

search()//查询

{

intfind_num;

boolflag=false;

cout<<"请输入要查找的学生的学号"<

cin>>find_num;

for(inti=0;i

if(stu[i].num==find_num)//如果要找的学号与其中某一个学生的学号相同

{

cout<

cout<<"已经找到该学生信息,他的有关信息是:

"<

cout<

for(intj=0;j

cout<

cout<

flag=true;

break;

}

if(flag==false)

cout<<"找不到该学生的学号"<

voidstudent:

:

Exit()//修改

{

intID;

boolflag=false;

stringname1;

cout<<"请输入要修改的学生的信息"<

cout<

"<

cout<<"姓名:

"<

cout<<"高数成绩:

"<

cout<<"大学物理成绩:

"<

cout<<"C++成绩:

"<

cin>>ID;

cin>>name1;

for(inti=0;i

if(stu[i].num==ID)

{

stu[i].num=ID;

stu[i].name=name1;

flag=true;

break;

}

if(flag==false)

cout<<"找不到该学生的学号"<

}

voidstudent:

:

insert()//增加

{

inta;

stringaa;

doublex,y,z;

stu[total].sort();//调用按学号升序排列函数

cout<<"请输入要增加的学生的信息"<

cout<

cin>>a>>aa>>x>>y>>z;

stu[total].num=a;

stu[total].name=aa;

stu[total].score[0]=x;

stu[total].score[1]=y;

stu[total].score[2]=z;

}

intstudent:

:

del()//删除

{

inti,j,abc;

cout<<"请输入要删除的学号:

"<

cin>>abc;

stu[total].sort();//调用按学号升序排列函数

for(i=0;i

{

if(abc==stu[i].num)//如果某一个学生的学号与要删除的学生的学号相同

break;

}

if(i

{

for(j=i;j

stu[j]=stu[j+1];

return1;

}

else

return0;

}

voidmenu();

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2