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

下載本文檔

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

文檔簡(jiǎn)介

1、 成 績(jī)10信計(jì)2011-2012(一)數(shù) 據(jù) 結(jié) 構(gòu) 課 程 設(shè) 計(jì)設(shè)計(jì)題目 文章編輯 設(shè)計(jì)時(shí)間 2011.12.29 至 2012.1.4 學(xué)生姓名 學(xué)生學(xué)號(hào) 所在班級(jí) 指導(dǎo)教師 徐州工程學(xué)院數(shù)學(xué)與物理科學(xué)學(xué)院文章編輯一、需求分析 本次課程設(shè)計(jì),我做的是文章編輯。任務(wù)與要求包括:輸入一頁文字,程序可以統(tǒng)計(jì)出文字、數(shù)字、空格的個(gè)數(shù)。靜態(tài)存儲(chǔ)一頁文章,每行最多不超過80個(gè)字符,共n行;要求(1)分別統(tǒng)計(jì)出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);(2)統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);(3)刪除某一子串,并將后面的字符前移。存儲(chǔ)結(jié)構(gòu)使用線性表,分別用幾個(gè)子函數(shù)實(shí)現(xiàn)相應(yīng)的功能。輸入數(shù)

2、據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標(biāo)點(diǎn)符號(hào)。輸出形式:(1)分行輸出用戶輸入的各行字符;(2)分4行輸出全部字母數(shù)、數(shù)字個(gè)數(shù)、空格個(gè)數(shù)、文章總字?jǐn)?shù)(3)輸出刪除某一字符串后的文章。運(yùn)行環(huán)境包括: windows xp操作系統(tǒng)、visual c+6.0編譯環(huán)境。二、概要設(shè)計(jì)對(duì)于文章的處理,我用的是for語句查找,即將符合條件的字符查找出來,然后通過函數(shù)實(shí)現(xiàn)字符的統(tǒng)計(jì),刪除等操作。同時(shí),存儲(chǔ)用線性表的鏈表結(jié)構(gòu),然后通過設(shè)計(jì)四個(gè)函數(shù),實(shí)現(xiàn)設(shè)計(jì)要求的4個(gè)基本功能。1、 主要模塊的描述用while語句進(jìn)行編寫:while(l-next)for (p = l, q = s; *q !

3、= 0 & p-next; p = p-next, q+)if (p-c != *q) break;if (*q = 0) n+;l = l-next;將鏈表指針指向輸入的字符串開始字符,和文章中字符的首位,然后使用循環(huán)語句,將字符串的每一個(gè)字符依次比較,判斷相同的字符,以便實(shí)現(xiàn)其他的查找,統(tǒng)計(jì),刪除等功能。2、程序流程框圖如圖所示輸入文章,確定操作選擇進(jìn)行編輯退出完成 退出是否3、各功能函數(shù)描述本次設(shè)計(jì)共分為四個(gè)函數(shù),分別實(shí)現(xiàn)四個(gè)功能:(1)統(tǒng)計(jì)文章中的字符數(shù),空格數(shù),數(shù)字等void print2(ca *l, int &p1, int &p2, int &p3, int &n) / 統(tǒng)計(jì)字

4、符信息;(2)刪除輸入的某一段字符void print2(ca *l, int &p1, int &p2, int &p3, int &n) / 統(tǒng)計(jì)字符信息;(3)字符串刪除:vca *delstr(ca *l) /刪除某一字段,統(tǒng)計(jì)某一字符,函數(shù)為:void strno(ca *l)三、詳細(xì)設(shè)計(jì)1、存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)線性表是最基本、最簡(jiǎn)單、也是最常用的一種數(shù)據(jù)結(jié)構(gòu)。線性表中數(shù)據(jù)元素之間的關(guān)系是一對(duì)一的關(guān)系,即除了第一個(gè)和最后一個(gè)數(shù)據(jù)元素之外,其它數(shù)據(jù)元素都是首尾相接的。線性表的邏輯結(jié)構(gòu)簡(jiǎn)單,便于實(shí)現(xiàn)和操作。因此,線性表這種數(shù)據(jù)結(jié)構(gòu)在實(shí)際應(yīng)用中是廣泛采用的一種數(shù)據(jù)結(jié)構(gòu)。在實(shí)現(xiàn)線性表數(shù)據(jù)元素的存儲(chǔ)方

5、面,一般可用順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)兩種方法。本程序中采用鏈?zhǔn)酱鎯?chǔ)。2、算法設(shè)計(jì)本課程設(shè)計(jì)中用指針鏈表,配合循環(huán)語句,完成字符串比較功能,從而完成統(tǒng)計(jì)字符串,刪除字符串,統(tǒng)計(jì)字符信息的功能。字符串刪除:如果,輸入字符的第一個(gè)字母與文本中的元字符有相同的時(shí)候,執(zhí)行第一個(gè)for循環(huán)語句,對(duì)原文中的字符依次和輸入的字符串比較,有不相同的跳出,如果完全相同,則將p指針給h指針,從而達(dá)到刪除的作用。然后,進(jìn)行上述操作,完成刪除操作。3、程序運(yùn)行流程說明程序運(yùn)行時(shí)首先從主函數(shù)開始,先判斷選擇的操作。然后根據(jù)要求進(jìn)行相應(yīng)的查找,刪除,統(tǒng)計(jì),顯示的操作,一次操作完之后,會(huì)回到開始的選擇界面,用戶可重新選擇操

6、作,如果用戶選擇退出,程序就停止。#include#include #include /文本每行以字符串形式存儲(chǔ),行與行之間以鏈表存儲(chǔ)typedef struct line char *data; struct line *next;line;templateclass wenbenpublic:create(line * &head);countletter(line * &head);countnumber(line * &head);countspace(line * &head);countall(line * &head);findstring(line * &head,char *

7、str);delstringword(char *s,char *str);output(line * &head);void create(line * &head) cout請(qǐng)輸入文本,以ctrl+e(e)為結(jié)尾,每行最多輸入80字符!80) coutnext=new line; p-data=new charstrlen(tmp)+1; strcpy(p-data,tmp); if(tmpstrlen(tmp)-1=5) p-datastrlen(tmp)-1=0; break; p-next=null; head=head-next;/=/統(tǒng)計(jì)字母數(shù)int countletter(li

8、ne * &head) line *p=head; int count=0;do int len=strlen(p-data); for(int i=0;idatai=a&p-dataidatai=a&p-datainext)!=null); return count; /=/統(tǒng)計(jì)數(shù)字?jǐn)?shù)int countnumber(line * &head) line *p=head; int count=0; do int len=strlen(p-data); for(int i=0;idatai=48 & p-datainext)!=null); return count;int countspace

9、(line * &head) line *p=head; int count=0; do int len=strlen(p-data); for(int i=0;idatai=32)count+; while(p=p-next)!=null); return count;int countall(line * &head) line *p=head; int count=0; do count+=strlen(p-data); while(p=p-next)!=null); return count;int findstring(line * &head,char *str) line *p=

10、head; int count=0; int h=0;int len1=0; int len2=strlen(str); int i,j,k; do len1=strlen(p-data); for(i=0;idatai=str0)k=0; for(j=0;jdatai+j=strj) k+;if(k=len2)count+;i=i+k-1; while(p=p-next)!=null); return count;void delstringword(char *s,char *str)char *p=strstr(s,str); char tmp80; int len=strlen(s);

11、 int i=len-strlen(p); int j=i+strlen(str); int count=0; for(int m=0;mi;m+)tmpcount+=sm; for(int n=j;ndata,str)!=null)delstringword(p-data,str);while(p=p-next)!=null); void output(line * &head) line *p=head; do coutdatanext)!=null); void main()line *head; create(head);cout文章為:endl;output(head);couten

12、dl全部字母數(shù):countletter(head)endl;cout數(shù)字個(gè)數(shù):countnumber(head)endl;cout空格個(gè)數(shù): countspace(head)endl;cout文章總字?jǐn)?shù): countall(head)endl;char str120,str220;coutendlstr1;coutstr1出現(xiàn)的次數(shù)為:findstring(head,str1)endl;coutendlstr2;delstring(head,str2); cout刪除str2后的文章為:endl;output(head); 四、調(diào)試分析設(shè)計(jì)程序初犯了一些錯(cuò)誤,開始的布局比較混亂,程序?yàn)橐粔K一塊

13、,連接不當(dāng),后來查看了別人的優(yōu)秀作品仿照它們的順序,完成了相對(duì)較為有序的程序。并且一開始在自己的電腦上運(yùn)行時(shí),出現(xiàn)了不少錯(cuò)誤不能運(yùn)行,為設(shè)計(jì)增加了難度。根據(jù)調(diào)試時(shí)提示的錯(cuò)誤加上同學(xué)的幫忙,最后運(yùn)行成功。為了避免在調(diào)試過程中出現(xiàn)輸入錯(cuò)誤的情況,寫代碼時(shí)寫明注釋對(duì)測(cè)試和尋找錯(cuò)誤節(jié)省了很多時(shí)間。首先,在程序中輸入一段文字,便實(shí)現(xiàn)統(tǒng)計(jì)這段文字中英文字符,空格,數(shù)字,和文章總字?jǐn)?shù)的功能,如下圖:接著,對(duì)上面的文字進(jìn)行統(tǒng)計(jì)字符數(shù)的操作,比如輸入字符 chen ,統(tǒng)計(jì)到的字符數(shù)為4,如下圖所示:對(duì)輸入的文字進(jìn)行字符刪除的操作,比如輸入字符yue,如圖所示五、課設(shè)總結(jié)本程序的設(shè)計(jì)目的是能更好更快的解決文章編輯問題。經(jīng)過測(cè)試和試用,我相信本程序達(dá)到了方便和實(shí)用的設(shè)計(jì)目的,并在程序的實(shí)現(xiàn)方面有著獨(dú)到之處。這次課程設(shè)計(jì)使我對(duì)做自己真正的了解了。我真正體會(huì)到了在整個(gè)過程給我?guī)淼臒o奈與快樂??墒俏覍?duì)數(shù)據(jù)結(jié)構(gòu)掌握的還不行,在設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)時(shí)候許多東西東都不會(huì)。我終于認(rèn)識(shí)到問題的根源所在。然后我只好再次認(rèn)真細(xì)致地對(duì)開發(fā)過程進(jìn)行了規(guī)劃和分析

溫馨提示

  • 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. 人人文庫網(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)論