數(shù)據(jù)結(jié)構(gòu)課程設(shè)計文章編輯附錄中有全部代碼_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計文章編輯附錄中有全部代碼_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計文章編輯附錄中有全部代碼_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計文章編輯附錄中有全部代碼_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計文章編輯附錄中有全部代碼_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計任務(wù)書專業(yè)名稱:計算機科學(xué)與技術(shù)(軟件工程)課程名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計設(shè)計題目:文章編輯問題起止時間:2013 年 6 月 24 日至 2013 年 7 月 12 日問題描述靜態(tài)存儲一頁文章,每行最多不超過80 個字符,共N 行,程序可以統(tǒng)計出文字、數(shù)字、 空格的個數(shù),并且可以對文章中特定內(nèi)容進行查找及替換,同時也可以刪除指定內(nèi)容?;疽螅?1)分別統(tǒng)計出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);( 2)統(tǒng)計某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);( 3)查找出文章中某一段文字,并用其他文字進行替換;( 4)刪除某一子串,并將后面的字符前移。輸出形式:( 1)分行輸出用戶輸入的各行

2、字符;( 2)分4 行輸出 " 全部字母數(shù)" 、 " 數(shù)字個數(shù) " 、 " 空格個數(shù) " 、 " 文章總字?jǐn)?shù)" ;( 3)查找出指定字符串在文章中出現(xiàn)的所有地方并替換,輸出替換后結(jié)果;( 4)輸出刪除某一字符串后的文章;實現(xiàn)提示存儲結(jié)構(gòu)使用線性表,分別用幾個子函數(shù)實現(xiàn)相應(yīng)的功能,并且使用菜單的形式,可以選擇所要進行的操作(查找、替換、刪除、統(tǒng)計等)文章編輯系統(tǒng)1 概要設(shè)計本次課程設(shè)計的題目是文章編輯系統(tǒng),本系統(tǒng)的功能描述如下:用戶新建文本、瀏覽新建文本、文本字符統(tǒng)計、指定字符串統(tǒng)計、指定字符串刪除、指定字符串替換等

3、操作。1. 新建文本2. 瀏覽輸入文本3. 文本字符統(tǒng)計4. 指定字符串統(tǒng)計5. 指定字符串刪除6. 指定字符串替換7. 退出系統(tǒng)本系統(tǒng)包含七個功能模塊,分別為: 新建文本模塊,瀏覽輸入文本模塊,指定字符串統(tǒng)計模塊,指定字符串刪除模塊,指定字符串刪除模塊,指定字符串替換模塊以退出系統(tǒng)模塊。新建文本模塊實現(xiàn)用戶錄入文本信息,并且系統(tǒng)自動保存錄入信息。瀏覽輸入文本模塊實現(xiàn) 了顯示用戶錄入信息的功能。指定字符申統(tǒng)模塊實現(xiàn)了對英文字母數(shù) 和空格數(shù)及整篇文章總字?jǐn)?shù)的統(tǒng)計。指定字符串統(tǒng)計實現(xiàn)了統(tǒng)計用戶 自定義字符串個數(shù)的功能。指定字符串刪除模塊實現(xiàn)了對用戶自定義 字符串的刪除。指定字符串替換模塊實現(xiàn)了替換

4、用戶自定義字符串為 用戶定義的新字符功能。退出系統(tǒng)模塊實現(xiàn)了退出系統(tǒng)功能。圖1.1系統(tǒng)功能模塊圖2詳細設(shè)計這部分詳細介紹了系統(tǒng)中主要部分的功能實現(xiàn),以及代碼功能說明void Create(LINE * &head)printf (" 請輸入一頁文章,以Ctrl+E 為結(jié)尾 (每行最多輸入80 字符 !):n");/Ctrl+E 結(jié)束文本錄入,避免發(fā)生混淆LINE *p=new LINE;頭結(jié)點*/head=p;頭指針*/char ch100;while(1)gets(ch);符串! */if(strlen(ch)>80)/* 首先為鏈表建立一個附加表/*將 p

5、 付給 表/*輸入字printf(" 每行最多輸入80 字符 ");break;if(ch0=5)break; /*如果發(fā)現(xiàn)輸入AE,則退*/p=p->next=new LINE;p->data=new charstrlen(ch)+1;/*為結(jié)點分配空間 */strcpy(p->data,ch);if(chstrlen(ch)-1=5) /*除去最后一個控制符 AE */p->datastrlen(ch)-1='0'break;p->next=NULL;/*最后的一個指針為空 */head=head->next;/* 文

6、本字?jǐn)?shù)統(tǒng)計*/int Count_Space(LINE* &head)/ 統(tǒng)計空格數(shù)LINE *p=head;int asc_space=32;int count=0;int i;int Len;doLen=strlen(p->data);for(i=0;i<Len;i+)if(p->datai=asc_space)count+;while(p=p->next)!=NULL);return count;int Count_Num(LINE * &head)/ 統(tǒng)計數(shù)字個數(shù)LINE *p=head;int count=0;int Len;int i;doL

7、en=strlen(p->data);for(i=0;i<Len;i+)if(p->datai>=48 && p->datai<=57)count+;while(p=p->next)!=NULL);return count;int Count_All_Word(LINE * &head)/ 統(tǒng)計文章的總字?jǐn)?shù)LINE *p=head;int count=0;docount+=strlen(p->data);while(p=p->next)!=NULL);return count;int Count_Letter(LIN

8、E * &head)/ 統(tǒng)計字母數(shù)LINE *p=head;int count=0;int Len;int i;doLen=strlen(p->data);for(i=0;i<Len;i+)if(p->datai>='a'&&p->datai<='z'|p->datai>='A'&&計算字母個數(shù)p->datai<='Z')count+; /while(p=p->next)!=NULL);return count;int Fin

9、d_Word(LINE * &head,char *sch)/ 統(tǒng)計 sch 在文章中出現(xiàn)的次數(shù)LINE *p=head;int count=0;int len1=0;int len2=strlen(sch);int i,j,k;dolen1=strlen(p->data);/ 當(dāng)前行的字符數(shù)for(i=0;i<len1;i+)if(p->datai=sch0)k=0;for(j=0;j<=len2-1;j+)if(p->datai+j=schj)k=k+1;if(k=len2) count+;i=i+k-1;while(p=p->next)!=NU

10、LL);return count;/* 特定字符串的刪除*/void del_string_word(char *s,char *sch)char *p=strstr(s,sch);char tmp80;int len=strlen(s);int k,kk;int i=len-strlen(p);int j=i+strlen(sch);int count=0;for(k=0;k<i;k+)tmpcount+=sk;for(kk=j;kk<len;kk+)tmpcount+=skk;tmpcount='0'strcpy(s,tmp);void Del_String(L

11、INE * &head,char *sch)/ 刪除指定的字符串LINE *p=head;dowhile(strstr(p->data,sch)!=NULL) del_string_word(p->data,sch);while(p=p->next)!=NULL);/* 特定字符串的替換*/void replace_string_word(char *s,char *sch,char *reh)int StringLen;char caNewString100;char *FindPos = strstr(s, sch);/ if(!FindPos) | (!sch)

12、/return -1;while(FindPos)memset(caNewString, 0, sizeof(caNewString);StringLen = FindPos - s;strncpy(caNewString, s, StringLen); strcat(caNewString, reh);strcat(caNewString, FindPos + strlen(sch);strcpy(s, caNewString);FindPos = strstr(s, sch);/* return 0;*/void Replace_String(LINE * &head,char *

13、sch,char *reh)/換指定的字符串LINE *p=head;dowhile(strstr(p->data,sch)!=NULL)replace_string_word(p->data,sch,reh);while(p=p->next)!=NULL);/* 打印輸入的文本*/void OutPutTxt(LINE * &head)/ 向屏幕輸出文章LINE *p=head;printf(" 文本文件輸出如下:");doprintf("%sn",p->data);while(p=p->next)!=NULL);

14、void Count(LINE * &head)printf(" 文章統(tǒng)計信息結(jié)果:n");printf(" 全部字母數(shù):%dn",Count_Letter(head);printf(" 數(shù)字個數(shù):%dn",Count_Num(head);printf(" 空格個數(shù): %d n",Count_Space(head);printf("文章總字?jǐn)?shù) : %dn",(Count_All_Word(head)+Count_Num(head)+Count_Space( head)+Count_Let

15、ter(head)/2);printf("n");void main()LINE *head;char sch20;char reh20;char ID10;char ch;char tmp_sch20;char tmp_rch20;3 調(diào)試報告在本次程序設(shè)計中,在編譯過程中,出現(xiàn)了幾次問題( 1)錯誤提示:error C2660: 'search' : function does not take1 parameters錯誤類型:Search 函數(shù)參數(shù)錯誤改正方法:將case 語句后加break 語句進行返回。( 2)錯誤提示:error C2228: l

16、eft of '.search' must haveclass/struct/union type錯誤類型:指針符號使用錯誤 改正方法:將 s.Search(stu,s) 更改為 s->search(stu,s)(3 ) 錯誤提示:error C2676: binary '>>' : 'classstd二basic_ofstream<char,structstd:char_traits<char> >does not define this operator or a conversion to a type a

17、cceptable to the predefined operator錯誤類型:文件流輸入輸出符號使用錯誤,錯誤使用 >>乍為文件寫 入操作符。改正方法:將 >>改為<<。4測試結(jié)果測試項目測試數(shù)據(jù)測試結(jié)果登陸界面1.新建義本顯示:2.瀏覽輸入義本1.新建義本3.文本字符統(tǒng)計2.瀏覽輸入義本4.指定字符用統(tǒng)計3.文本字符統(tǒng)計5.指定字符串刪除4.指定字符用統(tǒng)計6.指定字符串替換5.指定字符串刪除7.退出6.指定字符串替換7.退出新建功能輸入1:新建義本Abcdefg 1234567顯示:Abcdefg 1234567顯示功能輸入2:瀏覽輸入義本顯示用戶錄入

18、結(jié)果:Abcdefg 1234567統(tǒng)計功能輸入3:文本字符統(tǒng)計文章統(tǒng)計信息結(jié)果:全部字母數(shù):7數(shù)字個數(shù):7空格個數(shù):1文草思子數(shù):15指定字符串統(tǒng)計功能輸入4:指定字符串刪除輸入要統(tǒng)計字符串:Ab出現(xiàn)次數(shù):1指定字符串刪除功能輸入5:指定字符串刪除輸入要刪除字符串:Ab刪除后文本文件如下:cdefg 1234567指定字符串替換功能輸入6:指定字符串替換要替換掉的字符串:cdefg要替換成的字符串:!替換后文本義件如下:! ! ! ! 12345675使用說明本系統(tǒng)開始時顯示所有選擇項。選擇項采用文字提示,數(shù)字選擇進行選擇操作。圖5.1顯示運行界面錄入選項:輸入1:新建文本圖5.2新建文本界

19、面輸入2:瀏覽輸入文本圖5.3瀏覽輸入文本界面輸入3:文本字符統(tǒng)計圖5.4文本字符統(tǒng)計界面輸入4:指定字符串統(tǒng)計圖5.5指定字符串統(tǒng)計界面輸入5:指定字符串刪除圖5.6指定字符串刪除界面輸入6:指定字符串替換圖5.7指定字符串替換界面輸入7:退出5.8 退出界面6 總結(jié)感謝老師的指導(dǎo)和講解。通過老師的講解,讓我對這門課程有了 深刻的認(rèn)識和了解,也讓我對這門課程有了重新的認(rèn)識。通過近兩周的課程設(shè)計中,我學(xué)到了數(shù)據(jù)結(jié)構(gòu)程序設(shè)計中對類的 設(shè)計方法,及對磁盤文件的操作,從中理解了數(shù)據(jù)結(jié)構(gòu)中的設(shè)計思想。 經(jīng)過這次集中上機實習(xí),我充分意識到了數(shù)據(jù)結(jié)構(gòu)的用途是非常廣的, 功能也非常強大,是學(xué)計算機不可缺少的

20、知識;更重要的是,在這次 編程中熟悉了編寫一個比較復(fù)雜程序的流程,以及發(fā)現(xiàn)問題、解決問 題的能力,為了下一次學(xué)習(xí)一門新的計算機語言做了充分準(zhǔn)備。在之 前感覺還是遙不可及的功能,現(xiàn)在可以實現(xiàn)了,這自然要感謝老師和 同學(xué)們的熱心幫助,這是我得以及時完成這個程序的重要因素。最后 還是要感謝老師對我們孜孜不倦的教導(dǎo)。成績:預(yù)習(xí)報告 分,系統(tǒng) 分,課設(shè)報告 分,總分 分,總評: 評語:批閱教師簽字:年 月 日附錄:全部代碼#include <string.h> #include <stdio.h> #include <stdlib.h>#include <con

21、io.h>typedef struct linechar *data;struct line *next;LINE;void Create(LINE * &head)printf ("請輸入一頁文章,以Ctrl+E 為結(jié)尾(每行最多輸入80字符 !):n");LINE *p=new LINE;/* 首先為鏈表建立一個附加表頭結(jié)點 */head=p;/* 將 p 付給表頭指針 */char ch100;while(1)gets(ch);/* 輸入字符串!*/if(strlen(ch)>80)printf(" 每行最多輸入80 字符 ")

22、;break;if(ch0=5)break;/*如果發(fā)現(xiàn)輸入 AE ,則退出輸入 */p=p->next=new LINE;p->data=new charstrlen(ch)+1;/* 為結(jié)點分配空間 */strcpy(p->data,ch);if(chstrlen(ch)-1=5)/* 除去最后一個控制符AE*/p->datastrlen(ch)-1='0'break;/* 最后的一個指針為p->next=NULL;空 */head=head->next;/* 文本字?jǐn)?shù)統(tǒng)計*/int Count_Space(LINE* &head

23、)/ 統(tǒng)計空格數(shù)LINE *p=head;int asc_space=32;int count=0;int i;int Len;doLen=strlen(p->data);for(i=0;i<Len;i+)if(p->datai=asc_space)count+;while(p=p->next)!=NULL);return count;int Count_Num(LINE * &head)/ 統(tǒng)計數(shù)字個數(shù)LINE *p=head;int count=0;int Len;int i;doLen=strlen(p->data);for(i=0;i<Len

24、;i+)if(p->datai>=48 && p->datai<=57)count+;while(p=p->next)!=NULL);return count;int Count_All_Word(LINE * &head)/ 統(tǒng)計文章的總字?jǐn)?shù)LINE *p=head;int count=0;docount+=strlen(p->data);while(p=p->next)!=NULL);return count;int Count_Letter(LINE * &head)/ 統(tǒng)計字母數(shù)LINE *p=head;int

25、count=0;int Len;int i;doLen=strlen(p->data);for(i=0;i<Len;i+)if(p->datai>='a'&&p->datai<='z'|p->datai>='A'&& p->datai<='Z')count+;/ 計算字母個數(shù)while(p=p->next)!=NULL);return count;int Find_Word(LINE * &head,char *sch)/ 統(tǒng)

26、計 sch 在文章中出現(xiàn)的次數(shù)LINE *p=head;int count=0;int len1=0;int len2=strlen(sch);int i,j,k;dolen1=strlen(p->data);/ 當(dāng)前行的字符數(shù)for(i=0;i<len1;i+)if(p->datai=sch0)k=0;for(j=0;j<=len2-1;j+)if(p->datai+j=schj)k=k+1;if(k=len2) count+;i=i+k-1;while(p=p->next)!=NULL);return count;/* 特定字符串的刪除*/void de

27、l_string_word(char *s,char *sch)char *p=strstr(s,sch);char tmp80;int len=strlen(s);int k,kk;int i=len-strlen(p);int j=i+strlen(sch);int count=0;for(k=0;k<i;k+)tmpcount+=sk;for(kk=j;kk<len;kk+)tmpcount+=skk;tmpcount='0'strcpy(s,tmp);void Del_String(LINE * &head,char *sch)/ 刪除指定的字符串L

28、INE *p=head;dowhile(strstr(p->data,sch)!=NULL)del_string_word(p->data,sch);while(p=p->next)!=NULL);/* 特定字符串的替換*/void replace_string_word(char *s,char *sch,char *reh)int StringLen;char caNewString100;char *FindPos = strstr(s, sch);/if(!FindPos) | (!sch)/return -1;while(FindPos)memset(caNewSt

29、ring, 0, sizeof(caNewString);StringLen = FindPos - s;strncpy(caNewString, s, StringLen);strcat(caNewString, reh);strcat(caNewString, FindPos + strlen(sch);strcpy(s, caNewString);FindPos = strstr(s, sch);/* return 0;*/替換void Replace_String(LINE * &head,char *sch,char *reh)/指定的字符串LINE *p=head;dowh

30、ile(strstr(p->data,sch)!=NULL)replace_string_word(p->data,sch,reh);while(p=p->next)!=NULL);/* 打印輸入的文本*/void OutPutTxt(LINE * &head)/ 向屏幕輸出文章LINE *p=head;printf(" 文本文件輸出如下:");doprintf("%sn",p->data);while(p=p->next)!=NULL);void Count(LINE * &head)printf(&quo

31、t; 文章統(tǒng)計信息結(jié)果:n");printf(" 全部字母數(shù):%dn",Count_Letter(head);printf(" 數(shù)字個數(shù):%dn",Count_Num(head);printf(" 空格個數(shù): %d n",Count_Space(head);printf("文章總字?jǐn)?shù) : %dn",(Count_All_Word(head)+Count_Num(head)+Count_Space(head)+Count_Letter(head)/2);printf("n");void

32、main()LINE *head;char sch20;char reh20;char ID10;char ch;char tmp_sch20;char tmp_rch20;printf("n");printf("n");printf("文章編輯系統(tǒng)n");printf("n");printf("n");while(1)printf("printf("n");printf("n");printf("n");printf(&qu

33、ot;2n");printf("n");printf("3n");printf("n");printf("4統(tǒng)計n");1. 新 建 文 本瀏覽輸入文本文本字符統(tǒng)計指定字符串的printf("n");5. 指 定 字 符 串 的刪除printf("n");n");printf("替換printf("n");n");printf("n");printf("n");printf(&

34、quot;printf("6. 指 定 字 符 串 的7. 退出*n"printf(" 請 輸 入 功 能 序 號: ");scanf("%s",ID);while(1)if(strcmp(ID,"1")=0) printf(" 新建文本要覆蓋已有文本,是否繼續(xù)輸入?Y/N ) n");getchar();scanf("%c",&ch);system("cls");if(ch='n'|ch='N')break;else if(ch='y'|ch='Y')Create(head);break;else if(strcmp(ID,"2")=0)system("cls");OutPutTxt(head);break;else if(strcmp(ID,"3")=0)system("cls");OutPutTxt(head);

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論