運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)論文刪減版_第1頁
運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)論文刪減版_第2頁
運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)論文刪減版_第3頁
運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)論文刪減版_第4頁
運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)論文刪減版_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、湖南商學(xué)院課程設(shè)計(jì)實(shí)習(xí)報(bào)告題 目 運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)姓 名:譚斌 學(xué) 號(hào):100910062 專 業(yè): 電子信息工程班 級(jí): 電信1002班 指導(dǎo)老師: 梁英 職 稱:副教授 組 員: 田馳、顏偉 計(jì)算機(jī)與電子工程學(xué)院2021年8月課程設(shè)計(jì)(實(shí)習(xí))評(píng)審表姓 名譚斌學(xué) 院計(jì)電學(xué)院學(xué) 號(hào)100910062專業(yè)班級(jí)電信1002題 目運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)評(píng)審意見評(píng)審成績指導(dǎo)教師簽名職稱評(píng)審時(shí)間 年 月 日課程設(shè)計(jì)(實(shí)習(xí))作品驗(yàn)收表題目運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)參與人員姓 名譚斌顏偉、田馳班 級(jí)電信1002電信1002學(xué) 號(hào)100910062100910070、100910064設(shè)計(jì)任務(wù)與要求:初始化輸入:N-參

2、賽學(xué)??倲?shù),M-男子競賽工程數(shù),W-女子競賽工程數(shù)各工程名次取法有如下幾種:取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2;功能要求:1系統(tǒng)以菜單方式工作2由程序提醒用戶填寫比賽結(jié)果,輸入各工程獲獎(jiǎng)運(yùn)發(fā)動(dòng)信息。3所有信息記錄完畢后,用戶可以查詢各個(gè)學(xué)校的比賽成績4查看參賽學(xué)校信息和比賽工程信息等。作品完成情況: 可正常運(yùn)行。驗(yàn)收情況: 驗(yàn)收教師簽名:_ 年 月 日注:1. 除“驗(yàn)收情況欄外,其余各欄均由學(xué)生在作品驗(yàn)收前填寫。2.“驗(yàn)收情況欄由驗(yàn)收小組按實(shí)際驗(yàn)收的情況如實(shí)填寫。目 錄1 概述1設(shè)計(jì)目的11.2

3、課程設(shè)計(jì)內(nèi)容1相關(guān)知識(shí)22 總體設(shè)計(jì)321系統(tǒng)功能要求3主函數(shù)3.2數(shù)組4.3文件的儲(chǔ)存4程序流程圖53 調(diào)試與運(yùn)行7調(diào)試結(jié)果73.1.1 輸入信息73.1.2輸出信息83.1.3查詢信息11調(diào)試過程中出現(xiàn)的問題和處理方式124 總結(jié)12調(diào)試中所遇到的較重要問題的回憶12提出問題12解決問題13提出問題13分析問題13解決問題13提出問題13分析問題134解決問題13算法的效率及改良設(shè)想135 心得體會(huì)146 程序詳細(xì)源代碼16參 考 文 獻(xiàn)231、 課程設(shè)計(jì)的任務(wù)與要求課程設(shè)計(jì)的目的:1要求學(xué)生到達(dá)熟練掌握C語言的根本知識(shí)和技能。2了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)

4、能力。3提高程序設(shè)計(jì)和調(diào)試能力。學(xué)生通過上機(jī)實(shí)習(xí),驗(yàn)證自己設(shè)計(jì)的算法的正確性。學(xué)會(huì)有效利用根本調(diào)試方法,迅速找出程序代碼中的錯(cuò)誤并且修改。4培養(yǎng)算法分析能力。分析所設(shè)計(jì)算法的時(shí)間復(fù)雜度和空間復(fù)雜度,進(jìn)一步提高程序設(shè)計(jì)水平。5初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測試等根本方法和技能。1.2 課程設(shè)計(jì)內(nèi)容問題描述:參加運(yùn)動(dòng)會(huì)有n個(gè)學(xué)校,學(xué)校編號(hào)為1n。比賽分成m個(gè)男子工程,和w個(gè)女子工程。工程編號(hào)為男子1m,女子m+1m+w。不同的工程取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。m=20,n=2

5、0功能要求: 1系統(tǒng)以菜單方式工作2由程序提醒用戶填寫比賽結(jié)果,輸入各工程獲獎(jiǎng)運(yùn)發(fā)動(dòng)信息。3所有信息記錄完畢后,用戶可以查詢各個(gè)學(xué)校的比賽成績4查看參賽學(xué)校信息和比賽工程信息等。界面要求:有合理的提示,每個(gè)功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。2、總體設(shè)計(jì)21系統(tǒng)功能要求1).可以輸入各個(gè)工程的前三名或前五名的成績;這里需要用到棧的存儲(chǔ)用法,鏈表的存儲(chǔ)用法,結(jié)構(gòu)存儲(chǔ)。2)能統(tǒng)計(jì)各學(xué)??偡诌@里就應(yīng)該采用文件與結(jié)構(gòu)體存儲(chǔ),并處理好關(guān)系。3)可以按學(xué)校編號(hào)、學(xué)校總分、男女團(tuán)體總分排序輸出;這里要用到的是棧的出棧用法,鏈表的用法,文件等。4).可以按學(xué)校編號(hào)查詢學(xué)校某個(gè)工程的情況;可以按

6、工程編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。而這里要用到的是文件,查找方法,存儲(chǔ)結(jié)構(gòu)這三大塊。 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)主函數(shù)void main() int choice;printf(n = welcome =n); printf(n *運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)*n);printf(n Design by 譚斌 n);printf(nn *1.輸入比賽信息*n);printf( *2.輸出比賽信息*n);printf( *3.查詢比賽信息*n);printf(*4.調(diào)用信息*n); printf( *5.退出系統(tǒng) *nn);printf( =nnn);printf(請選擇要實(shí)現(xiàn)步驟的編號(hào):nn);scanf(%d,&

7、choice);switch(choice) case 1: inputinformation();writedata();main();case 2: output();main();case 3: inquiry();main();case 4: exit(0);default: exit(0);2.22數(shù)組typedef struct int itemnum; /工程編號(hào) int top; /取名次的數(shù)目 int range5; /名次 int mark5; /分?jǐn)?shù)itemnode; /定義工程結(jié)點(diǎn)的類型typedef structint schoolnum; /學(xué)校編號(hào) int sco

8、re; /學(xué)??偡?int mscore; /男團(tuán)體總分 int wscore; /女團(tuán)體總分 itemnode cm+w; /工程數(shù)組headnode;/定義頭結(jié)點(diǎn)類型headnode hn;/定義一個(gè)頭結(jié)點(diǎn)數(shù)組2.23文件的儲(chǔ)存void writedata() /把數(shù)據(jù)存儲(chǔ)在文件中 FILE *report; int i; if(report=fopen(sportsdata.txt,w)=null) printf(不能翻開文件n); exit(1); for(i=0;im+w|s=0)printf(此次運(yùn)動(dòng)會(huì)不包括這個(gè)工程.nnn); 想在每次查詢結(jié)束想返回主菜單進(jìn)行其它項(xiàng)時(shí),應(yīng)在mai

9、n( )函數(shù)中調(diào)用其它函數(shù)時(shí)再調(diào)用main( )函數(shù),如: switch(choice) case 1: inputinformation();writedata();readdata();main(); case 2: output();main(); case 3: inquiry();main(); case 4: readdata();main(); 程序出現(xiàn)語法錯(cuò)誤,發(fā)現(xiàn)是輸入名次信息的地方忘帶地址符&,或是程序不完整,只寫了一個(gè)大括號(hào)。如: printf(*名次:); scanf(%d,&hi.cj.ranges);總結(jié):4.1調(diào)試中所遇到的較重要問題的回憶4提出問題所有輸入輸出內(nèi)

10、容只能在一屏內(nèi)顯示,學(xué)過c語言,很知道n是換行,f是換屏的,可是在這里就是無法實(shí)現(xiàn)。4解決問題輸入clrscr();4提出問題設(shè)置選項(xiàng),供用戶輸入選擇時(shí),當(dāng)按任意鍵時(shí)都會(huì)跳入下一步操作,或者直接退出系統(tǒng)。4分析問題在供用戶選擇時(shí),提供了幾個(gè)選項(xiàng),就寫幾個(gè)case語句,但是當(dāng)用戶輸入的并不是這幾個(gè)數(shù)字時(shí),系統(tǒng)就不能做出正確判斷。4解決問題修改case語句,添加default語句提示出錯(cuò),要求重新輸入; default: clrscr(); /*清屏*/ printf(輸入錯(cuò)誤,請重新選擇); 4提出問題當(dāng)同一工程中有同一學(xué)校的兩個(gè)人時(shí),便不能正確輸出或者輸出相同人名。4分析問題由于同時(shí)有兩個(gè)相同

11、學(xué)校編號(hào)的人存在,系統(tǒng)在輸出時(shí),不能確定那個(gè)是正確的,或者用后來的覆蓋以前的。4用for函數(shù)實(shí)現(xiàn)從開始到結(jié)尾的遍歷。4.2算法的效率及改良設(shè)想算法的效率:總的來講,嚴(yán)重引響執(zhí)行速度的便是查找,查找任意一個(gè)數(shù)據(jù),便要將其所在的結(jié)構(gòu)從頭至尾遍歷一次,消耗大量的時(shí)間。 改良設(shè)想:因大局部顯示均是以學(xué)校為單位,所以將以由有關(guān)人的各種信息為集合的結(jié)構(gòu)改為以由有關(guān)學(xué)校的各種信息為集合的結(jié)構(gòu)。在這次上機(jī)過程中遇到過一些問題,但經(jīng)過我們不懈努力,解決了局部,還有的現(xiàn)在不能解決,留著我們?nèi)蘸笏伎己徒鉀Q。比方說在運(yùn)用數(shù)據(jù)結(jié)構(gòu)排序的時(shí)候,方法的選擇上,總是想用時(shí)間復(fù)雜度小的算法,但結(jié)果出了問題,最后還是用了我們熟悉

12、的選擇法排序。結(jié)構(gòu)體的運(yùn)用上感覺不是很熟悉,遇到結(jié)構(gòu)體的時(shí)候很陌生,這是以后必須要加強(qiáng)的。在我們的這個(gè)程序中用了兩個(gè)結(jié)構(gòu)體:struct node int num; ; struct node *f22; 我們同樣遇到了一些還不能很好解決的問題,在輸出的時(shí)候不能得到我們想要的效果,在按學(xué)校編號(hào)排序查詢輸出的時(shí)候,發(fā)生了重疊在做了幾次修改之后都能使之滿意,這有待學(xué)習(xí)和修改。在編寫之前,做整體的規(guī)劃很重要,這才能讓我們的效率更高和合作得更好。五、個(gè)人心得體會(huì)終于挨到了寫收獲和體會(huì)的時(shí)候了,也就意味著這個(gè)課程設(shè)計(jì)接近了尾聲,確實(shí)令人興奮,看著自己的勞動(dòng)成果,應(yīng)該是大家,全隊(duì)同學(xué)的共同努力,才有現(xiàn)在的

13、這個(gè)程序。一個(gè)多月前的現(xiàn)在,當(dāng)聽到老師布置給我們的這個(gè)題目時(shí),我們都蒙了,這么難的題目我們怎么會(huì)啊,我們都表示不滿,抗議,可是一切都是徒勞,我們只能盡我們自己最大的努力把程序給寫出來,雖然知道這一路肯定是異常的艱苦,但豁出去了。上網(wǎng)查資料是我們邁開的第一步,有類似的題目,可是不一樣,我們失望而回,然后再是去圖書館查,肯定沒有現(xiàn)成的,我們只能查相關(guān)的函數(shù),經(jīng)過兩三天的努力,我們把框架弄出來了,可是還有計(jì)算和閃爍這兩大難題擺在我們面前,真的是個(gè)難題,自從把框架弄好了以后就沒有進(jìn)展了,眼看一個(gè)月快過去了,我們那個(gè)急啊,可是急也沒有用??倸w要搞定,這是我們可以堅(jiān)持到現(xiàn)在的信念,終于工夫不負(fù)有心人,我們

14、參照類似程序,改改和添添,終于大功告成,我們歡呼我們?nèi)杠S,終于相信我們自己是足夠的偉大。這一個(gè)多月以來,我們坐在電腦旁,又累又熱,可是當(dāng)程序做出來了之后,那點(diǎn)累那點(diǎn)苦又算得了什么呢。當(dāng)現(xiàn)在敲打這些字的時(shí)候,滿足感油然而生,如果有人問我物質(zhì)和精神哪個(gè)更讓人滿足,那答案一定是精神,那種感覺只有自己體會(huì)了才能懂。這可不是大話,原來一直認(rèn)為這樣一個(gè)程序我們是不能完成的,可是現(xiàn)在我會(huì)很自信的說:沒有什么可以難倒我們。程序設(shè)計(jì)提升了我們的自信心,真的是受益匪淺啊。這當(dāng)然得感謝劉金平老師和全班同學(xué)的幫助。我們不僅僅是盡力,更是竭盡全力。這就是年少輕狂的我們什么都敢做,什么都不怕,就算跌倒了,再爬起來,沒有什

15、么大不了。程序詳細(xì)源代碼#include#include#include #include #define n 2/學(xué)校數(shù)目 #define m 1/男子工程數(shù)目 #define w 1/女子工程數(shù)目#define null 0typedef struct int itemnum; /工程編號(hào)int top; /取名次的數(shù)目int range5; /名次int mark5; /分?jǐn)?shù)itemnode; /定義工程結(jié)點(diǎn)的類型typedef structint schoolnum; /學(xué)校編號(hào)int score; /學(xué)??偡謎nt mscore; /男團(tuán)體總分int wscore; /女團(tuán)體總分it

16、emnode cm+w; /工程數(shù)組headnode;/定義頭結(jié)點(diǎn)類型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(*工程編號(hào):);scanf(%d,&hi.cj.itemnum);printf(*取前3名or前5名:)

17、;scanf(%d,&hi.cj.top);printf(*獲得幾個(gè)名次:);scanf(%d,&k); /輸入工程信息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.marks=3; break;ca

18、se 3: hi.cj.marks=2; break;elseswitch(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;/按取前三名還是取前五名分別記分if(j=m-1)hi.mscore=hi.mscore+

19、hi.cj.marks;/是男子工程那么記到男子分?jǐn)?shù)里面去elsehi.wscore=hi.wscore+hi.cj.marks;/是女子工程那么記到女子工程里面去printf(n);void output() /輸出函數(shù) int choice,i,j,k;int remembern;int sign;doprintf(*1.按學(xué)校編號(hào)輸出.*n);printf(*2.按學(xué)??偡州敵?*n);printf(*3.按男團(tuán)總分輸出.*n);printf(*4.按女團(tuán)總分輸出.*n);printf(nn* 請選擇編號(hào)*nn:);scanf(%d,&choice);switch(choice) cas

20、e 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=rememberi;rememberi=rememberj,rememberj=k; / 用冒泡排序方

21、法,用輔助數(shù)組記住頭結(jié)點(diǎn)下標(biāo)for(i=0;in;i+)printf(*學(xué)??偡?%dn ,hrememberi.score);printf(*男團(tuán)總分:%dn,hrememberi.mscore);printf(*女團(tuán)總分: %dnnn,hrememberi.wscore);/按所記下標(biāo)順序輸出 /按學(xué)??偡州敵鯾reak; case 3: for(i=0;in;i+)rememberi=i;for(i=0;in;i+) for(j=i+1;jn;j+)if(hrememberi.mscorehj.mscore)k=rememberi;rememberi=rememberj;remember

22、j=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=0;in;i+)rememberi=i;for(i=0;in;i+) for(j=i+1;jn;j+)if(hrememberi.wscorehj.wscore)k=rememberi;remember

23、i=rememberj;rememberj=k;for(i=0;in)printf(錯(cuò)誤:這個(gè)學(xué)校沒有參加此次運(yùn)動(dòng)會(huì)!nnn);elseprintf(要查詢的工程編號(hào):);scanf(%d,&j);if(jm+w|j=0)printf(此次運(yùn)動(dòng)會(huì)沒有這個(gè)工程nnn);/學(xué)校編號(hào)超出范圍,那么輸出警告else printf(這個(gè)工程取前 %d名,該學(xué)校的成績?nèi)缦?n, h0.cj-1.top);for(k=0;km+w|s=0)printf(此次運(yùn)動(dòng)會(huì)不包括這個(gè)工程.nnn);/工程編號(hào)超出范圍那么輸出警告elseprintf(該工程取前 %d名,取得名次的學(xué)校n,h0.cs-1.top);fo

24、r(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); /輸出該工程取得名次學(xué)校的成績printf(nnn繼續(xù) 2,跳出 0n);scanf(%d,&i);printf(nnn);while(i=2);break;void writedata() /把數(shù)據(jù)存儲(chǔ)在文件中 FILE *report;int i; if(report=fopen(sportsdata.txt,w)=null)printf(不能翻開文件n);exit(1);for(i=0;in

25、;i+)fwrite(&hi,sizeof(headnode),1,report);fclose(report); /按頭結(jié)點(diǎn)塊寫入 void readdata() /讀出文件中數(shù)據(jù)的函數(shù) FILE *report;int i,j,k,s;if(report=fopen(sportsdata.txt,r)=null)printf(file can 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,si

26、zeof(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(*工程編號(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+) fread(&k,sizeof(int),1,

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論