C語言實現歌手比賽系統
本文實例為大傢分享瞭C語言實現歌手比賽系統的具體代碼,供大傢參考,具體內容如下
一、項目簡介
對一次歌手比賽的成績進行管理
輸入每個選手的數據包括編號、姓名、十個評委的成績,根據輸入計算出總成績和平均成績(去掉最高分,去掉最低分)。
二、任務概述
要求歌手比賽系統實現對學生基本信息(如編號、姓名、性別等)及十個評委的成績的管理(增加、刪除、修改或更新、查詢、統計、保存到文件、從文件裝載等操作)。
三、功能展示
四、思維導圖
五、程序源碼
#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"); } } }
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。