用c语言编写歌手比赛系统
对一次歌手比赛的成绩进行管理,功能要求:1、输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。2、显示主菜单如下:1)输入选手数据 2)评委打分 3)成绩排序(按平均分)4)数据查询 5)追加... 对一次歌手比赛的成绩进行管理,功能要求:1、输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。2、显示主菜单如下:1)输入选手数据 2)评委打分 3)成绩排序(按平均分)4)数据查询 5)追加学生数据 6)写入数据文件7)退出系统。 展开
大致就是这样
界面和提示信息你自己做一下 我的系统不支持中文 弄出来也不是你想要的
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199#include #include #include typedef struct { int index; char name[50]; int score[10]; float ave;}INFO; typedef struct{ int n; INFO *info;}INST; #define FILE_NAME "info。
dat" int menu(){ char input[1024]; int ret = -1; int i = 0, j = 0; while(ret 7) { if(ret != -1) printf("input error, should be 1-7 "); if(j >= i) printf("menu: 1-7 "); ret = 0; gets(input); for(i = 0; input[i]; i ) if(input[i] != ' ' && input[i] != ' ') break; j = strlen(input) -1; for(; j > i; j --) if(input[i] != ' ' && input[i] != ' ') break; if(i == j) ret = input[i] - '0'; else if(j info) { free(inst->info); inst->info = NULL; } inst ->n = 0; fp = fopen(FILE_NAME, "rb"); if(fp == NULL) return; fseek(fp, 0, SEEK_END); size = ftell(fp); fseek(fp, 0, SEEK_SET); if(size % sizeof(INFO) != 0 || size n = size/sizeof(INFO); inst->info = (INFO *) malloc(sizeof(INFO) * inst->n); fread(inst->info, sizeof(INFO), inst->n, fp); } fclose(fp);} void input(INST * inst){ INFO * info = NULL; info = (INFO *)malloc((inst->n 1) * sizeof(INFO)); memset(info inst->n, 0, sizeof(INFO)); if(inst->n) { memcpy(info, inst->info, sizeof(INFO) * inst->n); free(inst->info); } inst->info = info; info = &inst->info[inst->n]; inst->n ; scanf("%d%s", &info->index, info->name);} INFO *get_item(INST *inst){ int id, i; INFO * ret = NULL; scanf("%d", &id); for(i = 0; i n; i ) if(inst->info[i]。
index == id) { ret = &inst->info[i]; break; } return ret;}void score(INFO * info){ int min, max, sum = 0, i; if(info == NULL) return; for(i = 0; i score[i]); if(i == 0) min = max = info->score[i]; else if(min > info->score[i]) min = info->score[i]; else if(max score[i]) max = info->score[i]; sum = info->score[i]; } sum -= min max; info->ave = sum/8。
0;} void sort(INST *inst){ INFO t, *info; int i, j; info = inst->info; for(i = 0; i n - 1; i ) for(j = i 1; j n; j ) if(info[i]。
ave index, info->name, info->ave); for(i = 0; i score[i]); printf(" ");} void modify(INFO * info){ if(info == NULL) return; print(info); scanf("%d%s", &info->index, info->name); score(info);} void save(INST *inst){ FILE *fp; fp = fopen(FILE_NAME, "wb"); if(fp) fwrite(inst->info, sizeof(INFO), inst->n, fp); fclose(fp);} int main(){ INST inst = {0}; int in; read_info(&inst); while((in = menu()) != 7) { switch(in) { case 1: input(&inst); break; case 2: score(get_item(&inst)); break; case 3: sort(&inst); break; case 4: print(get_item(&inst)); break; case 5: modify(get_item(&inst)); break; case 6: save(&inst); break; } } return 0;}
PS: 5)追加学生数据 不理解什么功能 做成修改数据的了。
答:人们常常会看到电视中播放歌曲或舞蹈 比赛时,每当一名选手表演完毕,评委打出分 数后,主持人都会说:“去掉一个最高分,去掉 一个最低分,选手的最后得分是……”为...详情>>