You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <string.h>>
|
|
|
|
|
int j=0,q=-1;
|
|
|
|
|
char e;
|
|
|
|
|
struct stu
|
|
|
|
|
{
|
|
|
|
|
int id;
|
|
|
|
|
int sclass;
|
|
|
|
|
char name[10];
|
|
|
|
|
float gs;
|
|
|
|
|
float dw;
|
|
|
|
|
float yy;
|
|
|
|
|
}st[100];
|
|
|
|
|
void input()
|
|
|
|
|
{
|
|
|
|
|
printf("id ");
|
|
|
|
|
printf("class ");
|
|
|
|
|
printf("name ");
|
|
|
|
|
printf("score1 ");
|
|
|
|
|
printf("score2 ");
|
|
|
|
|
printf("score3\n");
|
|
|
|
|
scanf("%d %d %s %f %f %f",&st[j].id,&st[j].sclass,&st[j].name,&st[j].gs,&st[j].dw,&st[j].yy);
|
|
|
|
|
printf("continue?\n");
|
|
|
|
|
scanf("%*[^\n]");
|
|
|
|
|
scanf("%*c");
|
|
|
|
|
scanf("%c",&e);
|
|
|
|
|
j++;
|
|
|
|
|
if(e=='n'||e=='N')
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else if(e=='y'||e=='Y')
|
|
|
|
|
{
|
|
|
|
|
input();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void cdelete()
|
|
|
|
|
{
|
|
|
|
|
int i,f,m=5,n;
|
|
|
|
|
char mm,s[10];
|
|
|
|
|
printf("Are you sure\n");
|
|
|
|
|
scanf("%*[^\n]");
|
|
|
|
|
scanf("%*c");
|
|
|
|
|
scanf("%c\n",&mm);
|
|
|
|
|
if(mm=='n'||mm=='N')
|
|
|
|
|
{
|
|
|
|
|
output();
|
|
|
|
|
}
|
|
|
|
|
if(mm=='y'||mm=='Y')
|
|
|
|
|
{
|
|
|
|
|
gets(s);
|
|
|
|
|
for(f=0;f<j;f++)
|
|
|
|
|
{
|
|
|
|
|
if(strcmp(s,st[f].name)==0||strcmp(s,st[f].id)==0)
|
|
|
|
|
{
|
|
|
|
|
m=f;
|
|
|
|
|
for(m;m<=j;m++)
|
|
|
|
|
{
|
|
|
|
|
st[m]=st[m+1];
|
|
|
|
|
}
|
|
|
|
|
j--;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
output();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void select()
|
|
|
|
|
{
|
|
|
|
|
int d,l;
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD>Ż<EFBFBD><EFBFBD>༶");
|
|
|
|
|
scanf("%d",&d);
|
|
|
|
|
for(l=0;l<j;l++)
|
|
|
|
|
{
|
|
|
|
|
if(d==st[l].id||d==st[l].sclass)
|
|
|
|
|
{
|
|
|
|
|
printf("%d %d %s %.1f %.1f %.1f\n",st[l].id,st[l].sclass,st[l].name,st[l].gs,st[l].dw,st[l].yy);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void inorder()
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
q++;
|
|
|
|
|
for(i=q+1;i<j;i++)
|
|
|
|
|
{
|
|
|
|
|
if(st[q].sclass>st[i].sclass)
|
|
|
|
|
{
|
|
|
|
|
struct stu temp;
|
|
|
|
|
temp=st[i];
|
|
|
|
|
st[i]=st[q];
|
|
|
|
|
st[q]=temp;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(q==j-1)
|
|
|
|
|
{
|
|
|
|
|
q=-1;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
inorder();
|
|
|
|
|
}
|
|
|
|
|
void corder()
|
|
|
|
|
{
|
|
|
|
|
float a,b;
|
|
|
|
|
int i;
|
|
|
|
|
q++;
|
|
|
|
|
for(i=q+1;i<j;i++)
|
|
|
|
|
{
|
|
|
|
|
a=st[i].dw+st[i].gs+st[i].yy;
|
|
|
|
|
b=st[q].dw+st[q].gs+st[q].yy;
|
|
|
|
|
if(a>b&&st[i].sclass==st[q].sclass)
|
|
|
|
|
{
|
|
|
|
|
struct stu temp;
|
|
|
|
|
temp=st[i];
|
|
|
|
|
st[i]=st[q];
|
|
|
|
|
st[q]=temp;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(q==j)
|
|
|
|
|
{
|
|
|
|
|
q=-1;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else corder();
|
|
|
|
|
}
|
|
|
|
|
void order()
|
|
|
|
|
{
|
|
|
|
|
inorder();
|
|
|
|
|
corder();
|
|
|
|
|
}
|
|
|
|
|
void output()
|
|
|
|
|
{
|
|
|
|
|
int l=0;
|
|
|
|
|
for(l=0;l<j;l++)
|
|
|
|
|
{
|
|
|
|
|
printf("%d %d %s %.1f %.1f %.1f\n",st[l].id,st[l].sclass,st[l].name,st[l].gs,st[l].dw,st[l].yy);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
int main( )
|
|
|
|
|
{
|
|
|
|
|
int a;
|
|
|
|
|
mn:
|
|
|
|
|
printf("1.Input\n2.Delete\n3.Select\n4.Order\n5.Output\n6.Quit\nplease input your option\n");
|
|
|
|
|
scanf("%d",&a);
|
|
|
|
|
switch(a)
|
|
|
|
|
{
|
|
|
|
|
case 1:input();break;
|
|
|
|
|
case 2:cdelete();break;
|
|
|
|
|
case 3:select();break;
|
|
|
|
|
case 4:order();break;
|
|
|
|
|
case 5:output();break;
|
|
|
|
|
case 6:return 0;
|
|
|
|
|
}
|
|
|
|
|
goto mn;
|
|
|
|
|
}
|