版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、英文單詞使用頻度統(tǒng)計數(shù)據(jù)結構課程設計任務書學院名稱:數(shù)學與計算機學院課程代碼: 專業(yè):軟件工程 年級: 一、設計題目英文單詞使用頻度統(tǒng)計二、主要內容本設計屬于數(shù)組鏈表的應用,統(tǒng)計英文文本文件中各單詞的使用頻度(使用次 數(shù)/單詞總數(shù))。要求使用數(shù)組鏈表存放文件中不同單詞及出現(xiàn)的次數(shù),數(shù)組鏈表的 節(jié)點內容包括指向左右子樹的指針、單詞本身、使用次數(shù)?;静僮鬟^程是從文本 文件中讀取一個單詞并插入數(shù)組鏈表并累計出現(xiàn)次數(shù),文件讀完,即按使用頻度順 序輸出各單詞。三、具體要求及提交的材料1 .做好設計計劃,認真查閱相關資料,完成程序設計及調試;2 .按課程設計說明書 實例模板完成課程設計說明書的撰寫;3
2、.設計結束后,必須上交如下材料:(1)課程設計說明書(報告)打印稿一份;(2)課程設計說明書及源代碼 電子文檔四、主要技術路線提示認真分析系統(tǒng)功能需求,擬定設計方案和程序框架,查閱相關資料,完成算法 設計和程序調試。五、進度安排共計兩周時間,建議進度安排如下:1. 選題,應該在上機實驗之前完成2. 需求分析、方案擬定、程序框架思考可分配 4學時3. 詳細的程序設計可分配8學時4. 調試和分析可分配8學時??梢杂?學時的機動,即提前完成設計任務的學生可提前安排程序驗收和答辯六、推薦參考資料1 .馮博琴 等編著,軟件技術基礎(修改版),西安交通大學出版社,19972 .嚴蔚敏 等著,數(shù)據(jù)結構,清華
3、大學出版社,20033 .李蕓芳 等著,軟件技術基礎(第二版),清華大學出版社,20004 .徐孝凱 等著,數(shù)據(jù)結構(C語言描述),清華大學出版社,2004指導教師 簽名日期 年月日系主任 審核日期 年一月日-2 -英文單詞使用頻度統(tǒng)計摘要1引言 12需求分析 12.1 用戶需求12.2 功能需求 13概要設計23.1 設計思路圖解23.1.1 數(shù)據(jù)結構圖解 23.1.2 功能模塊圖 23.1.3 模塊調用圖33.1.4 程序流程圖 43.2 編碼設計思路 53.2.1 抽象數(shù)據(jù)類型 53.2.2 要模塊設計 74詳細設計 104.1 頭文件代碼設計 104.2 詳細代碼設計 125系統(tǒng)測試2
4、25.1 實現(xiàn)環(huán)境 225.2 語言選擇225.3 測試文件225.4 測試分析23總結 26致謝 27參考文獻 28摘要本課程設計需要完成對信息中單詞出現(xiàn)頻率的統(tǒng)計。信息中同一個 單詞可能出現(xiàn)的格式有所不同,通過大小寫轉換后統(tǒng)一為小寫格式來比較。 在窗口中輸出整個文件信息,給出輸入提示,執(zhí)行程序后輸出要查詢的單 詞出現(xiàn)的頻率和位置。-2 -英文單詞使用頻度統(tǒng)計1引言1.1 問題的提出隨著社會的發(fā)展,人們學習熱情高漲,考證熱已經(jīng)遍布全國,特別是大學生的 四六級考試,及其他的英語考試,可謂是英語似乎占據(jù)了大家的大部分時間。而這 樣便給很多出版社或知道書籍作者很多牟利的機會。統(tǒng)計單詞便是他們吸引同
5、學購 買的一中手段,如何才能快捷準確的統(tǒng)計出所給出的信息中的指定的單詞出現(xiàn)頻率 呢,這樣便孕育出了單詞頻率統(tǒng)計系統(tǒng)。1.2 任務與分析本設計屬于二叉樹的應用,統(tǒng)計英文文本文件中各單詞的使用頻度(使用次數(shù) /單詞總數(shù))。要求使用二叉排序樹存放文件中不同單詞及出現(xiàn)的次數(shù),二叉樹的節(jié) 點內容包括指向左右子樹的指針、單詞本身、使用次數(shù)。基本操作過程是從文本文 件中讀取一個單詞并插入二叉排序樹并累計出現(xiàn)次數(shù),文件讀完,即按使用頻度順 序輸出各單詞。2需求分析2.1 用戶需求用戶可以通過該程序查詢和統(tǒng)計一篇英文文章中某些特定單詞出現(xiàn)次數(shù)和位置。2.2 功能需求用戶可以輸入單詞來查詢單詞出現(xiàn)次數(shù)和位置;程序
6、可以正確顯示查詢結果;用戶可以選擇是否在一次輸出后繼續(xù)查詢;在一次查詢中的結果記錄到一個二維鏈表中 。3概要設計3.1設計思路圖解3.1.1數(shù)據(jù)結構圖解圖1數(shù)據(jù)結構圖解將從文件流讀入的文章字符存到 szFile口字符數(shù)組中,以空格計數(shù)行單詞個 數(shù),以換行符記錄文章列數(shù),將輸入后插入到鏈表中的單詞與字符數(shù)組中的單詞比 較,遇到相等的則將當前的行列數(shù)插入到鏈表的位置結點中,并且單詞個數(shù)加1本程序允許用戶選擇是否重復進行,并且對于在一次操作中重復輸入的單詞, 在鏈表中不進行重復插入。3.1.2功能模塊圖圖2功能模塊圖-3 -英文單詞使用頻度統(tǒng)計-6 -3.1.3模塊調用圖文本讀入模塊show_tex
7、t()主函數(shù)main ()返回頭指針函數(shù)gethead ()字符輸入模塊input()插入函數(shù)Insert()結果顯示模塊showwindow()統(tǒng)計函數(shù)calcute()大小寫字符轉換模塊A_to_a()圖3模塊調用圖3.1.4程序流程圖結束圖4程序流程圖行坐標所在行的列坐標指向下一個坐標結點的指針單詞坐標坐點類型單詞數(shù)組指向單詞坐標結點的指針指向下一個單詞結點的指針單詞所含字符個數(shù)單詞結點3.2編碼設計思路3.2.1 抽象數(shù)據(jù)類型struct node int col; /int row; / node* next; /;/struct Node char words20; / node*
8、 ptr;/Node* next; / int num;/;/ class TLinkpublic:TLink() head = NULL;/構造函數(shù)TLink()/析構函數(shù)while( head != NULL )Node* temp;英文單詞使用頻度統(tǒng)計temp = head;head = head - next;delete temp;void Insert( char* Item );/前條件:參數(shù)Item口為一個字符數(shù)組。/后條件:Item口所包含的單詞被插入到鏈表。void calcute(char *szFile,int size);/前條件:szFile口以正確保存了文本字符,
9、size為文本字符長度。/后條件:統(tǒng)計鏈表每一個插入的單詞的個數(shù)及所在行、列坐標。Node* gethead();/前條件:鏈表已初始化/后條件:返回鏈表頭指針private:Node* head;char A_to_a( char alp );/前條件:alp為一個正確的英文字母/后條件:如果alp是大寫字母,則轉化為小寫字母,否則不變。void showwindow();/后條件:顯示統(tǒng)計結果。void show_text();/前條件:在正確的路徑上存在一個英文文本。/后條件:讀入英文文本到字符數(shù)組并顯示在屏幕上。void input();/后條件:讀入用戶輸入的字符并插入到單詞鏈表。-
10、6 -英文單詞使用頻度統(tǒng)計3.2.2主要模塊設計I*,新建單詞結點;while( Itemi != 0 )復制各字符到單詞結點的單詞數(shù)組中;記錄單詞字母個數(shù);插入單詞字母個數(shù)到鏈表相應域;temp - wordsi = 0;查找并比較鏈表中是否已有要插入的單詞;如果有不進行插入并銷毀新建結點;否則插入新建的單詞結點;/*/統(tǒng)計函數(shù)(參數(shù):char *szFile, int size)while(沒有到文本字符的結尾)依次遍歷文本字符,遇到非字母字符時計數(shù)單詞所含字母個數(shù);while( 沒有到鏈表尾)if(單詞結點所含單詞的字母個數(shù)與計數(shù)相等)if忽略大小寫比較本次遍歷到的單詞和鏈表中的結點單詞
11、;(相等)插入行列值遇空格行單詞個數(shù)加1;遇換行列數(shù)加1;*結構顯示模塊while( 沒到鏈表尾)輸出結點單詞;如果存在,則輸出單詞的所有行、列值及出現(xiàn)次數(shù);否則輸出沒有該詞或輸入錯誤信息;*輸入模塊doif( 鏈表不空)清空鏈表;輸出提示信息;接受用戶輸入;while( true )輸入的是結束字符;退出;記錄輸入逗號前的單詞;插入到鏈表;繼續(xù)輸入;if( 鏈表空)輸出沒有插入任何單詞!else統(tǒng)計;顯示結果;提示是否繼續(xù);輸入;while( 不繼續(xù));4詳細設計4.1頭文件設計/* 頭文件 *FILE:source.h#ifndef SOURCE_H#define SOURCE_H str
12、uct nodeint col;int row;node* next;struct Nodechar words20;node* ptr;Node* next;int num;class TLinkpublic:-11 -英文單詞使用頻度統(tǒng)計TLink() head = NULL; TLink()while( head != NULL )Node* temp;temp = head;head = head - next;delete temp;void Insert( char* Item );void calcute(char *szFile,int size);Node* gethead(
13、);private:Node* head;char A_to_a( char alp );void showwindow();void show_text();void input();#endif/將鏈表類聲明于頭文件中便于調用,清晰易見-11 -英文單詞使用頻度統(tǒng)計4.2詳細代碼設計english.cpp#include#include#include#include source.husing namespace std;TLink link;int i=0;char szFile2000; /定義一個足夠長度的字符/*主函數(shù) */主要調用函數(shù)用來實現(xiàn)功能int main()show_t
14、ext(); /顯示全文函數(shù)cout wordsi = Itemi;+ i;temp - num = i;temp - wordsi = 0;Node* ptrr = NULL;ptrr = link.gethead();while( ptrr != NULL )if( ptrr - num = temp - num )int n;for( n = 0; n wordsn ) != A_to_a( Itemn)/對他們進行比較break;if( n = i )/如果找到相等的單詞flag = 1;英文單詞使用頻度統(tǒng)計break;ptrr = ptrr - next;if( flag != 1
15、)temp - ptr = NULL;temp - next = NULL;Node* Temp = head;if( head = NULL )head = temp;elsewhile( Temp - next != NULL )Temp = Temp - next;Temp - next = temp;elsedelete temp; /釋放鏈表/*大寫轉化成小寫 */將大些轉化成小寫,避免開頭或特殊單詞-14 -英文單詞使用頻度統(tǒng)計char A_to_a( char alp )if( ( alp = A ) & ( alp = Z) alp = alp + 32;return alp;
16、/*統(tǒng)計頻率和位置*/-17 -void TLink二calcute(char *szFile, int size)記錄已搜索過的字符數(shù)-1列標行標記錄空格數(shù)-1int i = 0;/int col = 1; /int row = 0; / int count; / Node* ptrr = NULL;while( i =while( ( szFilei = a & szFilei= z ) | ( szFileiA & szFilei num = j ) int n;for( n = 0; n wordsn ) != A_to_a(szFilei -j + n)break;if( n = j
17、 ) node* temp;temp = new node;temp - col = col;temp - row = row;temp - next = NULL;node* Temp = ptrr - ptr;if( ptrr - ptr = NULL )ptrr - ptr = temp;elsewhile( Temp - next != NULL )Temp = Temp - next;Temp - next = temp;/插入行數(shù)ptrr = ptrr - next;if( szFilei = | szFilei = n)count = -1;while( szFilei=)+ i
18、; /設置列數(shù)+ row;/ 行的單詞個數(shù)加+ count;/單詞之間空格-1row = row - count;if( szFilei = n)+ col; /列遇到換行累加+ i;row = 0;/ 單詞的行個數(shù)清零else+ i;cout wordsk != 0; + k )cout wordsk;cout ptr = NULL )cout 沒有該詞,或輸入不正確! ptr != NULL )cout (;cout ptr - col ; /顯示行數(shù)cout ,;cout ptr - row ; /顯示列數(shù)cout );cout ptr = curptr - ptr - next;-18
19、 -word_num +; / 統(tǒng)計次數(shù)cout endl;cout 該單詞共出現(xiàn) word_num 次! next;顯示全文*/*/打開文件并輸出TXT文件中的信息void show_text()ifstream fin; / 流fin.open(D:english.txt); /打開文件if (fin.fail()coutInput file opening failed.n;exit;char next; /獲取文件中的字符 fin.get(next);while (! fin.eof() /szFilei = next; /+ i;fin.get(next);判斷是否到文件尾賦予szF
20、ile將整個文件的內容賦給szFile-19 -/英文單詞使用頻度統(tǒng)計szFilei = 0;/尾置空for( int k = 0; k i; + k )cout szFilek; /輸出文件內容cout *Totai number : i endl;cout ”*” endl;/*輸入函數(shù)*/-20 -/窗口錄入用戶輸入信息給出相應的操作void input()char Item40; /暫存數(shù)組char in; /接受輸入字符char ans; /判斷是否重新開始doif( link.gethead() != NULL )link.TLink(); / 調用析構cout 請輸入要統(tǒng)計的單詞
21、,單詞之間用逗號隔開(輸入儂2束,本 程序忽略空格): in;int flag = 1; /用來判斷是否輸入結束while( true )if( in = )break;int m = 0;while( in !=,)英文單詞使用頻度統(tǒng)計Itemm = in;+ m;cin in;if( in = )flag = 0;break;Itemm = 0; /將暫存數(shù)據(jù)的字符置空link.Insert( Item );if( flag = 0 )break;cin in;if( link.gethead() = NULL )cout 沒有插入任何單詞! endl;elselink.calcute(
22、szFile, i );showwindow();cout ans;while( ( ans != n ) & ( ans != N ) ); /-21 -英文單詞使用頻度統(tǒng)計5.系統(tǒng)測試5.1 實現(xiàn)環(huán)境硬件平臺:安裝有windows系統(tǒng),操作系統(tǒng)和版本:Microsoft visual vc+6.05.2 語言選擇C+叫言5.3 測試文件D:english.txtExtravagant Spending on College CampusAccording to a survey, in recent years the monthly expenditure of a college st
23、udent has been on the sharp rise. Many college students spend money like water and have no concept of thrift in their mind. They take it for granted that they spend money from their parents before they enter into the society. This extravagant spending is mainly caused by the following factors.First
24、of all, nowadays most of students are the only children of their families. They are the apple in their family s eyes and naturallyget more care and pocket money. Secondly, with the improvement of living standard, parents can afford higher expenditure of their children. Thirdly, some students like to
25、 pursue fashion and trends, which tends to need more money. Finally, campus love is also a possible factor causing extravagant spending.From mypoint of view, a college student, as a pure consumer, should learn to be thrifty. We should limit our expenditure on daily necessities but not buy whatever w
26、e want regardless of their prices. The habit of thrift can help us form right values and is favorable to our future development.5.4 測試分析5.4.1 運行程序初始界面E;目婀程序語言程序EnglisNDebugEmgllkhmeBxtrauagfanit Spending on Collesfe CampusAccording to a surveyja. in i*ecenit years the monthly expenditure of a colleg
27、ehtudent has been on the and liaue no Concept of spend money From their kant spendingf is nainlvsharp rise. Many college students spend noneijp 1 ike waiter thrif t in t he ir mind. They take it for gfranted that they parents before they enter into the society. This extrauacaused by the followingFir
28、st of all, nouadas; most of students are|ies They ape the appl in the ii* family s eyes eke t money. Secondlil with tine in proue me nt offactors * the onlF children of their fanil and fiaturally get more care andliming standard, parentsi-rd higher expenditure oF their childremThirdli/ some students
29、 like to ashion and trends, which tends to need more m口mey. Finally, campus loue a possible fcausing1 extrauagisnt 霖pending.Fion ny point of view a collegie student, as a pure consumer shouldcan affpursue is alsolearn tq be thrifty. We should limit our expenditure on daily necessities but not buy w
30、hateuer we want regardless of their prices. The habit of thrift can help us form yight ualues and is fauorable to our future development己 1 nunber :1166MTKXaifMrKatMiMlM 畸蕤*KMSMMTMiMSMMrifM;著* 有 naan注注注W:班注注NMSM;著*有著KBt 第 MMSXiMMrK有著請輸入要統(tǒng)計的單詞,單詞之間用逗號F哥R輸入0鍵結束,本程序忽略空格M圖5運行程序初始界面圖5.4.2 輸入單詞“ of”查詢結果圖6
31、輸入一個單詞查詢結果5.4.3 輸入單詞“ of”和“ student ”查詢結果-33 -r JEtB%WiSWfSJEnglishDebLigEngli5h,exe*a possible factgp cansing extravagant spending1From my point of uieW* a college student, 已注 a pure consumer sliQuld learn t be thriftyH We should limit our expenditure on daily necessities hut not huy w hateuer we w
32、ant regardless the ii* prices * The habit of thrift can help us form right ualues and is f auorible to our future development.number請輸入要統(tǒng)計的單詞,單詞之間用逗號P鬲開(輸入0鍵結束,本程序忽略空格MN但 of 2.31) 3,345 4.32) 謬堇利共出現(xiàn)工瞅! 三百繼續(xù)Y 口尸N/n,:y循輸人要統(tǒng)計的單詞,單詞之間用逗號隔開(輸入噴結束,本程序忽略空格F,studenot(2,10 2.31) C3,S 311 3.34 43.42) 4.32) 4,
33、37)該單詞共出現(xiàn)次!student (4,7)該單詞共出現(xiàn)2次!1否繼續(xù)?y 口尸N/nh圖7輸入兩個單詞顯示結果5.4.4 輸入“tomorrow ”顯示結果圖8輸入文中未出現(xiàn)單詞顯示結果5.4.5 輸入“ n”推出程序圖9退出程序總結在本次課程設計中感受到自己也可以編寫小程序讓單詞統(tǒng)計變得如此簡單,同時 再次體會了鏈表在數(shù)據(jù)結構中的重要作用,通過查閱書籍與網(wǎng)上查詢了解了鏈表的更 多使用技巧,進一步夯實了以后編程的能力。致謝在這次課程設計中學到了很多在課堂上沒有學到的東西,首先感謝我的老師在上機時 對我的耐心指導和幫助,在我編寫的程序難以運行滿意是老師總是能夠給我充分的幫助, 啟發(fā)我成功排
34、除錯誤,少走了不少彎路;其次我要感謝學校給提供給我們足夠的實驗環(huán)境 與器材,同時配備了優(yōu)秀的指導老師讓我們在輕松愉快的環(huán)境中學習與實驗。在這次實驗 中可謂是讓我受益匪淺,學得輕松,學得開心,學得滿足。參考文獻1譚浩強等.C語言程序設計教程.高等教育出版社.20052 李建學 等.數(shù)據(jù)結構課程設計案例精編(用C/C+的述).清華大學出版.2007-2-13嚴蔚敏 等.數(shù)據(jù)結構(C語言版).清華大學出版社.2003-1#include#include#include#include source.husing namespace std;TLink link;int i=0;char szFile
35、2000; / 定義一個足夠長度的字符/*主函數(shù) *int main()show_text(); / 顯示全文函數(shù)cout wordsi = Itemi;+ i;temp - num = i;temp - wordsi = 0; /將錄入的單詞賦予 wordNode* ptrr = NULL;ptrr = link.gethead();while( ptrr != NULL )if( ptrr - num = temp - num )int n;for( n = 0; n wordsn ) != A_to_a( Itemn) break;if( n = i ) / 如果相等flag = 1;b
36、reak;ptrr = ptrr - next;if( flag != 1 )temp - ptr = NULL;temp - next = NULL;Node* Temp = head;if( head = NULL )head = temp;elsewhile( Temp - next != NULL )Temp = Temp - next;Temp - next = temp;elsedelete temp;大寫轉化成小寫/*/*char A_to_a( char alp )if( ( alp = A ) & ( alp = Z) alp = alp + 32;return alp;/*
37、統(tǒng)計頻率和位置*/void TLink二calcute(char *szFile, int size)記錄已搜索過的字符數(shù)-1列標行標記錄空格數(shù)-1int i = 0;/int col = 1; /int row = 0; / int count; / Node* ptrr = NULL;while( i = a & szFilei =A & szFilei num = j )int n;for( n = 0; n wordsn ) != A_to_a( szFilei - j+ n)break;if( n = j ) /如果相等node* temp;temp = new node;temp - col = col;temp - row = row;temp - next = NULL;node* Temp = ptrr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度集裝箱運輸企業(yè)信用評價與風險管理合同3篇
- 二零二五年環(huán)保節(jié)能型監(jiān)控設備采購與技術支持合同2篇
- 二零二五版房屋租賃及轉讓合同全方位權益創(chuàng)新協(xié)議2篇
- 二零二五版文化創(chuàng)意產(chǎn)業(yè)園區(qū)使用權轉讓合同3篇
- 二零二五年度國際公路運輸代理合同2篇
- 二零二五版城市綠化苗木租賃合同3篇
- 二零二五版環(huán)保設備質押貸款合同模板3篇
- 二零二五年度高級管理人員出差責任免除服務合同范本2篇
- 二零二五版體育行業(yè)勞動合同管理規(guī)范及運動員權益保障協(xié)議3篇
- 二零二五年度節(jié)水減排供水合同范本3篇
- 2023年山東省青島市中考化學試題(含答案解析)
- 商業(yè)計劃書(BP)產(chǎn)品與服務的撰寫秘籍
- 安徽華塑股份有限公司年產(chǎn) 4萬噸氯化石蠟項目環(huán)境影響報告書
- 公司章程(二個股東模板)
- 世界奧林匹克數(shù)學競賽6年級試題
- 藥用植物學-課件
- 文化差異與跨文化交際課件(完整版)
- 國貨彩瞳美妝化消費趨勢洞察報告
- 云南省就業(yè)創(chuàng)業(yè)失業(yè)登記申請表
- UL_標準(1026)家用電器中文版本
- 國網(wǎng)三個項目部標準化手冊(課堂PPT)
評論
0/150
提交評論