#include<stdio.h>
#include<string.h>
struct student
{char a[10]; char b[10];char c[10];float d;float e;float f;float g;int q;};
struct student stu[3];
struct student *p=stu;
struct student temp;
int i=0,j,k=0,x;
char z[10];
int main()
{
void menu(struct student stu[]);
menu (p);
return 0;
}
void menu(struct student stu[])
{
void input(struct student stu[]);
void del(struct student stu[]);
void select(struct student stu[]);
void order(struct student stu[]);
void output(struct student stu[]);
printf("1.input\n2.delete\n3.select\n4.order\n5.output\n6.quit\nplease input your option\n");
scanf("%d",&x);
if(x==1) input(p);
if(x==2) del(p);
if(x==3) select(p);
if(x==4) order(p);
if(x==5) output(p);
}
void input(struct student stu[])
{ printf("Id ");scanf("%s",stu[i].a);
printf("class ");scanf("%s",stu[i].b);
printf("name ");scanf("%s",stu[i].c);
printf("score1 ");scanf("%f",&stu[i].d);
printf("score2 ");scanf("%f",&stu[i].e);
printf("score3 ");scanf("%f",&stu[i].f);
stu[i].g=stu[i].d+stu[i].e+stu[i].f;
stu[i].q=1;
printf("continue?\n");
scanf("%s",z);
if(strcmp(z,"yes")==0)
{ i++; input(p);}
else
menu(p);
}
void del(struct student stu[])
{ scanf("%s",z);
for(i=0;i<3;i++)
{
if(strcmp(z,stu[i].a)!=0&&strcmp(z,stu[i].c)!=0)
{
printf("%s,%s,%s,%4.1f,%4.1f,%4.1f,%5.1f\n",stu[i].a,stu[i].b,stu[i].c,stu[i].d,stu[i].e,stu[i].f,stu[i].g);
}
else if(strcmp(z,stu[i].a)==0||strcmp(z,stu[i].c)==0)
stu[i].q=0;
}
printf("continue?\n");
scanf("%s",z);
if(strcmp(z,"yes")==0)
del(p);
else
menu(p);
}
void select(struct student stu[])
{
scanf("%s",z);
for(i=0;i<3;i++)
{
if(strcmp(z,stu[i].a)==0||strcmp(z,stu[i].b)==0)
{
printf("%s,%s,%s,%4.1f,%4.1f,%4.1f,%5.1f\n",stu[i].a,stu[i].b,stu[i].c,stu[i].d,stu[i].e,stu[i].f,stu[i].g);
k++;
}
}
if(k=0)
{
printf(" there is no eligible student ");
}
printf("continue?\n");
scanf("%s",z);
if(strcmp(z,"yes")==0)
select(p);
else
menu(p);
}
void order(struct student stu[])
{
for(j=0;j<2;j++)
for(i=0;i<2-j;i++)
{if (strcmp(stu[i].b,stu[i+1].b)>0)
{temp=stu[i];stu[i]=stu[i+1];stu[i+1]=temp;}}
for(j=0;j<2;j++)
for(i=0;i<2-j;i++)
if ((stu[i].d+stu[i].f+stu[i].e)<(stu[i+1].d+stu[i+1].e+stu[i+1].f)&&strcmp(stu[i].b,stu[i+1].b)==0)
{temp=stu[i];stu[i]=stu[i+1];stu[i+1]=temp;}
output(p);
menu(p);
}
void output(struct student stu[])
{
for(i=0;i<3;i++)
if(stu[i].q==1)
{printf("%s,%s,%s,%4.1f,%4.1f,%4.1f,%5.1f\n",stu[i].a,stu[i].b,stu[i].c,stu[i].d,stu[i].e,stu[i].f,stu[i].g);}
}