《C語言課程設計 歌手比賽系統(tǒng)》由會員分享,可在線閱讀,更多相關(guān)《C語言課程設計 歌手比賽系統(tǒng)(13頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、
XXXXXXXXXXXX
本 科 課 程 設 計
課程:C語言程序設計
題目:歌手比賽系統(tǒng)
學院:XXXXXXXXXXXXXXXXXX
專業(yè)班級:XXXXXXX
學號:XXXXXXXX
學生姓名:XXXXXXX
合作人:XXXXXXXXXXXX
指導教師:XXXXXX
2、
2011年10月15日
目錄
1、引言
2、系統(tǒng)設計
2.1、設計分析
2.1.1、項目描述
2.2、程序結(jié)構(gòu)
2.2.1、程序劃分
2.2.2、程序結(jié)構(gòu)流程圖
3、系統(tǒng)實現(xiàn)
3.1、各模塊的功能及程序說明
3.2、系統(tǒng)各模塊的運行效果圖
4、設計體會
5、參考文獻
6、系統(tǒng)完整源程序
引言
C語言是一門計算機高級語言,它在Microsoft開發(fā)的
3、軟件Visual C++ 6.0中執(zhí)行,C語言具有很多優(yōu)點:
1.C語言具有豐富的數(shù)據(jù)類型,眾多的運算符,體現(xiàn)結(jié)構(gòu)化程序設計的優(yōu)良控制結(jié)構(gòu),具有抽象功能及體現(xiàn)信息隱蔽思想的函數(shù)。
2.C語言的應用幾乎遍及了程序的各個領域,如科學家,系統(tǒng)程序設計,字處理軟件和電子表格軟件的開發(fā),信息管理,計算機輔助設計,等方面。
3.C語言簡潔,為完成某一功能所寫的源程序代碼往往比其他語言寫得短,便利程序輸入工作量減少。
4.若程序員在書寫過程時嚴格遵循ANSI C標準,則其源代碼可不作修改,即可用于各種型號的計算機和各種操作系統(tǒng),因此,C語言具有良好的可移植性。
本次實踐我們選擇了使用
4、C語言編寫基于鏈表的程序,不僅使大家對程序設計、編程方法有了進一步提高,而且掌握了使用C語言動態(tài)內(nèi)存分配及數(shù)據(jù)結(jié)構(gòu)等方面的知識。
一、系統(tǒng)設計
2.1設計分析
2.1.1 項目描述
1.項目名稱:歌手打分系統(tǒng)
2.功能描述:
(1)生成字符界面的功能菜單
**************************************
* 1.輸入歌手成績 *
* 2.插入新歌手 *
* 3.刪除退賽歌手
5、 *
* 4.歌手成績排名 *
* 5.輸出歌手分數(shù) *
* 6.輸出歌手排名 *
* 7.退出系統(tǒng) *
**************************************
(2)通過輸入菜單項的序號啟動相應模塊的功能
① 能夠根據(jù)輸入的選手人數(shù)創(chuàng)建鏈表;
② 錄入9名評委給選手的打分,并存儲到文件singerOriginal.dat中;
③ 按照去掉一個最高分和去掉一個最低分的原則求每名選手
6、的平均分;
④ 按平均分由高到低的順序?qū)x手進行排序;
⑤ 把排名后的數(shù)據(jù)存儲到文件singerFianl.dat中;
⑥ 把原始數(shù)據(jù)和最終的結(jié)果輸出到屏幕;
⑦ 在第②步中保存singerOriginal.dat文件之前,可根據(jù)情況修改數(shù)據(jù),例如:插入或刪除歌手。
2.2 程序結(jié)構(gòu)
2.2.1程序劃分
將歌手打分系統(tǒng)程序進行系統(tǒng)模塊劃分,共分為九部分,分別是:
1.定義結(jié)構(gòu)體
2.創(chuàng)建鏈表函數(shù)
3.輸入數(shù)據(jù)函數(shù)
4.計算函數(shù)
5.排序函數(shù)
6.輸出數(shù)據(jù)函數(shù)
7.輸出最終數(shù)據(jù)
8.刪除函數(shù)
9.插入函數(shù)
10.主函數(shù)
2.2.2 程序結(jié)構(gòu)流程圖
mai
7、n
輸出數(shù)據(jù)
存儲數(shù)據(jù)
排序
求平均分
得分維護
得分錄入
創(chuàng)建鏈表
輸入成績
三、系統(tǒng)實現(xiàn)
3.1 各模塊的功能及程序說明
創(chuàng)建鏈表:使用尾插法插入數(shù)據(jù);
輸入選手信息:包括選手信息的輸入,選手成績的輸入,去掉一個最高分和最低分,并將其余評委的評分求出平均值。
輸出選手排名:包括選手成績排名。
刪除和插入選手信息:將退賽選手和新參加的比賽的選手進行刪除和插入。
主函數(shù):將所有函數(shù)實現(xiàn)。
3.2 系統(tǒng)主要功能模塊的運行效果圖
程序的運行效果圖:
8、
四、設計體會
在本次的C語言實踐中,讓我們受益匪淺,通過本次的實踐,讓我們更深入的了解了C語言這門計算機語言,也明白了軟件開發(fā)的相關(guān)流程和基本步驟,也明白了團隊精神的重要性,一項工作如果是靠一個人的力量是遠遠不夠的。雖然在設計軟件中遇到了很多問題,我們所有組員通力合作,積極討論,翻閱資料,最終完成了這次實踐,也許我們的程序還存在些許問題,也許還不完美,但是我相信在以后的學習中我們會繼續(xù)改進的。也希望老師可以給我們提出您的寶貴意見。
五、參考文獻
編程入門網(wǎng):
六、源程序代碼
#include
#include
9、>
#include
#include
#define N 3
#define M 10
int add = N-1;
int sum[N]={0},Max[N],Min[N];
float aver[N]={0};
struct player
{int num;
char name[8];
int score[M];
};
void Inistplayer(struct player a[],int n)
{int i;
for(i=0;i
10、;
}
void Inputscore(int score[],int n)
{int i;
for(i=0;ib[j]) k=j;
if(k!=i)
{temp=b[i];
b[i]=b[k];
11、
b[k]=temp;
strcpy(str,a[i].name);
strcpy(a[i].name,a[k].name);
strcpy(a[k].name,str);
t=a[i].num;
a[i].num=a[k].num;
a[k].num=t;
}
}
}
void main()
{int flag=1,n,i,m,j;
FILE *fp;
fp = fopen("data.txt","w+");
struct player a[20];
printf("**********1.輸入選手數(shù)據(jù)***********\n");
printf("****
12、******2.評委打分***************\n");
printf("**********3.成績排序***************\n");
printf("**********4.數(shù)據(jù)查詢***************\n");
printf("**********5.追加學生數(shù)據(jù)***********\n");
printf("**********6.寫入數(shù)據(jù)文件***********\n");
printf("**********7.退出系統(tǒng)***************\n");
while(flag)
{printf("你想進行的操作:");
scanf
13、("%d",&n);
switch(n)
{
case 1:Inistplayer(a,N);break;
case 2:srand((unsigned)time(NULL));
for(i=0;i
14、 break;
case 3:for(i=0;ia[i].score[j]) Min[i]=a[i].score[j];
}
15、 aver[i]=(float)(sum[i]-Max[i]-Min[i])/(M-2);
}
sort(a,aver,N);
for(i=0;i
16、 printf("%d號選手%s總分:%d,最高分%d,最低分%d,平均分%5.2f",a[i].num,a[i].name,sum[i],Max[i],Min[i],aver[i]);
printf("\n");
}
break;
case 5:printf("請輸入要追加的選手數(shù)據(jù):\n");
add += 1;
scanf("%d %s",&a[add].num,&a[add].name);
break;
case 6:printf("將數(shù)據(jù)寫入文件中:\n");
for (i = 0 ; i < add+1 ; i++)
{
fprintf(fp,"%d ",a[i].num);
fprintf(fp,"%s ",a[i].name);
fprintf(fp,"%d\n",a[i].score);
}
break;
case 7:exit(0);
break;
default:flag=0;
}
}
}