![簡易文本編輯器數據結構課設_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/20/c86c987b-6cb8-4a07-a763-d9bae020dc65/c86c987b-6cb8-4a07-a763-d9bae020dc651.gif)
![簡易文本編輯器數據結構課設_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/20/c86c987b-6cb8-4a07-a763-d9bae020dc65/c86c987b-6cb8-4a07-a763-d9bae020dc652.gif)
![簡易文本編輯器數據結構課設_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/20/c86c987b-6cb8-4a07-a763-d9bae020dc65/c86c987b-6cb8-4a07-a763-d9bae020dc653.gif)
![簡易文本編輯器數據結構課設_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/20/c86c987b-6cb8-4a07-a763-d9bae020dc65/c86c987b-6cb8-4a07-a763-d9bae020dc654.gif)
![簡易文本編輯器數據結構課設_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/20/c86c987b-6cb8-4a07-a763-d9bae020dc65/c86c987b-6cb8-4a07-a763-d9bae020dc655.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、沈陽理工大學課程設計專用紙摘 要當下C+語言是一門重要的課程學習,學會運用并結合其他的知識一起解題是一件值得我們重視的,數據結構是一門結合C+知識的重要課程,因此我們要學會將平時課本的知識運用到我們現實生活當中,這樣才能讓我們所學的知識更加深刻。簡易文本編輯器的問題就是一個例子,傳統(tǒng)的紙質文檔已經不能滿足大家的需求,有容易丟失、查找不方便等缺點。計算機信息管理為人們的生活、工作提供了方便,提高了效率。“簡易文本編輯器”就是為了幫助老師、同學或其他一些需要使用文本編輯的人員進行管理和分析的一種計算機應用程序。關鍵詞:簡易文本編輯器,數據結構,順序表。 目 錄一、需求分析11.1問題描述11.2基
2、本任務1二、概要設計12.1主界面設計12.2數據結構設計1三、詳細設計23.1清空內容模塊23.2打開文件模塊23.3輸入模塊23.4插入模塊23.5刪除模塊23.6替換模塊23.7顯示模塊23.8保存模塊33.9系統(tǒng)層次圖3四、測試結果34.1文本編輯器主界面34.2系統(tǒng)功能4五、調試分析7六、心得體會8七、參考文獻9八、程序源代碼1023一、需求分析1.1問題描述 傳統(tǒng)的紙質文檔已經不能滿足大家的需求,有容易丟失、查找不方便等缺點。計算機信息管理為人們的生活、工作提供了方便,提高了效率?!昂喴孜谋揪庉嬈鳌本褪菫榱藥椭蠋煛⑼瑢W或其他一些需要使用文本編輯的人員進行管理和分析的一種計算機應用
3、程序。1.2基本任務 通過用戶調查分析及實際需求,系統(tǒng)需要實現如下基本任務:(1) 輸入數據信息建立文本;(2) 打開文本讀取已保存的信息;(3) 插入新的信息到文本中;(4) 刪除不再需要的文本信息;(5) 替換不需要的文本信息;(6) 顯示所有的文本信息;(7) 保存所輸入、插入、替換過的文本信息;(8) 清空文本信息。二、概要設計2.1主界面設計為了實現簡易文本編輯器的各項功能,設計一個含有多個菜單項的主控菜單模塊以操作系統(tǒng)的各項功能,進而方便用戶使用系統(tǒng)。2.2數據結構設計為實現數據的有序存儲,該編輯器應該用順序存儲結構來存儲輸入的信息。順序表是數據結構中線性表的一種,它是用一塊地址連
4、續(xù)的存儲空間依次存儲線性表的元素。其特點為:在順序表上邏輯關系相鄰的倆個元素在物理位置上也相鄰;在順序表上可以隨即存取表中的元素。三、 詳細設計3.1清空內容模塊清空以前的文本信息,將用數組存的數據內容全部置為0。3.2打開文件模塊確認打開文件并提示未保存的數據將會丟失,如果未選擇打開文件,則返回主菜單。3.3輸入模塊輸入文本信息,從主菜單中選擇輸入,提示輸入內容,并統(tǒng)計文本字符數和行數。3.4插入模塊插入文本信息,首先在數組中查找要插入點,如果找到該插入點,提示輸入插入信息,確認插入信息后,提示選擇向前插入信息還是向后插入信息,如果未找到插入點,顯示未找到要插入的位置。3.5刪除模塊刪除文本
5、信息,首先在數組中查找要刪除的信息,如果找到該信息,提示是否確認刪除該信息,通過確認來刪除信息,如果未找到要刪除的信息,提示未找到該信息。3.6替換模塊替換文本信息,首先在數組中查找要被替換的信息,如果找到該信息,提示輸入要替換的信息內容,否則提示未找到要被替換的信息。3.7顯示模塊顯示當前文本信息,遍歷用數組存入的信息,并輸入到外部顯示器上。3.8保存模塊 保存當前信息,并提示輸入文件名,確認保存之后提示保存成功。3.9系統(tǒng)層次圖簡易文本編輯器清空內容輸入保存顯示替換刪除插入打開文件圖3-1 系統(tǒng)層次圖四、測試結果4.1文本編輯器主界面主界面功能,如圖41所示。圖41 文本編輯器主界面4.2
6、系統(tǒng)功能 輸入文本信息功能,如圖42所示。圖42 輸入界面 查找文本信息,如圖43所示。 圖43查找功能界面 顯示文本信息,如圖44所示。圖44顯示文本界面插入操作,如圖45所示。圖45插入功能界面刪除操作,如圖46所示。圖46刪除功能界面替換文本內容,如圖47所示。圖47 替換功能界面文件保存,如圖48所示。圖48 保存功能界面五、調試分析程序設計沒有按照一定的流程來,導致程序臃腫,可重復利用率太低,比如程序中的chazhao函數,在替換,刪除等的過程中可以充分利用到,從而減少代碼的長多,提高可讀性和減少時間的復雜性,設計開始的時候沒有充分考慮到,到最后無法在短時間內修改完成;程序的選擇語句
7、運行比較的多,當初是為了程序的安全和便捷,選擇了較多的選擇,確認步驟,這樣一來使得程序中的選擇語句比較的多,比較亂。這個在概要設計中沒有充分的理清思路,導致程序的可讀性較差。六、心得體會這是第一次比較全面的設計一個可執(zhí)行多種功能的程序的課程設計,暴露出較多的知識點的缺乏,比如文件的打開與保存等。程序的運行結果與理論推導結果基本吻合,即該算法與程序設計基本滿足課程設計要求。該程序的優(yōu)點是簡單易懂,不存在理解上的障礙,很自然地能想到這種解法。但是該程序比較臃腫,可重復利用率低,還有待修改和完善。通過這次數據結構的課程設計使我對所學知識有了更好的理解,增強了自己的動手能力,但同時也發(fā)現了自己的不足之
8、處,對知識的應用能力很是欠缺,應用軟件的能力及編程水平與課程要求更是存在很大的差距。通過這個實驗,使我基本操作有了一定的思路,知道該從哪里著手去完成一項功能編譯,也讓我學會了如何通過書籍查閱到自己想要的信息,并有一個思維方向去解決編譯時出現的問題,提高了我的編程效率,我想這對我以后的學習會有很大的幫助,會讓我有信心去完成下一個實驗。七、參考文獻1嚴蔚敏 吳偉名 編著,數據結構,清華大學出版社,2007年9月2譚浩強 編著,c語言程序設計,清華大學出版社3錢能C+程序設計教程(第二版)M 北京:清華大學出版社,2005八、程序源代碼#include <stdio.h>#include
9、 <stdlib.h>#include <time.h>#include <string.h>#define MAX 10000#define _CRT_SECURE_NO_DEPRECATE/在vs中取消warning的警告void menu(); void shuru(char text);void bc(char text); void dakai(char text);void dayin(char text);void chazhao(char text,int l);void tihan(char text,int l);int strindex
10、(char text,char t,int i2,int l);void shanchu(char p,int l);void cs(char text);void charu(char text,int l);void tuichu(int status);char textMAX=""/文本編輯域char name20=""/文件保存的位置int status=0;/顯示是否保存過的狀態(tài)int ntext;/文本編輯的位置 void dakai(char text)system("cls"); FILE *fp;char pd,c
11、h;char name30;int i=0;printf("輸入A:確定打開文件(未保存的數據將會丟失) M:返回主菜單");fflush(stdin);pd=getchar();if (pd='A'|pd='a')printf("請輸入要打開文件名字(例如c:a.txt)");scanf("%s",name);while (fp=fopen(name,"r")=NULL)printf("n打開文件失敗,請重新輸入要打開的文件名:");scanf("%s
12、",name);cs(text);while(!feof(fp)ch=fgetc(fp);texti=ch;i+; texti='0' ntext=i; fclose(fp);printf("n文件讀取成功n文件內容為n");dayin(text); if (pd='M'|pd='m')menu(); void bc(char text)system("cls");FILE *fp;char pd;char tmp;int i;printf("n輸入【A】保存;任意鍵返回主菜單不保存n&
13、quot;); fflush(stdin);pd=getchar();if (!(pd='A'|pd='a')menu();else if(name20=NULL)printf("n請輸入保存文件名(例如: c:a.txt):");scanf("%s",name);while (fp=fopen(name,"w+")=NULL)printf("文件不存在,請重新輸入文件名:");scanf("%s",name); printf("nA:確定;B:取消:&
14、quot;); while(scanf("%c",&tmp)!=EOF)if (tmp='A' | tmp='a') for(i=0;i<ntext;i+) fprintf(fp,"%c",texti); fclose(fp);status=1;printf("n文件保存成功n");break;if (tmp='B' | tmp='b')break; void cs(char text)int i;for (i=0;i<ntext;i+)texti=&
15、#39;0'ntext=0;status=0; int strindex(char text,char t,int i2,int l) /查找要操作的數據的位置(模式匹配)int i1=l,j=0;while (i1<ntext&&j<i2)if (texti1=tj) /繼續(xù)匹配下一個字符j+;i1+;/主串和子串依次匹配下一個字符else /主串、子串指針回溯重新開始下一次匹配i1=i1-j+1; /主串從下一個位置開始匹配j=0;/子串從頭開始匹配if (j>=i2)return(i1-i2); /返回匹配的第一個字符的下標elsereturn(
16、-1); /模式匹配不成功void menu()system("cls");time_t timep; time (&timep);printf("%s",ctime(&timep);printf("信息與計算科學 1209010314 范亞飛n");printf("nnnnnnnnntttWelcom to use our TXT edition system!n");printf("nnttt 歡迎您使用文本編輯器軟件!n");printf("nnnnnnnnnpr
17、ess Enter to continue.n");getchar();loop:system("cls");printf("nnnntt*簡易文本編輯器*nn");printf("tttt-0.清空內容-n");printf("tttt-1.打開文件-n");if (ntext=0)printf("tttt-2.輸入內容-n"); else printf("tttt-2.繼續(xù)輸入-n");printf("tttt-3.查找-n");printf
18、("tttt-4.插入-n");printf("tttt-5.刪除-n");printf("tttt-6.替換-n");printf("tttt-7.顯示內容-n");printf("tttt-8.保存-n");printf("tttt-9.退出-n");printf("ntt*選項*n");printf("ntttt輸入選項0-9:");char n;fflush(stdin);n=getchar();if(n>='0&
19、#39;&&n<='9')switch (n)case '0': cs(text);break;case '1': dakai(text);break;case '2': shuru(text);break;case '3': chazhao(text,0);break;case '4': charu(text,1);break;case '5': shanchu(text,0);break;case '6': tihan(text,0);bre
20、ak;case '7': dayin(text);break;case '8': bc(text);break;case '9': tuichu(status);default : break;elseprintf("n輸入有誤,請重新輸入:");fflush(stdin);n=getchar();system("pause");goto loop;void chazhao(char text,int l)system("cls");int i,t,a=-1;char pattern20
21、,bd,pd;printf("原文為:n");dayin(text);printf("請輸入您要查找的內容");scanf("%s",pattern);printf("您查找的內容是:%sn",pattern);t=strlen(pattern);loop:a=strindex(text,pattern,t,l);if (a!=-1)l=a+t;int hs=1,ls=0;for (i=0;i<=a;i+)ls+;if (texti='n')hs+;ls=0; if (a=-1)printf(
22、"查找到結尾沒有找到n輸入【R】將重頭查找;任意鍵返回主菜單");l=0;fflush(stdin);pd=getchar(); else printf("已經找到在第%d行第%d列,輸入【R】繼續(xù)查找下一處;任意鍵返回主菜單",hs,ls);fflush(stdin);bd=getchar(); if (bd='R'|bd='r') goto loop; if (pd='R'|pd='r') l=0;chazhao(text,l);void dayin(char text)system(&
23、quot;cls");printf("現在文本的內容為:n");printf("%sn",text); int hs=1,i;for (i=0;i<ntext;i+)if (texti='n')hs+; printf("n文本共有%d行n",hs);void shuru(char text)system("cls");printf("請輸入內容(輸入結束輸入并返回主菜單):n");printf("%s",text);char c;int i=n
24、text,j=ntext;fflush(stdin); while (c=getchar()!='')texti=c;i+;ntext=i;continue;int cout=0,zf=0,h=1,hs=1,zfs=0;for(;cout<ntext;cout+)zf+;if(textcout='n')h+;zf-;if(textcout=' ')zf-;for(cout=j;cout<ntext;cout+)zfs+;if(textcout='n')hs+;zfs-;if(textcout=' ')z
25、fs-;printf("統(tǒng)計:文本一共有%d個字符,%d行,本次輸入了%d個字符,%d行n",zf,h,zfs,hs);void shanchu(char p,int l)int i,a=-1,t2=0;char x20,px,pd,pdx,c;system("cls");printf("%s",p);printf("n輸入【A】執(zhí)行查找刪除內容;任意鍵返回主菜單:");fflush(stdin);px=getchar();if (px='a'|px='A')printf("
26、;n輸入您要刪除的內容,以結束:");fflush(stdin);while (c=getchar()!='')if (c='')break;elsext2=c;t2+;continue;loop:a=strindex(p,x,t2,l);int hs=1,ls=0;for (i=0;i<=a;i+)ls+;if (pi='n')hs+; ls=0; if (a=-1)printf("已查找結束,您要刪除的內容不存在n輸入【R】重新輸入要刪除的內容;其他鍵將返回主菜單:");l=0;fflush(stdin);
27、pdx=getchar(); else printf("你要刪除的內容在第%d行第%d列n 輸入【A】確定刪除;輸入【B】尋找下個詞;其他鍵將返回主菜單:",hs,ls);fflush(stdin);pd=getchar();l=t2+a;if (pd='a'|pd='A')for(i=a;i<ntext;i+)pi=pi+t2;ntext=ntext-t2;printf("刪除成功,刪除后的內容為:n%sn",text);else if (pd='b'|pd='B')goto loo
28、p;if(pdx='r'|pdx='R')shanchu(text,l);void charu(char text,int l) /向文本中插入內容system("cls");int i=0,t=0,t2=0,a=-1,b;char cr20="",pd,x500,c,d;printf("n當前文本信息為:n");printf("%s",text);printf("n輸入您要在哪個內容前插入,以結束:");fflush(stdin);while (c=getcha
29、r()!='') /用一個數組接收要插入在哪個內容之前if (c='')break;elsecrt=c;t+;continue;loop:a=strindex(text,cr,t,l); /查找并返回要插入的位置點int hs=1,ls=0;for (b=0;b<a;b+)ls+;if (textb='n')hs+;ls=0;if (a=-1)printf("n查找到結尾沒有找到插入點,輸入【R】查找其他;按其他鍵返回菜單:n");l=0;fflush(stdin);d=getchar();fflush(stdin);e
30、lseprintf("n您要插入的位置是第%d行,第%d列之前n【A】.不是此位置向后繼續(xù)找插入點n【B】.在此位置插入n按其他鍵返回菜單n請選擇:",hs,ls+1);fflush(stdin);pd=getchar(); if (pd='a'|pd='A')l=a+t;goto loop;else if (pd='b'|pd='B')printf("nn輸入您要插入的內容,以結束:");fflush(stdin);while (c=getchar()!='')if (c=
31、'')break;elsext2=c;t2+;continue;for (i=ntext;i>=a;i-)texti+t2=texti;for (i=0;i<t2;i+)texti+a=xi;ntext=ntext+t2;printf("n當前文本信息為:n");for (i=0;i<=ntext-1;i+)printf("%c",texti);printf("n文本插入成功n");fflush(stdin);getchar();if (d='r'|d='R')l=0;
32、charu(text,l);status=0;void tihan(char p,int l) /內容替換int t=0,t1=0,i,a,b;char c,th20,d,d1,bth20;int i2;system("cls");printf("n當前文本信息為:n");for (i2=0;i2<=ntext-1;i2+)printf("%c",pi2);printf("n輸入要被替換的內容,以結束:");fflush(stdin);while (c=getchar()!='') /t指替換前內容的長度if (c='')break;elsebtht=c;t+;continue;loop:a=strindex(p,bth,t,l); /查找要被替換的內容的位置int hs=1,ls=0;for (b=0;b<a;b+)ls+;if (pb='n')hs+;ls=0;if (a=-1)printf("n查找到結尾沒有找到要被替換的內容n輸入【R】查找其他內容,按其他鍵返回主菜單鍵n");l=0;d=ge
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Module2 Unit1 Whats your name(說課稿)-2024-2025學年外研版(一起)英語一年級上冊
- 2《吃水不忘挖井人》(說課稿)-2024-2025學年統(tǒng)編版(2024)語文一年級下冊
- 15《搭船的鳥》說課稿-2024-2025學年統(tǒng)編版語文三年級上冊
- 2023八年級數學上冊 第三章 位置與坐標2 平面直角坐標系第3課時 建立適當的平面直角坐標系求點的坐標說課稿 (新版)北師大版
- 15堅持才會有收獲(說課稿)-部編版道德與法治二年級下冊
- 2023七年級道德與法治上冊 第二單元 友誼的天空 第五課 交友的智慧 第2框 網上交友新時空說課稿 新人教版
- 1假期有收獲 說課稿-2023-2024學年道德與法治二年級上冊 統(tǒng)編版
- 2025外墻紙皮磚合同
- 6的乘法口訣(說課稿)-2024-2025學年人教版數學二年級上冊
- Unit 3 Fascinating Parks Discover useful structures 說課稿-2024-2025學年高中英語人教版(2019)選擇性必修第一冊
- 2025年山東魯商集團有限公司招聘筆試參考題庫含答案解析
- 大型活動中的風險管理與安全保障
- 課題申報書:個體衰老差異視角下社區(qū)交往空間特征識別與優(yōu)化
- 江蘇省招標中心有限公司招聘筆試沖刺題2025
- 綜采工作面過空巷安全技術措施
- 云南省麗江市2025屆高三上學期復習統(tǒng)一檢測試題 物理 含解析
- 建材材料合作合同范例
- 2025年集體經濟發(fā)展計劃
- 2024-2025學年人教版八年級上冊地理期末測試卷(二)(含答案)
- 雙方共同買車合同范例
- 醫(yī)務從業(yè)人員行為規(guī)范培訓
評論
0/150
提交評論