C 学生成绩统计管理系统总汇_第1页
C 学生成绩统计管理系统总汇_第2页
C 学生成绩统计管理系统总汇_第3页
C 学生成绩统计管理系统总汇_第4页
C 学生成绩统计管理系统总汇_第5页
已阅读5页,还剩112页未读 继续免费阅读

下载本文档

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

文档简介

南昌大学

C++选修课

课程设计报告

题目:

学院:

专业:

姓名:

学号:

电话:

2016年6月17日

目录

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

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

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

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

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

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

一、需求分析

经过研一下学期C++选修课的学习,对C++基于对象的程序

设计有了一定的认识,根据所学的知识,设计学生成绩管理系

统。

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

统。为方便班级的管理人员对学生的信息进行管理,该系统中包

括学号、姓名、大学物理、高数、C++语言,各科平均成绩、各

科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”

的人数及其所占比例,学生的总成绩、平均成绩及成绩排名。

通过仔细研究借鉴众多相关毕业设计研究等文献资料(见参考文

献一),学习书籍谭浩强《面向对象的C++程序设计》编写了该成绩

管理系统。主要的功能有学生数据的增加、删除、修改、查询,另外

实现一些统计的功能,例如:成绩的输入、成绩统计、总成绩统计、

成绩的统计结果显示。

二、概要设计

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

序号成员名数据类型含义

1numlong学号

2namestring姓名

3sumdouble总分

4rangeint排名

5avedouble平均分

6score[]double记录数组

2、各程序模块的功能

voidinput();〃输入

voidcount();〃计算

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

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

voidinsert();〃增加

intdel();//删除

voidstudent::Exit();〃修改

voidsearch();〃查询

voiddisplayO;//显示

以下为统计模块:

voidcount();〃计算成员函数

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

voiddisplayO;〃显示成员函数

三、程序实现思路

1.设计菜单实现功能

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

②成绩统计(各科平均成绩、各科成绩“优秀”、“良好”、“中等”、

“及格”、“不及格”的人数及其所占比例)。

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

④成绩的统计结果显示。

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

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

2.设计类与对象

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

public:

longnum;〃学号

stringname;〃姓名

doublescore[nJ;〃学生科目成绩

doublesum;〃总成绩

doubleave;//平均成绩

intrange;〃排名

voidinsert();〃增加

intdel();〃册!j除

voidsearch();〃查询

voidstudent::Exit();〃修改

voiddisplayO;〃显示

voidinput();//输入

voidcount();〃计算

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

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

}stu[N];

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

(

public:

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

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

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

voidcount();〃计算成员函数

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

voiddisplay();〃显示成员函数

}al[n];

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

case0:

cout<<"*******************"vvendl,

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

coutw”*******************"v<endl,

cout«endl;

break;

case1:

cout<<"*******************"<<end卜

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

cout<<"*******************”<<end卜

cout«endl;

break;

case2:

cout«”*******************"vvendl,

cout«"C++统计结果为"《endl;

cout<<"*******************"<vendl,

cout«endl;

break;

case3:

if(total==0)

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

else

(

cout«"学生信息为:"«endl;

stu[total].count();

stu[total].display。;//显示

cout«endl;

)

break;

case4:

if(total==0)

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

else

(

cout«"各科学生成绩为:"«endl;

al[n].average();

al[n].count();

al[n].display();

cout«endl;

break;

case5:

if(total==0)

COUt<<"数组为空,请在主菜单中选择1增加数据"<<611(11;

else

do

(

stu[total].search();

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

cout<<"退出请按其他键“<<endl;

fflush(stdin);

ch=getchar();

)

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

break;

case6:

if(total==0)

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

else

do

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

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

cout«”退出请按其他键“<<endl;

fflush(stdin);

ch=getchar();

)

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

break;

case7:

if(total==0)

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

else

do

(

system("cls");

stu[total].insert。;//增加

total++;

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

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

fflush(stdin);

ch=getchar();

cout«endl;

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

break;

case8:

if(total==0)

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

else

do

(

system("cls");

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

(

total--;//人数-1

system("cls");

)

else

(

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

system("pause");

system("cls");

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

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

fflush(stdin);

ch=getchar();

cout«endl;

)

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

break;

case9:

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();

cout«endl;

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

(

exit(O);

)

break;

)

system("pause");

}while(l);

)

四、设计总结

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

运行。虽说只是一个简单的程序,但它却见证了我从编写、调试、修

改、运行、再修改等一系列的过程,收录了我努力后的小小成果。从

不断调试中遇到的错误中,我发现了自己的不足,同时也学会让自己

如何面对挑战。

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

都说“万变不离其宗",书本是我们课后学习的参照。因为没有重视

书本,让我在编译时不断翻看,这也坚定了我努力学好这门课程的决

心。

五、参考文献

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

六、源代码

学生成绩统计管理程序

#include<iostream>〃引用库函数

#include<iomanip>〃引用控制符处理

#include<string>〃字符串

usingnamespacestd;

#defineN100〃宏定义

#definen3

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

(

public:

longnum;〃学号

stringname;〃姓名

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

doublesum;〃总成绩

doubleave;〃平均成绩

intrange;〃排名

voidinput();〃输入

voidcount();〃计算

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

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

voidsearch();〃查询

voidinsert();〃增加

intdel();〃删除

voidstudent::Exit();〃修改数据

voiddisplayO;〃显示

}stu[N];

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

(

public:

doubleave;〃每学科的平均成绩

intpeople[5J;〃每学科的各等级人数

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

voidcount();〃计算成员函数

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

voiddisplayO;//显示成员函数

}al[n];

inttotal=O;〃定义全局变量

voidstudent::input()〃输入学生个人信息

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

cout«"学号"«setw(8)«"姓名"«setw(12)

<<"高数成绩"<<setw(10)<<"大学物理成绩"

<<setw(10)«"C++成绩”<<endl;

cin»setw(lO)»stu[total].num;

cin»setw(lO)»stu[total].name;

for(intj=O;j<n;j++)

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

)

voidstudent::selectsort()〃按总成绩降序排列

(

studentaa;

inti,j;

for(i=0;i<total-l;i++)

for(j=i+l;j<total;j++)

(

if(stu[i].sum<stu[j].sum)

{aa=stu[j];

stu[j]=stu[i];

stu[i]=aa;

)

voidstudent::count()〃计算总成绩、平均成绩

stu[total].selectsort();

for(inti=0;i<total;i++)

(

stu[i].sum=0;

for(intj=O;j<n;j++)

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

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

)

)

voidstudent::sort()〃按学号升序排列

(

studentabc;

inti,j;

for(i=0;i<total-l;i++)

for(j=i+l;j<total;j++)

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

(

abc=stu[j];

stu[j]=stu[i];

stu[i]=abc;

)

voidstudent::display()〃显示学生个人信息

(

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

cout<<"学号"<<setw(10)<<"姓名"«setw(l0)

<<"高数成绩"<<setw(10)<<"大学物理成绩"

«setw(10)«"C++成绩”《setw(10)«"平均成绩”

«setw(l0)«"总成绩"<<setw(10)«"排名"«endl;

for(inti=0;i<total;i++)

(

stu[i].range=i+l;

cout«setw(10)«stu[i].num«setw(l0)«stu[i].name;

for(intj=O;j<n;j++)

cout«setw(10)«stu[i].score[j];

cout«setw(10)«stu[i].ave«setw(10)

<<stu[i].sum«setw(10)«stu[i].range«endl;

}

)

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

for(intj=O;j<n;j++)

longdoublea=0;

for(inti=0;i<total;i++)

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

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

}

)

)

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

(

for(intj=O;j<n;j++)

(

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

for(inti=0;i<total;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[jj.people[0]=a;〃高数科不及格人数

al[j].people[l]=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[l]=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<n;j++)

switch(j)

case0:

cout<<”*******************“v<endl,

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

cout<v”*******************“《endl,

cout«endl;

break;

case1:

cout<<”*******************“《end卜

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

cout«”*******************“《endr

cout«endl;

break;

case2:

cout«”*******************”《endl,

cout«"C++统计结果为"<<endl;

cout«"*******************“《endl・

cout«endl;

break;

cout<<"平均成绩为:"<<al[j].ave<<endl;

cout«endl;

cout<<"不及格人数为:"<<al[j].people[0]<<endl;

cout<<"及格人数为:people[l]«endl;

cout<<”中等人数为:"<<al[j].people[2]<<endl;

cout<<"良好人数为:"<<al[j].people[3]<<endl;

cout<<"优秀人数为:"<<al[j].people[4]<<endl;

cout<<"不及格人数为:"<<al[j].percent[O]<<endl;

cout<<"及格人数比为:percent"]<<endl;

cout<<”中等人数为:""al[j].percent[2]<<endl;

cout«"良好人数比为:.percent[3]«endl;

cout<<"优•秀人数比为:"<<al[j].percent[4]<<endl;

cout«endl;

}

)

voidstudent::search()〃查询

intfind_num;

boolflag=false;

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

cin»find_num;

for(inti=0;i<total;i++)

if(stu[ij.num==find_num)〃如果要找的学号与其中某一

个学生的学号相同

(

cout«setw(10)«stu[i].num«endl;;

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

cout«setw(10)«stu[i].name;

for(intj=O;j<n;j++)

cout«setw(lO)«stu[i].score[j];

cout«setw(10)«stu[i].ave«setw(10)«setw(lO)«stu[i].sum

«setw(10)«stu[i].range«endl;//输出学生信息

flag=true;

break;

)

if(flag==false)

cout«"找不到该学生的学号"《endl;〃如找不到输出"找不到"

信息}

voidstudent::Exit()〃修改

intID;

boolflag=false;

stringname1;

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

cout«setw(12)<<"学号:"«setw(l2)«endl;

cout«"姓名:"<<setw(12)<<endl;

cout«"高数成绩:"《setw(12)«endl;

cout«"大学物理成绩:"<<setw(12)«endl;

cout«"C++成绩:"<<endl;

cin»ID;

cin»namel;

for(inti=0;i<total;i++)

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

(

stu[i].num=ID;

stu[i].name=namel;

flag=true;

break;

if(flag==false)

cout«”找不到该学生的学号"《endl;

voidstudent::insert()〃增加

inta;

stringaa;

doublex,y,z;

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

cout<<”请输入要增加的学生的信息"<<endl;〃输入要增加

学生的信息

cout«setw(l2)<<"学号"<<setw(12)<<"姓名"«setw(l2)«"高

数成绩"<<setw(12)<<"大学物理成绩"<<setw(12)«"C++成绩"《endl;

cin»a»aa»x»y»z;

stu[total].num=a;

stu[total].name=aa;

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

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

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

)

intstudent::del()//删除

inti,j,abc;

cout«"请输入要删除的学号:"«endl;

cin»abc;

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

for(i=0;i<total;i++)

(

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

生的学号相同

break;

)

if(i<total)

(

for(j=i;j<total;j++)

stu[j]=stu[j+l];

return1;

}

else

return0;

)

voidmenu();〃显示主菜单

classstudent;

classall;

voidstudent::display();

voidall::display();〃显示学生信息

voidstudent::insert();〃增加学生(自动排序)

intstudent::del();//删除学生

voidstudent::search();〃按学号查询

intmain()〃主函数

(

classstudentstu[N];

classallal[n];

charch;

intselect;//total为学生总数,select为选择

do

(

system("cls");

menu();

cout<<"请输入你的选择:"<<endl;

fflush(stdin);

cin»select;

system("cls");

switch(select)

case1:

do

(

system("cls");

stu[total].input();

total++;//人数+1

cout<<"输入成功,继续输入请输入Y/y:"«endl;

cout<<"退出请输入其他键“<<endl;

fflush(stdin);

ch=getchar();

)

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

cout«endl;

break;

case2:

if(total==0)

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

else

(

cout<<”学生信息为:"«endl;

stu[total].count();

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

cout«endl;

)

break;

case3:

if(total==0)

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

else

(

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

al[n].average();

al[n].count();

al[n].display();

cout«endl;

)

break;

case4:

if(total==0)

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

else

do

stu[total].search();

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

cout<<"退出请按其他键“<<endl;

fflush(stdin);

ch=getchar();

)

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

break;

case5:

if(total==0)

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

else

do

(

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

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

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

fflush(stdin);

ch=getchar();

)

whiIe(ch=='Y'||ch==,y');

break;

case6:

if(total==0)

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

else

do

(

system("cls");

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

total++;

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

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

fflush(stdin);

ch=getchar();

cout«endl;

)

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

break;

case7:

if(total==0)

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

else

do

system("cls");

if(stu[totalj.del())//删除

(

total-;//人数-1

system("cls");

)

else

(

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

system("pause");

system("cls");

)

cout<〈”删除成功,继续删除请输入Y/y:"«endl;

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

fflush(stdin);

ch=getchar();

cout«endl;

)

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

break;

case8:

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

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

cout<〈"退出请按其他键“<<endl;

fflush(stdin);

ch=getchar();

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

(

total=0;

}

break;

default:

cout<<"确定要退出吗?"《end<

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

fflush(stdin);

ch=getchar();

cout«endl;

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

(

exit(O);

)

break;

system("pause");

}while(l);

)

voidmenu()

{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;

)

2

ttinclude<iostream.h>

Sinclude<fstream.h>

#include<string.h>

Sinclude<stdlib.h>

Sinclude<iomanip.h>

classstudent〃定义一1个学生类

public:

intnumber;

charname[20];

doublepoint[3];

doublesum;

student()

{number=0;}

student(intnum,charna[20],doublemath,doubleenglish,doublecpp)

(

number=num;

for(inti=0;i<20;i++)

name[i]=na[i];

point[0]=math;

point[l]=english;

point[2]=cpp;

)

doubleadd()〃求个人总成绩

(

sum=0;

for(inti=0;i<3;i++)

sum=sum+point[i];

returnsum;

)

);

voidlist();

voidnewstuO;

voidinfile();

voidadd();

voiddel();

voidxiugai();

voidsee_grade();

voidtongji();

voidtotaltongji();

voidoutfile();

voidlei();

voidrestart();

studentstu[80];

intz=0;

charr[50];

charset_code[10]=z,123,z;〃设定密码

doubleT[10];

charstring[10];

voidmain()

for(inttime=l;time<4;time++)〃设定三次输入密码的机会

{cout«〃****请输入密码:〃;

cin>>string;

cout〈<〃\n〃;

if(strcmp(string,set_code)=0){cout<〈〃\t\t\t****欢迎来到

学生成绩统计管理系统*****〃<Xendl;break;}

else{cout<<〃!!!输入密码有错误,请重新输入!〃<<endl;}

)

if(time==4)exit(1);

list();}

voidlist()〃选择菜单

cout<X〃\n〃;

(20成<<〃\'1\1;\'1***本系统由软件工程编写***〃<211(11;

cout<X〃\n〃;

cout<<zz\t\t\t=*=*=*=*=*=*=*=*=*=:lc=*=*=*=*=*=*=*=z"<<endl;

cout<</z\t\t\t\t系统菜单〃<<endl;

cout\t\t\tu*=*=*=*=*=*=*=*=*^^*^*^*三*=*=*=*/<<endl;

cout«z/\t\t\t\t〈1》新建学生名单〃《endl;

cout«z,\t\t\t\t<2>读取学生成绩〃〈Cendl;

cout«'z\t\t\t\t<3>添加学生成绩〃*endl;

cout<<zz\t\t\t\t<4>删除学生成绩〃Gendl;

cout«,,\t\t\t\t<5>修改学生资料〃*endl;

COUt<<,Z\t\t\t\t(6>单人资料查询〃《endl;

COUt«,Z\t\t\t\t<7>成绩统计〃<<endl;

cout«,z\t\t\t\t<8>总成绩统计〃<<endl;

COUt<<,Z\t\t\t\t<9>储存学生成绩〃<<endl;

COUt«ZZ\t\t\t\t<10>退出程序〃"endl;

inta;

cout«endl«z/\t\t\t请输入选项:〃;

cin>>a;

cout«endl;

switch(a)

case1:newstu();break;

case2:infile();break;

case3:add();break;

case4:del();break;

case5:xiugai();break;

case6:see_grade();break;

case7:tongji();break;

case8:totaltongji();break;

case9:outfile();break;

case10:cout<<〃退出程序〃〈Vendl;break;

default:cout<〈〃输入错误〃<<endl;

)

)

voidnewstu()//case_l新建学生名单

(

chary;

for(inti=0;i<80;i++)

(

cout<〈〃请输入学生学号:〃;

cin>>stu[i].number;

cout<<〃请输入学生姓名:〃;

cin>>stu[i].name;

coutC〈〃请输入学生的数学成绩:〃;

cin>>stu[i].point[0];

cout«〃请输入学生的英语成绩:〃;

cin>>stu[i].point[1];

cout«〃请输入学生的C++成绩:〃;

cin>>stu[i].point[2];

coutC〈〃是否要继续进行学生资料的输入?y/n:〃;

cin>>y;

if(y==,n')i=80;

elsecout<<endl;

)

cout<<〃新建学生名单完成,〃;

restart();

)

voidinfileO//case_2读取学生成绩

(

fstreamin;

cout«endl;

in.open(〃f:\\学生名单.dat〃,ios::inIios::binary);

if(!in)

cout<<”无法找到指定文件."<<endl;

abort();

)

for(inti=0;i<80;i++)//从文件逐个导入学生成绩

(

in.read((char*)&.stu[i],sizeof(stu[i]));

)

in.close();

cout«”学生成绩已读取完毕"<<endl;

cout«endl;

lei();

restart();

)

voidadd()//case_3添加学生

{

lei();

cout«"请输入学生学号:”;

cin>>stu[z].number;

cout«”请输入学生姓名:”;

cin»stu[z].name;

cout<<〃请输入学生的数学成绩:〃;

cin>>stu[z],point[0];

cout«”请输入学生的英语成绩:〃;

cin>>stu[z].point[1];

cout«〃请输入学生的C++成绩:”;

cin>>stu[z].point[2];

cout<<"添加完毕"<<endl;

restart();

)

voiddel()//case_4删除学生

{

intn,m;

lei();

cout«”请输入将要删除的学生的学号:〃;

cin>>n;

for(inti=0;i<z;i++)

if(stu[i].number==n)m=i;

stu[m].number=0;

for(i=m;i<80-m;i++)〃将被删除学号后面的所有学号依次上移一位

(

stu[i].number=stu[i+l].number;

for(intj=0;j<20;j++)

stu[i].name[j]=stu[i+l].name[j];

stu[i].point[0]=stu[i+l].point[0];

stu[i].point[l]=stu[i+l].point[1];

stu[i].point[2]=stu[i+l].point[2];

)

cout«,z已删除成功〃<Xendl;

restart();

)

voidxiugai()//case_5修改学生成绩

(

intn,m;

lei();

cout«〃请输入需要修改的学生的学号:〃;

cin>>n;

for(inti=0;i<z;i++)

if(stu[i].number==n)m=i;

cout〈〈〃该学生现在的资料:〃<X〃\n学号:number〈<〃\n姓名:

z,«stu[m].name«,z\n数学成绩:,,«stu[m],point[0]«zz\n英语成绩:

,z«stu[m].point[l"〈”\nC++成绩:,z«stu[m].point[2]<<endl;

cout«〃开始对该学生的资料进行修改〃《endl;

cout«〃请输入该学生姓名:〃;

cin>>stu[m].name;

COUt<<〃请输入学生的数学成绩:〃;

cin>>stu[m].point[0];

COUt«〃请输入该学生的英语成绩:〃;

cin>>stu[m].point[1];

cout。〃请输入该学生的C++成绩:〃;

cin>>stu[m].point[2];

cout«〃该学生成绩修改完毕〃;

cout«endl;

restart();

)

voidsee_grade()〃case_6单个查询

(

lei();

longintn;

intm;

for(inta=0;a<z;a++)

(

cout«〃请输入要查询学生的学号:〃;

cin>>n;

for(inti=0;i<z;i++)

if(n==stu[i].number)

m=i;

cout«z,I-------1---------1---------1---------1---------1---

----1/z«endl;

cout<</,|序列号INumber|Name|English|Maths|C++

|v«endl;

cout<<〃|--------1----------1----------1----------1----------1-----

-----1z,«endl;

cout<<,z|/z«setw(6)«(m+1)«z,|z,<<setw(8)«stu[m].number<</,|

z,«setw(8)<<stu[m].name<<,z|

,,«setprecision(4)<<setw(8)<<stu[m].point[0]<<z,|

“〈〈setprecision(4)<<setw(8)«stu[m].pointLl]<<z,|

,,«setprecision(4)<<setw(8)«stu[m].point|/z<<endl;

cout«,z1--------1----------1----------1----------1----------1——

-----1z,«endl;

cout<<〃您是否要继续查询:y/nz,<<endl;

charqq;

cin»qq;

if(qq==,n,)

a=z;

)

cout«endl;

restart();

}

voidtongjiO//case_7成绩统计(各科平均成绩、各科成绩“优秀”、“良

好”、“中等”、“及格”、“未及格”的人数及其所占比例)

(

cout<<endl;

lei0;

cout«,z================,,«endl;

for(intj=0;j<3;j++)

(

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

doubles(0);

switch(j)

(

case0:cout<<“数学:〃<<endl;break;

casel:cout<〈〃英语:,z<<endl;break;

case2:cout<<,,C++:,,<<endl;break;

)

for(inti=0;i<z;i++)

(

s+=stu[i].point[j];

if(stu[i].point[j]>=90)a++;

elseif(stu[i].point[j]>=80)b++;

elseif(stu[i].point[j]>=70)c++;

elseif(stu[i].point[j]>=60)d++;

elsee++;

cout«/,I------1------1------------1------------1------------1-----

-------1---------------1zz«endl;

cout«,z||平均|优秀(比例)|良好(比例)|中等(比例)|及格

(比例)|不及格(比例)|z,«endl;

cout«z,I------1------1-------------1-------------1-------------1-----

-------1---------------1,z«endl;

cout«z,I数学I

“(〈setprecision(3)<<setw(4)<<stu[i].point[0]/z<<〃|

,z«setw(9)<<(a/z)*100<<〃%|z,<<setw(9)<<(b/z)*100«z,%|

z,«setw⑼«(c/z)*100«z,%|"«setw⑼«(d/z)*100«z,%|

z,«setw(ll)«(e/z)*100<</,%|z,«endl;

cout«"|------1------1-------------1-------------1-------------1-----

-------1---------------1,z«endl;

cout«z,I英语I

“〈〈setprecision(3)<<setw(4)«stu[i].pointEl]/z<<z,|

"«setw(9)«(a/z)*100«"%|"«setw(9)«(b/z)*100«'%|

z,«setw(9)<<(c/z)*100«z,%|z/<<setw(9)<<(d/z)*100<<〃%|

,,<<setw(ll)«(e/z)*100<</,%|,,«endl;

cout«z,|------1------1-------------1-------------1-------------1-----

-------1---------------1/z<<endl;

cout«z,|C++|

,,«setprecision(3)<<setw(4)<<stu[i].point[2]/z<<,/|

〃<<setw(9)<<(a/z)*100«z,%|〃<<setw(9)<<(b/z)*100«z,%|

,,«setw(9)«(c/z)*100«z,%|z,«setw(9)«(d/z)*100«z,%|

,z«setw(ll)«(e/z)*100<</,%|z,«endl;

cout«,z|------1------1-------------1-------------1-------------1-----

-------1---------------1,,«endl;

cout«,z|数学人数Iz/<<setw(10)<<a«,z|z,«setw(10)«b<</,|

z,«setw(10)«c<<,/|zz<<setw(10)<<d«z,|v«setw(12)«e<<,z|,z<<endl;

cout«/z|-------------1-------------1-------------1-------------1-----

-------1---------------1,z«endl;

cout«,z|英语人数|z,<<setw(10)<<a«,z|zz<<setw(10)<<b<<,z|

/,«setw(10)«c<<z,|zz<<setw(10)<<d«zz|/z«setw(12)«e<<z,|,z<<endl;

cout«/z|-------------1-------------1-------------1-------------1-----

-------1---------------1/z«endl;

cout<<,z|C++|,,«setw(10)<<a<<z,|z/<<setw(10)<<b<<,z|

z,«setw(10)«c<<,z|z,<<setw(10)<<d«,z|v«setw(12)«e<<z,|zz<<endl;

cout«/z1-------------1-------------1-------------1-------------1-----

-------1---------------1,,«endl;

restart();

voidtotaltongji()//case_8总成绩统计(学生的总成绩、平均成绩及成

绩排名)

inti,j,u,nu;

charn[20];

doublep;

lei0;

for(j=l;j<z;j++)〃使用起泡法排名

for(i=0;i<z-j;i++)

if(stu[i].add()<stu[i+l].add())

(

for(u=0;u<20;u++)〃姓名按学生总成绩的高低,从大到小

排序

(

n[u]=stu[i].name[u];

stu[i].name[u]=stu[i+l].name[u];

stu[i+l].name[u]=n[u];

)

p=stu[i].point[0];〃学生数学成绩从大到小排序

stu[i].point[0]=stuEi+l].point[0];

stu[i+l].point[0]=p;

p=stu[i].point[l];〃学生英语成绩从大到小排序

stu[i].point[l]=stu[i+l].point[1];

stu[i+l].point[l]=p;

p=stu[i].point[2];〃学生C++成绩从大到小排序

stu[i].point[2]=stu[i+l].p

温馨提示

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

评论

0/150

提交评论