题目
歌手比赛系统
功能:
对一次歌手比赛的成绩进行管理,功能要求:
1、输入每个选手的数据包括编号、姓 名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。
2、显示主菜单如下:1)输入选手数据2)评委打分3)成绩排序(按平均 分) 4)数据查询5) 追加选手数据6)写入数据文件7)退出系统。
结果图
实现代码
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
struct Data
{
char num[20];//编号
char name[20];//姓名
float playerScore[10];//十个评委的成绩
float sumScore;//总成绩
float aveScore;//平均成绩
}data;
void getContext()// 输入选手数据
{
printf("请输入选手数据:(编号 姓名 )\n");
printf("按999结束\n");
getchar();
while(1)
{
gets(data.num);
if(strcmp(data.num,"999") == 0)//相等返回0
{
break;
}
gets(data.name);
FILE *p = fopen("xinxi.txt", "a+");
if(p == NULL)
{
printf("open error!\n");
}
fputs(data.num,p);
fputs("\t",p);
fputs(data.name,p);
fputs("\n",p);
fclose(p);
}
}
void teachScore()//评委打分
{
FILE *p1 = fopen("xinxi.txt","r");
FILE *p2 = fopen("tmp.txt","w");
if(p1 == NULL)
{
printf("read error!\n");
}
if(p2 == NULL)
{
printf("open error!\n");
}
char buf[999]; //定义缓冲区,用于暂时存储数据
while(fgets(buf, 100, p1) != NULL)
{
sscanf(buf,"%s%s", &data.num,&data.name);
printf("请十位老师输入编号为%s的同学的成绩:\n",data.num);
float sum = 0;
float min = 999, max = 0;
for(int k = 0; k < 10; k++)
{
scanf("%f",&data