|
|
#include<stdio.h>
|
|
|
#include<stdlib.h>
|
|
|
void menu(char*a)
|
|
|
{
|
|
|
printf("\t\t\t*********************************************\n");
|
|
|
printf("\t\t\t\t\t\n");
|
|
|
printf("\t\t\t\t\t\t欢\n");
|
|
|
printf("\t\t\t\t\t\t迎\n");
|
|
|
printf("\t\t\t\t\t\t使\n");
|
|
|
printf("\t\t\t\t\t\t用\n");
|
|
|
printf("\t\t\t\t\t\n");
|
|
|
printf("\t\t\t*********************************************\n");
|
|
|
printf("\n\n\n\n\n请输入回车键进入程序");
|
|
|
scanf("%c",a);
|
|
|
}
|
|
|
int main(void)
|
|
|
{
|
|
|
char a;
|
|
|
menu(&a);
|
|
|
if(a=='\n')
|
|
|
{system("cls");//清屏换页
|
|
|
printf("\t\t\t\t\t歌手比赛管理系统\n");
|
|
|
printf("\t\t\t*********************************************\n");
|
|
|
printf("\t\t\t\t\t1.输入选手数据\n");
|
|
|
printf("\t\t\t\t\t2.评委打分\n");
|
|
|
printf("\t\t\t\t\t3.计算平均分和总分\n");
|
|
|
printf("\t\t\t\t\t4.歌手成绩排序\n");
|
|
|
printf("\t\t\t\t\t5.写入数据文件\n");
|
|
|
printf("\t\t\t\t\t6.查询数据\n");
|
|
|
printf("\t\t\t\t\t7.退出系统\n");
|
|
|
printf("\t\t\t*********************************************\n");
|
|
|
for(;;)
|
|
|
{
|
|
|
printf(" 请输入以上数字进行操作(1、2、3、4、5、6、7)\r");
|
|
|
int n,i=1,j,t;
|
|
|
char a;
|
|
|
FILE *fp;
|
|
|
struct singer//歌手结构体
|
|
|
{
|
|
|
int mingci;
|
|
|
char name[100];
|
|
|
|
|
|
}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;
|
|
|
|
|
|
}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);
|
|
|
|
|
|
sum[j]=ass[j].num1+ass[j].num2+ass[j].num3+ass[j].num4+ass[j].num5;
|
|
|
|
|
|
}
|
|
|
printf("\n\n\n");
|
|
|
break;
|
|
|
|
|
|
case '3':
|
|
|
for(j=1;j<=n;j++)//选出最大值
|
|
|
{
|
|
|
if(max[j]<=ass[j].num1)
|
|
|
max[j]=ass[j].num1;
|
|
|
if(max[j]<=ass[j].num2)
|
|
|
max[j]=ass[j].num2;
|
|
|
if(max[j]<=ass[j].num3)
|
|
|
max[j]=ass[j].num3;
|
|
|
if(max[j]<=ass[j].num4)
|
|
|
max[j]=ass[j].num4;
|
|
|
if(max[j]<=ass[j].num5)
|
|
|
max[j]=ass[j].num5;
|
|
|
|
|
|
|
|
|
}
|
|
|
for(j=1;j<=n;j++)//选出最小值
|
|
|
{
|
|
|
if(min[j]>=ass[j].num1)
|
|
|
min[j]=ass[j].num1;
|
|
|
if(min[j]>=ass[j].num2)
|
|
|
min[j]=ass[j].num2;
|
|
|
if(min[j]>=ass[j].num3)
|
|
|
min[j]=ass[j].num3;
|
|
|
if(min[j]>=ass[j].num4)
|
|
|
min[j]=ass[j].num4;
|
|
|
if(min[j]>=ass[j].num5)
|
|
|
min[j]=ass[j].num5;
|
|
|
}
|
|
|
for(j=1;j<=n;j++)
|
|
|
{
|
|
|
c[j]=(sum[j]-max[j]-min[j])/3.0;
|
|
|
printf("第%d个选手的平均的分是%15.2f\n总分是%d\n",j,c[j],sum[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':
|
|
|
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;
|
|
|
}
|
|
|
|
|
|
fp=fopen("C:\\singer.dat","wb+");//建立
|
|
|
for(i=1;i<=n;i++)
|
|
|
fwrite(&player[i],sizeof(struct singer),1,fp);
|
|
|
fclose(fp);
|
|
|
printf(" 保存成功\n\n\n");
|
|
|
break;
|
|
|
case '6'://查看数据
|
|
|
for(i=1;i<=n;i++)
|
|
|
{
|
|
|
if((fp=fopen("C:\\singer.dat","rb"))==NULL)
|
|
|
printf("还未存储数据");
|
|
|
else
|
|
|
fread(&player[i],sizeof(struct singer),1,fp);
|
|
|
printf(" %s的名次为%10d \n",player[i].name,player[i].mingci);
|
|
|
}
|
|
|
fclose(fp);
|
|
|
break;
|
|
|
|
|
|
case '7':printf("感谢您的使用!\n");exit(0);// 退出程序
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return 0;
|
|
|
}
|