1.输入选手信息
2查询选手信息
3删除选定选手信息
4追加选手信息
5按选手总分排序
6退出系统
有偿50
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _SINGER
{
int id;
char name[20];
float score[5];
float total;
}SINGER;
#define MAXCOUNT 100 //最大歌手人数
SINGER singer[MAXCOUNT]; //歌手信息数组
int n; //当前歌手人数
//搜索输入的id是否存在,存在则提示错误,id必须唯一
int findid(int id)
{
int i;
for(i=0;i<n;i++)
{
if(singer[i].id == id)
return 1;
}
return 0;
}
//从数据存储文件中读取歌手信息
void read()
{
char buf[100];
int i;
FILE *fp = fopen("singer.txt","r");
if(fp == NULL)
return;
while(fgets(buf,100,fp) != NULL) //逐行读取歌手信息
{
//从每行信息中抽取出歌手数据
sscanf(buf,"%d\t%s\t%f\t%f\t%f\t%f\t%f",&singer[n].id,singer[n].name,&singer[n].score[0],&singer[n].score[1],&singer[n].score[2],&singer[n].score[3],&singer[n].score[4]);
singer[n].total = 0;
//同时计算出歌手总分,以便后面排序需要
for(i=0;i<5;i++)
singer[n].total += singer[n].score[i];
n++; //歌手数量加1
}
fclose(fp);
}
//增加一名新歌手信息
void add()
{
int id,i;
while(1)
{
printf("请输入新歌手的序号:");
scanf("%d",&id);
if(findid(id))
{
printf("歌手序号已经存在。");
continue;
}
break;
}
singer[n].id = id;
printf("请输入新歌手的姓名:");
scanf("%s",singer[n].name);
printf("请输入新歌手的五个分数:");
singer[n].total = 0;
for(i=0;i<5;i++)
{
scanf("%f",&singer[n].score[i]);
singer[n].total += singer[n].score[i];
}
n++;
}