數(shù)據(jù)結構簡易文本編輯器_第1頁
數(shù)據(jù)結構簡易文本編輯器_第2頁
數(shù)據(jù)結構簡易文本編輯器_第3頁
數(shù)據(jù)結構簡易文本編輯器_第4頁
數(shù)據(jù)結構簡易文本編輯器_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、數(shù)據(jù)結構簡易文本編輯題目: 【2】.簡易文本編輯器要求:1)具有圖形菜單界面;2)查找,替換(等長,不等長),插入(插串,文本塊的插入)、塊移動(行塊,列塊移動),刪除3)可正確存盤、取盤;4)正確顯示總行數(shù)。1需求分析一個簡易文本編輯器應該具有圖形菜單界面,包括查找,替換(等長,不等長),插 入(插串,文本塊的插入)、塊移動(行塊,列塊移動),刪除文本信息等功能并可正確 存盤、取盤,正確顯示總行數(shù)。2概要設計為實現(xiàn)數(shù)據(jù)的有序存儲,該編輯器應該用順序表來存儲輸入的信息。順序表是數(shù)據(jù)結 構中線性表的一種,它是用一塊地址連續(xù)的存儲空間依次存儲線性表的元素。其特點為: 在順序表上邏輯關系相鄰的倆個元

2、素在物理位置上也相鄰;在順序表上可以隨即存取表中 的元素。在編輯器的主界面中應有如下提示信息:清空以前的文本信息:將用數(shù)組存的數(shù)據(jù)內容全部置為0; 顯示當前文本信息:遍歷用數(shù)組存入的信息,并輸入到外部顯示器上;編輯信息:定義一個結構體,并在結構體中定義一個字符型的一維數(shù)組和一個整型變量,這個整型變量用于記錄一維數(shù)組中存入數(shù)據(jù)的個數(shù); 替換文本信息:首先在數(shù)組中查找要被替換的信息,如果找到該信息,提示輸入 要替換的信息內容,否則提示未找到要被替換的信息; 插入文本信息:首先在數(shù)組中查找要插入點,如果找到該插入點,提示輸入插入信息,確認插入信息后,提示選擇向前插入信息還是向后插入信息,如果未找到插

3、入 點,顯示未找到要插入的位置; 移動文本信息:首先在數(shù)組中查找要移動的信息,如果找到該信息,提示是進行列移動還是進行行移動,否則提示未找到要移動的信息; 刪除文本信息:首先在數(shù)組中查找要刪除的信息,如果找到該信息,提示是否確認刪除該信息,通過確認來刪除信息,如果未找到要刪除的信息,提示未找到該信 退出編輯器:顯示感謝使用該軟件并退出。3詳細設計 void menu();void shuru(char text);void bc(char text);void dakai(char text);void dayin(char text);void chazhao(char text,int l

4、);void tihan(char text,int l);int strindex(char text,char t,int i2,int l);void shanchu(char p,int l);void cs(char text);void charu(char text,intvoid tuichu(int status);char textMAX=;char name20二;int status=0;l);文本編輯域文件保存的位置/顯示是否保存過的狀態(tài)int ntext;/文本編輯的位置4用戶使用說明清空以前的文本信息:將用數(shù)組存的數(shù)據(jù)內容全部置為0; 顯示當前文本信息:遍歷用數(shù)組

5、存入的信息,并輸入到外部顯示器上;編輯信息:定義一個結構體,并在結構體中定義一個字符型的一維數(shù)組和一個整 型變量,這個整型變量用于記錄一維數(shù)組中存入數(shù)據(jù)的個數(shù); 替換文本信息:首先在數(shù)組中查找要被替換的信息,如果找到該信息,提示輸入 要替換的信息內容,否則提示未找到要被替換的信息; 插入文本信息:首先在數(shù)組中查找要插入點,如果找到該插入點,提示輸入插入 信息,確認插入信息后,提示選擇向前插入信息還是向后插入信息,如果未找到插入點,顯示未找到要插入的位置; 移動文本信息:首先在數(shù)組中查找要移動的信息,如果找到該信息,提示是進行 列移動還是進行行移動,否則提示未找到要移動的信息; 刪除文本信息:首

6、先在數(shù)組中查找要刪除的信息,如果找到該信息,提示是否確 認刪除該信息,通過確認來刪除信息,如果未找到要刪除的信息,提示未找到該信息; 退出編輯器:顯示感謝使用該軟件并退出。5調試分析/測試結果文本編輯器主界面主界面功能,如圖22所示。圖22文本編輯器主界面系統(tǒng)功能 輸入文本信息功能,如圖23所示。圖23輸入界面 查找文本信息,如圖24所示。圖24查到功能界面 顯示文本信息,如圖25o圖254刪除操作,如圖2-6圖26 (刪除123)功能5插入操作如圖27所示。圖27 (在789前插入123)界面6替換文本內容,如圖28所示。圖28 (替換456為abc)的內容6心得體會程序的運行結果與理論推導

7、結果完全吻合,即該算法與程序設計滿 足課程設計要求。該程序的主要優(yōu)點是簡單易懂,不存在理解上的障 礙,也很自然地能想到這種解法。通過數(shù)據(jù)結構的課程設計使我們對所學知識有了更好的理解,也增 強了大家的動手能力。同時也發(fā)現(xiàn)了自己的很多不足之處,對知識的應 用能力很是欠缺,應用軟件的能力及編程水平與課程要求更是存在很大 的差距。7程序#include #include #include #include #define MAX 10000#define _CRT_SECURE_NO_DEPRECATE/在 vs 中取消warning的警告 void menu();void shuru(char te

8、xt);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(char text,char t,int i2,int l);void shanchu(char p,int l);void cs(char text);void charu(char text,intvoid tuichu(int status);char textMAX=;char name20二;int status

9、=0;l);文本編輯域文件保存的位置/顯示是否保存過的狀態(tài)int ntext;/文本編輯的位置 void dakai(char text) (system(cls);FILE *fp;char pd,ch;char name30;int i=0;printf(輸入A:確定打開文件(未保存的數(shù)據(jù)將會丟失)M:返回主菜單);fflush(stdin);pd=getchar();if (pd=,A,|pd=,a,)printf(請輸入要打開文件名字(例如c:Xa.txt) );scanf(s,name);while (fp=fopen(name,r)=NULL)(printf(n打開文件失敗,請重新

10、輸入要打開的文件名:);scanf(%s,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輸入【入】保存;任意鍵返回主菜單不保存n);fflush(stdin);pd=getchar();if (!(pd=,A,|pd

11、=,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:取消:);while(scanf(%c,&tmp)!二EOF)(if (tmp=A | | tmp=,a,)(for(i=0;intext;i+)fprintf(fp,%c,texti);fclose(fp);status=1;printf(n文件保存成功n);break;

12、if (tmp=,B, | | tmp=,b,)(break;void cs(char text)(int i;for (i=0;intext;i+)(texti=0;ntext=0;status=0;int strindex(char text,char t,int i2,int l) /查找要操作的數(shù)據(jù)的位置(模式匹配)(int i1=l,j=0;while (i1ntext&j=i2)(return(i1-i2);返回匹配的第一個字符的下標elsereturn(-1);/模式匹配不成功void menu()(system(cls);time_t timep;time (&timep);p

13、rintf(s,ctime(&timep);printf(nnnnnnnnntttWelcom to use our TXTedition system!n);printf(nnttt歡迎您使用文本編輯器軟件!n);printf(nnnnnnnnnpress Enter to continue.、/);getchar();loop:system(cls);printf(nnnntt* 簡易文本編輯器*nn);printf(tttt0.清空內容-n);printf(tttt1.打開文件-n);if (ntext=0)printf(tttt2.輸入內容一n);else (printf(tttt2.

14、繼續(xù)輸入一n); TOC o 1-5 h z printf(tttt3.查找n);printf(tttt4.插入n);printf(tttt5.刪除n);printf(tttt6.替換n);printf(tttt7.顯示內容-n);printf(tttt8.保存n);printf(tttt9.退出n);printf(ntt* 選項*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X* io .*n/;printf(ntttt 輸入選項 0-9:);char n;fflush(stdin);n=getchar();if(n=0&n=9)(switch

15、(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);break;case 7: dayin(text);break;case 8: bc(text);break;case 9: tuichu(status);default : break;elseprintf(n輸入有誤,

16、請重新輸入:);fflush(stdin);n=getchar();system(pause);goto loop;void chazhao(char text,int l)(system(cls);int i,t,a=-1;char pattern20,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,

17、ls=0;for (i=0;i=a;i+)(ls+;if (texti=n)(hs+;ls=0;if (a=-1)(printf (-查找到結尾沒有找到n輸入【R】將重頭查找;任意鍵返回主菜單);l=0;fflush(stdin);pd=getchar();else(printf (已經(jīng)找到在第%d行第%d列,輸入【日】繼續(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)

18、(system(cls);printf(現(xiàn)在文本的內容為:n);printf(sn,text);int hs=1,i;for (i=0;intext;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=ntext,j=ntext;fflush(stdin);while (c二getchar()!=)(texti=c;i+;ntext二i;continue;int cout=0

19、,zf=0,h=1,hs=1,zfs=0;for(;coutntext;cout+)(zf+;if(textcout=n)h+;zf-;if(textcout=)zf-;for(cout=j;coutntext;cout+)(zfs+;if(textcout=n)hs+;zfs-;if(textcout=)zfs-;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)

20、;printf (-n輸入【入】執(zhí)行查找刪除內容;任意鍵返回主菜單:);fflush(stdin);px=getchar();if (px=,a,|px=,A,)(printf(n輸入您要刪除的內容,以結束:);fflush(stdin);while (c二getchar()!=)(if (c=伊)(break;else(xt2=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(已查找結束,您要刪除的內容不存在偵輸入【R】

21、重新輸入要刪除的內容;其他鍵將返回主菜單:);1=0;fflush(stdin);pdx二getchar();else(printf(你要刪除的內容在第%d行第%d列n輸入【A】確定刪除;輸入【B】尋找下個詞;其他鍵將返回主菜單:,hs,1s);fflush(stdin);pd=getchar();1=t2+a;if (pd二二,a,|pd二二,A,)(for(i=a;intext;i+)(pi=pi+t2;ntext二ntext-t2;printf(-刪除成功,刪除后的內容為:n%sn,text);else if (pd=,b,|pd=,B,)goto loop;if(pdx=,r,|pdx

22、=,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=getchar()!=,)/用一個數(shù)組接收要插入在哪個內容之前(if (c=伊)(break;else(crt=c;t+;continue;loop:a=strindex(text,cr,t,l);

23、/查找并返回要插入的位置點int hs=1,ls=0;for (b=0;b=a;i-)(texti+t2=texti;for (i=0;it2;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;charu(text,l);status=0;void tihan(char p,int l)/內容替換(int t=0,t1=0,i,a,b;char c,

24、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;else(btht=c;t+;continue;loop:a=strindex(p,bth,t,l);查找要被替換的內容的位置int hs=1,ls=0;for (b=0;ba;b+)(ls+;if (pb=n)(hs+;ls=0;if (a=-1)(printf (-n查找到結尾沒有找到要被替換的內容n輸入【R】查找其他內容,按其他鍵返回主菜單鍵n);l=0;d=getchar();fflus

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論