版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計(jì) 報(bào) 告</p><p> 課程名稱 數(shù)據(jù)結(jié)構(gòu) </p><p> 課題名稱 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì) </p><p> 專 業(yè) </p><p> 班 級(jí) &
2、lt;/p><p> 學(xué) 號(hào) </p><p> 姓 名 </p><p> 指導(dǎo)老師 </p><p> 2013年 6 月 29 日</p><p><b> 課程設(shè)計(jì)內(nèi)容</b></p&
3、gt;<p><b> 1.課程設(shè)計(jì)目的:</b></p><p> 課程設(shè)計(jì)是對(duì)學(xué)生的一種全面綜合訓(xùn)練,是與課堂聽講、自學(xué)和練習(xí)相輔相成的必不可少的一個(gè)教學(xué)環(huán)節(jié)。通常,實(shí)習(xí)題中的問題比平時(shí)的習(xí)題復(fù)雜得多,也更接近實(shí)際。實(shí)習(xí)著眼于原理與應(yīng)用的結(jié)合點(diǎn),使讀者學(xué)會(huì)如何把書上學(xué)到的知識(shí)用于解決實(shí)際問題,培養(yǎng)軟件工作所需要的動(dòng)手能力;另一方面,能使書上的知識(shí)變“活”,起到深化理解和
4、靈活掌握教學(xué)內(nèi)容的目的。平時(shí)的練習(xí)較偏重于如何編寫功能單一的“小”算法,而實(shí)習(xí)題是軟件設(shè)計(jì)的綜合訓(xùn)練,包括問題分析、總體結(jié)構(gòu)設(shè)計(jì)、用戶界面設(shè)計(jì)、程序設(shè)計(jì)基本技能和技巧,多人合作,以至一整套軟件工作規(guī)范的訓(xùn)練和科學(xué)作風(fēng)的培養(yǎng)。</p><p><b> 課程設(shè)計(jì)題目</b></p><p><b> 1)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)</b></p>
5、;<p> 任務(wù):參加運(yùn)動(dòng)會(huì)有n個(gè)學(xué)校,學(xué)校編號(hào)為1……n。比賽分成m個(gè)男子項(xiàng)目,和w個(gè)女子項(xiàng)目。項(xiàng)目編號(hào)為男子1……m,女子m+1……m+w。不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生自己設(shè)定。(m<=20,n<=20)</p><p><b> 功能要求:</b><
6、;/p><p> 可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績;</p><p><b> 能統(tǒng)計(jì)各學(xué)??偡?;</b></p><p> 可以按學(xué)校編號(hào)、學(xué)??偡?、男女團(tuán)體總分排序輸出;</p><p> 可以按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況;可以按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。 </p><p&
7、gt; 規(guī)定:輸入數(shù)據(jù)形式和范圍:20以內(nèi)的整數(shù)(如果做得更好可以輸入學(xué)校的名稱,運(yùn)動(dòng)項(xiàng)目的名稱)</p><p> 輸出形式:有中文提示,各學(xué)校分?jǐn)?shù)為整形</p><p> 界面要求:有合理的提示,每個(gè)功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。</p><p> 存儲(chǔ)結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計(jì),但是要求運(yùn)動(dòng)會(huì)的相關(guān)數(shù)據(jù)要存儲(chǔ)在數(shù)據(jù)文件
8、中。(數(shù)據(jù)文件的數(shù)據(jù)讀寫方法等相關(guān)內(nèi)容在c語言程序設(shè)計(jì)的書上,請(qǐng)自學(xué)解決)請(qǐng)?jiān)谧詈蟮纳辖毁Y料中指明你用到的存儲(chǔ)結(jié)構(gòu);</p><p> 測(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料中寫明;</p><p><b> 目 錄</b></p><p>
9、;<b> 1需求分析1</b></p><p><b> 2.概要設(shè)計(jì)1</b></p><p><b> 3. 詳細(xì)設(shè)計(jì)3</b></p><p> 3.1 數(shù)據(jù)結(jié)構(gòu)定義3</p><p> 3.2統(tǒng)計(jì)輸出模塊3</p><p>
10、 3.3排序輸出函數(shù)6</p><p> 3.4查詢函數(shù)11</p><p><b> 4.調(diào)試分析15</b></p><p> 5. 程序使用及說明15</p><p> 6. 測(cè)試結(jié)果15</p><p><b> 7. 總結(jié)18</b><
11、/p><p><b> 8. 附錄18</b></p><p><b> 1需求分析</b></p><p> 本系統(tǒng)主要是運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)方案設(shè)計(jì)。根據(jù)具體情況選擇輸入?yún)⒓禹?xiàng)目的男女類別和取成績名次類別;最后選擇輸入名次。運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)方案適合采用結(jié)構(gòu)體數(shù)組,為了實(shí)現(xiàn)系統(tǒng)功能,主要應(yīng)實(shí)現(xiàn)以下幾部分:程序以用戶和計(jì)算機(jī)對(duì)
12、話方式進(jìn)行,即在計(jì)算機(jī)終端上顯示提示信息之后,由用戶輸入進(jìn)行查詢成績的操作:產(chǎn)生各學(xué)校的成績單,包括:各學(xué)校所取得的每項(xiàng)成績的項(xiàng)目號(hào)、名次(成績)、姓名和得。產(chǎn)生團(tuán)體總分報(bào)表,內(nèi)容包括校號(hào)、男子團(tuán)體總分、女子團(tuán)子總分和團(tuán)體總分,然后進(jìn)行數(shù)據(jù)保存操作。并且應(yīng)該提供鍵盤式選擇菜單實(shí)現(xiàn)功能選擇。由于運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)需要處理大量的數(shù)據(jù),所以在運(yùn)行期間,為了避免在運(yùn)行大量數(shù)據(jù)時(shí)出錯(cuò),并且系統(tǒng)能夠在很短的時(shí)間內(nèi)將運(yùn)行結(jié)果穩(wěn)定準(zhǔn)確輸出,就需要系統(tǒng)達(dá)到安
13、全性能好,可靠性高,穩(wěn)定性強(qiáng),處理數(shù)據(jù)迅速等特點(diǎn)。</p><p><b> 2.概要設(shè)計(jì)</b></p><p> 按照課題要求,在設(shè)計(jì)時(shí)將本系統(tǒng)分為比賽成績輸入、比賽成績輸出、查詢比賽成績和調(diào)用統(tǒng)計(jì)結(jié)果幾個(gè)功能模塊,并且將對(duì)錄入的分?jǐn)?shù)按照各項(xiàng)成績得分以及團(tuán)體總分排序。系統(tǒng)定義數(shù)據(jù)時(shí)使用結(jié)構(gòu)體和結(jié)構(gòu)體數(shù)組來存儲(chǔ)信息數(shù)據(jù),輸入基本信息后由系統(tǒng)統(tǒng)計(jì)總分的內(nèi)容并全部存
14、入文件file中,在排序輸出中使用冒泡排序法進(jìn)行不同關(guān)鍵字的排序,查詢函數(shù)采用順序表的查找來完成。在設(shè)計(jì)中采用了按照模塊功能來實(shí)現(xiàn)程序的功能,每個(gè)模塊完成系統(tǒng)的部分功能。具體情況將詳細(xì)設(shè)計(jì)中做具體介紹。</p><p> 圖1 系統(tǒng)功能模塊</p><p><b> 比賽成績輸入模塊</b></p><p> 比賽成績輸入模塊分為:創(chuàng)
15、建信息部分,該部分需輸入學(xué)校編號(hào),項(xiàng)目編號(hào),取得的名次,以及哪些名次;算法部分,得到排序結(jié)果。 </p><p><b> 比賽成績輸出模塊</b></p><p> 將以輸入的數(shù)據(jù)按照輸出比賽菜單的選擇輸出相應(yīng)的數(shù)據(jù)。</p><p><b> 查詢比賽成績模塊</b></p><p>
16、按照查詢比賽結(jié)果菜單和其查詢方式子菜單查詢需要的數(shù)據(jù)。</p><p><b> 調(diào)用統(tǒng)計(jì)結(jié)果</b></p><p> 將輸入的各學(xué)校運(yùn)動(dòng)會(huì)成績排序輸出。</p><p><b> 3. 詳細(xì)設(shè)計(jì)</b></p><p> 3.1 數(shù)據(jù)結(jié)構(gòu)定義:</p><p>
17、 typedef struct</p><p><b> { </b></p><p> int inum; /*項(xiàng)目編號(hào)*/</p><p> int top; /*取名次的數(shù)目*/</p><p> int range[5]; /*名次*/</p>
18、<p> int mark[5]; /*分?jǐn)?shù)*/</p><p> }itemnode; /*存放項(xiàng)目信息*/</p><p> typedef struct </p><p><b> {</b></p><p> int snum; /*
19、學(xué)校編號(hào)*/</p><p> int score; /*學(xué)??偡?/</p><p> int mscore; /*男團(tuán)體總分*/</p><p> int wscore; /*女團(tuán)體總分*/</p><p> itemnode t[m0+w0]; /*項(xiàng)目數(shù)組*/</p>
20、<p> }snode; /*存放學(xué)校信息*/</p><p> snode a[n0]; /* 定義一個(gè)學(xué)校數(shù)組*/</p><p> 3.2統(tǒng)計(jì)輸出模塊:</p><p> 比賽成績輸入模塊需要輸入學(xué)校編號(hào),項(xiàng)目編號(hào),取得的名次,以及哪些名次。算法模塊流程圖如圖2所示.此模塊定義變量i,j,k,
21、s;先初始化儲(chǔ)存分?jǐn)?shù)的數(shù)組各元素,for循環(huán)實(shí)現(xiàn)各學(xué)校信息的輸入,包括學(xué)校編號(hào)、項(xiàng)目編號(hào)、取前3名or前5名、獲得幾個(gè)名次,使用switch語句實(shí)現(xiàn)對(duì)輸入的各個(gè)名次賦予對(duì)應(yīng)的分?jǐn)?shù)。</p><p> void output(int n,int m,int w) /*統(tǒng)計(jì)輸出*/</p><p><b> {</b></p><p>
22、readfromfile();</p><p> int i,j,s,q=0;</p><p> for(i=0;i<n;i++) /*顯示結(jié)果*/</p><p><b> {</b></p><p> printf(&quo
23、t;學(xué)校編號(hào):%d 學(xué)校總分:%d 男團(tuán)總分:%d 女團(tuán)總分:%d\n",a[i].snum,a[i].score,a[i].mscore,a[i].wscore);</p><p> for(j=0;j<m+w;j++)</p><p><b> {</b></p><p> printf("項(xiàng)目編號(hào):%
24、d 所取名次數(shù)量:%d\n",a[i].t[j].inum,a[i].t[j].top);</p><p> for(s=0;s<5;s++)</p><p><b> {</b></p><p> if(a[i].t[j].range[s]!=0)</p><p> printf("
25、名次:%d 分?jǐn)?shù):%d\n",a[i].t[j].range[s],a[i].t[j].mark[s]);</p><p><b> }</b></p><p><b> }</b></p><p> printf("\n");</p><p><b>
26、; }</b></p><p> printf("\n");</p><p> while(q!=1)</p><p><b> {</b></p><p> printf("統(tǒng)計(jì)完畢!返回? 1是 2否"); /*返回菜單*/</p>
27、<p> scanf("%d",&q);</p><p> printf("\n");</p><p><b> }</b></p><p> printf("\n");</p><p> menu(n,m,w);</p>
28、<p><b> }</b></p><p> 圖2比賽成績輸入模塊</p><p> 3.3排序輸出函數(shù):</p><p> 比賽成績輸出模塊實(shí)現(xiàn)按要求輸出相應(yīng)的數(shù)據(jù)。有以下輸出選項(xiàng):按學(xué)校編號(hào)輸出、按學(xué)校總分輸出、按男團(tuán)總分輸出、按女團(tuán)總分輸出。for循環(huán)實(shí)現(xiàn)輸出各個(gè)方式輸出的每個(gè)數(shù)據(jù)。排序輸出流程圖如圖3所示。<
29、;/p><p> void sortput(int n,int m,int w) /*排序輸出函數(shù)*/ </p><p><b> {</b></p><p> readfromfile();</p><p> int c,i,j,k,q=0;</p><p>
30、int temp[n0];</p><p> printf("\t**************排序輸出系統(tǒng)**************\n\n");</p><p> printf("\t\t****1.按學(xué)校編號(hào)輸出****\n");</p><p> printf("\t\t****2.按學(xué)??偡州敵?**
31、*\n");</p><p> printf("\t\t****3.按男團(tuán)總分輸出****\n");</p><p> printf("\t\t****4.按女團(tuán)總分輸出****\n");</p><p><b> do</b></p><p><b>
32、 {</b></p><p> printf("請(qǐng)選擇要實(shí)現(xiàn)功能的編號(hào)(1——4):");</p><p> scanf("%d",&c);</p><p><b> switch(c)</b></p><p><b> {</b>
33、</p><p><b> case 1: </b></p><p> for(i=0;i<n;i++)</p><p> temp[i]=i;</p><p> for(i=0;i<n;i++)</p><p><b> { </b></p>
34、;<p> for(j=i+1;j<n;j++)</p><p> if(a[temp[i]].snum>a[j].snum)</p><p><b> { </b></p><p> k=temp[i];</p><p> temp[i]=temp[j];</p>&l
35、t;p> temp[j]=k;</p><p><b> }</b></p><p> } /* 用冒泡排序方法排序*/</p><p> for(i=0;i<n;i++)</p><p><b> {</b></p><p>
36、 printf("學(xué)校編號(hào):%d 學(xué)??偡?%d 男團(tuán)總分:%d 女團(tuán)總分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);</p><p> } /*按學(xué)校編號(hào)輸出*/</p><p>
37、 break; </p><p> case 2: </p><p> for(i=0;i<n;i++)</p><p> temp[i]=i;</p><p> for(i=0;i<n;i++)</p><p><b> { </b></
38、p><p> for(j=i+1;j<n;j++)</p><p> if(a[temp[i]].score<a[j].score)</p><p><b> { </b></p><p> k=temp[i];</p><p> temp[i]=temp[j];</p&g
39、t;<p> temp[j]=k;</p><p><b> }</b></p><p> } /* 用冒泡排序方法排序*/</p><p> for(i=0;i<n;i++)</p><p><b> {</b></p><
40、;p> printf("學(xué)校編號(hào):%d 學(xué)??偡?%d 男團(tuán)總分:%d 女團(tuán)總分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);</p><p> } /*按學(xué)校總分輸出*/</p><
41、p><b> break;</b></p><p> case 3: </p><p> for(i=0;i<n;i++)</p><p> temp[i]=i;</p><p> for(i=0;i<n;i++)</p><p><b> { <
42、/b></p><p> for(j=i+1;j<n;j++)</p><p> if(a[temp[i]].mscore<a[j].mscore)</p><p><b> { </b></p><p> k=temp[i];</p><p> temp[i]=tem
43、p[j];</p><p> temp[j]=k;</p><p><b> }</b></p><p> } /* 用冒泡排序方法排序*/</p><p> for(i=0;i<n;i++)</p><p><b> {</b>&l
44、t;/p><p> printf("學(xué)校編號(hào):%d 學(xué)??偡?%d 男團(tuán)總分:%d 女團(tuán)總分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);</p><p> } /*按男團(tuán)總分輸出*/<
45、;/p><p><b> break; </b></p><p> case 4: </p><p> for(i=0;i<n;i++)</p><p> temp[i]=i;</p><p> for(i=0;i<n;i++)</p><p>&l
46、t;b> { </b></p><p> for(j=i+1;j<n;j++)</p><p> if(a[temp[i]].wscore<a[j].wscore)</p><p><b> { </b></p><p> k=temp[i];</p><p&g
47、t; temp[i]=temp[j];</p><p> temp[j]=k;</p><p><b> }</b></p><p> } /* 用冒泡排序方法排序*/</p><p> for(i=0;i<n;i++)</p><p><b>
48、 {</b></p><p> printf("學(xué)校編號(hào):%d 學(xué)??偡?%d 男團(tuán)總分:%d 女團(tuán)總分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);</p><p> }
49、 /*按女圖總分輸出*/</p><p><b> break; </b></p><p><b> default: </b></p><p> printf("輸入錯(cuò)誤,請(qǐng)重試!\n");</p><p><b> }</b></p&g
50、t;<p> printf("請(qǐng)選擇 1 返回主菜單 0繼續(xù)"); /*返回菜單或繼續(xù)排序*/</p><p> scanf("%d",&q);</p><p> printf("\n");</p><p> }while(q==0);</p>
51、<p> printf("\n");</p><p><b> if(q!=0)</b></p><p> menu(n,m,w);</p><p><b> }</b></p><p> 圖3 排序結(jié)果輸出流程圖</p><p>&l
52、t;b> 3.4查詢函數(shù):</b></p><p> 此模塊實(shí)現(xiàn)查詢的兩種方式的選擇,當(dāng)i>n時(shí)輸出錯(cuò)誤:這個(gè)學(xué)校沒有參加此次運(yùn)動(dòng)會(huì)! 否則,輸入項(xiàng)目編號(hào),如果j>m+w||j==0,輸出此次運(yùn)動(dòng)會(huì)沒有這個(gè)項(xiàng)目。否則,使用for循環(huán)輸出相關(guān)數(shù)據(jù),從而實(shí)現(xiàn)查詢功能。</p><p> void search(int n,int m,int w)
53、 /*查詢函數(shù)*/ </p><p><b> {</b></p><p> readfromfile();</p><p> int c,i,j,k,d,l,q=0;</p><p> printf("\t****************查詢系統(tǒng)****************\
54、n\n");</p><p> printf("\t\t****1.按學(xué)校編號(hào)查詢****\n");</p><p> printf("\t\t****2.按項(xiàng)目編號(hào)查詢****\n");</p><p><b> do</b></p><p><b>
55、 {</b></p><p> k=-1;d=-1;l=-1;</p><p> printf("請(qǐng)選擇要實(shí)現(xiàn)功能的編號(hào)(1——2):");</p><p> scanf("%d",&c);</p><p><b> switch(c)</b></
56、p><p><b> {</b></p><p><b> case 1:</b></p><p> printf("要查詢的學(xué)校編號(hào):"); /*查找學(xué)校編號(hào)下標(biāo)*/</p><p> scanf("%d",&c);</p>
57、;<p> for(i=0;i<n;i++)</p><p><b> {</b></p><p> if(a[i].snum==c)</p><p><b> k=i;</b></p><p><b> }</b></p><
58、p><b> if(k==-1)</b></p><p> printf("錯(cuò)誤:這個(gè)學(xué)校沒有參加此次運(yùn)動(dòng)會(huì)!\n");</p><p><b> else</b></p><p><b> {</b></p><p> printf(&qu
59、ot;要查詢的項(xiàng)目編號(hào):"); /*查找項(xiàng)目編號(hào)下標(biāo)*/</p><p> scanf("%d",&c);</p><p> for(j=0;j<m+w;j++)</p><p><b> {</b></p><p> if(a[k].t[j].inum
60、==c)</p><p><b> d=j;</b></p><p><b> }</b></p><p><b> if(d==-1)</b></p><p> printf("此次運(yùn)動(dòng)會(huì)沒有這個(gè)項(xiàng)目\n");</p><p&g
61、t; else /*顯示結(jié)果*/</p><p><b> { </b></p><p> printf("這個(gè)項(xiàng)目取前 %d名,該學(xué)校的成績?nèi)缦?\n", a[k].t[d].top);</p><p> for(i=0;
62、i<5;i++)</p><p> if(a[k].t[d].range[i]!=0)</p><p> printf("名次:%d\n",a[k].t[d].range[i]);</p><p><b> }</b></p><p><b> }</b></
63、p><p> break; </p><p><b> case 2:</b></p><p> printf("要查詢的項(xiàng)目編號(hào):"); /*查找項(xiàng)目編號(hào)下標(biāo)*/</p><p> scanf("%d",&c);<
64、/p><p> for(i=0;i<n;i++)</p><p> for(j=0;j<m+w;j++)</p><p> if(a[i].t[j].inum==c)</p><p><b> l=j;</b></p><p><b> if(l==-1)</b&
65、gt;</p><p> printf("此次運(yùn)動(dòng)會(huì)沒有這個(gè)項(xiàng)目\n");</p><p> else /*顯示結(jié)果*/</p><p><b> {</b></p><p> printf
66、("該項(xiàng)目取前 %d名,取得名次的學(xué)校\n",a[0].t[l].top);</p><p> for(i=0; i<n;i++)</p><p> for(j=0;j<5;j++)</p><p> if(a[i].t[l].range[j]!=0)</p><p> printf("學(xué)校編
67、號(hào):%d,名次:%d\n",a[i].snum,a[i].t[l].range[j]); </p><p><b> }</b></p><p><b> break;</b></p><p><b> default: </b></p><p> print
68、f("輸入錯(cuò)誤,請(qǐng)重試!\n");</p><p><b> }</b></p><p> printf("請(qǐng)選擇 1 返回主菜單 0繼續(xù)"); /*返回菜單或繼續(xù)查詢*/</p><p> scanf("%d",&q);</p><p>
69、; printf("\n");</p><p> }while(q==0);</p><p> printf("\n");</p><p><b> if(q!=0)</b></p><p> menu(n,m,w);</p><p><b&
70、gt; }</b></p><p> 圖4 查詢函數(shù)流程圖</p><p><b> 4.調(diào)試分析</b></p><p> 調(diào)試過程主要是運(yùn)行編制好的程序,然后遇到錯(cuò)誤后根據(jù)系統(tǒng)的提示,找到相關(guān)的問題所在。本系統(tǒng)調(diào)試過程中遇到的主要問題、原因和解決方法如下面介紹。</p><p> 調(diào)試過程中出現(xiàn)
71、的問題和處理方式:</p><p><b> 程序出現(xiàn)語法錯(cuò)誤</b></p><p> 發(fā)現(xiàn)是輸入名次信息的地方忘帶地址符&。 添加取地址符。</p><p> printf("*****名次:");</p><p> scanf("%d",&h[i].c
72、[j].range[s]);</p><p> ?。?)在輸出模塊不能將全部的學(xué)校信息輸出,屬于算法編寫錯(cuò)誤,正確的程序應(yīng)該為:if(h[remember[i]].mscore<h[j].mscore)</p><p> k=remember[i];remember[i]=remember[j];remember[j]=k;</p><p> 5. 程序使
73、用及說明</p><p> 本程序的運(yùn)行環(huán)境為Microsoft Visual C++6.0,在進(jìn)入該程序軟件打開文檔,然后對(duì)本程序進(jìn)行調(diào)試,調(diào)試完畢,用戶可根據(jù)需求從主菜單選擇相應(yīng)的功能,</p><p> 用戶根據(jù)窗口的提示進(jìn)行操作,依自己的需求選擇相應(yīng)序號(hào)調(diào)用功能函數(shù)對(duì)用戶需求進(jìn)行單獨(dú)運(yùn)算。</p><p><b> 6. 測(cè)試結(jié)果</b
74、></p><p> 軟件測(cè)試是軟件生存期中的一個(gè)重要階段,是軟件質(zhì)量保證的關(guān)鍵步驟從用戶的角度來看,普遍希望通過軟件測(cè)試暴露軟件中隱藏的錯(cuò)誤和缺陷,所以軟件測(cè)試應(yīng)該是“為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程”。或者說,軟件測(cè)試應(yīng)該根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測(cè)試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤或缺陷。過度測(cè)試則會(huì)浪費(fèi)許多寶貴的資源。到
75、測(cè)試后期,即使找到了錯(cuò)誤,然而付出了過高的代價(jià)。</p><p><b> 圖5 信息的錄入</b></p><p> 圖6 參賽學(xué)校信息統(tǒng)計(jì)輸出</p><p> 圖7 學(xué)校成績排序輸出</p><p><b> 圖8 查詢輸出</b></p><p><b
76、> 7. 總結(jié)</b></p><p> 經(jīng)過數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)時(shí)間學(xué)習(xí),我對(duì)數(shù)據(jù)結(jié)構(gòu)有了更進(jìn)一步的認(rèn)識(shí)和了解,但在實(shí)踐的過程中,也發(fā)現(xiàn)自己很多不足之處。但是在課程設(shè)計(jì)的過程中,雖然遇到了很多問題,但最終差不多也都解決了。我發(fā)現(xiàn)在實(shí)踐過程中出現(xiàn)的錯(cuò)誤有的時(shí)候只是一些很小的邏輯錯(cuò)誤,表明在整個(gè)過程中不夠細(xì)心。另外,這次的課程設(shè)計(jì),我們是兩個(gè)人合作完成的,多個(gè)人思考多個(gè)力量,在整個(gè)過程中,我們互相
77、幫助,能更好更快地解決了我們面臨的難題。另外,由于此次課程設(shè)計(jì)用到數(shù)據(jù)文件的知識(shí),而這些知識(shí)課堂上學(xué)的很少,所以需要我們自學(xué)一些有關(guān)知識(shí),所以對(duì)一些函數(shù)的應(yīng)用不太熟悉,但是經(jīng)過此次課程設(shè)計(jì),我們隊(duì)對(duì)文件的讀寫也有了更深的了解,也在一定程度上培養(yǎng)了我的自學(xué)能力。</p><p> 經(jīng)過C語言和數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)比較,我發(fā)現(xiàn)數(shù)據(jù)結(jié)構(gòu)與C語言有很大的不同,C語言不需要考慮存儲(chǔ)結(jié)構(gòu)之類的,只需要定義個(gè)變量或數(shù)組,集中精力于
78、算法之上,而數(shù)據(jù)結(jié)構(gòu)前期的整體規(guī)劃和構(gòu)思非常重要,先確立合理的存儲(chǔ)結(jié)構(gòu),再來編寫算法,實(shí)際上一旦存儲(chǔ)結(jié)構(gòu)確立了,算法的實(shí)現(xiàn)相對(duì)來說簡單很多,難就難在如何確立合理的存儲(chǔ)結(jié)構(gòu)。</p><p><b> 8. 附錄</b></p><p><b> 源程序代碼:</b></p><p> #include<stdi
79、o.h></p><p> #include <process.h></p><p> #define n0 20 /*學(xué)校最大數(shù)目*/ </p><p> #define m0 20 /*男子項(xiàng)目最大數(shù)目*/ </p><p> #define w0 20 /*
80、女子項(xiàng)目最大數(shù)目*/</p><p> typedef struct</p><p><b> { </b></p><p> int inum; /*項(xiàng)目編號(hào)*/</p><p> int top; /*取名次的數(shù)目*/</p><p> int ran
81、ge[5]; /*名次*/</p><p> int mark[5]; /*分?jǐn)?shù)*/</p><p> }itemnode; /*存放項(xiàng)目信息*/</p><p> typedef struct </p><p><b> {</b></p><
82、;p> int snum; /*學(xué)校編號(hào)*/</p><p> int score; /*學(xué)??偡?/</p><p> int mscore; /*男團(tuán)體總分*/</p><p> int wscore; /*女團(tuán)體總分*/</p><p> itemnode t[m0+w
83、0]; /*項(xiàng)目數(shù)組*/</p><p> }snode; /*存放學(xué)校信息*/</p><p> snode a[n0]; /* 定義一個(gè)學(xué)校數(shù)組*/</p><p> void menu(int n,int m,int w) /*菜單函數(shù)*/ </p><p><b&g
84、t; { </b></p><p><b> int c;</b></p><p> void input(int n,int m,int w);</p><p> void output(int n,int m,int w);</p><p> void sortput(int n,int m,i
85、nt w);</p><p> void search(int n,int m,int w);</p><p> printf("\t\t\t歡迎使用\t\t\t\t\n\n"); </p><p> printf("\t\t*******1.信息輸入*******\n");</p><p>
86、 printf("\t\t*******2.統(tǒng)計(jì)輸出*******\n");</p><p> printf("\t\t*******3.排序輸出*******\n");</p><p> printf("\t\t*******4.信息查詢*******\n");</p><p> printf(&
87、quot;\t\t*******0.退出系統(tǒng)*******\n\n");</p><p> printf("\n\n");</p><p> printf("請(qǐng)選擇要實(shí)現(xiàn)步驟的編號(hào)(0——4):");</p><p> scanf("%d",&c);</p><p
88、><b> switch(c)</b></p><p><b> { </b></p><p><b> case 1: </b></p><p> input(n,m,w);break;</p><p><b> case 2: </b>
89、</p><p> output(n,m,w);break;</p><p><b> case 3: </b></p><p> sortput(n,m,w);break;</p><p><b> case 4: </b></p><p> search(n,m
90、,w);break;</p><p><b> case 0:</b></p><p> printf("謝謝使用,再見!\n");</p><p><b> exit(0);</b></p><p><b> default: </b></p
91、><p> printf("輸入錯(cuò)誤,請(qǐng)重試!\n");</p><p> menu(n,m,w);</p><p><b> }</b></p><p><b> }</b></p><p> void savetofile() /*信息存入
92、文件file*/</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p><b> int i;</b></p><p> if((fp=fopen("file.txt","w"
93、;))==NULL)</p><p><b> {</b></p><p> printf("不能打開文件\n");</p><p><b> return;</b></p><p><b> }</b></p><p>
94、for(i=0;i<n0;i++)</p><p><b> {</b></p><p> fwrite(&a[i],sizeof(snode),1,fp);</p><p> fclose(fp);</p><p><b> }</b></p><p>
95、; fclose(fp);</p><p><b> }</b></p><p> void readfromfile() /*信息從文件file中取出*/</p><p><b> {</b></p><p><b> int i;</b></p>
96、<p><b> FILE *fp;</b></p><p> if((fp=fopen("file.txt","rb"))==NULL)</p><p><b> {</b></p><p> printf("cannot open the file
97、\n");</p><p><b> return;</b></p><p><b> }</b></p><p> for(i=0;i<n0;i++)</p><p> fread(&a[i],sizeof(snode),1,fp);</p><
98、p> fclose(fp);</p><p><b> }</b></p><p> void input(int n,int m,int w) /*信息輸入*/</p><p><b> {</b></p><p> int i,j,s,k,q=0;</p>&
99、lt;p> for(i=0;i<n;i++)</p><p><b> { </b></p><p> printf("學(xué)校編號(hào):");</p><p> scanf("%d",&a[i].snum); /*輸入學(xué)校信息*/</p>&
100、lt;p> for(j=0;j<m+w;j++)</p><p><b> { </b></p><p> printf("項(xiàng)目編號(hào):");</p><p> scanf("%d",&a[i].t[j].inum);</p><p> printf(
101、"取名次個(gè)數(shù)(3或者5):");</p><p> scanf("%d",&a[i].t[j].top);</p><p> printf("獲得名次個(gè)數(shù)(1——5):");</p><p> scanf("%d",&k);
102、 /*輸入項(xiàng)目信息*/</p><p> for(s=0;s<k;s++)</p><p><b> { </b></p><p> printf("所獲名次(1——5):");</p><p> scanf("%d",&a[i].t[j].ran
103、ge[s]); /*輸入所獲名次信息*/</p><p><b> }</b></p><p> printf("\n");</p><p><b> }</b></p><p><b> }</b></p><p>
104、 for(i=0;i<n;i++)</p><p><b> { </b></p><p> a[i].score=0;</p><p> a[i].mscore=0;</p><p> a[i].wscore=0;</p><p> }
105、 /*初始化分?jǐn)?shù)*/</p><p> for(i=0;i<n;i++)</p><p> for(j=0;j<m+w;j++)</p><p> for(s=0;s<5;s++)</p><p><b> { </b></p><
106、;p> if(a[i].t[j].top==3)</p><p> switch(a[i].t[j].range[s])</p><p><b> {</b></p><p> case 0: a[i].t[j].mark[s]=0; break;</p><p> case 1: a[i].t[j].m
107、ark[s]=5; break;</p><p> case 2: a[i].t[j].mark[s]=3; break;</p><p> case 3: a[i].t[j].mark[s]=2; break;</p><p><b> }</b></p><p> else if(a[i].t[j].top=
108、=5)</p><p> switch(a[i].t[j].range[s])</p><p><b> {</b></p><p> case 0: a[i].t[j].mark[s]=0; break;</p><p> case 1: a[i].t[j].mark[s]=7; break;</p>
109、;<p> case 2: a[i].t[j].mark[s]=5; break;</p><p> case 3: a[i].t[j].mark[s]=3; break;</p><p> case 4: a[i].t[j].mark[s]=2; break;</p><p> case 5: a[i].t[j].mark[s]=1; bre
110、ak;</p><p><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p> printf("信息有誤!");</p><p> printf("
111、;\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> a[i].score=a[i].score+a[i].t[j].mark[s]; /*記學(xué)??偡?/</p><p> if(j<=m-
112、1)</p><p> a[i].mscore=a[i].mscore+a[i].t[j].mark[s]; /*記男子團(tuán)體總分*/</p><p><b> else</b></p><p> a[i].wscore=a[i].wscore+a[i].t[j].mark[s]; /*記女子團(tuán)體總分*/</p>
113、<p><b> }</b></p><p> while(q!=1)</p><p><b> {</b></p><p> printf("輸入完畢!返回? 1是 2否"); /*返回菜單*/</p><p> scanf("%d&qu
114、ot;,&q);</p><p> printf("\n");</p><p><b> }</b></p><p> printf("\n");</p><p> savetofile();</p><p> menu(n,m,w);&l
115、t;/p><p><b> }</b></p><p> void output(int n,int m,int w) /*統(tǒng)計(jì)輸出*/</p><p><b> {</b></p><p> readfromfile();</p><p> int i,j,s,q
116、=0;</p><p> for(i=0;i<n;i++) /*顯示結(jié)果*/</p><p><b> {</b></p><p> printf("學(xué)校編號(hào):%d 學(xué)??偡?%d 男團(tuán)總分:%d 女團(tuán)總分:%d\n",a[i]
117、.snum,a[i].score,a[i].mscore,a[i].wscore);</p><p> for(j=0;j<m+w;j++)</p><p><b> {</b></p><p> printf("項(xiàng)目編號(hào):%d 所取名次數(shù)量:%d\n",a[i].t[j].inum,a[i].t[j].top
118、);</p><p> for(s=0;s<5;s++)</p><p><b> {</b></p><p> if(a[i].t[j].range[s]!=0)</p><p> printf("名次:%d 分?jǐn)?shù):%d\n",a[i].t[j].range[s],a[i].t[j]
119、.mark[s]);</p><p><b> }</b></p><p><b> }</b></p><p> printf("\n");</p><p><b> }</b></p><p> printf("
120、;\n");</p><p> while(q!=1)</p><p><b> {</b></p><p> printf("統(tǒng)計(jì)完畢!返回? 1是 2否"); /*返回菜單*/</p><p> scanf("%d",&q);</p>
121、;<p> printf("\n");</p><p><b> }</b></p><p> printf("\n");</p><p> menu(n,m,w);</p><p><b> }</b></p><
122、p> void sortput(int n,int m,int w) /*排序輸出函數(shù)*/ </p><p><b> {</b></p><p> readfromfile();</p><p> int c,i,j,k,q=0;</p><p> int temp[n0];
123、</p><p> printf("\t**************排序輸出系統(tǒng)**************\n\n");</p><p> printf("\t\t****1.按學(xué)校編號(hào)輸出****\n");</p><p> printf("\t\t****2.按學(xué)??偡州敵?***\n");&l
124、t;/p><p> printf("\t\t****3.按男團(tuán)總分輸出****\n");</p><p> printf("\t\t****4.按女團(tuán)總分輸出****\n");</p><p><b> do</b></p><p><b> {</b>&
125、lt;/p><p> printf("請(qǐng)選擇要實(shí)現(xiàn)功能的編號(hào)(1——4):");</p><p> scanf("%d",&c);</p><p><b> switch(c)</b></p><p><b> {</b></p>&
126、lt;p><b> case 1: </b></p><p> for(i=0;i<n;i++)</p><p> temp[i]=i;</p><p> for(i=0;i<n;i++)</p><p><b> { </b></p><p>
127、 for(j=i+1;j<n;j++)</p><p> if(a[temp[i]].snum>a[j].snum)</p><p><b> { </b></p><p> k=temp[i];</p><p> temp[i]=temp[j];</p><p> temp
128、[j]=k;</p><p><b> }</b></p><p> } /* 用冒泡排序方法排序*/</p><p> for(i=0;i<n;i++)</p><p><b> {</b></p><p> printf(&quo
129、t;學(xué)校編號(hào):%d 學(xué)??偡?%d 男團(tuán)總分:%d 女團(tuán)總分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);</p><p> } /*按學(xué)校編號(hào)輸出*/</p><p> break;
130、 </p><p> case 2: </p><p> for(i=0;i<n;i++)</p><p> temp[i]=i;</p><p> for(i=0;i<n;i++)</p><p><b> { </b></p><p&
131、gt; for(j=i+1;j<n;j++)</p><p> if(a[temp[i]].score<a[j].score)</p><p><b> { </b></p><p> k=temp[i];</p><p> temp[i]=temp[j];</p><p>
132、 temp[j]=k;</p><p><b> }</b></p><p> } /* 用冒泡排序方法排序*/</p><p> for(i=0;i<n;i++)</p><p><b> {</b></p><p> print
133、f("學(xué)校編號(hào):%d 學(xué)??偡?%d 男團(tuán)總分:%d 女團(tuán)總分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);</p><p> } /*按學(xué)校總分輸出*/</p><p> break;
134、 </p><p> case 3: </p><p> for(i=0;i<n;i++)</p><p> temp[i]=i;</p><p> for(i=0;i<n;i++)</p><p><b> {
135、</b></p><p> for(j=i+1;j<n;j++)</p><p> if(a[temp[i]].mscore<a[j].mscore)</p><p><b> { </b></p><p> k=temp[i];</p><p> temp[i]
136、=temp[j];</p><p> temp[j]=k;</p><p><b> }</b></p><p> } /* 用冒泡排序方法排序*/</p><p> for(i=0;i<n;i++)</p><p><b> {</b&g
137、t;</p><p> printf("學(xué)校編號(hào):%d 學(xué)??偡?%d 男團(tuán)總分:%d 女團(tuán)總分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);</p><p> } /*按男團(tuán)總分輸出*
138、/</p><p><b> break; </b></p><p> case 4: </p><p> for(i=0;i<n;i++)</p><p> temp[i]=i;</p><p> for(i=0;i<n;i++)</p><p&g
139、t;<b> { </b></p><p> for(j=i+1;j<n;j++)</p><p> if(a[temp[i]].wscore<a[j].wscore)</p><p><b> { </b></p><p> k=temp[i];</p><
140、;p> temp[i]=temp[j];</p><p> temp[j]=k;</p><p><b> }</b></p><p> } /* 用冒泡排序方法排序*/</p><p> for(i=0;i<n;i++)</p><p><b
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)課程設(shè)計(jì)
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告--運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)設(shè)計(jì)
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)論文
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)-數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)(c語言版)
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(含源代碼)
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論