C语言歌手比赛系统
普通学长 人气:0一、项目简介
对一次歌手比赛的成绩进行管理
输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。
二、任务概述
要求歌手比赛系统实现对学生基本信息(如编号、姓名、性别等)及十个评委的成绩的管理(增加、删除、修改或更新、查询、统计、保存到文件、从文件装载等操作)。
三、功能展示
四、思维导图
五、程序源码
#include<stdio.h> #include<stdlib.h> struct singer/*定义结构体*/ { int num; char name[10]; float score[20]; float aver; float sum; int ord; }singer[100]; void singer_information(int b) /*输入选手信息*/ { int i; for(i=1;i<=b;i++) { printf("请输入选手编号:"); scanf("%d",&singer[i].num); printf("请输入选手姓名:"); scanf("%s",&singer[i].name); } } int singer_score(int b) { int j,c; float a[50]; for(j=1;j<=b;j++) { printf("\n请输入评委1对歌手%d的打分",j); scanf("%f",&singer[j].score[1]); printf("请输入评委2对歌手%d的打分",j); scanf("%f",&singer[j].score[2]); printf("请输入评委3对歌手%d的打分",j); scanf("%f",&singer[j].score[3]); printf("请输入评委4对歌手%d的打分",j); scanf("%f",&singer[j].score[4]); printf("请输入评委5对歌手%d的打分",j); scanf("%f",&singer[j].score[5]); printf("请输入评委6对歌手%d的打分",j); scanf("%f",&singer[j].score[6]); printf("请输入评委7对歌手%d的打分",j); scanf("%f",&singer[j].score[7]); printf("请输入评委8对歌手%d的打分",j); scanf("%f",&singer[j].score[8]); printf("请输入评委9对歌手%d的打分",j); scanf("%f",&singer[j].score[9]); printf("请输入评委10对歌手%d的打分",j); scanf("%f",&singer[j].score[10]); a[j]=singer[j].score[1]+singer[j].score[2]+singer[j].score[3]+singer[j].score[4]+singer[j].score[5]+singer[j].score[6]+singer[j].score[7]+singer[j].score[8]+singer[j].score[9]+singer[j].score[10]; singer[j].sum=a[j]; } } int singer_grade(int b)/* 歌手总成绩 */ { int a,c; float n[50],max,min; for(a=1;a<=b;a++) { max=singer[a].score[1]; min=singer[a].score[1]; for(c=1;c<=10;c++) { if(max<singer[a].score[c]) max=singer[a].score[c]; if(min>singer[a].score[c]) min=singer[a].score[c]; } n[a]=(singer[a].sum-max-min)/8.0; singer[a].aver=n[a]; } } int order(int b)/*成绩排序*/ { int j,t,i; for(i=1;i<=b;i++) { for(j=1,t=1;j<=b;j++) { if(singer[i].aver<singer[j].aver) { t=t+1; } } singer[i].ord=t; } for(i=1;i<=b;i++) { for(j=1;j<=b;j++) { if(i==singer[j].ord) printf("%s是第%d 得分为%15.2f\n",singer[j].name,i,singer[j].aver); } printf("\n\n\n"); } } int search(int c)/*数据查询*/ { printf("所查选手的数据:编号%d 姓名%s 平均成绩%f 总成绩%f\n",singer[c].num,singer[c].name,singer[c].aver,singer[c].score[c]); } int addition(int i)/*数据追加*/ { printf("请输入选手编号及姓名:"); scanf("%d,%s/n",&singer[i+1].num,&singer[i+1].name); printf("请输入评委1对歌手%d的打分",i+1); scanf("%d",&singer[i+1].score[1]); printf("请输入评委2对歌手%d的打分",i+1); scanf("%d",&singer[i+1].score[2]); printf("请输入评委3对歌手%d的打分",i+1); scanf("%d",&singer[i+1].score[3]); printf("请输入评委4对歌手%d的打分",i+1); scanf("%d",&singer[i+1].score[4]); printf("请输入评委5对歌手%d的打分",i+1); scanf("%d",&singer[i+1].score[5]); printf("请输入评委6对歌手%d的打分",i+1); scanf("%d",&singer[i+1].score[6]); printf("请输入评委7对歌手%d的打分",i+1); scanf("%d",&singer[i+1].score[7]); printf("请输入评委8对歌手%d的打分",i+1); scanf("%d",&singer[i+1].score[8]); printf("请输入评委9对歌手%d的打分",i+1); scanf("%d",&singer[i+1].score[9]); printf("请输入评委10对歌手%d的打分",i+1); scanf("%d",&singer[i+1].score[10]); } main() { int a,b,c,i,n=1; FILE *fp; fp = fopen("歌手.txt","wt+"); 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"); while(n) { printf("你想进行的操作: "); scanf("%d",&a); printf("\n\n"); switch(a) { case 1: printf("你想进行的操作:输入选手数据\n "); printf("请输入选手个数"); scanf("%d",&b); singer_information(b); printf("----------------------\n"); break; case 2: printf("你想进行的操作:评委打分\n "); singer_score(b); printf("-----------------------\n"); break; case 3: printf("你想进行的操作:成绩排序(按平均分)\n "); singer_grade(b); order(b); printf("-------------------------\n"); break; case 4: printf("你想进行的操作:数据查询\n "); printf("请输入要查询选手编号:"); scanf("%d",&c); printf("所查选手的数据:编号%d 姓名%s 平均成绩%f 总成绩%f\n",singer[c].num,singer[c].name,singer[c].aver,singer[c].sum); printf("--------------------------\n"); break; case 5: printf("你想进行的操作:追加学生数据\n "); addition(b); printf("---------------------------\n"); break; case 6: printf("你想进行的操作:写入数据文件\n "); printf("将数据写入文件中:\n"); for (i = 0 ; i <=b ; i++) { fprintf(fp,"%d ",singer[i].num); fprintf(fp,"%s ",singer[i].name); fprintf(fp,"%d\n",singer[i].aver); } break; case 7: exit(0); default :printf("输入错误请重新输入!\n"); } } }
加载全部内容