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.

158 lines
4.3 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include<stdio.h>
#include<stdlib.h>
int main()
{
printf("***************************歌手比赛管理系统************************************\n");
printf(" G**********************G \n");
printf("***********************************G*******************************************\n");
printf(" 1.输入选手数据 2. 评委打分 3.计算平均分 \n 4.成绩排序");
printf(" 5.写入数据文件 6.打开文件\n 7.退出系统\n");
printf("*******************************************************************************\n");
for(;;)
{
printf(" 请输入操作名\r");
int n,i=1,j,t;
char a;
FILE *fp;
struct singer
{int mingci;
char name[20];
}player[100];
scanf("%c",&a);
switch(a)
{
case '1':
printf("请输入选手的个数少于100");
scanf("%d",&n);
int sum[100],max[100],min[100];
float c[100];
for(i=1;i<=n;i++)
{sum[i]=0;
max[i]=0;
min[i]=900000;
}
printf("请输入选手的姓名\n ");
for(i=1;i<=n;i++)
{
scanf(" %s",&player[i].name);
}
break;
case '2':
struct assess
{int num1;
int num2;
int num3;
int num4;
int num5;
int num6;
int num7;
int num8;
int num9;
int num10;
}ass[100];
for(j=1;j<=n;j++)
{printf("\n请输入评委1对歌手%d的打分",j);
scanf("%d",&ass[j].num1);
printf("请输入评委2对歌手%d的打分",j);
scanf("%d",&ass[j].num2);
printf("请输入评委3对歌手%d的打分",j);
scanf("%d",&ass[j].num3);
printf("请输入评委4对歌手%d的打分",j);
scanf("%d",&ass[j].num4);
printf("请输入评委5对歌手%d的打分",j);
scanf("%d",&ass[j].num5);
printf("请输入评委6对歌手%d的打分",j);
scanf("%d",&ass[j].num6);
printf("请输入评委7对歌手%d的打分",j);
scanf("%d",&ass[j].num7);
printf("请输入评委8对歌手%d的打分",j);
scanf("%d",&ass[j].num8);
printf("请输入评委9对歌手%d的打分",j);
scanf("%d",&ass[j].num9);
printf("请输入评委10对歌手%d的打分",j);
scanf("%d",&ass[j].num10);
sum[j]=sum[j]+ass[j].num1+ass[j].num2+ass[j].num3+ass[j].num4+ass[j].num5;
sum[j]=sum[j]+ass[j].num6+ass[j].num7+ass[j].num8+ass[j].num9+ass[j].num10;
}
printf("\n\n\n");
break;
case '3':
for(j=1;j<=n;j++)
{max[j]=(max[j]>ass[j].num1);
max[j]=(max[j]>ass[j].num2);
max[j]=(max[j]>ass[j].num3);
max[j]=(max[j]>ass[j].num4);
max[j]=(max[j]>ass[j].num5);
max[j]=(max[j]>ass[j].num6);
max[j]=(max[j]>ass[j].num7);
max[j]=(max[j]>ass[j].num8);
max[j]=(max[j]>ass[j].num9);
max[j]=(max[j]>ass[j].num10);
}
for(j=1;j<=n;j++)
{min[j]=(min[j]<ass[i].num1) ? min[j]:ass[i].num1;
min[j]=(min[j]<ass[i].num2) ? min[j]:ass[i].num2;
min[j]=(min[j]<ass[i].num3) ? min[j]:ass[i].num3;
min[j]=(min[j]<ass[i].num4) ? min[j]:ass[i].num4;
min[j]=(min[j]<ass[i].num5) ? min[j]:ass[i].num5;
min[j]=(min[j]<ass[i].num6) ? min[j]:ass[i].num6;
min[j]=(min[j]<ass[i].num7) ? min[j]:ass[i].num7;
min[j]=(min[j]<ass[i].num8) ? min[j]:ass[i].num8;
min[j]=(min[j]<ass[i].num9) ? min[j]:ass[i].num9;
min[j]=(min[j]<ass[i].num10) ? min[j]:ass[i].num10;
}
for(j=1;j<=n;j++)
{c[j]=(sum[j]-max[j]-min[j])/8.0;
printf("第%d个选手的平均的分是%15.2f\n",j,c[j]);
}
printf("\n\n\n");
break;
case '4':
for(i=1;i<=n;i++)
{for(j=1,t=1;j<=n;j++)
{if(c[i]<c[j])
t=t+1;
}
player[i].mingci=t;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i==player[j].mingci)
printf("%s是第%d 得分为%15.2f\n",player[j].name,i,c[j]);
}
printf("\n\n\n");
}
break;
case '5':
if((fp=fopen("C:\\singer.dat","wb"))==NULL)
{printf("不能打开文件\n");
}
for(i=1;i<=n;i++)
fwrite(&player[i],sizeof(struct singer),1,fp);
fclose(fp);
printf(" 保存成功\n\n\n");
break;
case '6':printf("请输入选手的个数");
printf("(为了准确显示,您输入的人数不应该超过已保存信息的人数)");
scanf("%d",&n);
if((fp=fopen("C:\\singer.dat","rb"))==NULL)
{printf("不能打开文件\n");
}
for(i=1;i<=n;i++)
{
fread(&player[i],sizeof(struct singer),1,fp);
printf("   %s的名次为%10d \n",player[i].name,player[i].mingci);
}
fclose(fp);
break;
case '7':exit(0);
}
}
return 0;
}