版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、中國礦業(yè)大學(xué)徐海學(xué)院計(jì)算機(jī)系軟件認(rèn)知實(shí)踐報(bào)告姓 名: 王震 學(xué) 號: 22120494 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 設(shè)計(jì)題目: 運(yùn)動會分?jǐn)?shù)統(tǒng)計(jì) 指導(dǎo)教師: 吳川 2013年12月目 錄第1章 題目概述1第1.1節(jié) 題目要求1第1.2節(jié) 主要難點(diǎn)1第2章 系統(tǒng)流程圖3第3章 數(shù)據(jù)結(jié)構(gòu)和算法3第4章 核心代碼分析與調(diào)試4第5章 復(fù)雜度分析.11參考文獻(xiàn).11附錄:.12中國礦業(yè)大學(xué)徐海學(xué)院軟件認(rèn)知實(shí)踐報(bào)告第1章 題目概述參加運(yùn)動會有n個(gè)學(xué)校,學(xué)校編號為1n。比賽分成m個(gè)男子項(xiàng)目,和w個(gè)女子項(xiàng)目。項(xiàng)目編號為男子1m,女子m+1m+w。不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、
2、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m=20,n=20)第1.1節(jié) 題目要求一、題目要求:1)可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績;2)能統(tǒng)計(jì)各學(xué)校總分,3)可以按學(xué)校編號或名稱、學(xué)校總分、男女團(tuán)體總分排序輸出;4)可以按學(xué)校編號查詢學(xué)校某個(gè)項(xiàng)目的情況;可以按項(xiàng)目編號查詢?nèi)〉们叭蚯拔迕膶W(xué)校。5)數(shù)據(jù)存入文件并能隨時(shí)查詢 6)規(guī)定:輸入數(shù)據(jù)形式和范圍:可以輸入學(xué)校的名稱,運(yùn)動項(xiàng)目的名稱輸出形式:有中文提示,各學(xué)校分?jǐn)?shù)為整形二、界面要求:有合理的提示,每個(gè)功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。三、存儲結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)
3、計(jì),但是要求運(yùn)動會的相關(guān)數(shù)據(jù)要存儲在數(shù)據(jù)文件中。(數(shù)據(jù)文件的數(shù)據(jù)讀寫方法等相關(guān)內(nèi)容在c語言程序設(shè)計(jì)的書上,請自學(xué)解決)請?jiān)谧詈蟮纳辖毁Y料中指明你用到的存儲結(jié)構(gòu)。四、測試數(shù)據(jù):要求使用1、全部合法數(shù)據(jù);2、整體非法數(shù)據(jù);3、局部非法數(shù)據(jù)。進(jìn)行程序測試,以保證程序的穩(wěn)定。測試數(shù)據(jù)及測試結(jié)果請?jiān)谏辖坏馁Y料中寫明。第1.2節(jié) 主要難點(diǎn)1.用冒泡排序方法,用數(shù)組記住頭結(jié)點(diǎn)下標(biāo)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=remembe
4、rj,rememberj=k; 2.根據(jù)要求設(shè)計(jì)存儲每個(gè)項(xiàng)目的編號、名稱、要取的名次以及各個(gè)名次對應(yīng)的學(xué)校的編號,在初始輸入時(shí)僅輸入項(xiàng)目編號、名稱及要取的名次,而各名次對應(yīng)的學(xué)校編號將由系統(tǒng)自動統(tǒng)計(jì)。這也有利于以后項(xiàng)目情況的查詢。typedef structint itemnum; /項(xiàng)目編號 int top; /取名次的數(shù)目int range5; /名次int mark5; /分?jǐn)?shù) itemnode; /定義項(xiàng)目結(jié)點(diǎn)的類型3.儲存了各個(gè)參賽學(xué)校的總體情況,包括學(xué)校的編號、名稱、男子團(tuán)體總分、女子團(tuán)體總分和學(xué)校總分。其中學(xué)校編號和名稱是提前輸入的,而其他三項(xiàng)內(nèi)容將由系統(tǒng)進(jìn)行自動統(tǒng)計(jì)。typed
5、ef structint schoolnum; /學(xué)校編號int score; /學(xué)??偡謎nt mscore; /男團(tuán)體總分int wscore; /女團(tuán)體總分itemnode cm+w; /項(xiàng)目數(shù)組headnode;/定義頭結(jié)點(diǎn)類型4.對各個(gè)學(xué)校的報(bào)名情況及成績進(jìn)行匯總,為了操作方便,只包含了學(xué)校的編號、項(xiàng)目的編號以及其在比賽中的成績。typedef struct /*單項(xiàng)成績*/ int schoolnum; /*學(xué)校編號*/ int itemnum; /* 項(xiàng)目編號*/ int xmch; /*項(xiàng)目成績*/danx; 第2章 系統(tǒng)流程圖開始-初始化輸入判斷N Y輸入學(xué)校及男女項(xiàng)目范圍輸
6、入某項(xiàng)目各名次成績Y繼續(xù)輸入N查詢團(tuán)體總分Case3成績查詢Case2Y繼續(xù)Case1N查詢各學(xué)校成績Y輸出查詢學(xué)校成績繼續(xù)N結(jié)束退出第3章 數(shù)據(jù)結(jié)構(gòu)和算法本方案要求準(zhǔn)備結(jié)構(gòu)體數(shù)組、讀寫文件。還能把信息直接輸入存儲到文件中,讀取文件中信息,從而得到結(jié)果。 (1) 菜單設(shè)計(jì)分為主函數(shù)菜單、比賽成績輸出菜單、查詢分?jǐn)?shù)統(tǒng)計(jì)結(jié)果菜單、查詢方式子菜單。 (2) 數(shù)據(jù)保存方式建立文件,數(shù)據(jù)保存在文件中。運(yùn)動運(yùn)分?jǐn)?shù)統(tǒng)計(jì)程序(3) 數(shù)據(jù)類型采用結(jié)構(gòu)體類型。(4) 存儲結(jié)構(gòu)采用結(jié)構(gòu)體類型數(shù)組存儲結(jié)構(gòu)存儲。(5) 算法設(shè)計(jì)輸入比賽結(jié)果模塊中運(yùn)用了冒泡算法將輸入的數(shù)據(jù)排序。第4章 核心代碼分析1.核心代碼 void
7、 inputinformation() /輸入信息,建立系統(tǒng) int i,j,k,s; for(i=0;in)printf(錯誤:這個(gè)學(xué)校沒有參加此次運(yùn)動會!nnn); elseprintf(要查詢的項(xiàng)目編號:); scanf(%d,&j); if(jm+w|j=0) printf(此次運(yùn)動會沒有這個(gè)項(xiàng)目nnn);/學(xué)校編號超出范圍,則輸出警告 else printf(這個(gè)項(xiàng)目取前 %d名,該學(xué)校的成績?nèi)缦?n, h0.cj-1.top); for(k=0;km+w|s=0)printf(此次運(yùn)動會不包括這個(gè)項(xiàng)目.nnn);/項(xiàng)目編號超出范圍則輸出警告elseprintf(該項(xiàng)目取前 %d名,
8、取得名次的學(xué)校n,h0.cs-1.top);for(i=0; in;i+) for(j=0;j5;j+) if(hi.cs-1.rangej!=0) printf(學(xué)校編號:%d,名次:%dn,hi.schoolnum,hi.cs-1.rangej); /輸出該項(xiàng)目取得名次學(xué)校的成績 printf(nnn繼續(xù) 2,跳出 0n);scanf(%d,&i);printf(nnn);while(i=2); break;2.調(diào)試結(jié)果:(1)首先運(yùn)行文件運(yùn)動會統(tǒng)計(jì)分?jǐn)?shù)系統(tǒng)(2) 輸入信息:程序首先賦初值,定義學(xué)校的個(gè)數(shù)為2,男生項(xiàng)目為1,女生項(xiàng)目為1。輸入1得到進(jìn)入輸入信息模塊。按回車鍵可得到學(xué)校的得分
9、信息和按編號獲得的所以信息。(3)輸出信息:輸入2進(jìn)入輸出信息模塊,該模塊分四項(xiàng): 按學(xué)校編號輸出: 按學(xué)校總分輸出: 按男團(tuán)總分輸出: 按女團(tuán)總分輸出: 輸入2返回輸出信息模塊,輸入0返回主菜單。(4)查詢信息:輸入3進(jìn)入信息查詢模塊: 按學(xué)校編號查詢 按項(xiàng)目編號查詢 輸入錯誤信息時(shí)給出提示: 輸入2繼續(xù)查詢,輸入0返回主菜單第5章 復(fù)雜度分析時(shí)間復(fù)雜度的計(jì)算:數(shù)據(jù)初始錄入中學(xué)校為O(b),項(xiàng)目為O(c),成績的錄入為O(a),統(tǒng)計(jì)函數(shù)調(diào)入內(nèi)存函數(shù)為O(a+b+c),學(xué)校成績統(tǒng)計(jì)為O(a+2)*b),項(xiàng)目統(tǒng)計(jì)為O(a+1)*c),按學(xué)校編號、按學(xué)校總成績、男團(tuán)和女團(tuán)輸出函數(shù)為O(b2/2),
10、查詢某校某項(xiàng)目函數(shù)為O(c*b*5/2),查詢某項(xiàng)目的信息為O(5*b*c/2)。參考文獻(xiàn)1 陳志泊,王春鈴. 面向?qū)ο蟮某绦蛟O(shè)計(jì)語言C+.北京:人民郵電出版社,20042 數(shù)據(jù)結(jié)構(gòu)(C+版),嚴(yán)蔚敏,清華大學(xué)出版社,20103 C語言 楊磊,中國礦業(yè)大學(xué)出版社2012.4 C+程序設(shè)計(jì). 吳乃陵 況迎輝.第2版.高等教育出版社,2012 附錄:#include#include#include #include #define n 2/學(xué)校數(shù)目 #define m 1/男子項(xiàng)目數(shù)目 #define w 1/女子項(xiàng)目數(shù)目#define null 0typedef struct int itemn
11、um; /項(xiàng)目編號 int top; /取名次的數(shù)目 int range5; /名次 int mark5; /分?jǐn)?shù)itemnode; /定義項(xiàng)目結(jié)點(diǎn)的類型typedef structint schoolnum; /學(xué)校編號 int score; /學(xué)校總分 int mscore; /男團(tuán)體總分 int wscore; /女團(tuán)體總分 itemnode cm+w; /項(xiàng)目數(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;
12、hi.mscore=0; hi.wscore=0; /初始化頭結(jié)點(diǎn) for(i=0;in;i+) printf(*學(xué)校編號:); scanf(%d,&hi.schoolnum); /輸入頭結(jié)點(diǎn)信息 for(j=0;jm+w;j+) printf(*項(xiàng)目編號:); scanf(%d,&hi.cj.itemnum); printf(*取前3名or前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
13、(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; 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; bre
14、ak; 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+hi.cj.marks;/是男子項(xiàng)目則記到男子分?jǐn)?shù)里面去 else hi.wscore=hi.wscore+hi.cj.marks;/是女子項(xiàng)目則記到女子項(xiàng)目里面去 printf(n); void
15、output() /輸出函數(shù) int choice,i,j,k;int remembern;int sign; do printf(*1.按學(xué)校編號輸出.*n); printf(*2.按學(xué)??偡州敵?*n); printf(*3.按男團(tuán)總分輸出.*n); printf(*4.按女團(tuán)總分輸出.*n); printf(nn*請選擇編號*nn:); scanf(%d,&choice); switch(choice) case 1:for(i=0;in;i+) printf(nn*學(xué)校編號:%dn,hi.schoolnum); printf(*學(xué)校總分:%dn ,hi.score); printf(*
16、男團(tuán)總分:%dn,hi.mscore); printf(*女團(tuán)總分: %dnnn,hi.wscore); /按編號順序輸出 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; / 用冒泡排序方法,用輔助數(shù)組記住頭結(jié)點(diǎn)下標(biāo) for(i=0;in;i+) printf(“nn*學(xué)校編號:%dn”,hrememberi.schoolnum); printf(*學(xué)
17、??偡?%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=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é)
18、校編號:%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;rememberi=rememberj;remember
19、j=k; for(i=0;in)printf(錯誤:這個(gè)學(xué)校沒有參加此次運(yùn)動會!nnn); elseprintf(要查詢的項(xiàng)目編號:); scanf(%d,&j); if(jm+w|j=0) printf(此次運(yùn)動會沒有這個(gè)項(xiàng)目nnn);/學(xué)校編號超出范圍,則輸出警告 else printf(這個(gè)項(xiàng)目取前 %d名,該學(xué)校的成績?nèi)缦?n, h0.cj-1.top); for(k=0;km+w|s=0)printf(此次運(yùn)動會不包括這個(gè)項(xiàng)目.nnn);/項(xiàng)目編號超出范圍則輸出警告elseprintf(該項(xiàng)目取前 %d名,取得名次的學(xué)校n,h0.cs-1.top);for(i=0; in;i+) f
20、or(j=0;j5;j+) if(hi.cs-1.rangej!=0) printf(學(xué)校編號:%d,名次:%dn,hi.schoolnum,hi.cs-1.rangej); /輸出該項(xiàng)目取得名次學(xué)校的成績 printf(nnn繼續(xù) 2,跳出 0n);scanf(%d,&i);printf(nnn);while(i=2); break;void writedata() /把數(shù)據(jù)存儲在文件中 FILE *report; int i; if(report=fopen(sportsdata.txt,w)=null) printf(不能打開文件n); exit(1); for(i=0;in;i+)fw
21、rite(&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é)校編號:); 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)目編號:); fread(&k,sizeof(int),1,re
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度婚姻財(cái)產(chǎn)分割與權(quán)益保障協(xié)議書3篇
- 2025年滬科新版七年級科學(xué)上冊階段測試試卷
- 二零二五年度大棚建設(shè)與農(nóng)產(chǎn)品銷售代理服務(wù)合同3篇
- 2025年滬教版八年級數(shù)學(xué)下冊階段測試試卷
- 2025年滬教版九年級科學(xué)下冊月考試卷含答案
- 非煤礦山知識培訓(xùn)課件危險(xiǎn)化學(xué)品和非煤礦山知識培訓(xùn)
- 二零二五年度夫妻雙方離婚財(cái)產(chǎn)分割與子女撫養(yǎng)費(fèi)用結(jié)算協(xié)議3篇
- 二零二五年度城市更新項(xiàng)目綜合開發(fā)合作協(xié)議書3篇
- 二零二五年度文化產(chǎn)業(yè)投資基金墊資合同3篇
- 2025年滬科版八年級地理下冊階段測試試卷
- 項(xiàng)目施工員安全生產(chǎn)責(zé)任制考核記錄
- 第一講 馬克思主義中國化時(shí)代化新的飛躍PPT習(xí)概論2023優(yōu)化版教學(xué)課件
- 便攜式血糖儀管理和臨床操作規(guī)范
- 學(xué)校工作總結(jié) 學(xué)校工作總結(jié)美篇標(biāo)題(15篇)
- 高三后期班級管理方法
- 《Windows 網(wǎng)絡(luò)操作系統(tǒng)》-教學(xué)教案
- 2023年醫(yī)院招聘護(hù)士考試試題及參考答案
- 花籃拉桿懸挑架培訓(xùn)課件
- GB/T 7597-2007電力用油(變壓器油、汽輪機(jī)油)取樣方法
- 新合同會簽審批表
- GA 1517-2018金銀珠寶營業(yè)場所安全防范要求
評論
0/150
提交評論