#include
#include
#include
using namespace std;
void Return_menu(); //声明返回主菜单函数
void Show_increase_student();//声明显示增加后的成绩表函数
void Show_delete_student();//声明显示删除后的成绩表函数
void Show_change_student();//声明显示修改后的成绩表函数
void Query_name() //按姓名查询学生信息
{
string name1,goorstop;
cout<<"请输入所查学生姓名:";
cin>>name1; //输入所要查询的学生姓名
int i,k,t=0;
struct Student //定义学生结构体
{
string name,biaotou[5];//定义biaotou[5]即表头:姓名,学号,语文,数学,英语
int numb; //定义学号
float cj1,cj2,cj3; //定义三科成绩
}stu[10]; //原成绩表共10学生
ifstream in1; //定义文件输出流
in1.open("C:\\成绩表.txt");//打开文件,C盘下成绩表.txt
for(k=0;k<5;k++)
in1>>stu[0].biaotou[k]; //将成绩表中表头赋值给biaotou[5]
for(i=0;i<10;i++)
in1>>stu[i].name>>stu[i].numb>>stu[i].cj1>>stu[i].cj2>>stu[i].cj3;//将成绩表中10个学生的信息赋值给结构体中所定义的成员
for(i=0;i<10;i++)
{
if(name1==stu[i].name)//判断用户所输入的学生姓名与成绩表中的学生姓名是否相同,相同则执行以下程序
{
cout<<" ";
for(k=0;k<5;k++)
cout<>goorstop;
if(goorstop=="go")//输入go,则返回主菜单
Return_menu();
else if(goorstop=="stop")//输入stop,则退出系统
cout<<"退出查询系统,谢谢使用"<>goorstop;
if(goorstop=="go")//输入go,则修改姓名
Query_name();
else if(goorstop=="stop")//输入stop,则返回主菜单
Return_menu();
else if(goorstop!="go"&&goorstop!="stop")//输入错误时,即输入不是go也不是stop则默认返回主菜单
{
cout<<"输入错误,默认返回主菜单,重新输入"<>number1;
int i,k,t=0;
struct Student
{
string name,biaotou[5];
int numb;
float cj1,cj2,cj3;
}stu[10];
ifstream in1;
in1.open("C:\\成绩表.txt");
for(k=0;k<5;k++)
in1>>stu[0].biaotou[k];
for(i=0;i<10;i++)
in1>>stu[i].name>>stu[i].numb>>stu[i].cj1>>stu[i].cj2>>stu[i].cj3;
for(i=0;i<10;i++)
{
if(number1==stu[i].numb)
{
cout<<" ";
for(k=0;k<5;k++)
cout<>goorstop;
if(goorstop=="go")
Return_menu();
else if(goorstop=="stop")
cout<<"退出查询系统,谢谢使用"<>goorstop;
if(goorstop=="go")
Query_numb();
else if(goorstop=="stop")
Return_menu();
else if(goorstop!="go"&&goorstop!="stop")
{
cout<<"输入错误,默认返回主菜单,重新输入"<>stu[0].biaotou[k];
for(i=0;i<10;i++)
in1>>stu[i].name>>stu[i].numb>>stu[i].cj1>>stu[i].cj2>>stu[i].cj3;
for(t=2;t<5;t++)
if(kecheng==stu[0].biaotou[t])
return t;
else //课程不相同,m初始值为3,所输入的课程均不同则m加完后为6
m++;
return m;//返回6,即用户所输入的课程不在成绩表中
}
int Return_name(string name_1)//判断用户所输入的姓名是10个中的哪一个,并返回其在数组中的位置
{
int i,t,m=0;
struct Student
{
string name,biaotou[5];
int numb;
float cj1,cj2,cj3;
}stu[10];
ifstream in1;
in1.open("C:\\成绩表.txt");
for(i=0;i<5;i++)
in1>>stu[0].biaotou[i];
for(i=0;i<10;i++)
in1>>stu[i].name>>stu[i].numb>>stu[i].cj1>>stu[i].cj2>>stu[i].cj3;
for(t=0;t<10;t++)
if(name_1==stu[t].name)
return t;
else //姓名不相同,m初始值为0,所输入的姓名均不同则m加完后为10
m++;
return m;//返回10,即用户所输入的姓名不在成绩表中
}
int Return_num(int num_1)//判断用户所输入的学号是10人中的哪一个,并返回其在数组中的位置
{
int i,t,m=0;
struct Student
{
string name,biaotou[5];
int numb;
float cj1,cj2,cj3;
}stu[10];
ifstream in1;
in1.open("C:\\成绩表.txt");
for(i=0;i<5;i++)
in1>>stu[0].biaotou[i];
for(i=0;i<10;i++)
in1>>stu[i].name>>stu[i].numb>>stu[i].cj1>>stu[i].cj2>>stu[i].cj3;
for(t=0;t<10;t++)
if(num_1==stu[t].numb)
return t;
else //学号不相同,m初始值为0,所输入的学号均不同则m加完后为10
m++;
return m;//返回10,即用户所输入的学号不在成绩表中
}
void Success_statistics()//成绩统计
{
int i,k,min,max;
string kecheng,goorstop;
cout<<"请输入课程:";
cin>>kecheng;
cout<<"请输入最低分"<<" "<<"最高分:";//输入分数段
cin>>min>>max;
struct Student
{
string name,biaotou[5];
int numb;
float cj1,cj2,cj3;
}stu[10];
ifstream in1;
in1.open("C:\\成绩表.txt");
for(k=0;k<5;k++)
in1>>stu[0].biaotou[k];
for(i=0;i<10;i++)
in1>>stu[i].name>>stu[i].numb>>stu[i].cj1>>stu[i].cj2>>stu[i].cj3;
if(Return_curriculum(kecheng)==6||min<0||max>100)//课程名或分数段输入错误
{
cout<<"课程或分数段输入错误"<>goorstop;
if(goorstop=="go")
Success_statistics();
else if(goorstop=="stop")
Return_menu();
else if(goorstop!="go"&&goorstop!="stop")
{
cout<<"输入错误,默认返回主菜单,重新输入"<=min&&stu[i].cj1<=max) //学生成绩在用户所输入的分数段内
cout<<" "<>goorstop;
if(goorstop=="go")
Return_menu();
else if(goorstop=="stop")
cout<<"退出查询系统,谢谢使用"<=min&&stu[i].cj2<=max) //学生成绩在用户所输入的分数段内
cout<<" "<>goorstop;
if(goorstop=="go")
Return_menu();
else if(goorstop=="stop")
cout<<"退出查询系统,谢谢使用"<=min&&stu[i].cj3<=max) //学生成绩在用户所输入的分数段内
cout<<" "<>goorstop;
if(goorstop=="go")
Return_menu();
else if(goorstop=="stop")
cout<<"退出查询系统,谢谢使用"<>kecheng;
cout<<"输入1-->按成绩升序排列,输入2-->按成绩降序排列"<>next;
if(Return_curriculum(kecheng)==6||(next!=1&&next!=2))//输入的课程名或所选择的升降序操作错误
{
cout<<"课程名或升降序操作输入错误"<>goorstop;
if(goorstop=="go")
Curricul_ordination();
else if(goorstop=="stop")
Return_menu();
else if(goorstop!="go"&&goorstop!="stop")
{
cout<<"输入错误,默认返回主菜单,重新输入"<按成绩升序排列";break;
case 2:cout<<"您所选择的操作-->按成绩降序排列";break;
}
cout<>stu[0].biaotou[k];
for(i=0;i<10;i++)
in1>>stu[i].name>>stu[i].numb>>stu[i].cj1>>stu[i].cj2>>stu[i].cj3;
cout<<" ";
for(k=0;k<5;k++)
cout<=i;j--) //内不循环,内次少判断1个
{
if(stu[j].cj1=i;j--)
{
if(stu[j].cj2=i;j--)
{
if(stu[j].cj3>goorstop;
if(goorstop=="go")
Return_menu();
else if(goorstop=="stop")
cout<<"退出查询系统,谢谢使用"<i;j--)
{
if(stu[j].cj1>stu[j-1].cj1)
{
iTemp1=stu[j-1].cj1;
stu[j-1].cj1=stu[j].cj1;
stu[j].cj1=iTemp1;
nameTemp=stu[j-1].name;
stu[j-1].name=stu[j].name;
stu[j].name=nameTemp;
numbTemp=stu[j-1].numb;
stu[j-1].numb=stu[j].numb;
stu[j].numb=numbTemp;
iTemp2=stu[j-1].cj2;
stu[j-1].cj2=stu[j].cj2;
stu[j].cj2=iTemp2;
iTemp3=stu[j-1].cj3;
stu[j-1].cj3=stu[j].cj3;
stu[j].cj3=iTemp3;
}
}
}
}
else
if(Return_curriculum(kecheng)==3)//输入的课程名为数学,按数学成绩降序排列
{
for(i=0;i<10;i++)
{
for(int j=9;j>i;j--)
{
if(stu[j].cj2>stu[j-1].cj2)
{
iTemp1=stu[j-1].cj2;
stu[j-1].cj2=stu[j].cj2;
stu[j].cj2=iTemp1;
nameTemp=stu[j-1].name;
stu[j-1].name=stu[j].name;
stu[j].name=nameTemp;
numbTemp=stu[j-1].numb;
stu[j-1].numb=stu[j].numb;
stu[j].numb=numbTemp;
iTemp2=stu[j