C語言實(shí)現(xiàn)歌手比賽系統(tǒng)
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)歌手比賽系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
一、項(xiàng)目簡(jiǎn)介
對(duì)一次歌手比賽的成績(jī)進(jìn)行管理
輸入每個(gè)選手的數(shù)據(jù)包括編號(hào)、姓名、十個(gè)評(píng)委的成績(jī),根據(jù)輸入計(jì)算出總成績(jī)和平均成績(jī)(去掉最高分,去掉最低分)。
二、任務(wù)概述
要求歌手比賽系統(tǒng)實(shí)現(xiàn)對(duì)學(xué)生基本信息(如編號(hào)、姓名、性別等)及十個(gè)評(píng)委的成績(jī)的管理(增加、刪除、修改或更新、查詢、統(tǒng)計(jì)、保存到文件、從文件裝載等操作)。
三、功能展示




四、思維導(dǎo)圖

五、程序源碼
#include<stdio.h>
#include<stdlib.h>
struct singer/*定義結(jié)構(gòu)體*/?
{
?? ?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("請(qǐng)輸入選手編號(hào):");
?? ??? ?scanf("%d",&singer[i].num);
?? ??? ?printf("請(qǐng)輸入選手姓名:");
?? ??? ?scanf("%s",&singer[i].name);
?? ?}?
}
int singer_score(int b) ? ?
{
?? ?int j,c;
?? ?float a[50];
?? ?for(j=1;j<=b;j++)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("\n請(qǐng)輸入評(píng)委1對(duì)歌手%d的打分",j);
?? ??? ??? ??? ?scanf("%f",&singer[j].score[1]);
?? ??? ??? ??? ?printf("請(qǐng)輸入評(píng)委2對(duì)歌手%d的打分",j);
?? ??? ??? ??? ?scanf("%f",&singer[j].score[2]);
?? ??? ??? ??? ?printf("請(qǐng)輸入評(píng)委3對(duì)歌手%d的打分",j);
?? ??? ??? ??? ?scanf("%f",&singer[j].score[3]);
?? ??? ??? ??? ?printf("請(qǐng)輸入評(píng)委4對(duì)歌手%d的打分",j);
?? ??? ??? ??? ?scanf("%f",&singer[j].score[4]);
?? ??? ??? ??? ?printf("請(qǐng)輸入評(píng)委5對(duì)歌手%d的打分",j);
?? ??? ??? ??? ?scanf("%f",&singer[j].score[5]);
?? ??? ??? ??? ?printf("請(qǐng)輸入評(píng)委6對(duì)歌手%d的打分",j);
?? ??? ??? ??? ?scanf("%f",&singer[j].score[6]);
?? ??? ??? ??? ?printf("請(qǐng)輸入評(píng)委7對(duì)歌手%d的打分",j);
?? ??? ??? ??? ?scanf("%f",&singer[j].score[7]);
?? ??? ??? ??? ?printf("請(qǐng)輸入評(píng)委8對(duì)歌手%d的打分",j);
?? ??? ??? ??? ?scanf("%f",&singer[j].score[8]);
?? ??? ??? ??? ?printf("請(qǐng)輸入評(píng)委9對(duì)歌手%d的打分",j);
?? ??? ??? ??? ?scanf("%f",&singer[j].score[9]);
?? ??? ??? ??? ?printf("請(qǐng)輸入評(píng)委10對(duì)歌手%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)/* 歌手總成績(jī) */
{
?? ?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)/*成績(jī)排序*/?
{
?? ?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)/*數(shù)據(jù)查詢*/?
{
?? ?printf("所查選手的數(shù)據(jù):編號(hào)%d ? ?姓名%s ? 平均成績(jī)%f ? 總成績(jī)%f\n",singer[c].num,singer[c].name,singer[c].aver,singer[c].score[c]);?? ?
}?
?
?
?int addition(int i)/*數(shù)據(jù)追加*/
?{
?? ? printf("請(qǐng)輸入選手編號(hào)及姓名:");
?? ?scanf("%d,%s/n",&singer[i+1].num,&singer[i+1].name);
?? ?
?? ?printf("請(qǐng)輸入評(píng)委1對(duì)歌手%d的打分",i+1);
?? ?scanf("%d",&singer[i+1].score[1]);
?? ?printf("請(qǐng)輸入評(píng)委2對(duì)歌手%d的打分",i+1);
?? ?scanf("%d",&singer[i+1].score[2]);
?? ?printf("請(qǐng)輸入評(píng)委3對(duì)歌手%d的打分",i+1);
?? ?scanf("%d",&singer[i+1].score[3]);
?? ?printf("請(qǐng)輸入評(píng)委4對(duì)歌手%d的打分",i+1);
?? ?scanf("%d",&singer[i+1].score[4]);
?? ?printf("請(qǐng)輸入評(píng)委5對(duì)歌手%d的打分",i+1);
?? ?scanf("%d",&singer[i+1].score[5]);
?? ?printf("請(qǐng)輸入評(píng)委6對(duì)歌手%d的打分",i+1);
?? ?scanf("%d",&singer[i+1].score[6]);
?? ?printf("請(qǐng)輸入評(píng)委7對(duì)歌手%d的打分",i+1);
?? ?scanf("%d",&singer[i+1].score[7]);
?? ?printf("請(qǐng)輸入評(píng)委8對(duì)歌手%d的打分",i+1);
?? ?scanf("%d",&singer[i+1].score[8]);
?? ?printf("請(qǐng)輸入評(píng)委9對(duì)歌手%d的打分",i+1);
?? ?scanf("%d",&singer[i+1].score[9]);
?? ?printf("請(qǐng)輸入評(píng)委10對(duì)歌手%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(" ? ? 歌手比賽系統(tǒng) ? \n");
?? ? printf("*********************\n");
? ? ?printf("* 1)輸入選手?jǐn)?shù)據(jù) ? *\n");?
? ? ?printf("* 2)評(píng)委打分 ? ? ? *\n");
? ? ?printf("* 3)成績(jī)排序 ? ? ? *\n");
? ? ?printf("* 4)數(shù)據(jù)查詢 ? ? ? *\n");
? ? ?printf("* 5)追加學(xué)生數(shù)據(jù) ? *\n");
? ? ?printf("* 6)寫入數(shù)據(jù)文件 ? *\n"); ? ? ?
? ? ?printf("* 7)退出系統(tǒng) ? ? ? *\n");
? ? ?printf("*********************\n");
?? ?while(n)
?? ?{
?? ?printf("你想進(jìn)行的操作: ");
?? ?scanf("%d",&a);
?? ?printf("\n\n");
?? ?switch(a)
?? ?{
?? ??? ?case 1:?
?? ??? ??? ??? ?printf("你想進(jìn)行的操作:輸入選手?jǐn)?shù)據(jù)\n ");?
?? ??? ??? ??? ?printf("請(qǐng)輸入選手個(gè)數(shù)");
?? ??? ??? ??? ?scanf("%d",&b);
?? ??? ??? ??? ?singer_information(b);
?? ??? ??? ??? ?printf("----------------------\n");
?? ??? ??? ?
?? ??? ?break;
?? ??? ?case 2:?
?? ??? ??? ??? ?printf("你想進(jìn)行的操作:評(píng)委打分\n ");
?? ??? ??? ??? ?singer_score(b);
?? ??? ??? ??? ?printf("-----------------------\n");
?? ??? ??? ??? ?
?? ??? ? break;
?? ??? ?case 3: ?
?? ??? ??? ??? ?printf("你想進(jìn)行的操作:成績(jī)排序(按平均分)\n ");
?? ??? ??? ??? ?singer_grade(b);
?? ??? ??? ??? ?order(b);
?? ??? ??? ??? ?printf("-------------------------\n");
?? ??? ??? ??? ?
?? ??? ? ?break;
?? ??? ?case 4:
?? ??? ??? ??? ?printf("你想進(jìn)行的操作:數(shù)據(jù)查詢\n ");
?? ??? ??? ??? ? printf("請(qǐng)輸入要查詢選手編號(hào):");?
?? ??? ? ?? ??? ?scanf("%d",&c);
?? ??? ? ?? ??? ?printf("所查選手的數(shù)據(jù):編號(hào)%d ? ?姓名%s ? 平均成績(jī)%f ? 總成績(jī)%f\n",singer[c].num,singer[c].name,singer[c].aver,singer[c].sum);
?? ? ?? ??? ??? ?
?? ??? ??? ??? ?printf("--------------------------\n");
?? ??? ? ?break;
?? ??? ?case 5:
?? ??? ??? ??? ?printf("你想進(jìn)行的操作:追加學(xué)生數(shù)據(jù)\n "); ?
?? ??? ??? ? ? addition(b);
?? ??? ??? ? ? ?? ?printf("---------------------------\n");
?? ??? ??? ??? ?
?? ??? ? ?break;
?? ??? ?case 6:?
?? ??? ??? ??? ?printf("你想進(jìn)行的操作:寫入數(shù)據(jù)文件\n ");
?? ??? ??? ??? ?printf("將數(shù)據(jù)寫入文件中:\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("輸入錯(cuò)誤請(qǐng)重新輸入!\n");
?? ?}
?? ?}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
VS2019調(diào)試C語言程序(監(jiān)視操作)的詳細(xì)步驟
在很多時(shí)候我們?cè)趯懗绦虻倪^程中會(huì)發(fā)現(xiàn)一些非編程錯(cuò)誤的問題,這樣的問題很難直接分辨出來,但是我們可以用調(diào)試了一步一步的模擬程序運(yùn)行的過程,來找出程序的錯(cuò)誤,下面這篇文章主要給大家介紹了關(guān)于VS2019調(diào)試C語言程序(監(jiān)視操作)的詳細(xì)步驟,需要的朋友可以參考下2022-11-11
C語言計(jì)算器的3種實(shí)現(xiàn)方法代碼
這篇文章主要給大家介紹了關(guān)于C語言計(jì)算器的3種實(shí)現(xiàn)方法,文中通過代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一的參考借鑒價(jià)值,需要的朋友可以參考下2007-01-01
深入Windows下的回車是回車換行(\r\n)還是換行回車(\n\r)的詳解
本篇文章對(duì)Windows下的回車是回車換行(\r\n)還是換行回車(\n\r)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C++利用容器查找重復(fù)列功能實(shí)現(xiàn)
本文將詳細(xì)介紹c++容器簡(jiǎn)介,c++容器的比較 與操作實(shí)例,需要了解更多的朋友可以參考下2012-11-11
C++ cmake實(shí)現(xiàn)日志類的示例代碼
CMake是一個(gè)跨平臺(tái)的安裝(編譯)工具,可以用簡(jiǎn)單的語句來描述所有平臺(tái)的安裝(編譯過程)。本文就來利用cmake實(shí)現(xiàn)日志類,感興趣的小伙伴可以了解一下2023-03-03
關(guān)于c++11與c風(fēng)格路徑拼接的速度對(duì)比
這篇文章主要介紹了關(guān)于c++11與c風(fēng)格路徑拼接的速度對(duì)比分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
C++程序中使用Windows系統(tǒng)Native Wifi API的基本教程
這篇文章主要介紹了C++程序中使用Windows系統(tǒng)Native Wifi API的基本教程,包括在程序中控制無線網(wǎng)卡開關(guān)的方法,需要的朋友可以參考下2016-03-03

