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

下載本文檔

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

文檔簡(jiǎn)介

1、安徽省巢湖學(xué)院計(jì)算機(jī)與信息工程學(xué)院課程設(shè)計(jì)報(bào)告課程名稱(chēng) 數(shù)據(jù)結(jié)構(gòu) 課題名稱(chēng) 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì) 專(zhuān)業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班級(jí) 學(xué)號(hào)姓名 聯(lián)系方式 指導(dǎo)教師20 11 年 12 月 29 日目 錄1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書(shū)1.1、題目1.2、要求2、總體設(shè)計(jì)2.1、功能模塊設(shè)計(jì)2.2、所有功能模塊的流程圖3、詳細(xì)設(shè)計(jì)3.1、程序中所采用的數(shù)據(jù)結(jié)構(gòu)及存儲(chǔ)結(jié)構(gòu)的說(shuō)明3.2、算法的設(shè)計(jì)思想3.3、成員函數(shù)名及功能介紹4、調(diào)試與測(cè)試:4.1、調(diào)試方法與步驟:4.2、測(cè)試結(jié)果的分析與討論:4.3、測(cè)試過(guò)程中遇到的主要問(wèn)題及采取的解決措施:5、時(shí)間復(fù)雜度的分析:6、源程序清單和執(zhí)行結(jié)果7、c程序設(shè)計(jì)總結(jié)8、致謝

2、9、參考文獻(xiàn)1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書(shū)1.1、題目 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)1.2、要求1) 可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績(jī);2) 能統(tǒng)計(jì)各學(xué)校總分,3) 可以按學(xué)校編號(hào)或名稱(chēng)、學(xué)??偡?、男女團(tuán)體總分排序輸出; 4) 可以按學(xué)校編號(hào)查詢(xún)學(xué)校某個(gè)項(xiàng)目的情況;可以按項(xiàng)目編號(hào)查詢(xún)?nèi)〉们叭蚯拔迕膶W(xué)校。5) 數(shù)據(jù)存入文件并能隨時(shí)查詢(xún);6) 規(guī)定:輸入數(shù)據(jù)形式和范圍:可以輸入學(xué)校的名稱(chēng),運(yùn)動(dòng)項(xiàng)目的名稱(chēng)2、總體設(shè)計(jì)2.1、功能模塊設(shè)計(jì)根據(jù)課程設(shè)計(jì)題目的功能要求,各個(gè)功能模塊的組成如下:(1) 主程序模塊:void main( ) 初始化:for ( ) 接受處理命令: 接受處理: (2)學(xué)校的單元模塊實(shí)現(xiàn)

3、有序表的抽象數(shù)據(jù)類(lèi)型:(3)運(yùn)動(dòng)員的結(jié)構(gòu)模塊定義線(xiàn)性表的結(jié)構(gòu)特點(diǎn)。各模塊的之間的調(diào)用關(guān)系如下: 主程序模塊 學(xué)校的單元模塊 運(yùn)動(dòng)員結(jié)構(gòu)單元模塊2.2、所有功能模塊的流程圖開(kāi)始打開(kāi)文件成功?選擇7?選擇1?選擇2?選擇6?選擇3?選擇4?選擇5?調(diào)用output(l)調(diào)用set(l)調(diào)用search1(l)調(diào)用tongfen(l)調(diào)用search2(l)調(diào)用tongfenboy(l)調(diào)用tongfengirl(l)調(diào)用提取函數(shù)loadfile()輸入?yún)①惖膶W(xué)校數(shù)男子項(xiàng)目數(shù)女子項(xiàng)目數(shù)總的參賽人數(shù)使用for循環(huán)重新選擇選擇0?結(jié)束yesnoyesyesyesyesyesyesyesnonononon

4、onoyes3、詳細(xì)設(shè)計(jì)3.1、程序中所采用的數(shù)據(jù)結(jié)構(gòu)及存儲(chǔ)結(jié)構(gòu)的說(shuō)明運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)程序用到的是順序表的數(shù)據(jù)類(lèi)型,由于一開(kāi)始參賽人數(shù)就是確定下來(lái)的,參賽人數(shù)即為順序表表長(zhǎng),故順序表的表長(zhǎng)也就確定下來(lái)了,順序表的主要內(nèi)容有學(xué)校數(shù)、男子項(xiàng)目數(shù)、女子項(xiàng)目數(shù)、總的參賽人數(shù)。節(jié)點(diǎn)主要內(nèi)容包括:學(xué)生的姓名、學(xué)校代號(hào)、項(xiàng)目代號(hào)以及學(xué)生的成績(jī)。 順序表類(lèi)型如下:typedef struct /節(jié)點(diǎn) char name100; /姓名 int xuexiao; /學(xué)校代號(hào) int xiangmu; /項(xiàng)目代號(hào) int score; /成績(jī) schooltype;typedef structschooltype

5、scsize; /順序表int n ; /學(xué)校數(shù)int m;/男子項(xiàng)目數(shù)int w;/女子項(xiàng)目數(shù)int r; /總參賽人數(shù)seqlist;該程序要求統(tǒng)計(jì)各個(gè)學(xué)校的總分及男女項(xiàng)目總分,為便于排序,另用一順序表將計(jì)算出來(lái)的總分放于其中,節(jié)點(diǎn)內(nèi)容包括關(guān)鍵字key(即算出來(lái)的總分)xiaohao(用來(lái)放學(xué)校的代號(hào))解決了排序后能輸出確定的學(xué)校代號(hào)及總分。順序表類(lèi)型如下:typedef struct /節(jié)點(diǎn)int key;/放分int xiaohao;/放學(xué)校代號(hào)recordtype;typedef struct/順序表為方便排序而建立的recordtype rsize; /工作單元list;3.2、算

6、法的設(shè)計(jì)思想?yún)①惾藬?shù)即為順序表表長(zhǎng),在順序表節(jié)點(diǎn)中有成績(jī),在建立學(xué)生信息時(shí)可直接輸入成績(jī),輸入學(xué)生信息時(shí)編碼是自動(dòng)加的,統(tǒng)計(jì)學(xué)校總分或男女項(xiàng)目總分時(shí)都用2個(gè)for循環(huán)來(lái)實(shí)現(xiàn),統(tǒng)計(jì)出來(lái)的得分都可放入另一個(gè)順序表中以便于排序,在查詢(xún)時(shí)用戶(hù)輸入要查詢(xún)的學(xué)校代號(hào)或項(xiàng)目代號(hào)即可查詢(xún),在建立信息時(shí)會(huì)調(diào)用保存在文件的函數(shù)來(lái)實(shí)現(xiàn)學(xué)生信息的保存。結(jié)構(gòu)圖如下:建立函數(shù)開(kāi)始 統(tǒng)計(jì)各學(xué)??偡纸y(tǒng)計(jì)各學(xué)校男子項(xiàng)目總分按項(xiàng)目代號(hào)查輸出函數(shù)按校查某個(gè)項(xiàng)目查詢(xún)統(tǒng)計(jì)各學(xué)校女子項(xiàng)目總分3.3、成員函數(shù)名及功能介紹如下: 成 員 函 數(shù) 名 作 用 set(seqlist *l)建立參賽者信息search1(seqlist *l)按

7、學(xué)校代號(hào)查某個(gè)項(xiàng)目的情況search2(seqlist *l)按項(xiàng)目代號(hào)查取得成績(jī)的學(xué)校tongfen(seqlist *l,list *s)統(tǒng)計(jì)各學(xué)校總分tongfenboy(seqlist *l,list *s)統(tǒng)計(jì)各學(xué)校男子項(xiàng)目總分tongfengirl(seqlist *l,list *s)統(tǒng)計(jì)各學(xué)校女子項(xiàng)目總分output(seqlist *l)輸出seqlist *loadfile()提取到文件函數(shù)savefile(seqlist *s) 保存到文件函數(shù)paixu(seqlist *l,list *s) 直接插入排序4、調(diào)試與測(cè)試:4.1、調(diào)試方法與步驟:本程序主要用來(lái)實(shí)現(xiàn)運(yùn)動(dòng)會(huì)分

8、數(shù)統(tǒng)計(jì),用戶(hù)在使用前需輸入?yún)①惾藬?shù),男子項(xiàng)目數(shù)、女子項(xiàng)目數(shù)以及參賽總?cè)藬?shù),參賽編號(hào)是根據(jù)輸入順序編的,參賽人數(shù)既為順序表表長(zhǎng),在完成這一步后,在提供的可選菜單中用戶(hù)應(yīng)先建立參賽者信息,參賽者信息一次性輸入,如果文件中已保存輸入的菜單,下次就不需要再重新建立參賽者信息了,可直接對(duì)已存的信息進(jìn)行查詢(xún)排序輸出,可根據(jù)菜單選擇。4.2、測(cè)試結(jié)果的分析與討論:4.3、測(cè)試過(guò)程中遇到的主要問(wèn)題及采取的解決措施:1)、程序調(diào)試過(guò)程中常會(huì)出現(xiàn)一些小錯(cuò)誤,如i,j混淆少括號(hào)少分號(hào)等小問(wèn)題都可以按照提示找到,然后改正。2)、語(yǔ)句錯(cuò)誤語(yǔ)句使用不當(dāng)造成程序無(wú)法運(yùn)行出正常的結(jié)果。3)、在排序過(guò)程中輸出的結(jié)果是按總分順序

9、排序的,但是卻不能夠正確的輸出是哪個(gè)學(xué)校的總分,解決方法是在新申請(qǐng)的順序表的節(jié)點(diǎn)中加入了一個(gè)紀(jì)錄學(xué)校代號(hào)的內(nèi)容,在輸出的同時(shí)就可以把學(xué)校代號(hào)也正確的輸出來(lái)了。5、時(shí)間復(fù)雜度的分析:在排序時(shí)用到了直接插入排序,從算法描述中可以看到,在搜索插入位置時(shí),遇到關(guān)鍵字相等的元素就停止比較和移動(dòng)元素,可以確定該算法是穩(wěn)定的排序算法。從空間角度上看,它只需要一個(gè)元素的輔助空間r0。從時(shí)間角度上看,主要時(shí)間耗費(fèi)在關(guān)鍵字的比較和移動(dòng)元素上。n為順序表表長(zhǎng),平均時(shí)間復(fù)雜度為o(n2)最壞時(shí)間復(fù)雜度為o(n2)輔助存儲(chǔ)空間r0。6、源程序清單和執(zhí)行結(jié)果#include#include#include#define

10、null 0#define size 100typedef struct /節(jié)點(diǎn) char name100; /姓名 int xuexiao;/學(xué)校代號(hào) int xiangmu; /項(xiàng)目代號(hào) int score; /成績(jī) schooltype;typedef struct/順序表 schooltype scsize;/工作單元int n;/學(xué)校數(shù)int m;/男子項(xiàng)目數(shù)int w;/女子項(xiàng)目數(shù)int r;/總參賽人數(shù)/int length;seqlist;typedef struct /節(jié)點(diǎn)int key;/放分int xiaohao;/放校代號(hào)recordtype;typedef struc

11、t/順序表為方便排序而建立的recordtype rsize;/工作單元list;void savefile(seqlist *);void set(seqlist *l)int i;for(i=1;ir;i+) printf(依次輸入校代號(hào),項(xiàng)目號(hào),姓名,成績(jī):n); scanf(%d%d%s%d,&l-sci.xuexiao,&l-sci.xiangmu,&l-,&l-sci.score);savefile(l); printf(建立成功!:);void search1(seqlist *l)/按學(xué)校代號(hào)查某個(gè)項(xiàng)目的情況 int i,j,n; printf(輸入學(xué)號(hào)以及要查

12、的項(xiàng)目代號(hào):n); scanf(%d%d,&i,&n); for(j=1;jr;j+) if(l-scj.xuexiao=i&l-scj.xiangmu=n) printf(該學(xué)校在該項(xiàng)目姓名為%s取得成績(jī)%dn,l-,l-scj.score); void search2(seqlist *l)/按項(xiàng)目代號(hào)查取得成績(jī)的學(xué)校int j,k;printf(輸入所要查的項(xiàng)目代號(hào):n);scanf(%d,&k);for(j=1;jr;j+) if(l-scj.xiangmu=k&l-scj.score!=0)printf(學(xué)校代號(hào)%d在該項(xiàng)目姓名%s取得成績(jī)%dn,l-scj.xuex

13、iao,l-,l-scj.score);void tongfen(seqlist *l,list *s)/統(tǒng)計(jì)各學(xué)校總分int i,j,sum;for(i=1;in;i+)sum=0;for(j=1;jr;j+)if(l-scj.xuexiao=i)sum=sum+l-scj.score;s-ri.xiaohao=i; s-ri.key=sum;printf(學(xué)校代號(hào)為%d的學(xué)校取得的總分為%dn,i,sum);void tongfenboy(seqlist *l,list *s)/統(tǒng)計(jì)各學(xué)校男子項(xiàng)目總分int i,j,sum;for(i=1;in;i+)sum=0;for(j

14、=1;jr;j+)if(l-scj.xuexiao=i)if(l-scj.xiangmu)m)|(l-scj.xiangmu)=(l-m) sum=sum+l-scj.score;s-ri.xiaohao=i; s-ri.key=sum;printf(學(xué)校代號(hào)為%d在男子項(xiàng)目取得的總分為%dn,i,sum);void tongfengirl(seqlist *l,list *s)/統(tǒng)計(jì)各學(xué)校女子項(xiàng)目總分int i,j,sum;for(i=1;in;i+)sum=0;for(j=1;jr;j+)if(l-scj.xuexiao=i)if(l-scj.xiangmu)(l-m) sum=sum+l

15、-scj.score;s-ri.xiaohao=i; s-ri.key=sum;printf(學(xué)校代號(hào)為%d在女子項(xiàng)目取得的總分為%dn,i,sum);void paixu(seqlist *l,list *s)/直接插入排序(有監(jiān)視哨)int i,j,k;for(i=1;in;i+)s-r0=s-ri;j=i-1;/將待插元素存到監(jiān)視哨r0中while(s-r0.keyrj.key)/尋找插入位置s-rj+1=s-rj;j=j-1;s-rj+1=s-r0;將待插入元素插入到已排序的序列中printf(排序后輸出為:n);for(k=1;kn;k+)printf(學(xué)校代號(hào)為%d總分為%d:n,

16、s-rk.xiaohao,s-rk.key);void output(seqlist *l)int j;printf(學(xué)校代號(hào) 編號(hào) 項(xiàng)目號(hào) 姓名 成績(jī):n);for(j=1;jr;j+)printf(%dt%dt%dt%st%dn,l-scj.xuexiao,j,l-scj.xiangmu,l-,l-scj.score);seqlist *loadfile()/提取函數(shù)file *fp;char buf100;fp=fopen(運(yùn)動(dòng)員系統(tǒng).txt,r);seqlist *s;s=(seqlist *)malloc(sizeof(seqlist);fscanf(fp,%d%d%

17、d%d,&s-r,&s-n,&s-m,&s-w);for(int i=1;ir;i+)fscanf(fp,%s,buf);strcpy(,buf);fscanf(fp,%d%d%d,&s-sci.xuexiao,&s-sci.xiangmu,&s-sci.score);fclose(fp);return s;void savefile(seqlist *s)/保存函數(shù)file *fp;if(fp=fopen(運(yùn)動(dòng)員系統(tǒng).txt,a+)=null)printf(cannot open the file!n);return;fprintf(fp,%dt,s-r);fprintf

18、(fp,%dt,s-n);fprintf(fp,%dt,s-m);fprintf(fp,%dn,s-w);for(int i=1;ir;i+)fprintf(fp,%st,);fprintf(fp,%dt,s-sci.xuexiao);fprintf(fp,%dt,s-sci.xiangmu);fprintf(fp,%dn,s-sci.score);fclose(fp);int menu_select( ) int i,sn; printf(-歡迎來(lái)到大學(xué)生運(yùn)動(dòng)會(huì)管理系統(tǒng)-n); printf(請(qǐng)您先建立參賽者信息并記錄成績(jī)(1)n);printf(查詢(xún)(按校查某個(gè)項(xiàng)目)(

19、2)n);printf(查詢(xún)(按項(xiàng)目查取得成績(jī)的學(xué)校)(3)n); printf(統(tǒng)計(jì)各學(xué)??偡植⑴判蜉敵?4)n); printf(統(tǒng)計(jì)各學(xué)校男子項(xiàng)目總分并排序輸出(5)n);printf(統(tǒng)計(jì)各學(xué)校女子項(xiàng)目總分并排序輸出(6)n);printf(輸出(7)n);printf(退出(0)n);printf(-請(qǐng)選擇-n);for(i=0;i100;i+ ) scanf( %d, &sn); if( sn7 ) printf(nt輸入錯(cuò)誤,重選07:n); else break; return sn;void main() int m,n,w,r;file *fp;seqlist s,*l=&

20、s;list p,*s=&p;if(fp=fopen(運(yùn)動(dòng)員系統(tǒng).txt,r)=null)l=(seqlist*)malloc(sizeof(seqlist);printf(-歡迎來(lái)到大學(xué)生運(yùn)動(dòng)會(huì)管理系統(tǒng)-n);printf(輸入?yún)①惖膶W(xué)校數(shù),男子項(xiàng)目數(shù),女子項(xiàng)目數(shù),總的參賽人數(shù):n);scanf(%d%d%d%d,&n,&m,&w,&r);printf(n);l-n=n;l-m=m;l-w=w;l-r=r;elsel=loadfile();for(;)switch(menu_select( ) )case 1:set(l);break;case 2:search1(l);break;case 3:search2(l);break;case 4:tongfen(l,s);paixu(l,s);break;case 5:tongfenboy(l,s);paixu(l,s);break;case 6:tongfengirl(l,s);paixu(l,s);break;case 7:output(l);break;case 0:break;

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論