谁能帮我精简下??!!!!!!!!!!!!!!
题目要求:用C语言编写一个程序实现学员成绩管理,每个学员包括3门课的成绩.从键盘输入学员信息,包括学员、姓名、三门课的成绩,计算出学员的平均成绩,按照学员平均成绩由大到小排序。另外需要增加下面的管理功能。
(1)插入功能:在排序后的学员成绩表中插入一个学员的信息,要求插入后仍然保持成绩表原有排序。
(2)删除功能:要求输入指定的学号,从学员的信息表中删除该学员,删除后的成绩表保持原有排序。
#include<stdio.h>
#include<string.h>
#define N 99
struct a
{
int chinese;
int english;
int math;//数学
int even;//evenness 平均成绩
};
struct student
{
int taxis;
char name[N];
struct a score;//科目成绩
};
void input(int,struct student *);//输入
void taxis1(int,struct student *);//按学号排序
void taxis2(int,struct student *);//按平均成绩排序
void extend(int,struct student *);//(扩充)插入
void demand(int,struct student *);//查询
void shanchu(int,struct student *);//删除
void display(int ,struct student *);//(显示)输出
void main()
{
struct student stu[N],*ps;
int choose;//选择菜单
char in,a;
int i,j,b;
ps=stu;
printf("\n请输入学生信息:");
for(i=0;i<N;i++)
{
input(i,ps);
printf("\n\n是否需要继续输入?(y or n)");
fflush(stdin);
in=getchar();
if(in!='y'&&in!='Y')
break;
}
printf("信息输入完毕,输入信息如下:请核对!");
display(i,ps);
printf("\n\n如果信息输入有误,请登陆管理员帐号进行修改!");
printf("\n\n *注意 客户权限只可查询与访问*!");
do{
printf("\n\n1.管理员 \t2.普通客户\t3.退出\n\n请选择登陆方式:");
scanf("%d",&a);
if(a==1)
{
for(j=0;j<3;j++){
printf("\n请输入密码:");
scanf("%d",&b);//fflush(stdin);
if(b==1234){
do
{
printf("\n\n1.显示学生信息:\n2.按学号输出:\n3.按平均成绩输出:\n4.插入学生信息:\n5.查询学生信息:\n6.删除学生信息:\n0.返回上一菜单;");
printf("\n\n请选择");
scanf("%d",&choose);
if(choose==1)
display(i,ps);
else if(choose==2)
taxis1(i,ps);
else if(choose==3)
taxis2(i,ps);
else if(choose==4){
extend(i+1,ps);
++i;}
else if(choose==5)
demand(i,ps);
else if(choose==6){
shanchu(i,ps);
--i;}
else if(choose==0)
break;
else
printf("输入错误,请重新选择:\n");
}while(1);//choose!=0&&choose!=1&&choose!=2&&choose!=3&&choose!=4
break;
}
else
printf("\n密码不正确,请重新输入!");
}
if(j==3)
printf("\n输入错误密码次数已达三次,自动退出管理员登陆界面");
}
else if(a==2)
{
do
{
printf("\n\n1.显示学生信息:\n2.按学生学号输出\n3.按学生平均成绩大小输出:\n4.查询学生信息;\n0.返回上一菜单;");
printf("\n\n请选择");
scanf("%d",&choose);
if(choose==1)
display(i,ps);
else if(choose==2)
taxis1(i,ps);
else if(choose==3)
taxis2(i,ps);
else if(choose==4)
demand(i,ps);
else if(choose==0)
break;
else
printf("\n输入错误,请重新选择:");
}while(1);//choose!=0&&choose!=1&&in!=2&&choose!=3
}
else if(a==3)
break;
else
printf("\n选择出错,请重新选择:");
}while(1);
}
void input(int i,struct student *ps)//输入函数
{
printf("\n\n学号:");
scanf("%d",&(ps+i)->taxis);
printf("\n姓名:");
fflush(stdin);
gets((ps+i)->name);
printf("\n三门成绩:");
printf("\n语文:");
scanf("%d",&((ps+i)->score.chinese));
printf("数学:");
scanf("%d",&(ps+i)->score.math);
printf("英语:");
scanf("%d",&(ps+i)->score.english);
(ps+i)->score.even=((ps+i)->score.chinese+(ps+i)->score.english+(ps+i)->score.math)/3;
}
void display(int i,struct student *ps)//输出
{
int j;
printf("\n学号\t姓名\t语文\t数学\t英语\t平均成绩\t");
for(j=0;j<=i;j++,ps++)
{
printf("\n%d\t%s\t%d\t%d\t%d\t%d\t",ps->taxis,&(ps->name),ps->score.chinese,ps->score.math,ps->score.english,ps->score.even);
}
}
void taxis1(int i,struct student *ps)//按学号排序
{
int k,j;
struct student temp;
for(j=0;j<=i;j++)
{
for(k=0;k<i-j;k++)
{
if((ps+k)->name>(ps+k+1)->name)
{
temp=*(ps+k);
*(ps+k)=*(ps+k+1);
*(ps+k+1)=temp;
}
}
}
display(i,ps);
}
void taxis2(int i,struct student *ps)//按平均成绩排序
{
int k,j;
struct student temp;
for(j=0;j<=i;j++)
{
for(k=0;k<i-j;k++)
{
if((ps+k)->score.even<(ps+k+1)->score.even)
{
temp=*(ps+k);
*(ps+k)=*(ps+k+1);
*(ps+k+1)=temp;
}
}
}
display(i,ps);
}
void extend(int i,struct student *ps)//(扩充)插入函数
{
struct student end,*pe;
int k=0,j;
pe=&end;
input(0,pe);
for(j=0;j<i+1;j++)
{
if((ps+j)->score.even<pe->score.even)
break;
}
for(k=i;k>j;k--)
{
*(ps+k)=*(ps+k-1);
}
*(ps+j)=*(pe);
display(0,pe);
printf("\n插入完成,请继续\n");
}
void demand(int i,struct student *ps)//查询功能
{
char de[N];
int k;
printf("\n请输入要查询的姓名或学号:");
fflush(stdin);
gets(de);
for(k=0;k<i+1;k++)
{
if((strcmp(de,(ps+k)->name)==0)||(strcmp(de,"k+1")==0))
break;
}
if(k<i+1)
display(0,ps+k);
else
printf("\n没有你要查询的资料");
}
void shanchu(int i,struct student *ps)
{
char del[N];
int k,j;
printf("\n请输入要删除的学号或名字:");
fflush(stdin);
gets(del);
for(k=0;k<i+1;k++)
{
if((strcmp(del,(ps+k)->name)==0)||(strcmp(del,"k+1")==0))
break;
}
if(k<i+1)
{
display(0,ps+k);
if(k<i)
{
for(j=k;j<i+1;j++)
{
*(ps+j)=*(ps+j+1);
}
}
printf("\n删除完成,请继续:");
}
else
printf("\n没有你要查询的资料");
}
会的帮我精简一下星期六答辩用。。。。。