數(shù)據(jù)結(jié)構(gòu)課程設(shè)計文章編輯系統(tǒng)剖析_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計文章編輯系統(tǒng)剖析_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計文章編輯系統(tǒng)剖析_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計文章編輯系統(tǒng)剖析_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計文章編輯系統(tǒng)剖析_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計說明書文章編輯2016 年 6月 15 日140203403161460140311成 績:目錄1 系統(tǒng)需求分析52 系統(tǒng)設(shè)計62.1 輸入模塊62.2 統(tǒng)計模塊62.3 刪除模塊63 程序設(shè)計流程圖74 測試結(jié)果及運(yùn)行效果95 測試過程中的問題及注意事項135.1 問題135.2 注意事項 13 總結(jié)14參考文獻(xiàn)15系統(tǒng)需求分析本實(shí)驗所要實(shí)現(xiàn)的功能:輸入一頁文字,程序可以統(tǒng)計出文字、數(shù)字、空格 的個數(shù)。靜態(tài)存儲一頁文章,每行最多不超過 80 個字符,共 N行;要求:(1)分別統(tǒng)計出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);(2)統(tǒng)計某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);(

2、3)刪除某一子串,并將后面的字符前移。存儲結(jié)構(gòu)使用線性表,分別用幾個子函數(shù)實(shí)現(xiàn)相應(yīng)的功能; 輸入數(shù)據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標(biāo)點(diǎn)符 號。輸出形式:(1)分行輸出用戶輸入的各行字符;(2)分 4行輸出全部字母數(shù) 、數(shù)字個數(shù) 、 空格個數(shù)和文章總字?jǐn)?shù) 輸出刪除某一字符串后的文章; 用鏈表存放數(shù)據(jù)非常靈活,只要內(nèi)存足夠大,對鏈表可以做任意擴(kuò)充和修改。 主要的手段為鏈表的遍歷。 定義一個頭指針 head,每個結(jié)點(diǎn)的數(shù)據(jù)域存放數(shù)據(jù) 本身,指針域存放下一個結(jié)點(diǎn)地址,所以,我們只要知道head,就可以遍歷整個鏈表,找到我們所需要的字符(串) ,進(jìn)行相應(yīng)的操作。2 系統(tǒng)設(shè)計2.1

3、 輸入模塊存儲結(jié)構(gòu): 采用單鏈表結(jié)構(gòu)存儲文章, 每個結(jié)點(diǎn)存儲一行, 每行最長不超過 80 個字符。結(jié)構(gòu)定義:typedef struct linechar *data; / 字符串指針需要時動態(tài)分配內(nèi)存struct line *next;LINE;算法描述:用 gets 函數(shù)接收輸入,每遇到一個回車換行就新建一個結(jié)點(diǎn), 將當(dāng)前行存入其 data 域。當(dāng)發(fā)現(xiàn)輸入為 E 時,在 Data 的最后加上字符串結(jié)束 標(biāo)志,并置當(dāng)前結(jié)點(diǎn)的 Next 指針域為 NULL。2.2 統(tǒng)計模塊統(tǒng)計模塊包括統(tǒng)計全部字母數(shù), 統(tǒng)計數(shù)字個數(shù), 統(tǒng)計空格個數(shù), 以及統(tǒng)計文 章總字?jǐn)?shù),這四個部分的實(shí)現(xiàn)算法大體相同, 四者的

4、關(guān)系是: 全部字母數(shù)數(shù)字 個數(shù)空格個數(shù)文章總字?jǐn)?shù), 也就是說可以在統(tǒng)計出其中三者的前提下計算出 第四個的數(shù)量。另外一個重要的統(tǒng)計功能是統(tǒng)計某一字符串在整篇文章中出現(xiàn)的次數(shù), 這個 需要用到串的模式匹配算法來實(shí)現(xiàn)。2.3 刪除模塊刪除模塊的算法思想類同統(tǒng)計字符串的算法思想, 由于采用了鏈表的存儲結(jié) 構(gòu),使得刪除算法的時間復(fù)雜度大大減少。void Del_String(LINE * &head,char *sch) /刪除指定的字符串LINE *p=head;dowhile(strstr(p-data,sch)!=NULL)del_string_word(p-data,sch); while(p=

5、p-next)!=NULL); / 遍歷鏈表程序設(shè)計流程圖根據(jù)題目與上述分析,可得主程序設(shè)計流程圖如下所示:圖 3-1 主程序設(shè)計流程圖文章輸入、瀏覽、統(tǒng)計串、統(tǒng)計及刪除的詳細(xì)流程如圖 12 所示:圖 3-2 詳細(xì)流程圖測試結(jié)果及運(yùn)行效果程序運(yùn)行,首先顯示選擇菜單,如圖示:圖 4-1 選擇菜單選擇 1, 輸入文章,界面運(yùn)行結(jié)果如下:圖 4-2 輸入界面7按回車,調(diào)出開始菜單,輸入 2, 選擇瀏覽,可以原樣顯示出剛才輸入的文本:圖 4-3 文章瀏覽界面回車后輸入 3,可以看到文章統(tǒng)計信息結(jié)果:圖 4-4 統(tǒng)計結(jié)果界面8根據(jù)頁面提示,回車統(tǒng)計字符串模塊, 輸入要統(tǒng)計的字符串, 可以查找出該字符串在

6、文章中出現(xiàn) 過的次數(shù)。運(yùn)行情況如下圖示:圖 4-5 統(tǒng)計字符串出現(xiàn)次數(shù)界面根據(jù)頁面提示,回車刪除模塊, 輸入要刪除的字符串, 執(zhí)行刪除后可以顯示刪除后的文本。 界面如下:圖 4-6 刪除字符串后的界面9 根據(jù)頁面提示,回車: 退出頁面,執(zhí)行后的結(jié)果如下:圖 4-7 退出界面105 測試過程中的問題及注意事項5.1 問題1 . 主流程進(jìn)入死循環(huán)。 .解決方案:每個循環(huán)都加 break ,每跳出一個模塊, opt 重新賦值為 0。2 輸入多個變量,需要空格間隔時,程序只讀空格前的變量 解決方案:輸 . 入函數(shù)用 get( ) 函數(shù),形式為: get(tmp) ,即可解決著個 問題。3. 不識別自定

7、義函數(shù)。解決方案:函數(shù)定義前要函數(shù)聲明, 若不聲明, 則調(diào)用函數(shù)必須在函數(shù)定義 之后,否則不識別。4, 程序結(jié)束之后,鏈表仍占空間。 解決方案:在建立鏈表是所申請的內(nèi)存空間在程序結(jié)束之前用 free_link(LINE *&head) 函數(shù)釋放,即刪除鏈表中的全部結(jié)點(diǎn),且將鏈表頭指針 置為空。5.2 注意事項(1)opt 代表選項(共六個,多于六個顯示“不可識別選項” )。(2)建立文章,用鏈表存儲, p=p-next=new LINE, 即文章的每一行存儲在 一個結(jié)點(diǎn)中。(3)Ctrl+E 為結(jié)束標(biāo)志。(4)了解常用 AS碼。11總結(jié)本實(shí)驗采用鏈?zhǔn)巾樞虮斫Y(jié)構(gòu)實(shí)現(xiàn)了文章編輯的基本功能, 實(shí)驗過

8、程中遇到了 很多或大或小的問題, 在這些問題的解決過程中, 加深了對鏈表的理解, 使我對 鏈表操作的字符串的模式匹配有了更深更全面的認(rèn)識。本實(shí)驗提高了我對數(shù)據(jù)邏輯結(jié)構(gòu)的特點(diǎn)和存儲表示方式的認(rèn)識, 培養(yǎng)了我在 具體應(yīng)用中選擇合適的數(shù)據(jù)結(jié)構(gòu)和存儲結(jié)構(gòu)的能力。通過該實(shí)驗, 使我熟悉了軟件開發(fā)的基本過程, 初步掌握了軟件開發(fā)過程的 問題分析、系統(tǒng)設(shè)計、程序編碼測試等階段的基本任務(wù)和技能方法。使我的算法設(shè)計和算法分析能力以及運(yùn)用所學(xué)理論知識和方法獨(dú)立分析問 題的能力得到全面的提高。訓(xùn)練了我用系統(tǒng)的觀點(diǎn)和軟件開發(fā)的一般規(guī)范。 使我認(rèn)識到一個軟件工作者 所應(yīng)該具備的科學(xué)的工作方法、作風(fēng)和相互合作精神。本實(shí)驗的模塊化比較強(qiáng),各個模塊之間用指針 head 連接。認(rèn)清模塊化的概 念給程序的順利編制起到了很大的作用。 分模塊各個調(diào)試, 可以減少很多不必要 的麻煩。12參考資料1 嚴(yán)蔚敏, 吳偉民. 數(shù)據(jù)結(jié)構(gòu) M. 清華大學(xué)出版社, 2002.2 殷人昆. 數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論