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

下載本文檔

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

文檔簡介

1、 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 題目:運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng) 學(xué)生姓名: 學(xué) 號(hào): 班 級(jí): 指導(dǎo)教師: 2010年 5 月 28 日目 錄一、題目3二、時(shí)間3三、地點(diǎn)3四、程序要求3五、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)41.概述42.關(guān)鍵算法53.查詢操作8六、詳細(xì)代碼9七、測(cè)試結(jié)果211.主菜單窗口213. 統(tǒng)計(jì)各學(xué)??偡?24. 按學(xué)校編號(hào)排序輸出235. 按學(xué)校總分排序輸出236. 按男團(tuán)體總分排序輸出247. 按女團(tuán)體總分排序輸出248. 按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目情況259. 按項(xiàng)目編號(hào)查詢?nèi)〉妹蔚膶W(xué)校25八、 測(cè)試非法數(shù)據(jù)25九、課程設(shè)計(jì)總結(jié)26一、題目:運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)二、時(shí)間:2010.05.2405.

2、28三、地點(diǎn):軟件樓606四、程序要求:任務(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)目取前前三名積分;前三名的積分分別為:5、3、2。(m、w=20,n=10)功能要求:1).可以輸入各個(gè)學(xué)校、各項(xiàng)目、以及各項(xiàng)目前三名的數(shù)據(jù)信息;2)能統(tǒng)計(jì)各學(xué)校總分、男子項(xiàng)目和女子項(xiàng)目總分;3)可以按學(xué)校編號(hào)(或?qū)W校名稱)、學(xué)校總分、男女團(tuán)體總分排序輸出;4).可以按學(xué)校編號(hào)(或?qū)W校名稱)查詢學(xué)校某個(gè)項(xiàng)目的情況;可以按項(xiàng)目編號(hào)查詢?nèi)〉们叭膶W(xué)校。規(guī)定:輸入數(shù)據(jù)形式和范圍:10以內(nèi)的整數(shù)(如果做得更好可以輸入學(xué)校的名稱,運(yùn)動(dòng)項(xiàng)目

3、的名稱)輸出形式:有中文提示,各學(xué)校分?jǐn)?shù)為整形界面要求:有合理的提示,每個(gè)功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。存儲(chǔ)結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計(jì)。請(qǐng)?jiān)谧詈蟮纳辖毁Y料中指明你用到的存儲(chǔ)結(jié)構(gòu);測(cè)試數(shù)據(jù):要求使用1、全部合法數(shù)據(jù);2、整體非法數(shù)據(jù);3、局部非法數(shù)據(jù)。進(jìn)行程序測(cè)試,以保證程序的穩(wěn)定。測(cè)試數(shù)據(jù)及測(cè)試結(jié)果請(qǐng)?jiān)谏辖坏馁Y料中寫明。五、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)1.概述本程序中學(xué)校的存儲(chǔ)結(jié)構(gòu)為鏈表,prev school1 next頭結(jié)點(diǎn)prev school(最后) next其中school類為:class school:public athlete /*學(xué)校*/ public: i

4、nt count; /*學(xué)校獲獎(jiǎng)數(shù)*/ int serial; /*學(xué)校編號(hào)*/ int menscore; /*男選手總分*/ int womenscore; /*女選手總分*/ int totalscore; /*總分*/ athlete athmaxsize; /*獲獎(jiǎng)運(yùn)動(dòng)員信息數(shù)組,包括分?jǐn)?shù),名次,項(xiàng)目*/ school *prev;/前指針 school *next; /后指針;其中部分主要的函數(shù):添加操作add(school* &head)查詢操作checkfunc(school *head,int &n)文件保存save(school *head)總分快速排序tquicksort

5、(vector& v, int first, int last)總分基數(shù)排序 tbasesort(vector& v, int d) 2.關(guān)鍵算法 添加項(xiàng)目號(hào)for ( i = 1 ; i serial =要添加的編號(hào)) (first-athfirst-count).item =要添加的項(xiàng)目號(hào);(first-athfirst-count).range =i(名次) first指向的學(xué)校的項(xiàng)目加一;更新總分break;first = first-next;開始輸入項(xiàng)目編號(hào)temp是數(shù)字ny0temp18ny輸出“項(xiàng)目不存在”學(xué)校遍歷結(jié)束temp存在ynnext schoolntemp是奇數(shù) ny

6、取5名取3名輸入獲獎(jiǎng)的學(xué)校編號(hào)se1senext;輸出向量中的內(nèi)容1. 所有學(xué)??偡纸y(tǒng)計(jì)表2. 學(xué)校成績查詢3. 項(xiàng)目情況查詢4. 返回主菜單1. 按學(xué)校編號(hào)統(tǒng)計(jì)2. 按學(xué)校名次統(tǒng)計(jì)3. 按男團(tuán)總分統(tǒng)計(jì)4. 按女團(tuán)總分統(tǒng)計(jì)5. 返回查詢菜單6. 返回主菜單/按學(xué)校編號(hào)順序輸出所有參賽學(xué)校運(yùn)動(dòng)會(huì)成績void serialsort(vector& v)for(int i=0;iv.size();i+)cout*vi;六、詳細(xì)代碼:#include #include #include #include /#include /*屏幕操作函數(shù)*/ #define max 50 /#define null

7、 0 typedef struct node1 int school; /*學(xué)校編號(hào)*/ int record; /*項(xiàng)目成績*/ struct node1 *next; /*鏈域*/ schools; typedef struct int item; /*項(xiàng)目編號(hào)*/ schools *firstschool; /*鏈域指向鏈表中第一個(gè)結(jié)點(diǎn)*/ item; typedef struct int z; /* 項(xiàng)目總數(shù) */ item amax; allitems; typedef struct node2 int item; /*該學(xué)校獲獎(jiǎng)的項(xiàng)目*/ int record; /*項(xiàng)目成績*/

8、struct node2 *next; /*鏈域*/ items; typedef struct int school; /*學(xué)校編號(hào)*/ int score; /*學(xué)??偡?/ int boys; /*男團(tuán)體總分*/ int girls; /*女團(tuán)體總分*/ items *firstitem; /*鏈域指向鏈表中第一個(gè)獲獎(jiǎng)項(xiàng)目的結(jié)點(diǎn)*/ schnode; typedef struct int n; /* 學(xué)校總數(shù) */ schnode bmax; allnode; allitems *g1; allnode *g2; void funct1(allitems *g1,allnode *g2)

9、 schools *p1; items *p2; int i,j,k,m,w,h,x; p1=(schools *)malloc(sizeof(schools); p2=(items *)malloc(sizeof(items); if(!p1|!p2) exit(1); nn); printf(n *輸入各個(gè)項(xiàng)目信息 * nn); printf( 輸入男子項(xiàng)目總數(shù)m:); scanf(%d,&m); if(m20) printf( 輸入有誤,m是20以內(nèi)的整數(shù),請(qǐng)重新輸入:); scanf(%d,&m); printf( 輸入女子項(xiàng)目總數(shù)w:); scanf(%d,&w); if(w20)

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

11、or(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; g2-b0.girls=0; while(i!=0) printf(n 項(xiàng)目:); scanf(%d,&i); if(i!=0) printf( 1.前三名 2.前五名n); printf( 請(qǐng)選擇:); scanf(%d,&j); if(j!=1&j!=2) printf( 輸入有誤,請(qǐng)重新選擇:); scanf(%d,&j); if(j=1) h=3

12、; do printf( 第%d名:學(xué)校(學(xué)校編號(hào)為數(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.firstschool; g1-ai.firstschool=p1; p2-next=g2-bx.

13、firstitem; g2-bx.firstitem=p2; g2-bx.score=g2-bx.score+p2-record; /* 累計(jì)總分 */ if(ibx.boys=g2-bx.boys+p2-record; /* 累計(jì)男團(tuán)體總分 */ else g2-bx.girls=g2-bx.girls+p2-record; /* 累計(jì)女團(tuán)體總分 */ h-; while(x!=0&h!=0); if(j=2) h=5; do printf( 第%d名:學(xué)校(學(xué)校編號(hào)為數(shù)字),h); scanf(%d,&x); p1=(schools *)malloc(sizeof(schools); p1

14、-school=x; p2=(items *)malloc(sizeof(items); p2-item=i; 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.firstschool; g1-ai.firstschool=p1; p2-next=g2-bx.firstitem; g2-bx.firstitem

15、=p2; g2-bx.score=g2-bx.score+p2-record; /* 累計(jì)總分 */ if(ibx.boys=g2-bx.boys+p2-record; /* 累計(jì)男團(tuán)體總分 */ else g2-bx.girls=g2-bx.girls+p2-record; /* 累計(jì)女團(tuán)體總分 */ h-; while(x!=0&h!=0); void save() file *fp1,*fp2; fp1=(file *)malloc(sizeof(file); fp2=(file *)malloc(sizeof(file); if(fp1=fopen(sports1,wb)=null)

16、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) printf(file write error.n); fclose(fp2); void funct2(allnode *g2) /* 輸出各學(xué)???/p>

17、分 */ int k; printf(nn * 輸出各學(xué)??偡?*n); printf( 學(xué)校編號(hào)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é)校編號(hào)排序輸出 */ int k; items *p2; p2=(items *)malloc(sizeof(items); printf(nn * 按學(xué)校編號(hào)排序輸出 *n); printf( 學(xué)校編號(hào)ttt

18、獲獎(jiǎng)情況 n); scanf(%d,&k); for(k=1;kn;k+) printf(tttttt%dt,k); p2=g2-bk.firstitem; while(p2!=null) printf(項(xiàng)目%d:得%d分 ,p2-item,p2-record); p2=p2-next; printf(n); printf(n); system(pause); printf(按任意鍵返回主菜單.); getchar(); void funct4(allnode *g2) /* 按學(xué)??偡峙判蜉敵?*/ int i,j,k; items *p2; printf(nn * 按學(xué)校總分排序輸出 *n

19、); printf( 學(xué)校編號(hào)tt總分 n); scanf(%d,&k); /printf(輸入要查詢的項(xiàng)目編號(hào):); 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; 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; w

20、hile(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.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.s

21、core); system(pause); printf(按任意鍵返回主菜單.); getchar(); void funct5(allnode *g2) /* 按男團(tuán)體總分排序輸出 */ int i,j,k; items *p2; p2=(items *)malloc(sizeof(items); printf(nn * 按男團(tuán)體總分排序輸出 *n); printf(學(xué)校編號(hào)tt男團(tuán)體總分 n); scanf(%d,&k); /printf(輸入要查詢的學(xué)校編號(hào):); for(i=2;in;i+) printf(%dt,k); p2=g2-bk.firstitem; while(p2!=nu

22、ll) 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.school=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

23、-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.boys); system(pause); / 暫停等待 printf(按任意鍵返回主菜單.); getchar(); void funct6(allnode *g2) /* 按女團(tuán)體總分排序輸出 */ int i,j,k; items *p2; p2

24、=(items *)malloc(sizeof(items); printf(nn * 按女團(tuán)體總分排序輸出 *n); printf(學(xué)校編號(hào)tt女團(tuán)體總分 n); scanf(%d,&k); / printf(輸入要查詢的項(xiàng)目編號(hào):); for(i=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;

25、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+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

26、.school; for(k=1;kn;k+) printf(%dtt %dn,g2-bk.school,g2-bk.girls); system(pause); printf(按任意鍵返回主菜單.); getchar(); void funct7(allnode *g2) /* 按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目情況 */ int i,j; items *p2; printf(n * 按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目情況 *n); printf( 輸入要查詢的學(xué)校編號(hào):); scanf(%d,&i); printf( 輸入要查詢的項(xiàng)目編號(hào):); scanf(%d,&j); p2=g2-bi.firstit

27、em; while(p2!=null) if(p2-item=j) printf( 學(xué)校編號(hào):%dt項(xiàng)目%d:得%d分n,i,p2-item,p2-record); p2=p2-next; printf(n); system(pause); printf( 按任意鍵返回主菜單.); getchar(); void funct8(allitems *g1) /* 按項(xiàng)目編號(hào)查詢?nèi)〉妹蔚膶W(xué)校 */ int i; schools *p1; printf(n* 按項(xiàng)目編號(hào)查詢?nèi)〉妹蔚膶W(xué)校 *n); printf(輸入要查詢的項(xiàng)目編號(hào):); scanf(%d,&i); printf(項(xiàng)目編號(hào)ttt取

28、得名次的學(xué)校n); printf(%dt,i); p1=g1-ai.firstschool; while(p1!=null) printf( 學(xué)校%d:得%d分 ,p1-school,p1-record); p1=p1-next; printf(nn); system(pause); printf(按任意鍵返回主菜單.); getchar(); void main() int t; g2=(allnode*)malloc(sizeof(allnode); g1=(allitems*)malloc(sizeof(allitems); if(!g2|!g1) exit(1); /textcolor

29、(white); /textbackground(blue); /clrscr(); system(cls); for(;) printf(tt* * * * * * * * * * * * * * * * * * * * * * *n); printf(tt 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng) n); printf(tt* * * * * * * * * * * * * * * * * * * * * * *n); printf(tt* 1.輸入各個(gè)項(xiàng)目成績并存儲(chǔ)文件 *t n); printf(tt* 2.統(tǒng)計(jì)各學(xué)??偡?*t n); printf(tt* 3.按學(xué)校編號(hào)排序輸出 *t n); print

30、f(tt* 4.按學(xué)??偡峙判蜉敵?*t n); printf(tt* 5.按男團(tuán)體總分排序輸出 *t n); printf(tt* 6.按女團(tuán)體總分排序輸出 *t n); printf(tt* 7.按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目情況 *t n); printf(tt* 8.按項(xiàng)目編號(hào)查詢?nèi)〉妹蔚膶W(xué)校 *n); printf(tt* 0.退出 *n); printf(tt* * * * * * * * * * * * * * * * * * * * * * *n); printf(tt n); printf(tt n); printf(tt n); printf(tt 請(qǐng)選擇(0-8):); l

31、oop:scanf(%d,&t); system(cls); switch(t) case 1:funct1(g1,g2);save();break; case 2:funct2(g2);break; case 3:funct3(g2);break; case 4:funct4(g2);break; case 5:funct5(g2);break; case 6:funct6(g2);break; case 7:funct7(g2);break; case 8:funct8(g1);break; case 0:exit(0); default: printf(輸入有誤,請(qǐng)重新選擇:); goto loop; /clrscr(); system(cls); 七、測(cè)試結(jié)果1.主菜單窗口2. 輸入各個(gè)項(xiàng)目成績并存儲(chǔ)文件 3. 統(tǒng)計(jì)各學(xué)校總分4. 按學(xué)校編號(hào)排序輸出 5. 按學(xué)??偡峙判蜉敵?/p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論