学生成绩管理系统 C++.docx
《学生成绩管理系统 C++.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统 C++.docx(16页珍藏版)》请在冰豆网上搜索。
![学生成绩管理系统 C++.docx](https://file1.bdocx.com/fileroot1/2023-2/3/b554c049-4570-46a0-9962-89a5ce1fd56a/b554c049-4570-46a0-9962-89a5ce1fd56a1.gif)
学生成绩管理系统C++
设计题目:
成绩管理系统
设计要求实现如下功能:
输入一个班级的学生基本信息(包括学号,姓名,性别,科目),对N门考试的成绩进行管理(例N=5)
要求:
1.用户录入每个学生每门课程的分数;
2。
能够计算每个学生的各门功课总分和平均分,并按总分将成绩排序,显示每个学生的总分和排名;
3。
计算全班各门功课的平均分,显示没门课程中低于平均分的每一个学生的学号,姓名,性别,科目,成绩等信息;
4。
显示每门科目中,成绩在90分以上的学生信息。
另外还输出每门科目中不及格的学生信息;
5。
能按姓名或者学号查找,增加,删除和保存各个学生的信息.
6文件操作
源码:
class.cpp文件:
#include〈iostream〉
#include〈fstream>
#includeusingnamespacestd;
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〈<”学号:
"<〈no<〈endl;
cout〈<”姓名:
”<cout〈〈”性别:
"〈〈sex〈〈endl;
cout〈〈endl;
}
voidInit(){
stringn;
intnum,s;
cout<<"请输入学号:
”<cin〉〉num;
cout<<"请输入姓名:
"〈cin〉〉n;
cout<〈”请选择性别:
男0,女1"〈〈endl;
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;i〈number;i++){
c[i]。
Init();
}
ofstreamout;
out。
open(”student。
txt",ios:
:
out);
if(!
out){
cerr<〈"文件打不开”〈〈endl;
abort();
}
for(inti=0;i〈number;i++){
out〈getName()〈<""〈〈c[i]。
getSex()<}
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<<"文件打不开"<〈endl;
abort();
}
for(inti=0;ioutS<〈co[i]。
getName()〈〈endl;
}
outS.close();
}
voidinput(Courseco[20],intn,Studentc[],intnumber){
ints;
for(inti=0;ifor(intj=0;j〈number;j++){
cout<<"请输入”<〈c[j]。
getName()〈<"的”<〈co[i].getName()<〈"成绩"<〈endl;
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〈〈"文件打不开"〈〈endl;
abort();
}
for(inti=0;iout〈〈co[i].getName();
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;j〈number;j++){
s=s+Mark[i][j];
}
CouAll[i]=s/n;
}
for(inti=0;i〈n;i++){
cout〈〈co[i]。
getName()<〈"的平均分是:
”〈〈(CouAll[i])〈〈endl;
}
for(inti=0;ifor(intj=0;j〈number;j++){
if(Mark[i][j]〈CouAll[i]){
cout<〈c[j].getName()<<”的”〈"〈〈endl;}
}
}
}
voidshowUnpass(intMark[100][100],Studentc[],intnumber,Courseco[],intn){
for(inti=0;i〈n;i++){
for(intj=0;jif(Mark[i][j]〈60){
cout<〈c[j]。
getName()〈<”的"<"<}
}
}
}
voidshowGood(intMark[100][100],Studentc[],intnumber,Courseco[],intn){
for(inti=0;ifor(intj=0;j〈number;j++){
if(Mark[i][j]〉90){
cout〈成绩为:
"〈}
}
}
}
voidorder(Studentc[],intnumber,intStuAll[],intn){
for(inti=0;i〈number;i++){
intsum=0;Studentstu;
if(StuAll[i]〈StuAll[i+1]){
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;i〈number;i++){
cout〈〈c[i].getName()<<"的排名是:
"<〈(i+1)〈〈”总分:
”<}
ofstreamout;
out。
open(”studentscore。
txt”,ios:
:
out);
if(!
out){
cerr<<"文件打不开"〈abort();
}
for(inti=0;i〈number;i++){
out〈getName()<<””<}
out。
close();
}
voidDelete(intMark[100][100],Studentc[],intnumber,intn){
stringna;
cout<<"请输入要删除的学生姓名:
”〈cin>〉na;
for(inti=0;i〈number;i++){
if(c[i].getName()==na){
for(i;i〈number;i++){
c[i]=c[i+1];
}
for(intj=0;j〈n;j++){
for(intk=i;kMark[j][k]=Mark[j][k+1];
}
}
}
else{cout〈〈”您要删除的学生不存在!
"〈〈endl;}
}
cout<〈”删除成功!
"<〈endl;
}
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〈<"文件打不开”<〈endl;
abort();
}
intj=-1;
ins〉〉nam;
while(!
ins.eof()){
j++;
co[j].setName(nam);
ins>〉nam;
}
setN(j+1);
ins。
close();
cout〈<"读取文件完毕,请继续操作!
”〈}
};
主函数:
#include”class.cpp"
#includevoidshowMenue(){
cout〈<"********学生成绩管理系统********”<〈endl;
cout〈<”请选择功能:
"〈cout<<”1输入学生成绩”〈〈endl;
cout〈<"2根据成绩排序输出."〈cout〈〈"3显示成绩大于90分的学生"<cout<<”4显示不及格学生"〈〈endl;
cout<<"5按姓名查找”<〈endl;
cout<〈”6按学号查找"〈〈endl;
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〈<"您输入的有误,请重新输入!
"〈〈endl;
}
}while(choice!
=0);
}
运行界面: