大數(shù)據(jù)結(jié)構(gòu)簡易文本編輯器

上傳人:仙*** 文檔編號:83446328 上傳時間:2022-05-01 格式:DOC 頁數(shù):24 大?。?62.50KB
收藏 版權(quán)申訴 舉報 下載
大數(shù)據(jù)結(jié)構(gòu)簡易文本編輯器_第1頁
第1頁 / 共24頁
大數(shù)據(jù)結(jié)構(gòu)簡易文本編輯器_第2頁
第2頁 / 共24頁
大數(shù)據(jù)結(jié)構(gòu)簡易文本編輯器_第3頁
第3頁 / 共24頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《大數(shù)據(jù)結(jié)構(gòu)簡易文本編輯器》由會員分享,可在線閱讀,更多相關(guān)《大數(shù)據(jù)結(jié)構(gòu)簡易文本編輯器(24頁珍藏版)》請在裝配圖網(wǎng)上搜索。

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

2、素。其特點(diǎn)為:在順序表上邏輯關(guān)系相鄰的倆個元素在物理位置上也相鄰;在順序表上可以隨即存取表中的元素。在編輯器的主界面中應(yīng)有如下提示信息: ⑴ 清空以前的文本信息:將用數(shù)組存的數(shù)據(jù)內(nèi)容全部置為0; ⑵ 顯示當(dāng)前文本信息:遍歷用數(shù)組存入的信息,并輸入到外部顯示器上; ⑶ 編輯信息:定義一個結(jié)構(gòu)體,并在結(jié)構(gòu)體中定義一個字符型的一維數(shù)組和一個整型變量,這個整型變量用于記錄一維數(shù)組中存入數(shù)據(jù)的個數(shù); ⑷ 替換文本信息:首先在數(shù)組中查找要被替換的信息,如果找到該信息,提示輸入要替換的信息內(nèi)容,否如此提示未找到要被替換的信息; ⑸ 插入文本信息:首先在數(shù)組中查找要插入點(diǎn),如果找到該插入點(diǎn),提示輸入

3、插入信息,確認(rèn)插入信息后,提示選擇向前插入信息還是向后插入信息,如果未找到插入點(diǎn),顯示未找到要插入的位置; ⑹ 移動文本信息:首先在數(shù)組中查找要移動的信息,如果找到該信息,提示是進(jìn)展列移動還是進(jìn)展行移動,否如此提示未找到要移動的信息; ⑺ 刪除文本信息:首先在數(shù)組中查找要刪除的信息,如果找到該信息,提示是否確認(rèn)刪除該信息,通過確認(rèn)來刪除信息,如果未找到要刪除的信息,提示未找到該信息; ⑻ 退出編輯器:顯示感謝使用該軟件并退出。 3 詳細(xì)設(shè)計 void menu(); void shuru(char text[]); void bc(char text[]);

4、 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[],int l); void tuichu(int status); char text[MAX]="";/

5、/文本編輯域 char name[20]="";//文件保存的位置 int status=0;//顯示是否保存過的狀態(tài) int ntext;//文本編輯的位置 4用戶使用說明 ⑴ 清空以前的文本信息:將用數(shù)組存的數(shù)據(jù)內(nèi)容全部置為0; ⑵ 顯示當(dāng)前文本信息:遍歷用數(shù)組存入的信息,并輸入到外部顯示器上; ⑶ 編輯信息:定義一個結(jié)構(gòu)體,并在結(jié)構(gòu)體中定義一個字符型的一維數(shù)組和一個整型變量,這個整型變量用于記錄一維數(shù)組中存入數(shù)據(jù)的個數(shù); ⑷ 替換文本信息:首先在數(shù)組中查找要被替換的信息,如果找到該信息,提示輸入要替換的信息內(nèi)容,否如此提示未找到要被替換的信息; ⑸ 插入文本信息

6、:首先在數(shù)組中查找要插入點(diǎn),如果找到該插入點(diǎn),提示輸入插入信息,確認(rèn)插入信息后,提示選擇向前插入信息還是向后插入信息,如果未找到插入點(diǎn),顯示未找到要插入的位置; ⑹ 移動文本信息:首先在數(shù)組中查找要移動的信息,如果找到該信息,提示是進(jìn)展列移動還是進(jìn)展行移動,否如此提示未找到要移動的信息; ⑺ 刪除文本信息:首先在數(shù)組中查找要刪除的信息,如果找到該信息,提示是否確認(rèn)刪除該信息,通過確認(rèn)來刪除信息,如果未找到要刪除的信息,提示未找到該信息; ⑻ 退出編輯器:顯示感謝使用該軟件并退出。 5調(diào)試分析 /測試結(jié)果 文本編輯器主界面 主界面功能,如圖2—2所示。 圖2—2 文

7、本編輯器主界面 系統(tǒng)功能 ⑴ 輸入文本信息功能,如圖2—3所示。 圖2—3 輸入界面 ⑵ 查找文本信息,如圖2—4所示。 圖2—4查到功能界面 ⑶ 顯示文本信息,如圖2—5。 圖2—5 {4}刪除操作,如圖2--6 圖2—6 〔刪除123〕功能 {5}插入操作 如圖2—7所示。

8、 圖2—7 〔在789前插入123〕界面 {6}替換文本內(nèi)容,如圖2—8所示。 圖2—8 〔替換456為abc〕的內(nèi)容 14 / 24 6心得體會 程序的運(yùn)行結(jié)果與理論推導(dǎo)結(jié)果完全吻合,即該算法與程序設(shè)計滿足課程設(shè)計要求。該程序的主要優(yōu)點(diǎn)是簡單易懂,不存在理解上的障礙,也很自然地能想到這種解法。 通過數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計使我們對所學(xué)知識有了更好的理解,也增強(qiáng)了大家的動手能力。同時也發(fā)現(xiàn)了自己的很多不足之處,對知識的應(yīng)用能力很是欠缺,應(yīng)用軟件的能力與編程水平與課程要求更是存在很大的差距。

9、 7程序 #include #include #include #include #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

10、[],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[],int l); void tuichu(int status); char text[MAX]="";//文本編輯域 char name[20]="";//文件保存的位置 int status=0;//顯示是否保存過的狀態(tài) int ntext;//

11、文本編輯的位置 void dakai(char text[]) { system("cls"); FILE *fp; char pd,ch; char name[30]; int i=0; printf("輸入A:確定打開文件(未保存的數(shù)據(jù)將會丟失) M:返回主菜單"); fflush(stdin); pd=getchar(); if (pd=='A'||pd=='a') { printf("請輸入要打開文件名字〔例如c:\\a.txt〕"); scanf("%s",name); while ((fp=fopen(name,"r"))==NULL) {

12、 printf("\n打開文件失敗,請重新輸入要打開的文件名:"); scanf("%s",name); } cs(text); while(!feof(fp)) { ch=fgetc(fp); text[i]=ch; i++; } text[i]='\0'; ntext=i; fclose(fp); printf("\n文件讀取成功\n文件內(nèi)容為\n"); dayin(text); } if (pd=='M'||pd=='m') menu(); } void bc(char text[]) { system("c

13、ls"); FILE *fp; char pd; char tmp; int i; printf("\n輸入【A】保存;任意鍵返回主菜單不保存\n"); fflush(stdin); pd=getchar(); if (!(pd=='A'||pd=='a')) { menu(); } else { if(name[20]==NULL) { printf("\n請輸入保存文件名(例如: c:\\a.txt):"); scanf("%s",name); } while ((fp=fopen(name,"w+"))==NULL) { printf(

14、"文件不存在,請重新輸入文件名:"); scanf("%s",name); } printf("\nA:確定;B:取消:"); while(scanf("%c",&tmp)!=EOF) { if (tmp=='A' || tmp=='a') { for(i=0;i

15、 } void cs(char text[]) { int i; for (i=0;i

16、 //主串、子串指針回溯重新開始下一次匹配 { i1=i1-j+1; //主串從下一個位置開始匹配 j=0; //子串從頭開始匹配 } } if (j>=i2) { return(i1-i2); } //返回匹配的第一個字符的下標(biāo) else return(-1); //模式匹配不成功 } void menu() { system("cls"); time_t timep; time (&timep); printf("%s",ctime(&timep)); prin

17、tf("\n\n\n\n\n\n\n\n\n\t\t\tWel to use our TXT edition system!\n"); printf("\n\n\t\t\t 歡迎您使用文本編輯器軟件!\n"); printf("\n\n\n\n\n\n\n\n\npress Enter to continue...\n"); getchar(); loop: system("cls"); printf("\n\n\n\n\t\t******************簡易文本編輯器*****************\n\n"); printf("\t\t\t\t----0.清空內(nèi)

18、容--\n"); printf("\t\t\t\t----1.打開文件--\n"); if (ntext==0){ printf("\t\t\t\t----2.輸入內(nèi)容--\n"); } else { printf("\t\t\t\t----2.繼續(xù)輸入--\n"); } printf("\t\t\t\t----3.查找------\n"); printf("\t\t\t\t----4.插入------\n"); printf("\t\t\t\t----5.刪除------\n"); printf("\t\t\t\t----6.替換------\n"); pri

19、ntf("\t\t\t\t----7.顯示內(nèi)容--\n"); printf("\t\t\t\t----8.保存------\n"); printf("\t\t\t\t----9.退出------\n"); printf("\n\t\t*********************選項(xiàng)************************\n"); printf("\n\t\t\t\t輸入選項(xiàng)0-9:"); char n; fflush(stdin); n=getchar(); if(n>='0'&&n<='9') { switch (n) { case '0': cs(tex

20、t);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 : bre

21、ak; } } else { printf("\n輸入有誤,請重新輸入:"); fflush(stdin); n=getchar(); } system("pause"); goto loop; } void chazhao(char text[],int l) { system("cls"); int i,t,a=-1; char pattern[20],bd,pd; printf("原文為:\n"); dayin(text); printf("請輸入您要查找的內(nèi)容"); scanf("%s",pattern); printf("您查找的內(nèi)容

22、是:%s\n",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 (text[i]=='\n') { hs++;ls=0; } } if (a==-1) { printf("查找到結(jié)尾沒有找到\n輸入【R】將重頭查找;任意鍵返回主菜單"); l=0; fflush(stdin); pd=getchar(); } else

23、{ printf("已經(jīng)找到在第%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("cls"); printf("現(xiàn)在文本的內(nèi)容為:\n"); printf("%s\n",text); int hs=1,i; for (i=0;i

24、

25、; } int cout=0,zf=0,h=1,hs=1,zfs=0; for(;cout

26、h,zfs,hs); } void shanchu(char p[],int l) { int i,a=-1,t2=0; char x[20],px,pd,pdx,c; system("cls"); printf("%s",p); printf("\n輸入【A】執(zhí)行查找刪除內(nèi)容;任意鍵返回主菜單:"); fflush(stdin); px=getchar(); if (px=='a'||px=='A') { printf("\n輸入您要刪除的內(nèi)容,以完畢:"); fflush(stdin); while ((c=getchar())!='') { if

27、 (c=='') { break; } else { x[t2]=c; t2++; continue; } } loop: a=strindex(p,x,t2,l); int hs=1,ls=0; for (i=0;i<=a;i++) { ls++; if (p[i]=='\n') { hs++; ls=0; } } if (a==-1) { printf("已查找完畢,您要刪除的內(nèi)容不存在\n輸入【R】重新輸入要刪除的內(nèi)容;其他鍵將返回主菜單:"); l=0; fflush(stdin); pdx=getchar(); }

28、 else { printf("你要刪除的內(nèi)容在第%d行第%d列\(zhòng)n 輸入【A】確定刪除;輸入【B】尋找下個詞;其他鍵將返回主菜單:",hs,ls); fflush(stdin); pd=getchar(); l=t2+a; if (pd=='a'||pd=='A') { for(i=a;i

29、||pdx=='R') shanchu(text,l); } } void charu(char text[],int l) //向文本中插入內(nèi)容 { system("cls"); int i=0,t=0,t2=0,a=-1,b; char cr[20]="",pd,x[500],c,d; printf("\n當(dāng)前文本信息為:\n"); printf("%s",text); printf("\n輸入您要在哪個內(nèi)容前插入,以完畢:"); fflush(stdin); while ((c=getchar())!='')

30、 //用一個數(shù)組接收要插入在哪個內(nèi)容之前 { if (c=='') { break; } else { cr[t]=c; t++; continue; } } loop: a=strindex(text,cr,t,l); //查找并返回要插入的位置點(diǎn) int hs=1,ls=0; for (b=0;b

31、其他鍵返回菜單:\n"); l=0; fflush(stdin); d=getchar(); fflush(stdin); } else { printf("\n您要插入的位置是第%d行,第%d列之前\n【A】.不是此位置向后繼續(xù)找插入點(diǎn)\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("\n\n輸入您要插入

32、的內(nèi)容,以完畢:"); fflush(stdin); while ((c=getchar())!='') { if (c=='') { break; } else { x[t2]=c; t2++; continue; } } for (i=ntext;i>=a;i--) { text[i+t2]=text[i]; } for (i=0;i

33、("%c",text[i]); printf("\n文本插入成功\n"); fflush(stdin); getchar(); } } if (d=='r'||d=='R') { l=0; charu(text,l); } status=0; } void tihan(char p[],int l) //內(nèi)容替換 { int t=0,t1=0,i,a,b; char c,th[20],d,d1,bth[20]; int i2; system("cls"); printf("\n當(dāng)前文本信息為:\n"); for (i2

34、=0;i2<=ntext-1;i2++) printf("%c",p[i2]); printf("\n輸入要被替換的內(nèi)容,以完畢:"); fflush(stdin); while ((c=getchar())!='') //t指替換前內(nèi)容的長度 { if (c=='') { break; } else { bth[t]=c; t++; continue; } } loop: a=strindex(p,bth,t,l); //查找要被替換的內(nèi)容的位置 int hs=1,ls=0; for

35、(b=0;b

36、 pd=getchar(); if (pd!='a'&&pd!='A') { printf("\n是否要替換該內(nèi)容?\nA:替換給內(nèi)容;其他鍵返回主菜單\n請選擇:"); fflush(stdin); d1=getchar(); if (d1=='a'||d1=='A') { printf("\n輸入要替換的內(nèi)容,以完畢:"); fflush(stdin); while ((c=getchar())!='') //t1指替換后的內(nèi)容長度 { if (c=='') { break; } else { th[t1]=c; t1++;

37、 continue; } } if (t==t1) //將要被替換的內(nèi)容和替換后的內(nèi)容進(jìn)展長度比擬 { for (i=0;it1) { for (i=0;i=a;i--) { p[i+

38、t1-t]=p[i]; } for (i=0;i

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!