版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、合 肥 師 范 學(xué) 院(本 科)課程設(shè)計(jì)說(shuō)明書(shū)課 程數(shù)據(jù)結(jié)構(gòu)題 目運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)姓 名朱茜 劉金玉 史雯學(xué) 號(hào)1110451018 1110451112 1110451088專(zhuān)業(yè)班級(jí)2011級(jí)計(jì)算機(jī)軟件2班指導(dǎo)教師程敏完成日期2012年12月25日1、緒言21世紀(jì)是個(gè)信息化的時(shí)代,現(xiàn)代計(jì)算機(jī)技術(shù)的發(fā)展,為各行各業(yè)的發(fā)展創(chuàng)造了一個(gè)全新的時(shí)代背景人們的生活、工作等已經(jīng)越來(lái)越離不開(kāi)計(jì)算機(jī)科學(xué)的運(yùn)用,體育作為個(gè)人、家庭、社會(huì)的一個(gè)主要實(shí)踐領(lǐng)域,大大小小的運(yùn)動(dòng)會(huì)也在各大中院校中展開(kāi),自從計(jì)算機(jī)科學(xué)涉及運(yùn)動(dòng)領(lǐng)域后,人們對(duì)運(yùn)動(dòng)會(huì)的管理也從人工的向自動(dòng)化轉(zhuǎn)變。運(yùn)用數(shù)據(jù)結(jié)構(gòu)的知識(shí)解決運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)的問(wèn)題,編
2、寫(xiě)一個(gè)程序來(lái)完成運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng). 本程序設(shè)計(jì)中,可以輸入?yún)⒓舆\(yùn)動(dòng)會(huì)的學(xué)校編號(hào)及項(xiàng)目編號(hào);根據(jù)具體情況選擇輸入?yún)⒓禹?xiàng)目的男女類(lèi)別和取成績(jī)名次類(lèi)別;最后選擇輸入名次;實(shí)現(xiàn)數(shù)據(jù)統(tǒng)計(jì),排序輸出,學(xué)院及項(xiàng)目查詢(xún)等功能。數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)是為數(shù)據(jù)結(jié)構(gòu)課程獨(dú)立開(kāi)設(shè)的實(shí)踐性教學(xué)環(huán)節(jié)。課程設(shè)計(jì)的目的是要求學(xué)生達(dá)到熟練掌握C語(yǔ)言的基本知識(shí)和技能;了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力;提高程序設(shè)計(jì)和調(diào)試能力。學(xué)生通過(guò)上機(jī)實(shí)習(xí),驗(yàn)證自己設(shè)計(jì)的算法的正確性。學(xué)會(huì)有效利用基本調(diào)試方法,迅速找出程序代碼中的錯(cuò)誤并且修改;培養(yǎng)算法分析能力,分析所設(shè)計(jì)算法的時(shí)間復(fù)雜度和空間復(fù)雜度,進(jìn)一步提高程序設(shè)
3、計(jì)水平;初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能。2、需求分析2.1 功能需求 本系統(tǒng)主要是運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)方案設(shè)計(jì)。任務(wù):參加運(yùn)動(dòng)會(huì)有n個(gè)學(xué)校,學(xué)校編號(hào)為1n。比賽分成m個(gè)男子項(xiàng)目,和w個(gè)女子項(xiàng)目。項(xiàng)目編號(hào)為男子1m,女子m+1m+w。不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m=20,nn時(shí)輸出錯(cuò)誤:這個(gè)學(xué)校沒(méi)有參加此次運(yùn)動(dòng)會(huì)! 否則,輸入項(xiàng)目編號(hào),如果j m+w | j=0,輸出此次運(yùn)動(dòng)會(huì)沒(méi)有這個(gè)項(xiàng)目。否則,使用for循環(huán)輸出相關(guān)數(shù)據(jù),從而實(shí)現(xiàn)查詢(xún)功能。功能
4、模塊圖如圖1所示。 圖1功能模塊圖4、系統(tǒng)的實(shí)現(xiàn)與調(diào)試4.1 系統(tǒng)實(shí)現(xiàn)建立數(shù)據(jù)庫(kù)、應(yīng)用系統(tǒng)的編碼開(kāi)發(fā)、系統(tǒng)的運(yùn)行。1:主菜單界面,首先運(yùn)行文件運(yùn)動(dòng)會(huì)統(tǒng)計(jì)分?jǐn)?shù)。2:輸入信息:程序首先賦初值,定義學(xué)校的個(gè)數(shù)為2,男生項(xiàng)目為1,女生項(xiàng)目為1。3:查詢(xún)信息(例如按編號(hào)查詢(xún))4.2 調(diào)試調(diào)試過(guò)程主要是運(yùn)行編制好的程序,然后遇到錯(cuò)誤后根據(jù)系統(tǒng)的提示,找到相關(guān)的問(wèn)題所在。本系統(tǒng)調(diào)試過(guò)程中遇到的主要問(wèn)題、原因和解決方法如下面介紹。調(diào)試過(guò)程中出現(xiàn)的問(wèn)題和處理方式:(1)程序出現(xiàn)語(yǔ)法錯(cuò)誤發(fā)現(xiàn)是輸入名次信息的地方忘帶地址符&。 添加取地址符。 printf(*名次:); scanf(%d,&hi.cj.ranges
5、);(2)在輸出模塊不能將全部的學(xué)校信息輸出,屬于算法編寫(xiě)錯(cuò)誤,正確的程序應(yīng)該為:if(hrememberi.mscorehj.mscore)k=rememberi;rememberi=rememberj;rememberj=k;(3)在調(diào)用文件時(shí)出現(xiàn)問(wèn)題,后來(lái)一步步調(diào)試,最終可以運(yùn)行。5、小結(jié)5.1 系統(tǒng)的功能1比賽成績(jī)輸入模塊比賽成績(jī)輸入模塊分為:創(chuàng)建信息部分,該部分需輸入學(xué)校編號(hào),項(xiàng)目編號(hào),取得的名次,以及哪些名次;算法部分,得到排序結(jié)果。 2比賽成績(jī)輸出模塊將以輸入的數(shù)據(jù)按照輸出比賽菜單的選擇輸出相應(yīng)的數(shù)據(jù)。3查詢(xún)比賽成績(jī)模塊按照查詢(xún)比賽結(jié)果菜單和其查詢(xún)方式子菜單查詢(xún)需要的數(shù)據(jù)。4調(diào)用
6、統(tǒng)計(jì)結(jié)果將輸入的各學(xué)校運(yùn)動(dòng)會(huì)成績(jī)排序輸出。5.2 系統(tǒng)及開(kāi)發(fā)過(guò)程的特點(diǎn)輸出形式:有中文提示,各學(xué)校分?jǐn)?shù)為整形界面要求:有合理的提示,每個(gè)功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。存儲(chǔ)結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計(jì),但是要求運(yùn)動(dòng)會(huì)的相關(guān)數(shù)據(jù)要存儲(chǔ)在數(shù)據(jù)文件中。5.3 存在的問(wèn)題與改進(jìn)方向功能上有對(duì)分?jǐn)?shù)信息的輸入、輸出、查詢(xún)、調(diào)用等簡(jiǎn)單的功能。缺點(diǎn)是:輸入大量的信息時(shí)比較麻煩,但由于對(duì)知識(shí)掌握不熟練,所以做的不是很好,下次努力改進(jìn);在輸入信息的時(shí)候都是按數(shù)字輸入,沒(méi)能實(shí)現(xiàn)用學(xué)校和運(yùn)動(dòng)員的名字輸入,這點(diǎn)做的不是很好,下次改進(jìn);指針的概念復(fù)雜,使用較靈活,但容易出錯(cuò);對(duì)文件的使用掌握
7、不熟練,編寫(xiě)時(shí)比較困難,在打開(kāi)文件時(shí)出現(xiàn)問(wèn)題雖然不影響運(yùn)行結(jié)果但不知如何解決。5.4 自我體會(huì)1自從拿到題目到完成整個(gè)編程,從理論到實(shí)踐,可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書(shū)本上所沒(méi)有學(xué)到過(guò)的知識(shí)。今后我必需扎實(shí)基礎(chǔ)理論、認(rèn)真思考,一步一個(gè)腳印的走下去,才可以達(dá)到我們預(yù)期的彼岸!一個(gè)復(fù)雜的程序需要函數(shù)調(diào)用、結(jié)構(gòu)體、數(shù)組、指針、文件等的綜合運(yùn)用,各個(gè)部分間緊密聯(lián)系。同時(shí),他們的使用使程序更加靈活、簡(jiǎn)潔、方便。單純掌握課本上的知識(shí)是不夠的,還需課外的閱讀。只靠個(gè)人的努力是不夠的,小組成員之間的合作、明確的分工可使工作完成得更快。 附錄1:程序源代碼 #in
8、clude#include#include #include #define n 3 /學(xué)校數(shù)目 #define m 2 /男子項(xiàng)目數(shù)目 #define w 2 /女子項(xiàng)目數(shù)目#define null 0typedef struct int itemnum; /項(xiàng)目編號(hào) int top; /取名次的數(shù)目 int range5; /名次 int mark5; /分?jǐn)?shù)itemnode; /定義項(xiàng)目結(jié)點(diǎn)的類(lèi)型typedef structint schoolnum; /學(xué)校編號(hào) int score; /學(xué)??偡?int mscore; /男團(tuán)體總分 int wscore; /女團(tuán)體總分 itemnod
9、e cm+w; /項(xiàng)目數(shù)組headnode; /定義頭結(jié)點(diǎn)類(lèi)型headnode hn; /定義一個(gè)頭結(jié)點(diǎn)數(shù)組void inputinformation() /輸入信息,建立系統(tǒng)int i,j,k,s; for(i=0;in;i+) hi.score=0; hi.mscore=0; hi.wscore=0; /初始化頭結(jié)點(diǎn) for(i=0;in;i+) printf(*學(xué)校編號(hào):); scanf(%d,&hi.schoolnum); /輸入頭結(jié)點(diǎn)信息 for(j=0;jm+w;j+) printf(*項(xiàng)目編號(hào):); scanf(%d,&hi.cj.itemnum); printf(*取前3名or
10、前5名:); scanf(%d,&hi.cj.top); printf(*獲得幾個(gè)名次:); scanf(%d,&k); /輸入項(xiàng)目信息 for(s=0;s5;s+) hi.cj.ranges=0, hi.cj.marks=0; /初始化排名和分?jǐn)?shù) for(s=0;sk;s+) printf(*名次:); scanf(%d,&hi.cj.ranges); /輸入所獲名次信息 if(hi.cj.top=3) switch(hi.cj.ranges) case 0: hi.cj.marks=0; break; case 1: hi.cj.marks=5; break; case 2: hi.cj.
11、marks=3; break; case 3: hi.cj.marks=2; break; else switch(hi.cj.ranges) case 0: hi.cj.marks=0; break; case 1: hi.cj.marks=7; break; case 2: hi.cj.marks=5; break; case 3: hi.cj.marks=3; break; case 4: hi.cj.marks=2; break; case 5: hi.cj.marks=1; break; hi.score=hi.score+hi.cj.marks;/按取前三名還是取前五名分別記分 i
12、f(j=m-1)hi.mscore=hi.mscore+hi.cj.marks;/是男子項(xiàng)目則記到男子分?jǐn)?shù)里面去 else hi.wscore=hi.wscore+hi.cj.marks;/是女子項(xiàng)目則記到女子項(xiàng)目里面去 printf(n); void output() /輸出函數(shù) int choice,i,j,k;int remembern;int sign; do printf(*1.按學(xué)校編號(hào)輸出.*n); printf(*2.按學(xué)校總分輸出.*n); printf(*3.按男團(tuán)總分輸出.*n); printf(*4.按女團(tuán)總分輸出.*n); printf(nn* 請(qǐng)選擇編號(hào)*nn:);
13、 scanf(%d,&choice); switch(choice) case 1:for(i=0;in;i+) printf(nn*學(xué)校編號(hào):%dn,hi.schoolnum); printf(*學(xué)校總分:%dn ,hi.score); printf(*男團(tuán)總分:%dn,hi.mscore); printf(*女團(tuán)總分: %dnnn,hi.wscore); /按編號(hào)順序輸出 break; case 2: for(i=0;in;i+)rememberi=i; for(i=0;in;i+) for(j=i+1;jn;j+)if(hrememberi.scorehj.score) k=rememb
14、eri;rememberi=rememberj;rememberj=k; / 用冒泡排序方法,用輔助數(shù)組記住頭結(jié)點(diǎn)下標(biāo) for(i=0;in;i+) printf(nn*學(xué)校編號(hào):%dn,hrememberi.schoolnum); printf(*學(xué)校總分:%dn ,hrememberi.score); printf(*男團(tuán)總分:%dn,hrememberi.mscore); printf(*女團(tuán)總分: %dnnn,hrememberi.wscore); /按所記下標(biāo)順序輸出 /按學(xué)??偡州敵?break; case 3: for(i=0;in;i+) rememberi=i; for(i=
15、0;in;i+) for(j=i+1;jn;j+)if(hrememberi.mscorehj.mscore)k=rememberi;rememberi=rememberj;rememberj=k; for(i=0;in;i+) printf(nn*學(xué)校編號(hào):%dn,hrememberi.schoolnum); printf(*學(xué)??偡?%dn ,hrememberi.score); printf(*男團(tuán)總分:%dn,hrememberi.mscore); printf(*女團(tuán)總分: %dnnn,hrememberi.wscore); /按男團(tuán)總分輸出 break; case 4: for(i
16、=0;in;i+) rememberi=i; for(i=0;in;i+) for(j=i+1;jn;j+) if(hrememberi.wscorehj.wscore) k=rememberi; rememberi=rememberj; rememberj=k; for(i=0;in)printf(錯(cuò)誤:這個(gè)學(xué)校沒(méi)有參加此次運(yùn)動(dòng)會(huì)!nnn); elseprintf(要查詢(xún)的項(xiàng)目編號(hào):); scanf(%d,&j); if(jm+w|j=0) printf(此次運(yùn)動(dòng)會(huì)沒(méi)有這個(gè)項(xiàng)目nnn);/學(xué)校編號(hào)超出范圍,則輸出警告 elseprintf(這個(gè)項(xiàng)目取前 %d名,該學(xué)校的成績(jī)?nèi)缦?n, h0.
17、cj-1.top); for(k=0;km+w|s=0)printf(此次運(yùn)動(dòng)會(huì)不包括這個(gè)項(xiàng)目.nnn); /項(xiàng)目編號(hào)超出范圍則輸出警告elseprintf(該項(xiàng)目取前 %d名,取得名次的學(xué)校n,h0.cs-1.top);for(i=0; in;i+) for(j=0;j5;j+) if(hi.cs-1.rangej!=0) printf(學(xué)校編號(hào):%d,名次:%dn,hi.schoolnum,hi.cs-1.rangej); /輸出該項(xiàng)目取得名次學(xué)校的成績(jī) printf(nnn繼續(xù) 2,跳出 0n);scanf(%d,&i);printf(nnn);while(i=2); break;voi
18、d writedata() /把數(shù)據(jù)存儲(chǔ)在文件中 FILE *report; int i; if(report=fopen(sportsdata.txt,w)=null) printf(不能打開(kāi)文件n); exit(1); for(i=0;in;i+)fwrite(&hi,sizeof(headnode),1,report); fclose(report); /按頭結(jié)點(diǎn)塊寫(xiě)入 void readdata() /讀出文件中數(shù)據(jù)的函數(shù) FILE *report; int i,j,k,s; if(report=fopen(sportsdata.txt,r)=null) printf(file can
19、 not be openedn); exit(1); for(i=0;in;i+) printf(*學(xué)校編號(hào):); fread(&k,sizeof(int),1,report); printf(%dn,k); printf(*學(xué)校總分:); fread(&k,sizeof(int),1,report); printf(%dn,k); printf(*男團(tuán)總分:); fread(&k,sizeof(int),1,report); printf(%dn,k); printf(*女團(tuán)總分:); fread(&k,sizeof(int),1,report); printf(%dn,k); printf(nnn); getch(); for(j=0;jm+w;j+) printf(*項(xiàng)目編號(hào):); fread(&k,sizeof(int),1,report); printf(%dn,k); printf(*所取名次數(shù)量:); fread(&k,sizeof(int),1,report); printf(%dn,k); for(s=0;s5;s+)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北省隨州市部分高中2025-2026學(xué)年高一上學(xué)期期末聯(lián)考?xì)v史答案
- 2025-2026學(xué)年黑龍江省綏化十中九年級(jí)(上)期末數(shù)學(xué)試卷(含答案)
- 職業(yè)暴露應(yīng)急預(yù)案考試試題及答案
- 初中師德培訓(xùn)課件
- 陜西省西安市雁塔區(qū)高新區(qū)第一中學(xué)2025~2026學(xué)年上學(xué)期期末考試八年級(jí)歷史試題(原卷版+解析版)
- 鋼結(jié)構(gòu)表面處理技術(shù)要點(diǎn)
- 地源熱泵系統(tǒng)技術(shù)應(yīng)用方法
- 2026屆遼寧省名校聯(lián)盟高三1月期末考試歷史試題(含答案)
- 市政給排水考試及答案
- 紹興轉(zhuǎn)業(yè)考試題目及答案
- 湖北中煙2024年招聘考試真題(含答案解析)
- 2026年常州機(jī)電職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)及答案1套
- 2026年稅務(wù)師執(zhí)業(yè)規(guī)范考試題目含答案
- 2026年江蘇農(nóng)林職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試模擬測(cè)試卷必考題
- 廣東省廣州市八區(qū)聯(lián)考2024-2025學(xué)年高一上學(xué)期期末教學(xué)質(zhì)量監(jiān)測(cè)數(shù)學(xué)試卷(含答案)
- 選舉法知識(shí)課件
- 蒸汽管道安裝現(xiàn)場(chǎng)施工方案
- 2024年中考英語(yǔ)真題分類(lèi)匯編-記敘文閱讀理解(含答案)
- 道路清掃保潔服務(wù)方案投標(biāo)文件(技術(shù)方案)
- GB/T 2820.5-2025往復(fù)式內(nèi)燃機(jī)驅(qū)動(dòng)的交流發(fā)電機(jī)組第5部分:發(fā)電機(jī)組
- 蘇教版語(yǔ)文《唐詩(shī)宋詞選讀》選修(教材上全部詩(shī)歌,已全部校對(duì)無(wú)誤)
評(píng)論
0/150
提交評(píng)論