cout<<"\t总分\t平均分\t\n";
}
boolComp(constStudent&a,constStudent&b){
if(a.sum!
=b.sum)returna.sum>b.sum;
elsereturna.sum>b.sum;
}
inlinestringStudent:
:
Get_classnumber()
{returnclassnumber;}
inlinestringStudent:
:
Get_name()
{returnname;}
inlinestringStudent:
:
Get_number()
{returnnumber;}
inlinestringStudent:
:
Get_sex()
{returnsex;}
voidInput()
{charch[2];
do
{cin>>stud;
stu.push_back(stud);
cout<<"\t\t\tdoyouwantaddmore?
(Y|N):
";
cin>>ch;
}while(ch[0]=='y'||ch[0]=='Y');
}
voidDisplay()
{if(stu.empty()){cout<<"\t\t\t当前没有记录,请先添加记录!
\n";return;}
elsedispTable();
for(Iterator=stu.begin();Iterator!
=stu.end();Iterator++)
{cout<<(*Iterator);}
}
voidSort()
{if(stu.empty())
{cout<<"\t\t\t当前没有记录,请先添加记录!
\n";return;}
sort(stu.begin(),stu.end(),Comp);
cout<<"\n
}
voidUpdata()
{if(stu.empty()){cout<<"\t\t\t当前没有记录,请先添加记录!
\n";return;}
stringid;charch[2];boolmark=true;
cout<<"请输入需修改的学生的学号:
";
cin>>id;
for(Iterator=stu.begin();Iterator!
=stu.end();Iterator++)
{if((*Iterator).Get_number()==id)
{dispTable();mark=false;
cout<<(*Iterator);
cout<<"您确定要修改此条记录?
(Y|N)";
cin>>ch;
if(ch[0]=='y'||ch[0]=='Y')
{cin>>stud;
(*Iterator)=stud;
}
else{cout<<"此条记录没有被修改!
\n";return;}
}
}
if(mark){cout<<"\n\没有找到相关记录!
!
!
\n";return;}
Sort();
cerr<<"\n\t\t\t修改成功!
\n";
}
voidDelete()/*按学号删除一条记录*/
{if(stu.empty()){cout<<"当前没有记录,请先添加记录!
\n";return;}
strings;charch[2];;boolmark=true;
cout<<"\t\t\t请输入需删除的学生的学号:
";
cin>>s;
for(Iterator=stu.begin();Iterator!
=stu.end();)
{if((*Iterator).Get_number()==s)
{dispTable();mark=false;
cout<<(*Iterator);
cout<<"您确定要删除此条记录?
(Y|N)";
cin>>ch;
if(ch[0]=='y'||ch[0]=='Y')
{Iterator=stu.erase(Iterator);
cout<<"\n删除成功!
!
!
\n";
}
else
{cout<<"\n此条记录没有被删除!
\n";Iterator++;}
}
else
{Iterator++;}
}
if(mark){cout<<"\n\没有找到相关记录!
!
!
\n";return;}
Sort();
}
voidQuerybyNumber()
{if(stu.empty()){cout<<"\当前没有记录,请先添加记录!
\n";return;}
strings;boolmark=true;intn=0;
cout<<"请输入需查询的学生的学号:
";
cin>>s;
for(Iterator=stu.begin();Iterator!
=stu.end();Iterator++)
{if((*Iterator).Get_number()==s)
{n++;
if(n==1)dispTable();
mark=false;
cout<<(*Iterator);
}
}
if(mark)cout<<"\n\没有找到相关记录!
!
!
\n";
}
voidQuerybyName()
{if(stu.empty()){cout<<"\n当前没有记录,请先添加记录!
\n";return;}
stringna,cn;boolmark=true;intn=0;
cout<<"\n\t\t\t请输入需查询的学生的姓名,班级:
";
cin>>na>>cn;
for(Iterator=stu.begin();Iterator!
=stu.end();Iterator++)
{if((*Iterator).Get_name()==na&&(*Iterator).Get_classnumber()==cn)
{mark=false;
n++;
if(n==1)dispTable();
cout<<(*Iterator);
}
}
if(mark)cout<<"\n\没有找到相关记录!
!
!
\n";
}
voidfind()/***查找**/
{if(stu.empty()){cerr<<"\n当前没有记录,请添加记录!
\n";return;}
charch,c[3];
do{
cout<<"\n\t\t\t请输入查找方式:
1,学号2,姓名,班级:
";
cin>>ch;
while(ch!
='1'&&ch!
='2')
{cout<<"\n您输入有误,请重新输入:
";cin>>ch;}
switch(ch)
{
case'1':
QuerybyNumber();break;
case'2':
QuerybyName();break;
}
cout<<"\n\您想继续查找吗?
1是,0否";
cin>>c;
while(c[0]!
='1'&&c[0]!
='0')
{cout<<"\n您输入有误,请重新输入:
";cin>>c;}
}while(c[0]=='1');
}
voidManagerinfo()/*班级学生成绩统计*/
{if(stu.empty()){cout<<"\n\当前没有记录,请先添加记录!
\n";return;}
floatsum[num_subject];
memset(sum,0,num_subject*sizeof(int));
stringcn;inti,j,n=0;
boolmark=true;
intk=stu.size();
cout<<"\n\t\t\t请输入要统计的班级:
";
cin>>cn;
for(i=0;iif(cn==stu[i].Get_classnumber())
{mark=false;
n++;
if(n==1)dispTable();
cout<for(j=0;jsum[j]+=stu[i].score[j];
}
if(mark){cout<<"\n\t\t\t没有找到相关记录!
";return;}
cout<<"\n\t该班有"<\n"<for(i=0;i{cout<<'\t'<cout<<":
\t"<}
cout<}
voidsave()/*将所有记录写入文件*/
{if(stu.empty()){cout<<"\n\t\t\t当前没有记录,请先添加记录!
\n";return;}
charfilename[20];
cout<<"将记录保存到文件中\n";
cout<<"\请输入保存记录的文件名:
";
inti,j,k=stu.size();
cin>>filename;
ofstreamfile;
file.open(filename,ios:
:
app|ios:
:
binary);
if(!
file){cout<<"\n文件打开失败!
\n";return;}
for(i=0;i{file<<<'\t'<for(j=0;jfile<<'file<<'<}
file.close();
cout<<"\t\t\t保存成功!
\n";
}
voidloaddata(Student&st)
{charfilename[20];intj;
cout<<"从文件中读取记录\n";
cout<<"请输入文件名:
";
cin>>filename;
ifstreamofile;
ofile.open(filename,ios:
:
out|ios:
:
binary);
if(!
ofile){cout<<"\n\文件打开失败!
\n";return;}
ofile>>st.number>>st.name>>st.classnumber>>st.sex;
for(j=0;jofile>>st.score[j];
ofile>>st.sum>>st.ave_score;
while(!
ofile.eof())
{stu.push_back(st);
ofile>>st.number>>st.name>>st.classnumber>>st.sex;
for(j=0;jofile>>st.score[j];
ofile>>st.sum>>st.ave_score;
}
ofile.close();
cerr<<"\n\t\t\t读取成功!
!
!
\n";
}
intmenuSelect()
{cout<<"*************************\n"
<<"\1.增加记录*\n"
<<"\2.显示全部记录*\n"
<<"\3.记录排序*\n"
<<"\4.修改记录*\n"
<<"\5.删除记录*\n"
<<"\6.查询记录*\n"
<<"\7.统计学生成绩*\n"
<<"\8.保存学生记录*\n"
<<"\9.读取学生记录*\n"
<<"\t0.退出程序*\n"
<<"\*************************\n\n\n";
charchoice[2];
while
(1)
{cout<<"\n\t\t\t请输入您的选择:
";
cin>>choice;
cin.ignore();
if(choice[0]<'0'||choice[0]>'9')
{cout<<"\n输入错误,重选0-9:
";}
elsebreak;
}
return(choice[0]-'0');
}
voidhandleMenu()
{intn=0;
cout<while
(1)
{switch(menuSelect())
{
case1:
printf("\t\t\tInputRecords\n");
Input();
system("cls");//清屏
break;
case2:
printf("\DisplayAllRecords\n");
Display();
printf("");
system("pause");
system("cls");
break;
case3:
printf("Sort\n");
Sort();
printf();
system("pause");
system("cls");
break;
case4:
printf("\t\t\tUpdataaRecord\n");
Updata();
printf();
system("pause");
system("cls");
break;
case5:
printf("tDeleteaRecord\n");
Delete();
printf();
system("pause");
system("cls");
break;
case6:
printf("\Query\