C語言課程設(shè)計運動會分數(shù)統(tǒng)計系統(tǒng)說明書畢業(yè)設(shè)計_第1頁
C語言課程設(shè)計運動會分數(shù)統(tǒng)計系統(tǒng)說明書畢業(yè)設(shè)計_第2頁
C語言課程設(shè)計運動會分數(shù)統(tǒng)計系統(tǒng)說明書畢業(yè)設(shè)計_第3頁
C語言課程設(shè)計運動會分數(shù)統(tǒng)計系統(tǒng)說明書畢業(yè)設(shè)計_第4頁
C語言課程設(shè)計運動會分數(shù)統(tǒng)計系統(tǒng)說明書畢業(yè)設(shè)計_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 . . . - 1 - / 28計算機語言計算機語言 B B 課程設(shè)計課程設(shè)計題 目:運動會分數(shù)統(tǒng)計系統(tǒng) 目目 錄錄摘要摘要 1 1前言前言 4 4正文正文 5 51.需求分析 52.概要設(shè)計 63.詳細設(shè)計 74.調(diào)試分析 85.測試結(jié)果 86.說明書 8總結(jié)總結(jié) 9 9參考文獻參考文獻 1010致致 1111附件附件部分部分源源程序代碼程序代碼 1212 . . . - 2 - / 28摘摘 要要建立一個“運動會分數(shù)統(tǒng)計系統(tǒng)”,系統(tǒng)以菜單方式工作,編寫存放有運動會的相關(guān)信息,要求輸入男、女參賽項目數(shù)與項目編號,項目名次、得分,參賽學(xué)校編號、運動員編號、性別;產(chǎn)生各學(xué)校的成績單,容包括各校

2、所取得的每項成績的項目號、名次(成績)、;產(chǎn)生團體總分報表,容包括校號、男子團體總分、女子團體總分和團體總分。要求系統(tǒng)能實現(xiàn)查詢、排序、刪除、修改功能。 . . . - 3 - / 28前前 言言運動會分數(shù)統(tǒng)計系統(tǒng) 的發(fā)展歷史可以追溯到 20 世紀 60 年代末期。由于當(dāng)時計算機技術(shù)已經(jīng)進入實用階段,同時大型運動會用手工來計算既費時費力又非常容易出差錯,為了解決這個矛盾,運動會分數(shù)統(tǒng)計系統(tǒng)應(yīng)運而生。當(dāng)時由于技術(shù)條件和需求的限制,用戶非常少,而且那種系統(tǒng)充其量也只不過是一種自動計算工具,幾乎沒有報表生成功能和薪資數(shù)據(jù)分析功能。但是,它的出現(xiàn)為運動會分數(shù)統(tǒng)計展示了美好的前景,即用計算機的高速度和自

3、動化來替代手工的巨大工量,用計算機的高準確性來避免手工的錯誤和誤差,使大規(guī)模集中處理大型運動會成為可能。 . . . - 4 - / 28正正 文文一.需求分析1 問題描述運動會分數(shù)統(tǒng)計系統(tǒng)參加運動會有 n 個系,系編號為 1n。比賽分成 m 個男子項目,和 w 個女子項目。項目編號為男子 1m,女子 m+1m+w。不同的項目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、 2;哪些取前五名或前三名由學(xué)生自己設(shè)定。 (m=20,n=20)2.基本要求:1).可以輸入各個學(xué)校、各項目、以與各項目前三名的數(shù)據(jù)信息;2)能統(tǒng)計各學(xué)??偡帧⒛凶禹椖亢团禹椖?/p>

4、總分;3)可以按學(xué)校編號(或?qū)W校名稱) 、學(xué)??偡帧⒛信畧F體總分排序輸出;4).可以按學(xué)校編號(或?qū)W校名稱)查詢學(xué)校某個項目的情況;可以按項目編號查詢?nèi)〉们叭膶W(xué)校。3、系統(tǒng)總體設(shè)計整整 體體 結(jié)結(jié) 構(gòu)構(gòu) 圖圖運動會 分數(shù)統(tǒng)計系統(tǒng)輸 入 排 序 查 詢 退出 . . . - 5 - / 28二、概要設(shè)計 1.數(shù)據(jù)結(jié)構(gòu)學(xué)校:名稱,編號,總分,男子團體總分,女子固體總分。運動項目:項目編號,名稱,男子項目,女子項目,前三名,前五名, 2.程序模塊與之間的調(diào)用關(guān)系初始化界面初始化數(shù)據(jù)輸入學(xué)校名稱輸入運動項目按學(xué)校編號輸出總分按總分排序按男團體總分排序按女團體總分排序按項目編號查詢按學(xué)校編號查詢退 出

5、顯示提示菜單操 作退 出返 回 . . . - 6 - / 28三、詳細設(shè)計 (1)本程序中學(xué)校的存儲結(jié)構(gòu)為鏈表,其中schoolschool 類為:類為:class school:public athlete /*學(xué)校*/ public: int count; /*學(xué)校獲獎數(shù)*/ int serial; /*學(xué)校編號*/ int menscore; /*男選手總分*/ int womenscore; /*女選手總分*/ int totalscore; /*總分*/ athlete athMaxSize; /*獲獎運動員信息數(shù)組,包括分數(shù),名次,項目*/ school *prev;/前指針 s

6、chool *next; /后指針;其中部分主要的函數(shù):其中部分主要的函數(shù):添加操作 add(school* &head)查詢操作 checkFunc(school *head,int &n)文件保存 save(school *head)總分快速排序 tquicksort(vector& v, int first, int last)Prev school(最后) next 頭結(jié)點 Prev school1 next . . . - 7 - / 28總分基數(shù)排序 tbaseSort(vector& v, int d) 2.2.關(guān)鍵算法關(guān)鍵算法 添加項目號for

7、( i = 1 ; i serial =要添加的編號) (first-athfirst-count).item =要添加的項目號;(first-athfirst-count).range =i(名次) First 指向的學(xué)校的項目加一;更新總分break;first = first-next; . . . - 8 - / 28開始輸入項目編號 temp是數(shù)字N0temp18NY輸出“項目不存學(xué)校遍歷結(jié)束temp 存在YNNext schoolNtemp 是奇數(shù) NY取 5 名取3 名輸入獲獎的學(xué)校編號se1senext;輸出向量中的內(nèi)容1. 所有學(xué)??偡纸y(tǒng)計表2. 學(xué)校成績查詢3. 項目情況查

8、詢4. 返回主菜單1. 按學(xué)校編號統(tǒng)計2. 按學(xué)校名次統(tǒng)計3. 按男團總分統(tǒng)計4. 按女團總分統(tǒng)計5. 返回查詢菜單6. 返回主菜單/按學(xué)校編號順序輸出所有參賽學(xué)校運動會成績void serialSort(vector& v)for(int i=0;iv.size();i+)cout*vi; . . . - 10 - / 28四、調(diào)試分析本程序相對來說比較容易看明白,其中涉與到的一些函數(shù)相對來說比較容易。通過調(diào)試,運行,基本上達到了要求,但還存在一些缺點。如:不夠人性化等。五、測試結(jié)果測試結(jié)果1.1.主菜單窗口主菜單窗口2.2. 輸入各個項目成績并存儲文件輸入各個項目成績并存儲文件 .

9、 . . - 11 - / 283.3. 統(tǒng)計各學(xué)??偡纸y(tǒng)計各學(xué)??偡?.4. 按學(xué)校編號排序輸出按學(xué)校編號排序輸出 . . . - 12 - / 285.5. 按學(xué)??偡峙判蜉敵霭磳W(xué)??偡峙判蜉敵?.6. 按男團體總分排序輸出按男團體總分排序輸出 . . . - 13 - / 287.7. 按女團體總分排序輸出按女團體總分排序輸出8.8. 按學(xué)校編號查詢學(xué)校某個項目情況按學(xué)校編號查詢學(xué)校某個項目情況 . . . - 14 - / 289.9. 按項目編號查詢?nèi)〉妹蔚膶W(xué)校按項目編號查詢?nèi)〉妹蔚膶W(xué)校六、說明書六、說明書1、運行環(huán)境 Windows,VC+6.02 根據(jù)正確的提示安裝軟件。3、

10、Intel486 以上系列、AMD K6 以上系列等 PC 臺式機和便攜式電腦都可運行。4、操作過程 用戶進入程序啟動界面,等 l 完成后進入主菜單.主菜單有以下 8 個選項 1.輸入學(xué)校 2.輸入運動項目 3.按學(xué)校編號輸出總分 4.按總分排序 5.按男團體總分排序 6.按女團體總分排序 7.按項目編號查詢 8.按學(xué)校編號查詢 總總 結(jié)結(jié) . . . - 15 - / 28該系統(tǒng)以運動會分數(shù)統(tǒng)計為背景,涵蓋了運動員檢錄、運動員成績的排序、運動員評獎等的多種功能,并且有一定的可行性和安全性,確保了各項指定功能得以運行。本系統(tǒng)以基本函數(shù)、結(jié)構(gòu)體、枚舉性、文件以與鏈表等多方位知識貫穿實現(xiàn)。 通過此

11、次程序設(shè)計實踐,是同學(xué)們對所學(xué)知識的綜合運用,也是程序設(shè)計得以提高的表現(xiàn)。通過此次編程培養(yǎng)了我們結(jié)構(gòu)化程序設(shè)計的思想,加深了對高級語言基本語言要素和控制結(jié)構(gòu)的理解,鍛煉我們獨立思考制作程序的能力,并且掌握了一些課程設(shè)計的相關(guān)知識與實踐操作能力,為以后的學(xué)習(xí)提供了鍛煉的機會。經(jīng)過設(shè)計和開發(fā),能夠完成運動員檢錄、運動員成績的排序、運動員評獎等的多種操作。并提供部分系統(tǒng)維護功能,使用戶方便進行數(shù)據(jù)備份和恢復(fù)、數(shù)據(jù)刪除。對于數(shù)據(jù)的一致性的問題也通過程序進行了有效的解決。從而是我對 c 語言這門課程有了更好的了解。但是由于設(shè)計時間較短,所以該系統(tǒng)還有許多不盡如人意的地方,比如聯(lián)機文檔比較少,用戶界面不夠

12、美觀,出錯處理不夠等多方面問題。這些都有待進一步改善。 參考文獻參考文獻 . . . - 16 - / 281、 C/C+程序設(shè)計教程,王連相,中國鐵道,20062 、 C 語言程序設(shè)計,譚浩強,清華大學(xué),19993、 C 程序設(shè)計題解與上機指導(dǎo),譚浩強,清華大學(xué),19994、 C/C+程序設(shè)計上機指導(dǎo)與測試,王連相,中國鐵道,20065、 C 語言函數(shù)手冊,機械工業(yè),19996 、 C 語言的實際應(yīng)用,科學(xué)技術(shù),2000致致 . . . - 17 - / 28在編寫程序的過程中,我們得到了丁政建老師的精心指導(dǎo)以與孜孜不倦的教誨,在老師的指導(dǎo)下,我們的能力得到了提高,同時養(yǎng)成了科學(xué)、嚴謹?shù)淖黠L(fēng)

13、和習(xí)慣,在此,我們對老師的精心栽培表示衷心的感!感同學(xué)們對我的幫助和指點,尤其感我的舍友在非常時期,在生活和學(xué)習(xí)上幫我許多忙。在課設(shè)即將完成之際,我的心情無法平靜,從開始進入課題到課設(shè)的順利完成,有多少可敬的師長、同學(xué)、朋友給了我無言的幫助,在這里請接受我誠摯的意。附件附件 部分原程序代碼部分原程序代碼#include . . . - 18 - / 28#include #include #include /#include /*屏幕操作函數(shù)*/ #define MAX 50 /#define NULL 0 typedef struct node1 int school; /*學(xué)校編號*/ i

14、nt record; /*項目成績*/ struct node1 *next; /*鏈域*/ Schools; typedef struct int item; /*項目編號*/ Schools *firstschool; /*鏈域指向鏈表中第一個結(jié)點*/ ITEM; typedef struct int z; /* 項目總數(shù) */ ITEM aMAX; ALLitems; typedef struct node2 int item; /*該學(xué)校獲獎的項目*/ int record; /*項目成績*/ struct node2 *next; /*鏈域*/ Items; typedef stru

15、ct int school; /*學(xué)校編號*/ int score; /*學(xué)??偡?/ int boys; /*男團體總分*/ int girls; /*女團體總分*/ Items *firstitem; /*鏈域指向鏈表中第一個獲獎項目的結(jié)點*/ SCHNode; typedef struct int n; /* 學(xué)??倲?shù) */ SCHNode bMAX; ALLNode; ALLitems *g1; ALLNode *g2; void funct1(ALLitems *g1,ALLNode *g2) Schools *p1; . . . - 19 - / 28 Items *p2; int

16、 i,j,k,m,w,h,x; p1=(Schools *)malloc(sizeof(Schools); p2=(Items *)malloc(sizeof(Items); if(!p1|!p2) exit(1); printf(n *輸入各個項目信息 * nn); printf( 輸入男子項目總數(shù) m:); scanf(%d,&m); if(m20) printf( 輸入有誤,m 是 20 以的整數(shù),請重新輸入:); scanf(%d,&m); printf( 輸入女子項目總數(shù) w:); scanf(%d,&w); if(w20) printf( 輸入有誤,w 是

17、20 以的整數(shù),請重新輸入:); scanf(%d,&w); printf( 輸入?yún)⒓舆\動會的學(xué)校總數(shù) n:); scanf(%d,&g2-n); if(g2-nn20) printf( 輸入有誤,n 是 20 以的整數(shù),請重新輸入:); scanf(%d,&g2-n); g1-z=m+w; printf( 則項目編號為男子 1-%d,女子%d-%d,m,m+1,g1-z); printf(nn *記錄運動會成績*); printf(nn (輸入 0 標志結(jié)束)n); for(k=1;kz;k+) g1-ak.item=k; g1-ak.firstschool=NULL

18、; for(k=1;kn;k+) g2-bk.school=k; g2-bk.firstitem=0; g2-bk.score=0; g2-bk.boys=0; g2-bk.girls=0; g2-b0.score=0; g2-b0.boys=0; . . . - 20 - / 28 g2-b0.girls=0; while(i!=0) printf(n 項目:); scanf(%d,&i); if(i!=0) printf( 1.前三名 2.前五名n); printf( 請選擇:); scanf(%d,&j); if(j!=1&j!=2) printf( 輸入有誤,請

19、重新選擇:); scanf(%d,&j); if(j=1) h=3; do printf( 第%d 名:學(xué)校(學(xué)校編號為數(shù)字),h); scanf(%d,&x); p1=(Schools *)malloc(sizeof(Schools); p1-school=x; p2=(Items *)malloc(sizeof(Items); p2-item=i; if(h=3) p2-record=p1-record=2; if(h=2) p2-record=p1-record=3; if(h=1) p2-record=p1-record=5; p1-next=g1-ai.firstsc

20、hool; g1-ai.firstschool=p1; p2-next=g2-bx.firstitem; g2-bx.firstitem=p2; g2-bx.score=g2-bx.score+p2-record; /* 累計總分 */ if(ibx.boys=g2-bx.boys+p2-record; /* 累計男團體總分 */ else g2-bx.girls=g2-bx.girls+p2-record; /* 累計女團體總分 */ h-; while(x!=0&h!=0); if(j=2) h=5; do printf( 第%d 名:學(xué)校(學(xué)校編號為數(shù)字),h); scanf(%

21、d,&x); p1=(Schools *)malloc(sizeof(Schools); p1-school=x; p2=(Items *)malloc(sizeof(Items); p2-item=i; . . . - 21 - / 28 if(h=5) p2-record=p1-record=1; if(h=4) p2-record=p1-record=2; if(h=3) p2-record=p1-record=3; if(h=2) p2-record=p1-record=5; if(h=1) p2-record=p1-record=7; p1-next=g1-ai.firsts

22、chool; g1-ai.firstschool=p1; p2-next=g2-bx.firstitem; g2-bx.firstitem=p2; g2-bx.score=g2-bx.score+p2-record; /* 累計總分 */ if(ibx.boys=g2-bx.boys+p2-record; /* 累計男團體總分 */ else g2-bx.girls=g2-bx.girls+p2-record; /* 累計女團體總分 */ h-; while(x!=0&h!=0); void save() FILE *fp1,*fp2; fp1=(FILE *)malloc(sizeo

23、f(FILE); fp2=(FILE *)malloc(sizeof(FILE); if(fp1=fopen(sports1,wb)=NULL) printf(cannot open file.n); return; if(fwrite(g1,sizeof(ALLitems),1,fp1)!=1) printf(file write error.n); fclose(fp1); if(fp2=fopen(sports2,wb)=NULL) printf(cannot open file.n); return; if(fwrite(g2,sizeof(ALLNode),1,fp2)!=1) pr

24、intf(file write error.n); fclose(fp2); void funct2(ALLNode *g2) /* 輸出各學(xué)??偡?*/ int k; printf(nn * 輸出各學(xué)??偡?*n); . . . - 22 - / 28 printf( 學(xué)校編號t 總分 n); for(k=1;kn;k+) printf( %dttt %dn,k,g2-bk.score); printf(n); system(pause); printf( 按任意鍵返回主菜單.); getchar(); void funct3(ALLNode *g2) /* 按學(xué)校編號排序輸出 */ int

25、 k; Items *p2; p2=(Items *)malloc(sizeof(Items); printf(nn * 按學(xué)校編號排序輸出 *n); printf( 學(xué)校編號ttt 獲獎情況 n); scanf(%d,&k); for(k=1;kn;k+) printf(tttttt%dt,k); p2=g2-bk.firstitem; while(p2!=NULL) printf(項目%d:得%d 分 ,p2-item,p2-record); p2=p2-next; printf(n); printf(n); system(pause); printf(按任意鍵返回主菜單.); g

26、etchar(); void funct4(ALLNode *g2) /* 按學(xué)??偡峙判蜉敵?*/ int i,j,k; Items *p2; printf(nn * 按學(xué)??偡峙判蜉敵?*n); printf( 學(xué)校編號tt 總分 n); scanf(%d,&k); /printf(輸入要查詢的項目編號:); . . . - 23 - / 28 for(i=2;in;i+) printf(%dt,k); p2=g2-bk.firstitem; while(p2!=NULL) printf(%d tt%dn,g2-bk.school,g2-bk.score); p2=p2-next;

27、 printf(n); g2-b0.score=g2-bi.score; g2-b0.boys=g2-bi.boys; g2-b0.girls=g2-bi.girls; g2-b0.school=g2-bi.school; j=i-1; while(g2-b0.scorebj.score&j0) g2-bj+1.score=g2-bj.score; g2-bj+1.boys=g2-bj.boys; g2-bj+1.girls=g2-bj.girls; g2-bj+1.school=g2-bj.school; j-; g2-bj+1.score=g2-b0.score; g2-bj+1.

28、boys=g2-b0.boys; g2-bj+1.girls=g2-b0.girls; g2-bj+1.school=g2-b0.school; for(k=1;kn;k+) printf(%d tt%dn,g2-bk.school,g2-bk.score); system(pause); printf(按任意鍵返回主菜單.); getchar(); void funct5(ALLNode *g2) /* 按男團體總分排序輸出 */ int i,j,k; Items *p2; p2=(Items *)malloc(sizeof(Items); printf(nn * 按男團體總分排序輸出 *n

29、); printf(學(xué)校編號tt 男團體總分 n); . . . - 24 - / 28 scanf(%d,&k); /printf(輸入要查詢的學(xué)校編號:); for(i=2;in;i+) printf(%dt,k); p2=g2-bk.firstitem; while(p2!=NULL) printf(%dtt %dn,g2-bk.school,g2-bk.boys); p2=p2-next; printf(n); g2-b0.score=g2-bi.score; g2-b0.boys=g2-bi.boys; g2-b0.girls=g2-bi.girls; g2-b0.schoo

30、l=g2-bi.school; j=i-1; while(g2-b0.boysbj.boys&j0) g2-bj+1.score=g2-bj.score; g2-bj+1.boys=g2-bj.boys; g2-bj+1.girls=g2-bj.girls; g2-bj+1.school=g2-bj.school; j-; g2-bj+1.score=g2-b0.score; g2-bj+1.boys=g2-b0.boys; g2-bj+1.girls=g2-b0.girls; g2-bj+1.school=g2-b0.school; for(k=1;kn;k+) printf(%dt

31、t %dn,g2-bk.school,g2-bk.boys); system(pause); / 暫停等待 printf(按任意鍵返回主菜單.); getchar(); void funct6(ALLNode *g2) /* 按女團體總分排序輸出 */ int i,j,k; Items *p2; . . . - 25 - / 28 p2=(Items *)malloc(sizeof(Items); printf(nn * 按女團體總分排序輸出 *n); printf(學(xué)校編號tt 女團體總分 n); scanf(%d,&k); / printf(輸入要查詢的項目編號:); for(i=

32、2;in;i+) printf(%dt,k); p2=g2-bk.firstitem; while(p2!=NULL) printf(%dtt %dn,g2-bk.school,g2-bk.girls); p2=p2-next; printf(n); g2-b0.score=g2-bi.score; g2-b0.boys=g2-bi.boys; g2-b0.girls=g2-bi.girls; g2-b0.school=g2-bi.school; j=i-1; while(g2-b0.girlsbj.girls&j0) g2-bj+1.score=g2-bj.score; g2-bj+

33、1.boys=g2-bj.boys; g2-bj+1.girls=g2-bj.girls; g2-bj+1.school=g2-bj.school; j-; g2-bj+1.score=g2-b0.score; g2-bj+1.boys=g2-b0.boys; g2-bj+1.girls=g2-b0.girls; g2-bj+1.school=g2-b0.school; for(k=1;kn;k+) printf(%dtt %dn,g2-bk.school,g2-bk.girls); system(pause); printf(按任意鍵返回主菜單.); getchar(); . . . - 2

34、6 - / 28void funct7(ALLNode *g2) /* 按學(xué)校編號查詢學(xué)校某個項目情況 */ int i,j; Items *p2; printf(n * 按學(xué)校編號查詢學(xué)校某個項目情況 *n); printf( 輸入要查詢的學(xué)校編號:); scanf(%d,&i); printf( 輸入要查詢的項目編號:); scanf(%d,&j); p2=g2-bi.firstitem; while(p2!=NULL) if(p2-item=j) printf( 學(xué)校編號:%dt 項目%d:得%d 分n,i,p2-item,p2-record); p2=p2-next;

35、printf(n); system(pause); printf( 按任意鍵返回主菜單.); getchar(); void funct8(ALLitems *g1) /* 按項目編號查詢?nèi)〉妹蔚膶W(xué)校 */ int i; Schools *p1; printf(n* 按項目編號查詢?nèi)〉妹蔚膶W(xué)校 *n); printf(輸入要查詢的項目編號:); scanf(%d,&i); printf(項目編號ttt 取得名次的學(xué)校n); printf(%dt,i); p1=g1-ai.firstschool; while(p1!=NULL) printf( 學(xué)校%d:得%d 分 ,p1-school,p1-record);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論