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.

196 lines
4.5 KiB

This file contains ambiguous Unicode 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>
#include<string.h>
int m=0;
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;
char b[20];
FILE *fp;
struct singer
{int mingci;
char name[20];
char id[10];
}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);
}
printf("请输入选手编号\n");
for(i=1;i<=n;i++)
{
scanf(" %s",player[i].id);
}
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]:ass[j].num1;
max[j]=(max[j]>ass[j].num2) ? max[j]:ass[j].num2;
max[j]=(max[j]>ass[j].num3) ? max[j]:ass[j].num3;
max[j]=(max[j]>ass[j].num4) ? max[j]:ass[j].num4;
max[j]=(max[j]>ass[j].num5) ? max[j]:ass[j].num5;
max[j]=(max[j]>ass[j].num6) ? max[j]:ass[j].num6;
max[j]=(max[j]>ass[j].num7) ? max[j]:ass[j].num7;
max[j]=(max[j]>ass[j].num8) ? max[j]:ass[j].num8;
max[j]=(max[j]>ass[j].num9) ? max[j]:ass[j].num9;
max[j]=(max[j]>ass[j].num10) ? 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");
for(i=1;i<=n+m;i++)
{
for(j=1,t=1;j<=n+m;j++)
{
if(c[i]<c[j])
t=t+1;
}
player[i].mingci=t;
}
for(i=1;i<=n+m;i++)
{
for(j=1;j<=n+m;j++)
{
if(i==player[j].mingci)
printf("%s是第%d 得分为%15.2f\n",player[j].name,i,c[j]);
}
printf("\n\n\n");
}
break;
case'4':
printf("请输入你要查询的选手的姓名\n");
scanf("%s",b);
for(i=1;i<=n+m;i++)
{
if(!(strcmp(b,player[i].name)))
{
printf("这位选手的分数是%f\n",c[i]);
printf("这位选手的编号是%s\n",player[i].id);
printf("这位选手的名次是%d\n",player[i].mingci);
};
}
break;
case'5':
printf("请输入追加的选手的个数\n ");
scanf("%d",&m);
printf("请输入追加的选手姓名\n");
for(i=n+1;i<=n+m;i++)
{
scanf("%s",player[i].name);
}
printf("请输入追加的选手编号\n");
for(i=n+1;i<=n+m;i++)
{
scanf("%s",player[i].id);
}
printf("请输入追加的选手分数\n");
for(i=n+1;i<=n+m;i++)
{
scanf("%f",&c[i]);
}
break;
case '6':
if((fp=fopen("singer.txt","w"))==NULL)
{
printf("不能打开文件\n");
}
for(i=1;i<=n+m;i++)
{
fprintf(fp,"姓名:%s 编号:%s 名次:%d\n",player[i].name,player[i].id,player[i].mingci);
}
fclose(fp);
printf(" 保存成功\n\n\n");
for(i=1;i<=n+m;i++)
{
printf("姓名:%s 编号:%s 名次:%d\n",player[i].name,player[i].id,player[i].mingci);
}
break;
case '7':exit(0);
}
}
return 0;
}