資源描述:
《文本編輯和查找.doc》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、數(shù)據(jù)結構與算法設計課程設計報告題目:文本編輯和串查找統(tǒng)計學生姓名:學號:班級:指導教師:2011年6月16日目錄1.需求分析說明………………………………………………………………………….22.總體設計…………………………………………………………………………33.詳細設計…………………………………………………………………………4-54.實現(xiàn)部分…………………………………………………………………………6-115.程序調(diào)試…………………………………………………………………………11-136.總結………………………………………………………
2、……………………131.需求分析說明1.1題目與要求文本編輯和串查找統(tǒng)計任務:輸入一頁文字,程序可以統(tǒng)計出文字、數(shù)字、空格和其它標點符號的個數(shù)。靜態(tài)存儲一頁文章,每行最多不超過80個字符,共N行;功能要求:1)、分別統(tǒng)計出其中英文字母數(shù)、空格數(shù)、標點符號及整篇文章總字數(shù);2)、統(tǒng)計某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);3)、刪除某一子串,并將后面的字符前移。要求用菜單選擇操作,分別用幾個子函數(shù)實現(xiàn)相應的功能;輸入數(shù)據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標點符號。輸出形式:(1)分行輸出用戶輸入的各行字符;(
3、2)分5行輸出"全部字母數(shù)"、"數(shù)字個數(shù)"、"空格個數(shù)"、“標點符號個數(shù)”"文章總字數(shù)"(3)輸出刪除某一字符串后的文章;1.2本程序涉及的知識點鏈串的插入,刪除,查找,模式匹配(knp算法)及文件的寫入與寫出,用switch,case語句進行菜單的選擇,用while語句進行循環(huán),用if語句進行條件的判斷等等。2總體設計2.1基本思路本文采用鏈式存儲字符串,鏈串的插入采用后插法,以‘#’為字符串結束的標志。在插入字符串的同時用文件存儲字符串。刪除算法的基本思路:輸入要刪除的字符串,同樣以‘#’結束,然后在文中查找該字符串,若找到了
4、則把它刪除,同時長度要減少;否則,沒找到不能刪除。查找算法與刪除算法類似;但也有不同之處,不同在于:這里是要查找某字符串在文中出現(xiàn)的次數(shù),因此,當找到該字符串后還要繼續(xù)往后查找,并將次數(shù)加1;直到文章的末尾才結束查找。用菜單做選擇,用switch,case語句進行選擇判斷,并用類的對象調(diào)用類的成員函數(shù)以實現(xiàn)特定的功能。由于采用鏈式存儲字符串,它是按一個一個的字符進行存儲的,當遇到空隔和換行符時它會忽略不計。為了解決這一問題,本文采用替換的方法——當要輸入空格時就輸入‘:’,當要輸入換行符時就輸入’\’,在輸出時,遇到‘:’就輸出
5、空格,遇到‘\’就輸出換行符。2.2功能設計根據(jù)提示選擇是否開始yn選擇操作退出調(diào)用相應函數(shù)是否繼續(xù)?3.詳細設計Linklist類中有一個保護成員head(指針類型);公有成員中包含一個整型變量len,用于計算字符串的長度;另外還包含5個子函數(shù),分別是1,voidrcreat()函數(shù),用尾插法建立鏈串,并將字符串存入文件,遇到#時結束;2,voidprint(link*head)函數(shù),用于輸出鏈串,當遇到的字符為冒號(:)時輸出空格,當遇到的字符為(\)時輸出換行,當遇到的字符大于等于48并且小于等于57時,數(shù)字個數(shù)加1,當
6、遇到的字符為標點符號時,相應的標點符號數(shù)加1,并輸出;判斷完后指針后移。3,voiddeletel(link*head,link*head2)為刪除字符串的函數(shù),其中head是指向輸入的文章的第一個字符,head2是指向要刪除的字符串的第一個字符,采用模式匹配的算法進行查找,若在文中找到了一個字符與要刪除的第一個字符相同,則指針分別往后移,若文中的下一個字符與第二個字符不相同,則繼續(xù)找文中的下一個字符與要刪除的字符從第一個字符開始從新匹配,直到要刪除的字符都匹配完;找到了要刪除的字符串在文中的位置后,將文中與這串字符匹配的第一個字
7、符開始到最后一個匹配的這段字符刪除;若沒有找到該字符串則不能刪除。4,voidprint2(link*head2)函數(shù),輸出要刪除的字符串,其中,head2指向要刪除的字符串的第一個字符。5,void*found(link*head,link*head2)函數(shù)用于查找字符串在文中出現(xiàn)的次數(shù);設置一個整型變量num,用于統(tǒng)計出現(xiàn)次數(shù),其初始值為0。同樣采用模式匹配的算法,但不同的是,找到第一次在文中出現(xiàn)的位置后num+1,并且還要繼續(xù)找文中的下一個,找到了又要num+1,直到文章的末尾,然后輸出num值。部分函數(shù)模塊流程圖:void
8、*found(link*head,link*head2)intnum=0;link*P,*Q,*R;P=head->next;Q=head2->next;R=P;While(P!=NULL)&&(Q!=NULL)if(P->data==Q->dat