#include"iostream"
#include"string"
using namespace std;
struct stu
{
string num;
string name;
double math;
double computer;
double english;
double sum;
};
typedef struct stu ST;
//录入n个学生信息
void print(ST *s,int n)
{
cout<<"按***学号*****姓名*****数学成绩******计算机成绩*****英语成绩*****"<<endl;
for(int i=0;i<n;i++)
{
cout<<"输入第"<<i+1<<"学生信息"<<endl;
cin>>s[i].num>>s[i].name>>s[i].math>>s[i].computer>>s[i].english;
}
}
//输出n个学生信息(未经处理)
void display1(ST *s,int n)
{
cout<<"学号"<<'\t'<<"姓名"<<'\t'<<"数学"<<'\t'<<"计算机"<<'\t'<<"英语"<<endl;
for(int i=0;i<n;i++)
{
cout<<s[i].num<<'\t'<<s[i].name<<'\t'<<s[i].math<<'\t'<<s[i].computer<<'\t'<<s[i].english<<endl;
}
}
//输出n个学生信息(包括总分)
void display2(ST *s,int n)
{
cout<<"学号"<<'\t'<<"姓名"<<'\t'<<"数学"<<'\t'<<"计算机"<<'\t'<<"英语"<<'\t'<<"总分"<<endl;
for(int i=0;i<n;i++)
{
cout<<s[i].num<<'\t'<<s[i].name<<'\t'<<s[i].math<<'\t'<<s[i].computer<<'\t'<<s[i].english<<'\t'<<s[i].sum<<endl;
}
}
//求总分
void sum(ST *s,int n)
{
for(int i=0;i<n;i++)
{
s[i].sum=s[i].math+s[i].computer+s[i].english;
}
}
//按总分排序
void sortsum(ST *s ,int n)
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
ST t;
if(s[i].sum<s[j].sum)
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
}
}
//按学号查找
void Findnum(ST *s,int n, string key)
{
int flag;
flag=0;
for (int i=0;i<n;i++)
{
if(s[i].num==key)
{
s[i].sum=s[i].english+s[i].computer+s[i].math;
cout<<"学号"<<'\t'<<"姓名"<<'\t'<<"数学"<<'\t'<<"计算机"<<'\t'<<"英语"<<'\t'<<"总分"<<endl;
cout<<s[i].num<<'\t'<<s[i].name<<'\t'<<s[i].math<<'\t'<<s[i].computer<<'\t'<<s[i].english<<'\t'<<s[i].sum<<endl;
flag=1;
break;
}
}
if(flag==0)
{
cout<<"该学生信息不存在"<<endl;
}
}
//按姓名查找
void Findname(ST *s,int n,string key)
{
int flag;
flag=0;
for (int i=0;i<n;i++)
{
if(s[i].name==key)
{
s[i].sum=s[i].computer+s[i].english+s[i].math;
cout<<"学号"<<'\t'<<"姓名"<<'\t'<<"数学"<<'\t'<<"计算机"<<'\t'<<"英语"<<'\t'<<"总分"<<endl;
cout<<s[i].num<<'\t'<<s[i].name<<'\t'<<s[i].math<<'\t'<<s[i].computer<<'\t'<<s[i].english<<'\t'<<s[i].sum<<endl;
flag=1;
break;
}
}
if(flag==0)
{
cout<<"该学生信息不存在"<<endl;
}
}
//插入学生信息
void insert(ST *s,int n,ST x)
{
for(int i=0;i<n;i++)
{
if(s[i].sum<x.sum)
{
break;
}
}
for(int j=n-1;j>=i;j--)
{
s[j+1]=s[j];
}
s[i]=x;
}
//按学号删除信息
void delet(ST *s,int n,string key)
{
for(int i=0;i<n;i++)
{
{
break;
}
}
for(int j=i;j<n;j++)
{
s[j]=s[j+1];
}
}
//按学号修改信息
void modify(ST *s,int n, string key)
{
for(int i=0;i<n;i++)
{
if(s[i].num==key)
{
cout<<" 修改选项"<<endl;
cout<<endl;
cout<<'\t'<<"1 数学 "<<endl;
cout<<'\t'<<"2 计算机"<<endl;
cout<<'\t'<<"3 英语"<<endl;
cout<<'\t'<<"4 总分"<<endl;
cout<<'\t'<<"5 退出修改"<<endl;
while(1)
{
int c;
cout<<"请选择修改的数据"<<endl;
cin>>c;
if(!(c>0&&c<6))
{
cout<<"输入错误"<<endl;
}
switch(c)
{
case 1:
int m1;
cout<<"输入数据"<<endl;
cin>>m1;
s[i].math=m1;
cout<<"已经修改成功"<<endl;
break;
case 2:
int m2;
cout<<"输入数据"<<endl;
cin>>m2;
s[i].computer=m2;
cout<<"已经修改成功"<<endl;
break;
case 3:
int m3;
cout<<"输入数据"<<endl;
cin>>m3;
s[i].english=m3;
cout<<"已经修改成功"<<endl;
break;
case 4:
int m4;
cout<<"输入数据"<<endl;
cin>>m4;
s[i].sum=m4;
cout<<"已经修改成功"<<endl;
break;
case 5:
goto L;
}
L : break;
}
break;
}
}
}
void main()
{
ST s[100],su;
int flag=0;
cout<<" 菜单 "<<endl;
cout<<endl;
cout<<" 1 录入学生信息"<<endl;
cout<<" 2 输出所有学生信息"<<endl;
cout<<" 3 按总分高低排序输出"<<endl;
cout<<" 4 按学号查找学生信息"<<endl;
cout<<" 5 按姓名查找学生信息"<<endl;
cout<<" 6 按总分大小插入学生信息"<<endl;
cout<<" 7 按姓名删除学生信息"<<endl;
cout<<" 8 按学号修改信息"<<endl;
cout<<" 9 退出系统"<<endl;
while(1)
{
cout<<"请选择:"<<endl;
int m;
cin>>m;
if(!(m>0&&m<10))
{
cout<<"输入错误"<<endl;
}
switch(m)
{
case 1:
flag=1;
cout<<"输入学生个数"<<endl;
int n;
cin>>n;
cout<<"输入"<<n<<"个学生信息"<<endl;
print(s,n) ;
break;
case 2:
if(flag==0)
{
cout<<"请先录入学生信息,选择 1 继续"<<endl;
}
else
{
display1(s,n);
}
break;
case 3:
if(flag==0)
{
cout<<"请先录入学生信息,选择 1 继续"<<endl;
}
else
{
sum(s,n);
sortsum(s,n);
display2(s,n);
}
break;
case 4:
if(flag==0)
{
cout<<"请先录入学生信息,选择 1 继续"<<endl;
}
else
{
char num1[10];
cout<<"输入该学生学号"<<endl;
cin>>num1;
Findnum( s, n, num1);
}
break;
case 5:
if(flag==0)
{
cout<<"请先录入学生信息,选择 1 继续"<<endl;
}
else
{
char num2[10];
cout<<"输入该学生姓名"<<endl;
cin>>num2;
Findname( s,n, num2);
}
break;
case 6:
if(flag==0)
{
cout<<"请先录入学生信息,选择 1 继续"<<endl;
}
else
{
cout<<"按***学号*****姓名*****数学成绩******计算机成绩*****英语成绩*****总分***"<<endl;
cin>>su.num>>su.name>>su.math>>su.computer>>su.english>>su.sum;
insert(s, n, su);
n++;
display2(s,n);
}
break;
case 7:
if(flag==0)
{
cout<<"请先录入学生信息,选择 1 继续"<<endl;
}
else
{
char num3[10];
cout<<"输入学号"<<endl;
cin>>num3;
delet(s,n,num3);
n--;
display2(s,n);
}
break;
case 8:
if(flag==0)
{
cout<<"请先录入学生信息,选择 1 继续"<<endl;
}
else
{
char num4[10];
cout<<"输入修改学生的学号"<<endl;
cin>>num4;
modify(s,n,num4);
break;
}
case 9:
exit(1);
}
}
}