#define N 10
struct scorenode
{int number;
char name[10];
float yuwen;
float yingyu;
float shuxue;
float save;
}score[N];
int n,k;
void input(struct scorenode *p)
{
struct scorenode *p1,*p2,*p3,*max,*head;
int i,j;
float fen;
char t[10];
FILE *fp;
char filepn[20];
n=0;
head=p;
p1=p2=p3=head;
printf("学生资料,0退出!\n");
repeat1: printf("输入学生学号:");
scanf("%d",&p1->number);
if(p1->number==0)
goto end;
else
{
p3=head;
if(n>0)
{if(p1->number!=p3->number)
p3++;
else
{printf("重复,重输!\n");
goto repeat1;
}
}
}
}
printf("姓名:");
scanf("%s",&p1->name);
printf("语文成绩:");
scanf("%f",&p1->yuwen);
while(p1->yuwen<0||p1->yuwen>100)
{getchar();
printf("错误,重输入");
scanf("%f",&p1->yuwen);}
printf("英语成绩:");
scanf("%f",&p1->yingyu);
while(p1->yingyu<0||p1->yingyu>100)
{getchar();
printf("错误,重输入");
scanf("%f",&p1->yingyu);}
printf("数学成绩:");
scanf("%f",&p1->shuxue);
while(p1->shuxue<0||p1->shuxue>100)
{getchar();
printf("错误,重输入");
scanf("%f",&p1->shuxue);}
while(p1->number!=0)
{
n=n+1;
if(n==1)
head=p1;
else
p2++;
p1=p2;
printf("学生资料,0退出!\n");
repeat2:printf("学生学号:");
scanf("%d",&p1->number);
if(p1->number==0)
goto end;
printf("学生姓名:");
scanf("%s",&p1->name);
printf("语文成绩:");
scanf("%f",&p1->yuwen);
while(p1->yuwen<0||p1->yuwen>100)
{getchar();
printf("错误,重输入");
scanf("%f",&p1->yuwen);}
printf("英语成绩:");
scanf("%f",&p1->yingyu);
while(p1->yingyu<0||p1->yingyu>100)
{getchar();
printf("错误,重输入");
scanf("%f",&p1->yingyu);}
printf("数学成绩:");
scanf("%f",&p1->shuxue);
while(p1->shuxue<0||p1->shuxue>100)
{getchar();
printf("错误,重输入");
scanf("%f",&p1->shuxue);}
}
end: p1=head;
p3=p1;
p2++;
printf("输入的学生:%d个!\n",n);
printf("请输入文件文件名:");
scanf("%s",filepn);
if((fp=fopen(filepn,"w+"))==NULL)
{
printf("不能打开文件!\n");}
fprintf(fp,"考试成绩管理系统\n");
fprintf(fp,"|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");
while(i<n)
{i=1; fprintf(fp,"%d\t%s\t%.1f\t%.1f\t%.1f\t\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);
i++;p1++;
}
fclose(fp);
printf("已经保存!\n");
}
int menu(k)
{int i;
printf("\t\t\t\t考试成绩管理系统\n");
for(i=0;i<80;i++)
printf("*");
printf("1输入学生资料\t2所有学生总分平均分\t");
printf("3所有课程平均分\t4按平均分排序\t5按学号查询学生各科成绩及平均成绩");
printf("6修改信息\t7删除信息\n");
for(i=0;i<80;i++)
printf("*");
printf("请选择操作:");
scanf("%d",&k);
getchar();
return (k);}
main(){struct scorenode *head;
head=score;
while(1)
{k=menu(k);
switch(k) {case 1: head=creat ();break;
case 2: statistics_Sall (head);break;
case 3: Caverage(head); break;
case 4: taxis (head); break;
case 5: head=search (head); break;
case 6: head=alter (head); break;
case 7: head=del(head);break;
case 0: exit(0);
default: printf("错误,请重试!\n"); }}}
请高手将它改正一下,另外可以帮我把它完成么?!如果能帮我在我的基础上完成整个程序,我会追加80分的!说到做到!