




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課程設計任務書專業(yè)名稱:計算機科學與技術(軟件工程)課程名稱:數(shù)據(jù)結構課程設計設計題目:文章編輯問題起止時間:2013 年 6 月 24 日至 2013 年 7 月 12 日問題描述靜態(tài)存儲一頁文章,每行最多不超過80 個字符,共N 行,程序可以統(tǒng)計出文字、數(shù)字、 空格的個數(shù),并且可以對文章中特定內容進行查找及替換,同時也可以刪除指定內容?;疽螅?1)分別統(tǒng)計出其中英文字母數(shù)和空格數(shù)及整篇文章總字數(shù);( 2)統(tǒng)計某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);( 3)查找出文章中某一段文字,并用其他文字進行替換;( 4)刪除某一子串,并將后面的字符前移。輸出形式:( 1)分行輸出用戶輸入的各行
2、字符;( 2)分4 行輸出 " 全部字母數(shù)" 、 " 數(shù)字個數(shù) " 、 " 空格個數(shù) " 、 " 文章總字數(shù)" ;( 3)查找出指定字符串在文章中出現(xiàn)的所有地方并替換,輸出替換后結果;( 4)輸出刪除某一字符串后的文章;實現(xiàn)提示存儲結構使用線性表,分別用幾個子函數(shù)實現(xiàn)相應的功能,并且使用菜單的形式,可以選擇所要進行的操作(查找、替換、刪除、統(tǒng)計等)文章編輯系統(tǒng)1 概要設計本次課程設計的題目是文章編輯系統(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ù)及整篇文章總字數(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詳細設計這部分詳細介紹了系統(tǒng)中主要部分的功能實現(xiàn),以及代碼功能說明void Create(LINE * &head)printf (" 請輸入一頁文章,以Ctrl+E 為結尾 (每行最多輸入80 字符 !):n");/Ctrl+E 結束文本錄入,避免發(fā)生混淆LINE *p=new LINE;頭結點*/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;/*為結點分配空間 */strcpy(p->data,ch);if(chstrlen(ch)-1=5) /*除去最后一個控制符 AE */p->datastrlen(ch)-1='0'break;p->next=NULL;/*最后的一個指針為空 */head=head->next;/* 文
6、本字數(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)計文章的總字數(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);/ 當前行的字符數(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)計信息結果:n");printf(" 全部字母數(shù):%dn",Count_Letter(head);printf(" 數(shù)字個數(shù):%dn",Count_Num(head);printf(" 空格個數(shù): %d n",Count_Space(head);printf("文章總字數(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 調試報告在本次程序設計中,在編譯過程中,出現(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測試結果測試項目測試數(shù)據(jù)測試結果登陸界面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、結果:Abcdefg 1234567統(tǒng)計功能輸入3:文本字符統(tǒng)計文章統(tǒng)計信息結果:全部字母數(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 總結感謝老師的指導和講解。通過老師的講解,讓我對這門課程有了 深刻的認識和了解,也讓我對這門課程有了重新的認識。通過近兩周的課程設計中,我學到了數(shù)據(jù)結構程序設計中對類的 設計方法,及對磁盤文件的操作,從中理解了數(shù)據(jù)結構中的設計思想。 經(jīng)過這次集中上機實習,我充分意識到了數(shù)據(jù)結構的用途是非常廣的, 功能也非常強大,是學計算機不可缺少的
20、知識;更重要的是,在這次 編程中熟悉了編寫一個比較復雜程序的流程,以及發(fā)現(xiàn)問題、解決問 題的能力,為了下一次學習一門新的計算機語言做了充分準備。在之 前感覺還是遙不可及的功能,現(xiàn)在可以實現(xiàn)了,這自然要感謝老師和 同學們的熱心幫助,這是我得以及時完成這個程序的重要因素。最后 還是要感謝老師對我們孜孜不倦的教導。成績:預習報告 分,系統(tǒng) 分,課設報告 分,總分 分,總評: 評語:批閱教師簽字:年 月 日附錄:全部代碼#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 為結尾(每行最多輸入80字符 !):n");LINE *p=new LINE;/* 首先為鏈表建立一個附加表頭結點 */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;/* 為結點分配空間 */strcpy(p->data,ch);if(chstrlen(ch)-1=5)/* 除去最后一個控制符AE*/p->datastrlen(ch)-1='0'break;/* 最后的一個指針為p->next=NULL;空 */head=head->next;/* 文本字數(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)計文章的總字數(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);/ 當前行的字符數(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)計信息結果:n");printf(" 全部字母數(shù):%dn",Count_Letter(head);printf(" 數(shù)字個數(shù):%dn",Count_Num(head);printf(" 空格個數(shù): %d n",Count_Space(head);printf("文章總字數(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨文化運動身體差異-洞察及研究
- 2025屆甘肅省徽縣英語七年級第二學期期末聯(lián)考試題含答案
- 江蘇省江都區(qū)國際學校2025屆七下英語期中達標測試試題含答案
- 提升團隊合作中的情緒智商技巧
- 便秘的健康教育宣教講課件
- 提高初中生對生物實驗課的興趣與熱情的方法研究
- 統(tǒng)編版語文七年級下冊期末模擬試卷(含解析)
- 成都市二手房買賣合同糾紛處理協(xié)議模板
- 錢塘區(qū)二年級下學期語文期末學情調查問卷
- 七年級下學期語文五單元主題情境型卷(無答案)
- 2023年宜城市中醫(yī)醫(yī)院醫(yī)護人員招聘筆試題庫及答案解析
- 醫(yī)學高級職稱評審答辯報告PPT模板
- 《緩解新入園幼兒焦慮策略的研究》課題結題材料(開題報告、中期報告、結題報告、調查問卷、課題論文)
- 健康生活方式基本的知識講座
- 消防管理檢查評分表
- 制造執(zhí)行系統(tǒng)SMT MES解決方案
- 高二區(qū)域地理 撒哈拉以南的非洲課件
- 數(shù)字化精密加工車間項目可行性研究報告建議書
- 2022年《內蒙古自治區(qū)建設工程費用定額》取費說明
- Q∕GDW 10799.6-2018 國家電網(wǎng)有限公司電力安全工作規(guī)程 第6部分:光伏電站部分
- 寧波市建設工程資料統(tǒng)一用表(2022版)1 通用分冊
評論
0/150
提交評論