中心代码,
typedef struct
{
int num;
char name[20];
float score_y,score_s,score_w,score_z,sum;
}STU;
void input(STU*a,int*n)
{
STU *p;
int i=1;
float sum=0;
system("cls");
printf("\n请输入学生人数(1-80):");
scanf("%d",n);
printf("\n请输入学生信息:学号 姓名 成绩(语文 数学 英语 专业):");
for(p=a;p<a+(*n);p++)
{
printf("\n%d:",i++);//学生编号
scanf("%d %s %f %f %f %f",&p->num,p->name,&p->score_y,&p->score_s,&p->score_w,&p->score_z);
p->sum=p->score_y+p->score_s+p->score_w+p->score_z;
}
printf("\n按任意键返回!");
getch();
}
void find_stud(STU*a,int n)
{
int k=0;
int m;
STU*p;
STU stu[SIZE];
printf("\n请输入要查询的学号:");
scanf("%f",&m);
for(p=a;p<a+n;p++)
{
if(m==p->num)
{
k=1;//找到匹配项,则给k赋值为1
printf("已找到,是:%d %s %.1f %.1f %.1f %.1f\n",p->num,p->name,p->score_s,p->score_w,p->score_z);
break;
}
}
if(!k)
printf("找不到查询成绩!\n");
printf("\n按任意键返回!");
getch();
}
void find_name(STU *a,int n)
{
int k=0;
char m;
STU*p;
STU stu[SIZE];
printf("\n请输入要查询的姓名:");
scanf("%s",&m);
for(p=a;p<a+n;p++)
{
if(m==p->name)
{
k=1;//找到匹配项,则给k赋值为1
printf("已找到,是:%d %s %.1f %.1f %.1f %.1f\n",p->num,p->name,p->score_y,p->score_s,p->score_w,p->score_z);
break;
}
}
if(!k)
printf("找不到查询的成绩!\n");
printf("\n按任意键返回!");
getch();
}
void find(STU*a,int n)
{
int i,num;
STU stu[SIZE];
system("cls");
menu1();
scanf("%d",&i);
switch(i)
{
case 1:find_stud(stu,num);break;
case 2:find_name(stu,num);break;
case 3:printf("退出系统\n");exit(0);
default:printf("重新输入\n");
}
getch();
}
void sort_p(STU *a,int n)
{
int i,j;
STU t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if((a[j].sum)<(a[j+1].sum))
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("\n成绩升序排序结果:\n");
for(i=0;i<n;i++)
{
printf("%10d %s %.1f %.1f %.1f %.1f\n",a[i].num,a[i].name,a[i].score_y,a[i].score_s,a[i].score_w,a[i].score_z);
}
printf("\n\n按任意键返回!");
getch();
}
void sort_d(STU *a,int n)
{
int i,j;
STU t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if((a[j].sum)<(a[j+1].sum))
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("\n成绩降序排序结果:\n");
for(i=10;i>0;i--)
{
printf("%d %s %.1f %.1f %.1f %.1f\n",a[i].num,a[i].name,a[i].score_y,a[i].score_s,a[i].score_w,a[i].score_z);
}
printf("\n\n按任意键返回!");
getch();
}
void sort_y(STU *a,int n)
{
int i,j;
STU t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if((a[j].score_y)<(a[j+1].score_y))
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("\n语文成绩排序结果:\n");
for(i=10;i>0;i--)
{
printf("%d %s %.1f\n",a[i].num,a[i].name,a[i].score_y);
}
printf("\n\n按任意键返回!");
getch();
}
void sort_s(STU *a,int n)
{
int i,j;
STU t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if((a[j].score_s)<(a[j+1].score_s))
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("\n数学成绩排序结果:\n");
for(i=10;i>0;i--)
{
printf("%d %s %.1f\n",a[i].num,a[i].name,a[i].score_s);
}
printf("\n\n按任意键返回!");
getch();
}
void sort_w(STU *a,int n)
{
int i,j;
STU t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if((a[j].score_w)<(a[j+1].score_w))
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("\n英语成绩排序结果:\n");
for(i=10;i>0;i--)
{
printf("%d %s %.1f\n",a[i].num,a[i].name,a[i].score_w);
}
printf("\n\n按任意键返回!");
getch();
}
void sort_z(STU *a,int n)
{
int i,j;
STU t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if((a[j].score_z)<(a[j+1].score_z))
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("\n专业成绩排序结果:\n");
for(i=10;i>0;i--)
{
printf("%d %s %.1f\n",a[i].num,a[i].name,a[i].score_z);
}
printf("\n\n按任意键返回!");
getch();
}
void sort(STU*a,int n)
{
int z,num,sum;
STU stu[SIZE];
system("cls");
menu2();
scanf("%d",&z);
switch(z)
{
case 1:sort_p(stu,sum);break;
case 2:sort_d(stu,sum);break;
case 3:sort_d(stu,num);break;
case 4:sort_d(stu,num);break;
case 5:sort_d(stu,num);break;
case 6:sort_d(stu,num);break;
case 7:printf("退出系统\n");exit(0);
default:printf("重新输入\n");
}
getch();
}