printf("%d%d%3d%10s%3.1f%3.1f%3.1f%3.1f%3.1f%5.1f%6.2f\n",a[i].event,a[i].sex,a[i].no,a[i].name,a[i].score[0],a[i].score[1],a[i].score[2],a[i].score[3],a[i].score[4],a[i].total,a[i].ave);
}
voidsearch(comp*head)
{
inti,j,k,l=0,d;
printf("请输入需要查询参赛者的项目、组别、编号:
\n");
scanf("%d%d%d",&i,&j,&k);
comp*s=head->next;
while(s!
=NULL)//在链表中寻找该节点
{
if(i==s->event&&j==s->sex&&k==s->no)
{
printf("该参赛队员的成绩信息为:
\n");//输出信息
printf("项目组别编号学校得分1得分2得分3得分4得分5总分平均分\n");
printf("%d%d%3d%10s%3.1f%3.1f%3.1f%3.1f%3.1f%5.1f%6.2f\n",s->event,s->sex,s->no,s->name,s->score[0],s->score[1],s->score[2],s->score[3],s->score[4],s->total,s->ave);
l=1;
break;
}
s=s->next;
}
if(l==0)
printf("未搜索到符合条件的项\n");
printf("是否继续搜索其他参赛者信息?
1-是,0-否\n");//是否继续查找
scanf("%d",&d);
if(d==1)
search(head);
}
voiddel(comp*head)
{
comp*s,*r;
printf("请输入需要删除的参赛者的项目、组别、编号");
inti,j,k,d;
scanf("%d%d%d",&i,&j,&k);
for(s=head,r=s->next;r!
=NULL;s=s->next,r=s->next)
{
while(r->event==i&&r->sex==j&&r->no==k)
{
s->next=r->next;
free(r);
r=s->next;
if(r==NULL)//如果最后一位满足条件,如果没有这个判断程序执行到r->event==i出错,因为此时r=NULL
break;
}
if(r==NULL)//如果没有这个判断,程序运行到r=s->event出错,因为此时s=NULL
break;
}
printf("是否继续删除其他参赛者信息?
1-是,0-否\n");
scanf("%d",&d);
if(d==1)
del(head);
}
voidwritein(comp*head)
{
FILE*fp;
if((fp=fopen("score.txt","w"))==NULL)
{
printf("不能创建come.txt文件。
。
。
\n");
exit(0);
}
comp*s=head->next;
while(s!
=NULL)
{
fprintf(fp,"%d%d%d%s%f%f%f%f%f%f%f\n",s->event,s->sex,s->no,s->name,s->score[0],s->score[1],s->score[2],s->score[3],s->score[4],s->total,s->ave);
s=s->next;
}
fclose(fp);
}
voidrevise(comp*head)/*修改*/
{
intf,d,l,i,m;
floatmax=0,min=20;
printf("请输入需要修改的参赛者的项目、组别、编号");//以新成绩覆盖
scanf("%d%d%d",&f,&d,&l);
comp*s=head->next;
while(s!
=NULL)
{
if(f==s->event&&d==s->sex&&l==s->no)
{
printf("%d%d%3d%10s%3.1f%3.1f%3.1f%3.1f%3.1f%5.1f%6.2f\n",s->event,s->sex,s->no,s->name,s->score[0],s->score[1],s->score[2],s->score[3],s->score[4],s->total,s->ave);
printf("请输入该参赛者的得分1得分2得分3得分4得分5:
\n");
scanf("%f%f%f%f%f",&s->score[0],&s->score[1],&s->score[2],&s->score[3],&s->score[4]);
s->total=0;
for(i=0;i<5;i++)//求得总分、均分
{
s->total+=s->score[i];
if(maxscore[i])
max=s->score[i];
if(min>s->score[i])
min=s->score[i];
}
s->total=s->total-max-min;
s->ave=(float)s->total/3;
}
s=s->next;
}
printf("修改完毕。
。
。
。
。
\n");
printf("是否继续修改其他参赛者信息?
1-是,0-否\n");//是否继续修改
scanf("%d",&m);
if(m==1)
revise(head);
}
voidintime()
{
inti,j;
FILE*fd;
printf("请依次输入六场比赛时间:
\n");
if((fd=fopen("time.txt","w"))==NULL)
{
printf("不能创建come.txt文件。
。
。
\n");
exit(0);
}
for(i=0;i<3;i++)
for(j=0;j<2;j++)
{
scanf("%s",time[i][j]);
fprintf(fd,"%s\n",time[i][j]);
}
fclose(fd);
}
voidreadtime()
{
inti,j;FILE*fd;
if((fd=fopen("time.txt","r"))==NULL)
{
printf("不能创建come.txt文件。
。
。
\n");
exit(0);
}
for(i=0;i<3;i++)
for(j=0;j<2;j++)
{
fscanf(fd,"%s\n",time[i][j]);
}
fclose(fd);
}
voidsearchtime(intm,intn)
{
if(m>3||m<0||n<0||n>2)
printf("该场比赛不存在!
\n");
else
{
readtime();
printf("该场比赛时间为:
");
printf("%s\n",time[m-1][n-1]);
}
}
voidrevisetime(intm,intn)
{
readtime();
if(m>3||m<0||n<0||n>2)
printf("该场比赛不存在!
\n不能进行修改!
\n");
else
{
printf("原比赛时间为:
");
searchtime(m,n);
printf("请输入新比赛时间:
");
scanf("%s",time[m-1][n-1]);
}
inti,j;
FILE*fd;
if((fd=fopen("time.txt","w"))==NULL)
{
printf("不能创建come.txt文件。
。
。
\n");
exit(0);
}
for(i=0;i<3;i++)
for(j=0;j<2;j++)
{
fprintf(fd,"%s\n",time[i][j]);
}
fclose(fd);
}
voidmain()
{
intm;
comp*q;
inti,j,k=1;
printf("\t\t\t参赛队员信息操作界面\n");
while(k==1)
{
printf("================================================================================\n");
printf("请选择操作选项:
\n");
printf("1输入比赛成绩2修改比赛成绩3删除成绩记录\n");
printf("4查询成绩记录5输入比赛时间6修改比赛时间\n");
printf("7查询比赛时间8浏览所有得分9按成绩高低输出\n");
scanf("%d",&m);
switch(m)
{
case1:
{
keyboad();
printf("输入的内容为:
\n");
read();
};break;
case2:
{
q=read();//读取文件
revise(q);//修改
writein(q);//写入文件
};break;
case3:
{
q=read();//读取文件
del(q);//删除
writein(q);//写入文件
};break;
case4:
{
q=read();
search(q);
};break;
case5:
{
intime();
};break;
case6:
{
printf("请依次输入该场比赛的项次、组别");
scanf("%d%d",&i,&j);
revisetime(i,j);
};break;
case7:
{
printf("请依次输入该场比赛的项次、组别");
scanf("%d%d",&i,&j);