学生成绩管理系统C++.docx
《学生成绩管理系统C++.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C++.docx(15页珍藏版)》请在冰点文库上搜索。
![学生成绩管理系统C++.docx](https://file1.bingdoc.com/fileroot1/2023-6/21/02ac8b50-85af-4fe9-80cc-3ab829cb4f26/02ac8b50-85af-4fe9-80cc-3ab829cb4f261.gif)
学生成绩管理系统C++
设计题目:
成绩管理系统
设计要求实现如下功能:
输入一个班级的学生基本信息(包括学号,姓名,性别,科目),对N门考试的成绩进行管理(例N=5)
要求:
1。
用户录入每个学生每门课程的分数;
2。
能够计算每个学生的各门功课总分和平均分,并按总分将成绩排序,显示每个学生的总分和排名;
3。
计算全班各门功课的平均分,显示没门课程中低于平均分的每一个学生的学号,姓名,性别,科目,成绩等信息;
4。
显示每门科目中,成绩在90分以上的学生信息。
另外还输出每门科目中不及格的学生信息;
5。
能按姓名或者学号查找,增加,删除和保存各个学生的信息。
6文件操作
源码:
class.cpp文件:
#include
#include
#include
usingnamespacestd;
classStudent{
private:
intno;
stringname,sex;
public:
stringgetName(){returnname;}
stringgetSex(){returnsex;}
intgetNo(){returnno;}
voidsetSex(strings){sex=s;}
voidsetNo(intsno){no=sno;}
voidsetName(stringnam){name=nam;}
voidshow(){
cout<<"学号:
"<cout<<"姓名:
"<cout<<"性别:
"<cout<}
voidInit(){
stringn;
intnum,s;
cout<<"请输入学号:
"<cin>>num;
cout<<"请输入姓名:
"<cin>>n;
cout<<"请选择性别:
男0,女1"<cin>>s;
no=num;
name=n;
strings1,s2;
if(s=0){s1="boy";Student:
:
setSex(s1);}
else{
s2="girl";Student:
:
setSex(s2);
}
}
};
classClasses{
private:
stringname;
public:
intnumber;
Studentc[100];
intgetNumber(){returnnumber;}
StudentgetStu(){returnc[100];}
voidsetStudent(Studenta[100]){c[100]=a[100];}
voidsetNumber(intnum){number=num;}
voidInit(){
number=0;
stringnam;
cout<<"请输入班级姓名:
"<cin>>nam;
cout<<"请输入班级人数:
"<cin>>number;
for(inti=0;ic[i].Init();
}
ofstreamout;
out.open("student.txt",ios:
:
out);
if(!
out){
cerr<<"文件打不开"<abort();
}
for(inti=0;iout<}
out.close();
}
voidsearchByName(){
stringnam;
cout<<"请输入要查找的学生姓名:
"<cin>>nam;
inti;
for(i=0;iif(c[i].getName()==nam){
c[i].show();
}
}
}
voidserchByNo(){
intn;
cout<<"请输入要查找的学号;"<cin>>n;
inti;
for(i=0;i<100;i++){
if(c[i].getNo()==n){c[i].show();break;}
}
}
};
classCourse{
private:
stringname;
intscore;
public:
stringgetName(){returnname;}
voidInit(){
stringnam;
cout<<"请输入课程名:
"<cin>>nam;
setName(nam);
}
voidsetName(stringnam){name=nam;}
};
classOpreatorCou{
public:
Classesc1;
Courseco[20];
intMark[100][100],StuAll[100],n;
voidsetN(intnn){n=nn;}
intgetN(){returnn;}
intgetMark(){returnMark[100][100];}
CoursegetCo(){returnco[20];}
voidIN(){
cout<<"请输入课程数量:
"<cin>>n;
for(inti=0;ico[i].Init();
}
ofstreamoutS;
outS.open("course.txt",ios:
:
out);
if(!
outS){
cerr<<"文件打不开"<abort();
}
for(inti=0;ioutS<}
outS.close();
}
voidinput(Courseco[20],intn,Studentc[],intnumber){
ints;
for(inti=0;ifor(intj=0;jcout<<"请输入"<cin>>s;
if(s<0||s>100){
cout<<"你输入的成绩有误请重新输入!
(成绩范围为0-100!
)"<j=j-1;
}
else{
Mark[i][j]=s;
}
}
}
ofstreamout;
out.open("score.txt",ios:
:
out);
if(!
out){
cerr<<"文件打不开"<abort();
}
for(inti=0;iout<for(intj=0;jout<<""<}
out<}
out.close();
}
voidCountStu(intMark[100][100],intnumber,intn){
for(inti=0;iints=0;
for(intj=0;js=s+Mark[j][i];
}
StuAll[i]=s;
}
}
voidCountCouAvg(intMark[100][100],Studentc[],intnumber,Courseco[],intn){
floatCouAll[10];
for(inti=0;ifloats=0.0;
for(intj=0;js=s+Mark[i][j];
}
CouAll[i]=s/n;
}
for(inti=0;icout<"<<(CouAll[i])<}
for(inti=0;ifor(intj=0;jif(Mark[i][j]cout<"<}
}
}
voidshowUnpass(intMark[100][100],Studentc[],intnumber,Courseco[],intn){
for(inti=0;ifor(intj=0;jif(Mark[i][j]<60){
cout<"<}
}
}
}
voidshowGood(intMark[100][100],Studentc[],intnumber,Courseco[],intn){
for(inti=0;ifor(intj=0;jif(Mark[i][j]>90){
cout<成绩为:
"<}
}
}
}
voidorder(Studentc[],intnumber,intStuAll[],intn){
for(inti=0;iintsum=0;Studentstu;
if(StuAll[i]sum=StuAll[i];
StuAll[i]=StuAll[i+1];
StuAll[i+1]=sum;
stu=c[i];
c[i]=c[i+1];
c[i+1]=stu;
}
}
for(inti=0;icout<"<<(i+1)<<"总分:
"<}
ofstreamout;
out.open("studentscore.txt",ios:
:
out);
if(!
out){
cerr<<"文件打不开"<abort();
}
for(inti=0;iout<}
out.close();
}
voidDelete(intMark[100][100],Studentc[],intnumber,intn){
stringna;
cout<<"请输入要删除的学生姓名:
"<cin>>na;
for(inti=0;iif(c[i].getName()==na){
for(i;ic[i]=c[i+1];
}
for(intj=0;jfor(intk=i;kMark[j][k]=Mark[j][k+1];
}
}
}
else{cout<<"您要删除的学生不存在!
"<}
cout<<"删除成功!
"<}
voidReadText(Studentc[],intnumber,Courseco[],intn){
charsname[30],sex[30];
intsno;
ifstreamin("student.txt",ios:
:
in);
if(!
in){
cerr<<"文件打不开"<abort();
}
inti=-1;
in>>sno>>sname>>sex;
while(!
in.eof()){
i=i+1;
c[i].setNo(sno);
c[i].setName(sname);
c[i].setSex(sex);
in>>sno>>sname>>sex;
}
c1.setStudent(c);
c1.setNumber(i+1);
in.close();
charnam[20];
ifstreamins("course.txt",ios:
:
in);
if(!
ins){
cerr<<"文件打不开"<abort();
}
intj=-1;
ins>>nam;
while(!
ins.eof()){
j++;
co[j].setName(nam);
ins>>nam;
}
setN(j+1);
ins.close();
cout<<"读取文件完毕,请继续操作!
"<}
};
主函数:
#include"class.cpp"
#include
voidshowMenue(){
cout<<"********学生成绩管理系统********"<cout<<"请选择功能:
"<cout<<"1输入学生成绩"<cout<<"2根据成绩排序输出。
"<cout<<"3显示成绩大于90分的学生"<cout<<"4显示不及格学生"<cout<<"5按姓名查找"<cout<<"6按学号查找"<cout<<"7显示成绩小于课程平均分的学生"<cout<<"8删除学生信息"<cout<<"0退出"<cout<}
voidmain(){
intchoice,input;
cout<<"请选择初始化方式:
1.手动输入2.从文件读取"<cin>>input;
OpreatorCouop;
if(input==1){op.c1.Init();op.IN();}
if(input==2){op.ReadText(op.c1.c,op.c1.getNumber(),op.co,op.getN());}
do{
showMenue();
cin>>choice;
switch(choice){
case1:
op.input(op.co,op.getN(),op.c1.c,op.c1.getNumber());break;
case2:
{op.CountStu(op.Mark,op.c1.getNumber(),op.getN());
op.order(op.c1.c,op.c1.getNumber(),(op.StuAll),op.getN());
break;
}
case3:
op.showGood(op.Mark,op.c1.c,op.c1.getNumber(),op.co,op.getN());break;
case4:
op.showUnpass(op.Mark,op.c1.c,op.c1.getNumber(),op.co,op.getN());break;
case5:
op.c1.searchByName();break;
case6:
op.c1.serchByNo();break;
case7:
op.CountCouAvg(op.Mark,op.c1.c,op.c1.getNumber(),op.co,op.getN());break;
case8:
op.Delete(op.Mark,op.c1.c,op.c1.getNumber(),op.getN());break;
case0:
break;
default:
cout<<"您输入的有误,请重新输入!
"<}
}while(choice!
=0);
}
运行界面: