C学生成绩统计管理系统.docx
《C学生成绩统计管理系统.docx》由会员分享,可在线阅读,更多相关《C学生成绩统计管理系统.docx(27页珍藏版)》请在冰豆网上搜索。
![C学生成绩统计管理系统.docx](https://file1.bdocx.com/fileroot1/2023-2/1/2a2b84f8-b6be-4525-a704-1c02aeea4c3e/2a2b84f8-b6be-4525-a704-1c02aeea4c3e1.gif)
C学生成绩统计管理系统
湖南科技学院
课程设计报告
课程名称:
计算机高级语言(C++)课程设计
课程设计题目:
学生通讯管理系统
系:
数学与计算科学系
专业:
信息与计算科学
年级、班:
信计0801
姓名:
谭鄱仑
学号:
2109
指导教师:
牛志毅
职称:
讲师
2010年12月
课程实验报告--------------------------------3
一、需求分析---------------------------------------------3
二、概要设计---------------------------------------------3
三、程序实现思路-----------------------------------------7
四、设计总结---------------------------------------------7
五、参考文献---------------------------------------------7
六、源代码-----------------------------------------------8
七、运行情况…………………………………………………………16
C++语言程序设计报告
一、需求分析
用C++编写下面程序
学生成绩统计管理系统(*****)
要求实现如下功能:
①成绩的输入(学号、姓名、英语、数学、C++语言…)。
②成绩统计(各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例)。
③总成绩统计(学生的总成绩、平均成绩及成绩排名)。
④成绩的统计结果显示。
⑤学生数据的添加、修改、与删除。
⑥学生数据的读取与存储。
二、概要设计
主要数据定义以及各程序模块的功能:
Student类中:
classStudent
{
private:
intid;C++程序设计.清华大学出版社,
六源程序
/*****************************************
课程设计题目:
学生信息管理系统
班级:
0901
学号:
2109
姓名:
谭鄱仑
*****************************************/
#include""
intmain()
{
inti=0;
charok;
Studentifostuifo;
Studentifo*ifo=&stuifo;
ShowMenu();
cout<<"选择对应数字进行操作:
";
while(i!
=9)
{
cin>>i;
system("cls");
ShowMenu();
DoMenu(i,ifo);
ShowTip();
}
if(flag)
cout<<"数据已改动,是否保存Y/N";
cin>>ok;
if(ok=='Y'||ok=='y')
{
ifo->MakeAll();
ifo->ClearRank();
ifo->MakeRank();
Save(ifo);
cout<<"数据已保存...按任意键安全退出";
}
else
cout<<"已安全退出...按任意键返回";
}
#ifndefSTUDENT_H_INCLUDED
#defineSTUDENT_H_INCLUDED
#include
#include
#include
#include
#include
#include
usingnamespacestd;
classStudent
{
private:
intid;etStudentID(n);
}
voidStudentifo:
:
LoadName(intn,stringname)
{
stu[n].SetStudentName(name);
}
voidStudentifo:
:
LoadScore(intn,doubley,doubles,doublec)
{
stu[n].SetStudentScore(y,s,c);
}
voidStudentifo:
:
Setifo()
{
intn;
cout<<"输入学号:
";
cin>>n;
if(stu[n].StudentX()==1||n<=0)
cout<<"该学号已有或者学号信息错误"<else
{
stu[n].SetStudentID(n);
stu[n].SetStudentName("\0");
stu[n].SetStudentScore(0,0,0);
stu[n].SetStudentX
(1);
num++;
cout<}
}
voidStudentifo:
:
Putifo()
{
inti,s1=0,y1=0,c1=0,y2=0,s2=0,c2=0,y3=0,s3=0,c3=0,y4=0,s4=0,c4=0,y5=0,s5=0,c5=0;
doubleY=0,S=0,C=0;
if(num==0)
cout<<"没有学生数据"<else
{
cout<<"|***************************学生综合信息**************************|"<cout<<"|学号"<<"\t"<<"姓名"<<"\t"<<"英语"<<"\t"<<"数学"<<"\t"<<"C++"<<"\t"<<"总成绩"<<"\t"<<"名次"<<"\t"<<"等级|"<cout<<"|*****************************************************************|"<for(i=1;i<=100;i++)
{
if(stu[i].StudentX()==1)
{
Y+=stu[i].StudentYscore();
S+=stu[i].StudentSscore();
C+=stu[i].StudentCscore();
cout<<"|"<cout<cout<cout<cout<stu[i].Getall();
cout<cout<cout<cout<<"\t|"<cout<<"|*****************************************************************|"<}
if(stu[i].StudentX()==1)
{
if(stu[i].StudentYscore()>=0&&stu[i].StudentYscore()<60)
y1++;
elseif(stu[i].StudentYscore()>=60&&stu[i].StudentYscore()<70)
y2++;
elseif(stu[i].StudentYscore()>=70&&stu[i].StudentYscore()<80)
y3++;
elseif(stu[i].StudentYscore()>=80&&stu[i].StudentYscore()<90)
y4++;
else
y5++;
if(stu[i].StudentSscore()>=0&&stu[i].StudentSscore()<60)
s1++;
elseif(stu[i].StudentSscore()>=60&&stu[i].StudentSscore()<70)
s2++;
elseif(stu[i].StudentSscore()>=70&&stu[i].StudentSscore()<80)
s3++;
elseif(stu[i].StudentSscore()>=80&&stu[i].StudentSscore()<90)
s4++;
else
s5++;
if(stu[i].StudentCscore()>=0&&stu[i].StudentCscore()<60)
c1++;
elseif(stu[i].StudentCscore()>=60&&stu[i].StudentCscore()<70)
c2++;
elseif(stu[i].StudentCscore()>=70&&stu[i].StudentCscore()<80)
c3++;
elseif(stu[i].StudentCscore()>=80&&stu[i].StudentCscore()<90)
c4++;
else
c5++;
}
}
cout<<"___________________________________________________"<cout<<"|********************各科成绩信息*******************|"<cout<<"\t|\t"<<"\t"<<"英语"<<"\t\t"<<"数学"<<"\t\t"<<"C++\t|"<cout<<"\t|平均成绩\t"<cout<<"\t|不及格\t"<<100*double(y1)/num<<"%"<<"\t\t"<<100*double(s1)/num<<"%"<<"\t\t"<<100*double(c1)/num<<"%"<<"\t|"<cout<<"\t|及格\t"<cout<<"\t|中等\t"<cout<<"\t|良好\t"<cout<<"\t|优秀\t"<cout<<"|___________________________________________________|"<<"\n"<cout<<"*********************************各等级人数*********************************"<cout<<"成绩"<<"\t"<<"优秀"<<"\t"<<"良好"<<"\t"<<"中等"<<"\t"<<"及格"<<"\t"<<"不及格为"<cout<<"英语"<<"\t"<cout<<"数学"<<"\t"<cout<<"C++"<<"\t"<cout<<"****************************************************************************"<}
}
voidStudentifo:
:
PutifoRank()
{
if(num==0)
cout<<"没有学生数据"<else
{
cout<<"名次"<<"\t"<<"姓名"<<"\t"<<"英语"<<"\t"<<"数学"<<"\t"<<"C++"<<"\t"<<"总成绩"<<"\t"<<"学号"<<"\t"<<"等级"<for(intn=1;n<=num;n++)
{
for(inti=1;i<=100;i++)
if(stu[i].StudentX()==1&&stu[i].Rank()==n)
{
stu[i].Getall();
cout<cout<cout<cout<cout<cout<cout<cout<cout<}
}
}
}
voidStudentifo:
:
PutID()
{
intn,i,k=0;
stringstr2;
pick:
{
cout<<"**************"<cout<<"*1:
按学号查找*"<cout<<"*2:
按姓名查找*"<cout<<"*3:
退出查找*"<cout<<"**************"<cout<<"请选择:
";
}
cin>>i;
switch(i)
{
case1:
{
cout<<"输入学号:
";
cin>>n;
if(stu[n].StudentX()==2)
{
cout<<"错误!
不存在该学生"<gotopick;
}
else
{
cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"英语"<<"\t"<<"数学"<<"\t"<<"C++"<<"\t"<<"总成绩"<<"\t"<<"名次"<<"\t"<<"等级"<{
cout<cout<cout<cout<cout<stu[n].Getall();
cout<cout<cout<cout<}
}
}
break;
case2:
{
cout<<"输入姓名:
";
cin>>str2;
cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"英语"<<"\t"<<"数学"<<"\t"<<"C++"<<"\t"<<"总成绩"<<"\t"<<"名次"<<"\t"<<"等级"<for(intj=1;j<=100;j++)
if(stu[j].StudentName()==str2&&stu[j].StudentX()==1)
{
cout<cout<cout<cout<cout<stu[n].Getall();
cout<cout<cout<cout<k++;
}
if(k==0)
{
cout<<"错误!
不存在该学生请重新输入:
"<gotopick;
}
break;
case3:
break;
}
}
}
voidStudentifo:
:
ClearID()
{
intn;
cout<<"输入学号:
";
cin>>n;
if(stu[n].StudentX()==1)
{
stu[n].SetStudentX
(2);
--num;
}
else
cout<<"无此人"<}
voidStudentifo:
:
Clear()
{for(inti=0;i<=100;i++)
stu[i].SetStudentX
(2);
num=0;
cout<<"数据已清空";
}
voidStudentifo:
:
ClearRank()
{
for(inti=1;i<=100;i++)
stu[i].RankClear();
}
voidStudentifo:
:
MakeRank()
{
for(inti=1;i<100;i++)
for(intj=i+1;j<=100;j++)
{
if(stu[i].StudentX()==1&&stu[j].StudentX()==1)
{
if(stu[i].All()stu[i].SetRank();
elseif(stu[i].All()>stu[j].All())
stu[j].SetRank();
}
}
}
voidStudentifo:
:
ReSetifo()
{
intn,x,y;
fixinfo:
cout<<"请输入需要修改学生的学号:
";
cin>>n;
if(stu[n].StudentX()==2)
{
cout<<"没有该学号学生信息,重试请按1,退出请按其他数字"<intz;
cin>>z;
if(z==1)
gotofixinfo;
else
gotoend;
}
else
fix:
{
cout<<"$$$$$$$$$$$$$$"<<'\n';
cout<<"$1:
修改学号$"<<'\n';
cout<<"$2:
修改姓名$"<<'\n';
cout<<"$3:
修改成绩$"<<'\n';
cout<<"$4:
退出修改$"<<'\n';
cout<<"$$$$$$$$$$$$$$";
cout<cout<<"请选择:
";
cin>>x;
switch(x)
{
case1:
{
cout<<"请输入新学号:
";
loop:
cin>>y;
for(inti=1;i<=num;i++)
if(stu[i].StudentID()==y)
{
cout<<"该学号已存在,请重新输入:
";
gotoloop;
}
stu[n].SetStudentID(y);
cout<<"学号修改成功!
\n";
gotofix;
}
break;
case2:
{
stu[n].SetStudentName("\0");
cout<<"姓名修改成功\n";
gotofix;
}
break;
case3:
{
stu[n].SetStudentScore(0,0,0);
cout<<"成绩修改成功\n";
gotofix;
}
break;
end:
case4:
break;
}
}
}
voidStudentifo:
:
MakeAll()
{
for(inti=1;i<=100;i++)
for(i=1;i<=100;i++)
if(stu[i].StudentX()==1)
stu[i].Getall();
}
voidStudentifo:
:
Xfix(intn)
{
stu[n].SetStudentX
(1);
}
intStudentifo:
:
X(intn)
{
intx=stu[n].StudentX();
returnx;
}
intStudentifo:
:
ID(intn)
{
intx=stu[n].StudentID();
returnx;
}
stringStudentifo:
:
Name(intn)
{
stringstr1=stu[n].StudentName();
returnstr1;
}
doubleStudentifo:
:
Yscore(intn)
{
doublex=stu[n].StudentYscore();
r