first ccommit

master
林青艳 6 years ago
commit 3de1f897a8

@ -0,0 +1,162 @@
#include<stdio.h>
#include<stdlib.h> //定义杂项函数及内存分配函数 eg:exit()
#include<string.h> //字符串处理
#define N 3
#define M 10
int add = N - 1;
int sum[N] = { 0 }, Max[N], Min[N];
float aver[N] = { 0 };
struct player //结构体的运用
{
int num; //编号
char name[8]; //名字
int score[M]; //得分
};
void Inistplayer(struct player a[], int n)
{
int i;
for (i = 0; i < n; i++)
scanf("%d %s", &a[i].num, a[i].name); //录入选手数据
}
void Inputscore(int score[], int n) //评委打分
{
int i;
for (i = 0; i < n; i++)
scanf("%d",&score[i]);
}
void sort(struct player a[], float b[], int n) //sort==排序
{
int i, k, j,t;
float temp; //temp:临时文件夹
//struct player temp1;
char str[10];
for (i = 0; i < n-1; 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); //strcpy是复制字符串的的库函数
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;
}
}
}
int main()
{
int flag = 1, n, i, m, j,r=1; //flag:判断标志
FILE *fp;
struct player a[20];
printf("||=========================================================================||\n");
printf("||============================主菜单=======================================||\n");
printf("||************************歌手比赛管理系统*********************************||\n");
printf("||=========================================================================||\n");
printf("|| 1.输入选手数据 ||\n");
printf("|| 2.评委打分 ||\n");
printf("|| 3.成绩排序 ||\n");
printf("|| 4.数据查询 ||\n");
printf("|| 5.追加学生数据 ||\n");
printf("|| 6.写入数据文件 ||\n");
printf("|| 7.退出系统 ||\n");
printf("||=========================================================================||\n");
printf("||*************************************************************************||\n");
printf("||*************************************************************************||\n");
while(flag)
{ printf("\n");
printf("请按1-7的顺序输入序号以进行操作");
abc:
scanf("%d",&n);
if(r==n)
{ r++;
switch(n)
{
case 1:
printf("输入三位选手的数据 (编号 姓名 eg:1 XXX)\n") ; //输入选手数据
Inistplayer(a,N);
break;
case 2: //评委打分
for(i=0;i<N;i++)
{
printf("%d位选手的成绩 (请输入十个[0,10]数, eg1 2 ...)",i+1);
Inputscore(a[i].score,M); //输入评委打分
for(j=0;j<M;j++)
printf("%d\t",a[i].score[j]); //所有选手的各自得分
printf("\n");
}
break;
case 3: //成绩排序
for(i=0;i<N;i++)
{
Max[i]=a[i].score[0];
Min[i]=a[i].score[0];
for(j=0;j<M;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); //计算平均值
}
sort(a,aver,N); //从a[0]到N从小到大平均值排序
for(i=0;i<N;i++)
printf("%s\t%5.2f\n",a[i].name,aver[i]);
break;
case 4: //查询数据
printf("你想查询的选手的数据(请输入选手编号 eg1");
scanf("%d",&m); //m为代选手编号的变量
for(i=0;i<N;i++)
if(a[i].num==m)
{
printf("%d 号选手%s 总分:%d,最高分%d,最低分%d,平均分%5.2f",a[i].num,a[i].name,sum[i],Max[i],Min[i],aver[i]);
printf("\n");
}
break;
case 5: //追加选手数据
printf("请输入要追加的选手数据 (编号 姓名 eg1 XXX):");
add=add+1;
scanf("%d %s",&a[add].num,a[add].name);
break;
case 6: //写入数据文件
printf("将数据写入文件:\n\n");
fp=fopen("date.txt","w");
for(i=0;i<add+2;i++)
{
fprintf(fp,"%d %s\n",a[i].num,a[i].name);
}
printf("写入成功!\n\n");
fclose(fp);
break;
case 7: //退出系统
exit(0);
break;
default:
flag=0; //当输入无效数字
}
}
else
{
printf("输入错误,请重新输入:");
goto abc; //无条件转移语句
}
}
return 0;
}

Binary file not shown.
Loading…
Cancel
Save