3.4.3數(shù)制轉(zhuǎn)換問(wèn)題_第1頁(yè)
3.4.3數(shù)制轉(zhuǎn)換問(wèn)題_第2頁(yè)
3.4.3數(shù)制轉(zhuǎn)換問(wèn)題_第3頁(yè)
3.4.3數(shù)制轉(zhuǎn)換問(wèn)題_第4頁(yè)
3.4.3數(shù)制轉(zhuǎn)換問(wèn)題_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、井岡山大學(xué)電子與信息工程學(xué)院數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 ( 20142015年度第一學(xué)期)課程名稱: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 題 目 一: 文學(xué)研究助手系統(tǒng) p73 題 目 二: 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng) p33 題 目 三: 文學(xué)研究助手系統(tǒng) p73 院 系: 計(jì)算機(jī)科學(xué)系 班 級(jí): 12軟件本(2)班 姓 名: 謝偉 學(xué) 號(hào): 120913001 指導(dǎo)教師: 孫凌宇老師 成 績(jī): 2014 年 月 日成 績(jī) 評(píng) 定一、 指導(dǎo)教師評(píng)語(yǔ)二、 成績(jī)成績(jī)備注 指導(dǎo)教師: 日 期: 年 月 日sly 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 設(shè)計(jì)題目:4.3 文學(xué)研究助手系統(tǒng) p73一、設(shè)計(jì)要求1問(wèn)題描述文學(xué)研究人員需要統(tǒng)計(jì)某篇英文小說(shuō)

2、中某些特定單詞的出現(xiàn)次數(shù)和位置(行號(hào)和列號(hào))。試寫(xiě)出一個(gè)實(shí)現(xiàn)這一目標(biāo)的文字統(tǒng)計(jì)系統(tǒng),稱為“文學(xué)研究助手系統(tǒng)”。2需求分析要求建立一個(gè)文本文件,每個(gè)單詞不包含空格和不跨行,單詞由字符序列構(gòu)成且區(qū)分大小寫(xiě);檢索輸出給定單詞出現(xiàn)在文本中行號(hào),以及在該行中出現(xiàn)的位置(列號(hào));統(tǒng)計(jì)給定單詞在文本文件出現(xiàn)的總次數(shù)。二、概要設(shè)計(jì) 該設(shè)計(jì)可分為三個(gè)部分實(shí)現(xiàn);第一,建立文本文件,文件名由用戶通過(guò)鍵盤(pán)輸入;第二,檢索給定單詞:輸入一個(gè)單詞,檢索并輸出該單詞所在的行號(hào)和列號(hào);第三,給定單詞的計(jì)數(shù):輸入一個(gè)單詞,統(tǒng)計(jì)輸出該單詞在文本中的出現(xiàn)次數(shù)。可從3個(gè)方面著手設(shè)計(jì)。 1. 建立和讀入文本文件 建立和讀入文件的實(shí)現(xiàn)步

3、驟如下: (1)定義一個(gè)串變量; (2)定義文本文件; (3)輸入文件名,打開(kāi)該文件; (4)循環(huán)讀入文本行,寫(xiě)入文本文件,其過(guò)程如下: while(不是文件輸入結(jié)束符) 讀入一文本行至串變量; 串變量寫(xiě)入文件; 輸入是否結(jié)束輸入標(biāo)志; 2 存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)主串和模式串都采用定長(zhǎng)順序存儲(chǔ)表示,其0號(hào)單元存放串長(zhǎng)度: #define maxstrlen 255 typedef char sstringmaxstrlen+1;2.3字符串的模式匹配問(wèn)題 本系統(tǒng)使用改進(jìn)的kmp匹配算法實(shí)現(xiàn)字符串的模式匹配問(wèn)題。匹配可如下進(jìn)行:假設(shè)以指針i和j分別指示主串和模式中的比較字符,令i的初值為pos,j的初值為

4、1.若在匹配過(guò)程中si=sj,則i和j分別增1,若sisj匹配失敗后,則i不變,j退到nextj位置再比較,若相等,則指針各自增1 ,否則j再退到下一個(gè)next值的位置,依次類推。直至下列兩種情況:一種是j退到某個(gè)next值時(shí)字符比較相等,則i和j分別增1繼續(xù)進(jìn)行匹配;另一種是j退到值為零(即模式的第一個(gè)字符失敗),則此時(shí)i和j也要分別增1,表明從主串的下一個(gè)字符起和模式重新開(kāi)始匹配。三、模塊設(shè)計(jì)1模塊設(shè)計(jì)本程序包含3個(gè)模塊:主程序模塊,查找模塊,功能模塊。其調(diào)用關(guān)系如圖4.1所示。 圖 4.1 2 系統(tǒng)子程序及功能設(shè)計(jì)本系統(tǒng)共設(shè)置5個(gè)子程序,各子程序的函數(shù)名及功能說(shuō)明如下。 (1) void

5、 get_next(sstring t,int next) /求模式串t的next函數(shù)值并存入數(shù)組next (2) int index(sstring s,sstring t,int pos)/kmp匹配函數(shù) (3) int lenth(sstring str) /取串str的長(zhǎng)度 (4) void find(char name,sstring keys) /查找函數(shù),對(duì)于輸入的每一個(gè)要查找的關(guān)鍵字,從文本文件中逐行讀取字符串查找。 /調(diào)用(1),(2),(3) (5) (5) void main() /主函數(shù),負(fù)責(zé)系統(tǒng)的輸入和輸出。調(diào)用(4)3 函數(shù)主要調(diào)用關(guān)系圖 本系統(tǒng)5程序之間的主要調(diào)用

6、關(guān)系如圖4.2所示。圖中數(shù)字是各函數(shù)的編號(hào) 圖 4.2四、詳細(xì)設(shè)計(jì)1數(shù)據(jù)類型定義(1)定長(zhǎng)順序存儲(chǔ)串類型的定義 #define maxstrlen 255 /最大串長(zhǎng) typedef char sstringmaxstrlen+1;/串的定長(zhǎng)順序存儲(chǔ)表示,0號(hào)單元存放串的長(zhǎng)度 (2)全局變量的定義 int nextmaxstrlen /kmp算法中用到的next數(shù)組2系統(tǒng)主要子程序詳細(xì)設(shè)計(jì)(1)主函數(shù)模塊設(shè)計(jì),負(fù)責(zé)系統(tǒng)的輸入輸出工作,調(diào)用查找函數(shù)。 void main() 輸入包含路徑的文本文件名; 輸入要查找的關(guān)鍵字個(gè)數(shù); 一次性輸入要查找的關(guān)鍵字;對(duì)于每一個(gè)關(guān)鍵字,循環(huán)調(diào)用find函數(shù)進(jìn)行

7、查找統(tǒng)計(jì); (2)查找模塊設(shè)計(jì) void find(char name,sstring keys) /該函數(shù)是整個(gè)程序的重要部分,對(duì)于輸入的每一個(gè)要查詢的關(guān)鍵字,從小說(shuō)文件中逐行 /杜取字符串查找 sstring text; /存放從小說(shuō)文件中讀取的一行字符串 int i=1,j=0,k; /i用于存放行號(hào),j用于存放列號(hào),k用于輸出格式的控制 int n=0; /n用于記錄出現(xiàn)的次數(shù) file *fp; if(!(fp=(fopen(name,r) /打開(kāi)小說(shuō)文件 printf(open file error!n); exit(0); keys0=lenth(keys); /調(diào)用lenth函

8、數(shù)求關(guān)鍵字 get_next(keys,next);調(diào)用get_next函數(shù)求模式串(關(guān)鍵字)每一個(gè)字符對(duì)應(yīng)的next printf(n%s出現(xiàn)于:n,&keys1); /打印關(guān)鍵字while(!feof(fp) /如果還沒(méi)有找到小說(shuō)文件末尾 k=0; fgets(&text1,maxstrlen,fp); /從小說(shuō)文件中讀取一行字符串,存入text串中 text0=lenth(text); /求讀入的串的長(zhǎng)度 k=0; fgets(&text1,maxstrlen,fp); /從小說(shuō)文件中讀取一行字符串,存入text串中 text0=lenth(text); /求讀入的串的長(zhǎng)度 j=inde

9、x(text,keys,j+1); /調(diào)用kmp算法,統(tǒng)計(jì)關(guān)鍵字在該行出現(xiàn)的位置,若匹配不成功則返回0 if(j!=0) printf(trow=%d,tcol=%d,i,j); k+; n+; while(j!=0) j=index(text,keys,j+1); if(j!=0) n+; printf(,%d,j); i+; if(k) printf(n); printf(%s公出現(xiàn)%d次n,keys1,n); (3)其他功能模塊設(shè)計(jì) 1.求next函數(shù)值 void get_next(sstring t,int next) int j=1,k=0; next1=0; while(jt0)

10、if(k=0|tk=tj) +j; +k; if(tj!=tk) nextj=k; else nextj=nextk; 2.kmp匹配函數(shù) int index(sstring s,sstring t,int pos) /利用模式串t的next函數(shù)球t主串s中第pos個(gè)字符之后的位置的kmp算法 int i=pos,j=1; while(i=s0&jt0) return (i-t0); /匹配成功 else return 0; /匹配失敗 5、 測(cè)試分析系統(tǒng)運(yùn)行后,要求用戶輸入帶路徑的小說(shuō)文件名,如4.3圖所示。 圖 4.3用戶輸入d:shiyan4.txt并回車。此文本文件已正確建立,內(nèi)容為:

11、 - spring is a delightful season.the temperatures are moderate, and the blooming trees and flowers make the city bright with colors. it is the time when we can begin to wear lighter and more brightly colored clothes and go outdoors more often. smaller children like to bring their kites out to the sp

12、acious square.also i enjor going back to the village on this holiday after bejin in the city for the winter months. -回車后,系統(tǒng)提示用戶輸入待查找的單詞個(gè)數(shù),如圖4.4所示、 圖4.4用戶輸入3并回車,系統(tǒng)提示用戶輸入單詞內(nèi)容,如圖4.5、4.6所示 圖4.5 圖4.6 六、用戶手冊(cè) (1)本程序執(zhí)行文件為“文學(xué)研究助手系統(tǒng).exe”。(2)進(jìn)入本系統(tǒng)后,隨即顯示系統(tǒng)主菜單界面。用戶可以在該界面下按提示輸入命令并觀察結(jié)果。 七、調(diào)試報(bào)告1、由于剛開(kāi)始程序比較簡(jiǎn)單,雖能運(yùn)行,但處

13、理錯(cuò)誤的能力很低,后來(lái)經(jīng)過(guò)反 復(fù)的添加修改,使程序能處理了錯(cuò)誤,提高了健壯性。2、算法的時(shí)空分析:線性表使用的是順序結(jié)構(gòu),各種算法的時(shí)間復(fù)雜度相對(duì)比較合理 3、本程序相對(duì)來(lái)說(shuō)比較容易看明白,其中涉及到的一些函數(shù)相對(duì)來(lái)說(shuō)比較容易。通過(guò)調(diào)試,運(yùn)行,基本上達(dá)到了要求,但還存在一些缺點(diǎn)。8、 程序清單#include stdafx.h #include #include #define maxstrlen 255 /最大串長(zhǎng) typedef char sstringmaxstrlen+1; /串的定長(zhǎng)順序存儲(chǔ)表示,0號(hào)單元存放串的長(zhǎng)度 int nextmaxstrlen; /kmp算法中用到的next

14、數(shù)組/1. 求模式串t的next函數(shù)值并存入數(shù)組next void get_next(sstring t,int next ) / 求模式串t的next函數(shù)值,并存入數(shù)組next int j=1,k=0; next1=0; while (jt0) if (k=0 | tk=tj) +j; +k; if (tj!=tk) nextj=k; else nextj=nextk; else k=nextk; /2. kmp匹配函數(shù) int index(sstring s,sstring t,int pos) / 利用模式串t的next函數(shù)求t在主串s中第pos個(gè)字符之后的位置的kmp算法 / 其中t非

15、空,1 pos strlength(s) int i=pos,j=1; while (i=s0&jt0) return (i-t0); / 匹配成功 else return 0; / 匹配失敗 /3. 求串長(zhǎng) int lenth(sstring str) int i=1; while(stri) i+; return(i-1); /4. 查找函數(shù) void find(char name,sstring keys) /該函數(shù)是整個(gè)程序的重要部分,對(duì)于輸入的每一個(gè) /要查找的關(guān)鍵字,從小說(shuō)文件中逐行讀取字符串查找 sstring text; /存放從小說(shuō)文件讀取的一行字符串 int i=1,j=0

16、,k; /i用于存放行號(hào),j用于存放列號(hào),k用于輸出格式的控制 int n=0; /n記錄出現(xiàn)次數(shù) file *fp; if (!(fp=(fopen(name,r) /打開(kāi)小說(shuō)文件 printf(open file error!n); exit(0); keys0=lenth(keys); /調(diào)用lenth函數(shù)求關(guān)鍵字的長(zhǎng)度 get_next(keys,next); /調(diào)用get_next函數(shù)求模式串(關(guān)鍵字)每一個(gè)字符對(duì)應(yīng)的next值 printf(n%s出現(xiàn)于:n,&keys1); /打印關(guān)鍵字 while (!feof(fp) /如果還沒(méi)到小說(shuō)文件末尾 k=0; fgets(&text

17、1,maxstrlen,fp); /從小說(shuō)文件中讀取一行字符串,存入text串中 text0=lenth(text); /求讀入的串的長(zhǎng)度 j=index(text,keys,j+1); /調(diào)用kmp算法,統(tǒng)計(jì)關(guān)鍵字在該行出現(xiàn)的位置,若匹配不成功則返回0 if (j!=0) printf(trow=%d,tcol=%d,i,j); k+; n+; /若匹配成功則打印行號(hào)和列號(hào) while(j!=0) /若該行找到了關(guān)鍵字,則繼續(xù)尋找看是否還能匹配成功 j=index(text,keys,j+1); /調(diào)用kmp算法從剛找到的列號(hào)后一字符起匹配 if (j!=0) n+; printf(,%d,

18、j); /若匹配成功,則打印列號(hào) i+; /行號(hào)加1,在下一行中尋找 if (k) printf(n); /輸出格式控 printf(%s共出現(xiàn)%d次n,&keys1,n); /5. 主函數(shù) void main() char name50; /存儲(chǔ)輸入的小說(shuō)路徑字符串 sstring words10; /定義字符串?dāng)?shù)組,用于存儲(chǔ)輸入的關(guān)鍵字 int n,i; printf(請(qǐng)輸入已創(chuàng)建的文本文件的路徑 (如d:novel.txt):n); scanf(%s,name); /用戶輸入包含路徑的文本文件名 printf(請(qǐng)輸入要查找的單詞數(shù)n (n10):n); scanf(%d,&n); /用戶

19、輸入要查找的關(guān)鍵字個(gè)數(shù) printf(請(qǐng)輸入要查找的單詞,詞與詞之間用空格隔開(kāi) (區(qū)分大小寫(xiě)):n); for (i=0;in;i+) scanf(%s,&wordsi1); /用戶一次性輸入要查找的關(guān)鍵字,wordsi0用于存放字符串的長(zhǎng)度 for (i=0;in;i+) find(name,wordsi); /對(duì)于每一個(gè)關(guān)鍵字,調(diào)用find函數(shù)進(jìn)行查找統(tǒng)計(jì) 設(shè)計(jì)題目:2.4.1運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)p33一、設(shè)計(jì)要求1問(wèn)題描述參加運(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)目取前五名或前三名積分;取前五名的積分分別為:7

20、、5、3、2、1,前三名的積分分別為:5、3、2;哪些項(xiàng)目取前五名或前三名由學(xué)生自己設(shè)定。(m=20,n=20)2需求分析(1)、可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績(jī);(2)、能統(tǒng)計(jì)各學(xué)校總分;(3)、可以按學(xué)校編號(hào)、學(xué)??偡帧⒛信畧F(tuán)體總分排序輸出;(4)、可以按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況; (5)、可以按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。二、概要設(shè)計(jì)1主界面設(shè)計(jì)為了實(shí)現(xiàn)學(xué)生通訊錄的管理系統(tǒng)各功能的管理,設(shè)計(jì)一個(gè)含有多個(gè)菜單的主控才擔(dān)子程序以連接系統(tǒng)的各鴿子程序功能,為方便用戶使用本系統(tǒng)。本系統(tǒng)主控菜單運(yùn)行界面如圖2.1所示。圖2.1、“運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)”主界面2存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)本系統(tǒng)采

21、用結(jié)構(gòu)體來(lái)存儲(chǔ)“運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)”中的信息。(1) 、運(yùn)動(dòng)項(xiàng)目 項(xiàng)目編號(hào) ;名次;(2) 、學(xué)校 學(xué)校編號(hào);項(xiàng)目;團(tuán)體總分;男團(tuán)體總分;女團(tuán)體總分;3系統(tǒng)功能設(shè)計(jì)本系統(tǒng)設(shè)置了4個(gè)子功能菜單,5個(gè)子功能的設(shè)計(jì)描述如下:(1) 、統(tǒng)計(jì)各學(xué)校總分,可以將之前輸入的各個(gè)學(xué)校的分?jǐn)?shù)統(tǒng)計(jì)并輸出,該功能由zonfen()函數(shù)來(lái)實(shí)現(xiàn)。(2) 、按要求輸出總分,可以分別按學(xué)校編號(hào)、學(xué)??偡?、男團(tuán)體總分、女團(tuán)體總分等方式輸出總分,分別通過(guò)調(diào)用xuexiaobianhao()、xuexiaozonfen()、boytuanzonfen()、girltuanzonfen()等函數(shù)來(lái)實(shí)現(xiàn)功能。(3) 、按學(xué)校編號(hào)查詢

22、項(xiàng)目情況,可以按學(xué)校編號(hào)查詢項(xiàng)目情況,本功能通過(guò)chaxunxuexiaoxiangmu()函數(shù)來(lái)實(shí)現(xiàn)。(4) 、按項(xiàng)目編號(hào)查詢?nèi)〉妹蔚膶W(xué)校,可以按項(xiàng)目編號(hào)查詢?nèi)〉妹蔚膶W(xué)校,本功能通過(guò)chaxunxiangmuxuexiao()函數(shù)來(lái)實(shí)現(xiàn)。三、模塊設(shè)計(jì)1模塊設(shè)計(jì) 程序模塊之間的關(guān)系如圖2.2所示。圖2.2、程序模塊之間的關(guān)系圖2系統(tǒng)子程序及功能設(shè)計(jì)本系統(tǒng)共有1個(gè)子程序,各程序的函數(shù)名及功能說(shuō)明如下:(1) 、mulu()/調(diào)用函數(shù)目錄(2) 、input()/調(diào)用運(yùn)動(dòng)會(huì)分?jǐn)?shù)輸入菜單(3) 、zonfen()/統(tǒng)計(jì)各學(xué)??偡?4) 、xuexiaobianhao() /按學(xué)校編號(hào)排序 (5)

23、 、xuexiaozonfen()/按學(xué)??偡峙判?(6) 、boytuanzonfen()/按男團(tuán)體總分排序(7) 、girltuanzonfen()/按女團(tuán)體總分排序(8) 、chaxunxuexiaoxiangmu() /按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目情況(9) 、chaxunxiangmuxuexiao() /按項(xiàng)目編號(hào)查詢?nèi)〉妹蔚膶W(xué)校(10) 、totaljisuan()/計(jì)算總數(shù)(11) 、tuichu()/退出系統(tǒng) 3 函數(shù)主要調(diào)用關(guān)系圖本系統(tǒng)11個(gè)子程序之間的主要調(diào)用關(guān)系如圖2.3所示圖2.3系統(tǒng)函數(shù)調(diào)用關(guān)系四、詳細(xì)設(shè)計(jì)1數(shù)據(jù)類型(1)、運(yùn)動(dòng)項(xiàng)目的定義: struct match

24、 int matchnum; int rank3; matbm+gm; (2) 、學(xué)校的定義: struct school int schoolnum; struct match matbm+gm; int total; int boytotal; int girltotal; schn;2 系統(tǒng)主要子程序詳細(xì)設(shè)計(jì) (1)、本函數(shù)主要是使用順序表來(lái)實(shí)現(xiàn)輸入成績(jī)的操作:void input() /輸入成績(jī) int i,j,k;for(i=0;in;i+) /初始化分?jǐn)?shù)schi.total=0;schi.boytotal=0;schi.girltotal=0;for(k=0;kbm+gm;k+)

25、schi.matk.rank0=0;schi.matk.rank1=0;schi.matk.rank2=0;schi.matk.matchnum=k+1; printf(*輸入成績(jī)*n); printf(輸入說(shuō)明:n);printf( 1.學(xué)校編號(hào)為1-%d; 項(xiàng)目編號(hào)為1-%d (1-%d為男子項(xiàng)目,%d-%d為女子項(xiàng)目).n,n,bm+gm,bm,bm+1,bm+gm);printf( 2. 成績(jī)只能是0或1:n(0表示沒(méi)獲得該項(xiàng)目的該名次,1表示獲得了該項(xiàng)目的該名次.)n,n);for(i=0;in;i+) printf(*請(qǐng)輸入學(xué)校編號(hào): );loop3:scanf(%d,&schi.

26、schoolnum); if(schi.schoolnumn) printf(輸入錯(cuò)誤(只能是1-%d)請(qǐng)重新輸入:,n); goto loop3; printf(項(xiàng)目編號(hào): ); for(k=0;kbm+gm;k+)printf(%d,schi.matk.matchnum);printf(n);for(j=0;j3;j+) loop: printf( 第(%d)名:,j+1);for(k=0;kbm+gm;k+)scanf( %d,&schi.matk.rankj);for(k=0;kbm+gm;k+)if(schi.matk.rankj!=0&schi.matk.rankj!=1) pri

27、ntf(輸入錯(cuò)誤,請(qǐng)重新輸入,成績(jī)只能是0或1n);goto loop; (2)、計(jì)算總數(shù),主要用于統(tǒng)計(jì)各個(gè)學(xué)校的分?jǐn)?shù)總和:void totaljisuan() int i,k,b;for(i=0;in;i+)for(k=0,b=0;kbm+gm;k+) b=schi.matk.rank0*5+schi.matk.rank1*3+schi.matk.rank2*2; schi.total=schi.total+b; if(k=bm)schi.girltotal=schi.girltotal+b; 5、 測(cè)試分析1、 輸入成績(jī)當(dāng)用戶一運(yùn)行該程序,就需要按照輸入說(shuō)明來(lái)輸入運(yùn)動(dòng)會(huì)成績(jī),運(yùn)行結(jié)果如圖2

28、.4所示。圖2.4、輸入成績(jī)2、 統(tǒng)計(jì)各學(xué)校總分在主菜單下,用戶輸入1并回車,就可以統(tǒng)計(jì)出各個(gè)學(xué)校的總分。運(yùn)行結(jié)果如圖2.5所示。圖2.5、統(tǒng)計(jì)各學(xué)校總分3、 按要求輸出總分在主菜單下,用戶輸入2并回車,就可以看到系統(tǒng)提示,用戶可以選擇所需的方式來(lái)輸出總分。運(yùn)行結(jié)果如圖2.6所示。圖2.6、按要求輸出總分4、 按學(xué)校編號(hào)查詢項(xiàng)目情況在主菜單下,用戶輸入3并回車,就可以看到系統(tǒng)提示,用戶輸入學(xué)校編號(hào)及項(xiàng)目編號(hào),就可以查詢?cè)搶W(xué)校的該項(xiàng)目情況。運(yùn)行結(jié)果如圖2.6所示。圖2.6、某個(gè)學(xué)校的項(xiàng)目情況5、 按項(xiàng)目編號(hào)查詢?nèi)〉妹蔚膶W(xué)校在主菜單下,用戶輸入4并回車,就可以看到系統(tǒng)提示,用戶輸入項(xiàng)目編號(hào),就可

29、以查詢?cè)擁?xiàng)目取得名次的學(xué)校。運(yùn)行結(jié)果如圖2.7所示。圖2.7、某個(gè)項(xiàng)目的名次情況6、 用戶手冊(cè) (1) 本程序執(zhí)行文件為“gamesscorssystem.exe”。(2) 進(jìn)入本系統(tǒng)后,隨即顯示系統(tǒng)主菜單界面。用戶可以在該界面輸入各子菜單前對(duì)應(yīng)的數(shù)字并按回車鍵,執(zhí)行相應(yīng)的子菜單命令。 七、調(diào)試報(bào)告1、由于剛開(kāi)始程序比較簡(jiǎn)單,雖能運(yùn)行,但處理錯(cuò)誤的能力很低,后來(lái)經(jīng)過(guò)反 復(fù)的添加修改,使程序能處理了錯(cuò)誤,提高了健壯性。 2、算法的時(shí)空分析:線性表使用的是順序結(jié)構(gòu),各種算法的時(shí)間復(fù)雜度相對(duì)比較合理 3、本程序相對(duì)來(lái)說(shuō)比較容易看明白,其中涉及到的一些函數(shù)相對(duì)來(lái)說(shuō)比較容易。通過(guò)調(diào)試,運(yùn)行,基本上達(dá)到了

30、要求,但還存在一些缺點(diǎn)。八、程序清單#include#include#include#define n 4 /學(xué)校個(gè)數(shù) #define bm 3 /男團(tuán)體個(gè)數(shù) #define gm 2 /女團(tuán)體個(gè)數(shù) void xunhuan(); struct match /項(xiàng)目 int matchnum;int rank3; matbm+gm;struct school /學(xué)校 int schoolnum;struct match matbm+gm;int total;int boytotal;int girltotal;schn;/3.輸入分?jǐn)?shù)void input() /輸入成績(jī) int i,j,k;fo

31、r(i=0;in;i+) /初始化分?jǐn)?shù)schi.total=0;schi.boytotal=0;schi.girltotal=0;for(k=0;kbm+gm;k+) schi.matk.rank0=0;schi.matk.rank1=0;schi.matk.rank2=0;schi.matk.matchnum=k+1; printf(*輸入成績(jī)*n); printf(輸入說(shuō)明:n);printf( 1.學(xué)校編號(hào)為1-%d; 項(xiàng)目編號(hào)為1-%d (1-%d為男子項(xiàng)目,%d-%d為女子項(xiàng)目).n,n,bm+gm,bm,bm+1,bm+gm);printf( 2. 成績(jī)只能是0或1:n(0表示沒(méi)獲

32、得該項(xiàng)目的該名次,1表示獲得了該項(xiàng)目的該名次.)n,n);for(i=0;in;i+) printf(*請(qǐng)輸入學(xué)校編號(hào): );loop3:scanf(%d,&schi.schoolnum); if(schi.schoolnumn) printf(輸入錯(cuò)誤(只能是1-%d)請(qǐng)重新輸入:,n); goto loop3; printf(項(xiàng)目編號(hào): ); for(k=0;kbm+gm;k+)printf(%d,schi.matk.matchnum);printf(n);for(j=0;j3;j+) loop: printf( 第(%d)名:,j+1);for(k=0;kbm+gm;k+)scanf(

33、%d,&schi.matk.rankj);for(k=0;kbm+gm;k+)if(schi.matk.rankj!=0&schi.matk.rankj!=1) printf(輸入錯(cuò)誤,請(qǐng)重新輸入,成績(jī)只能是0或1n);goto loop; /4.計(jì)算總數(shù)void totaljisuan() int i,k,b;for(i=0;in;i+)for(k=0,b=0;kbm+gm;k+) b=schi.matk.rank0*5+schi.matk.rank1*3+schi.matk.rank2*2; schi.total=schi.total+b; if(k=bm)schi.girltotal=s

34、chi.girltotal+b; /2.目錄void mulu()printf(n*歡迎使用運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)*n);/目錄printf( * 1 統(tǒng)計(jì)各學(xué)??偡?*n);printf( * 2 按要求輸出總分 *n);printf( * 3 按學(xué)校編號(hào)查詢項(xiàng)目情況 *n);printf( * 4 按項(xiàng)目編號(hào)查詢?nèi)〉妹蔚膶W(xué)校 *n);printf( * 0 退出管理系統(tǒng) *n);printf(n*歡迎使用運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)*n);/6.退出系統(tǒng)void tuichu() /退出系統(tǒng) printf(ntt* 謝謝使用! *n);printf(ntt* 謝謝使用! *n);exit(0);/7.

35、統(tǒng)計(jì)學(xué)??偡講oid zonfen() /統(tǒng)計(jì)各學(xué)??偡?int i,q; printf( *統(tǒng)計(jì)各學(xué)校總分*n); printf( *學(xué)校編號(hào)*tttt*總分*n);for(i=0;in;i+)printf(t%dtttt%dn,schi.schoolnum,schi.total);printf(n);printf(n);printf(# 0:退出;1:返回目錄。n); printf(*請(qǐng)選擇: ); loop2:scanf(%d,&q); if(q=0) tuichu(); if(q=1) xunhuan(); else printf(輸入錯(cuò)誤(只能是0或1),請(qǐng)重新輸入:); goto

36、loop2; /8.按學(xué)校編號(hào)排序輸出void xuexiaobianhao() /按學(xué)校編號(hào)排序 struct school sch1;int i,j,q;for(j=0;jn-1;j+)for(i=0;ischi+1.schoolnum) sch1=schi;schi=schi+1;schi+1=sch1; printf( *按學(xué)校編號(hào)排序*n);printf( *學(xué)校編號(hào)*tttt*總分*n);for(i=0;in;i+)printf(t%dtttt%dn,schi.schoolnum,schi.total);printf(n);printf(n);printf(# 0:退出;1:返回目

37、錄。n); printf(*請(qǐng)選擇: ); loop2: scanf(%d,&q); if(q=0) tuichu(); if(q=1) xunhuan(); else printf(輸入錯(cuò)誤(只能是0或1),請(qǐng)重新輸入:); goto loop2; /9.按學(xué)??偡峙判蜉敵鰒oid xuexiaozonfen() /按學(xué)校總分排序 struct school sch1;int i,j,q;for(j=0;jn-1;j+)for(i=0;in-j-1;i+)if(schi.totalschi+1.total) sch1=schi;schi=schi+1;schi+1=sch1; printf(

38、 *按學(xué)校總分排序*n);printf( *學(xué)校編號(hào)*tttt*總分*n);for(i=0;in;i+)printf(t%dtttt%dn,schi.schoolnum,schi.total);printf(n);printf(n);printf(# 0:退出;1:返回目錄。n); printf(*請(qǐng)選擇: ); loop2: scanf(%d,&q); if(q=0) mulu(); if(q=1) xunhuan(); else printf(輸入錯(cuò)誤(只能是0或1),請(qǐng)重新輸入:);goto loop2; /10.按男團(tuán)總分排序輸出void boytuanzonfen() /按男團(tuán)體總分

39、排序struct school sch1;int i,j,q;for(j=0;jn-1;j+)for(i=0;in-j-1;i+) if(schi.boytotalschi+1.boytotal) sch1=schi;schi=schi+1;schi+1=sch1; printf( *按男團(tuán)體總分排序*n);printf( *學(xué)校編號(hào)*tt*總分*n);for(i=0;in;i+)printf(t%dtttt%dn,schi.schoolnum,schi.boytotal);printf(n);printf(n);printf(# 0:退出;1:返回目錄。n); printf(*請(qǐng)選擇: ); loop2: scanf(%d,&q); if(q=0) mulu(); if(q=1) xunhuan(); else printf(輸入錯(cuò)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論