#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define N 10
#define M 5
int add = N-1;
//int sum[N]={0},Max[N],Min[N];
int sum[N]={0};
float aver[N];
struct player
{
int num;
char name[10];
int score[M];
// int Max[N];
// int Min[N];
};
void Inistplayer(struct player a[],int n)
{
int i;
printf("请分别输入%d位选手的信息(例:1 小赵):\n",n);
for(i=0;i<n;i++)
{
scanf("%d %s",&a[i].num,&a[i].name);
//printf("您已成功录入选手信息为:%S号选手 姓名为:%s",a[i].num,a[i].name);
}
}
void Inputscore(struct player *p,int n)
{
int i;
for(i=0;i<n;i++)
{
printf("请第%d位评委打分:",i+1);
scanf("%d",p->score[i]);//输入一个整数值到p所指结构体变量
}
}
void sort(struct player a[],float b[],int n)//???
{
int i,k,j,t;
float temp;//?
char str[8];//?
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(b[k]>b[j])
k=j;
if(k!=i)
{
temp=b[i];
b[i]=b[k];
b[k]=temp;
strcpy(str,a[i].name); //把从src地址开始且含有NULL结束符的字符串复制到a[i]数组中
strcpy(a[i].name,a[k].name);
strcpy(a[k].name,str);
t=a[i].num;
a[i].num=a[k].num;
a[k].num=t;
}
}
}
void main()
{
int flag=1,n,i,m,j;
int as;
int bs;
struct player a[N];
FILE *fp;//定义一个fp指针
fp = fopen("选手信息汇总.txt","w+");
printf("\n\n\n\n\t\t\t\t****************欢迎使用木子比赛评分系统****************\t\n\n");
time_t t;
struct tm *pt;
char *pc;
time(&t);
pc=ctime(&t);
printf("\t\t\t\t当前时间为:%s\t\t\n",pc);
pt=localtime(&t);
printf("\t\t\t\t * 1. 输入选手基本信息 \n");
printf("\t\t\t\t * 2. 评委打分 \n");
printf("\t\t\t\t * 3. 选手成绩显示 \n");
printf("\t\t\t\t * 4. 成绩排序 \n");
printf("\t\t\t\t * 5. 数据查询 \n");
printf("\t\t\t\t * 6. 写入数据文件,并生成文本文档。 \n");
printf("\t\t\t\t * 7. 退出系统 \n");
printf("\t\t\t\t********************************************************\n\n");
while(flag)
{
printf("请输入要进行的操作编号:\t\n");
scanf("%d",&n);
switch(n)
{
case 1:
printf("请输入选手个数:\n");
scanf("%d",&as);
Inistplayer(a,as);
break;
case 2:
printf("请输入评委个数:\n");
scanf("%d",&bs);
for(i=0;i<as;i++)
{
int j;
printf("第%d位选手的成绩:\n",i+1);
for(j=0;j<bs;j++)
{
printf("请第%d位评委打分:",j+1);
scanf("%d",&a[i].score[j]);
}
printf("\n");
}
break;
case 3:
for(i=0;i<as;i++)
{
printf("第%d位选手的成绩为:\n",i+1);
for(j=0;j<bs;j++)
{
printf("%d\t\n",a[i].score[j]);
}
}
break;
case 4:
// printf("参赛选手的平均成绩(在去除最高和最低成绩后得到的)排名为:\n");
printf("参赛选手的平均成绩排名为:\n");
for(i=0;i<as;i++)
{
// Max[i]=a[i].score[0];
// Min[i]=a[i].score[0];
for(j=0;j<bs;j++)
{
sum[i]+=a[i].score[j];
// if(Max[i]<a[i].score[j]) Max[i]=a[i].score[j];
// if(Min[i]>a[i].score[j]) Min[i]=a[i].score[j];
}
//aver[i]=(float)(sum[i]-Max[i]-Min[i])/(M-2);
aver[i]=(float)(sum[i])/(M);
}
sort(a,aver,as);
for(i=0;i<as;i++)
{
// int mc;
// mc=as-i;
printf("第%d名为:%s 平均成绩为:%5.2f\n",i+1,a[i].name,aver[i]);
}
break;
case 5://数据查询
printf("你想查询选手的参赛号:");
scanf("%d",&m);
for(i=0;i<as;i++)
{
if(a[i].num==m)
// Min[i]
{
// printf("%d号选手: %s\n总分:%d \n最高分:%d,最低分:%d\n平均分(去掉一个最高分和一个最低分之后的成绩):%5.2f\n",a[i].num,a[i].name,sum[i],Max[i],Min[i],aver[i]);
// printf("%d号选手: %s\n总分:%d \n最高分:%d,最低分:%d\n平均分(去掉一个最高分和一个最低分之后的成绩):%5.2f\n",a[i].num,a[i].name,sum[i],a[i].Max,a[i].Min,aver[i]);
printf("%d号选手: %s\n平均分:%5.2f\n",a[i].num,a[i].name,aver[i]);
// printf("\n");
}
}
break;
case 6:
printf("正在将数据写入文件中...\n");
fprintf(fp,"本场比赛的开始时间为:%s \n",pc);
for (i = 0;i<as;i++)
{
fprintf(fp,"选手排名为:%d ",as-i);
fprintf(fp," 选手编号为:%d ",a[i].num);
fprintf(fp," 姓名为:%s ",a[i].name);
// fprintf(fp," 当前时间为:%s \n",pc1);
fprintf(fp,"总成绩为:%d ",sum[i]);
// fprintf(fp,"最高分为:%d ",Max[i]);
// fprintf(fp," 最低分为:%d ",Min[i]);
fprintf(fp,"选手的平均成绩为:%5.2f \n\n",aver[i]);
}
fprintf(fp,"各选手成绩明细:\n");
for(i=0;i<as;i++)
{
fprintf(fp,"%d号选手的成绩为:\n",a[i].num);
for(j=0;j<bs;j++)
{
fprintf(fp,"%d\t\n",a[i].score[j]);
}
}
fclose(fp);
printf("数据写入成功!已在程序对应目录下生成文本文档。\n");
break;
case 7:
printf("您已成功退出本系统,欢迎下次使用。\n");
exit(0);
break;
default:
//flag=0;
printf("目录中不存在此选项。请您核对目录表后进行操作。\n");
}
}
// return main();
}