《數(shù)據(jù)結構課程設計-簡易文本編輯器.doc》由會員分享,可在線閱讀,更多相關《數(shù)據(jù)結構課程設計-簡易文本編輯器.doc(20頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、安徽省巢湖學院計算機與信息工程學院課程設計報告課程名稱 數(shù)據(jù)結構 課題名稱 簡單文本編輯器 專業(yè) 計算機科學與技術 班級 10計本2班 學號 10012108 姓名 聯(lián)系方式 指導教師 20 11 年 12 月 30 日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ù)組中查找要刪除的信息,如果找到該信息,提示是否確認刪除該信息,通過確認來刪除信息,如果未找到要刪除的信息,提示未找到該信息; 退出編輯器:顯示感謝使用該軟件并退出。文本編輯器的運行流程圖,如圖21所示。 圖21文本編輯器流程圖3詳細設計 #include #include #include #include #include #define MAXSIZE 100int ntext; /全局變量int b=0;typ
4、edef struct char srMAXSIZE; int hang; int lie;shuru ;int strindex(shuru m,char t,int i2,int l) /查找要操作的數(shù)據(jù)的位置(模式匹配) int i4=l,j=0; while (i4ntext&j=i2) return(i4-i2); /返回匹配的第一個字符的下標 else return(-1); /模式匹配不成功void charu(shuru &k,int l) /向文本中插入內容 system(cls); int i,t=0,t2=0,a=-1; char cr20,pd,x500,c,d; in
5、t i2; printf(n當前文本信息為:n); for (i2=0;i2=ntext-1;i2+) printf(%c,k.sri2); printf(n輸入您要在哪個內容前插入,以結束:); fflush(stdin); while (c=getchar()!=) /用一個數(shù)組接收要插入在哪個內容之前 if (c=) break; else crt=c; t+; continue; a=strindex(k,cr,t,l); /查找并返回要插入的位置點 if (a!=-1) l=a+t; int hs=1,ls=0; for (b=0;ba;b+) ls+; if (k.srb=n) h
6、s+; ls=0; if (a=-1) printf(n查找到結尾沒有找到插入點nR:重新查找點n雙擊回車鍵返回菜單:n); l=0; fflush(stdin); d=getchar(); fflush(stdin); else int i2; printf(n當前文本信息為:n); for (i2=0;i2=a;i-) k.sri+t2=k.sri; for (i=0;it2;i+) k.sri+a=xi; ntext=ntext+t2; printf(n當前文本信息為:n); for (i2=0;i2=ntext-1;i2+) printf(%c,k.sri2); printf(插入成功
7、n); fflush(stdin); getchar(); if (d=r|d=R|pd=r|pd=R) l=0; charu(k,l); FILE *fp; int b11; fprintf(fp,The contents isn); for (b11=0;b11=ntext-1;b11+) fprintf(fp,%c,k.srb11); fclose(fp);void tihan(shuru &r,int l) /內容替換 int t=0,t1=0,i,a; char c,th20,d,d1,bth20; int i2; printf(n當前文本信息為:n); for (i2=0;i2=n
8、text-1;i2+) printf(%c,r.sri2); printf(n輸入要被替換的內容,以結束:); fflush(stdin); while (c=getchar()!=) /t指替換前內容的長度 if (c=) break; else btht=c; t+; continue; a=strindex(r,bth,t,l); /查找要被替換的內容的位置 if (a!=-1) l=a+t; int hs=1,ls=0; for (b=0;ba;b+) ls+; if (r.srb=n) hs+; ls=0; if (a=-1) printf(n查找到結尾沒有找到要被替換的內容n繼續(xù)查
9、找請按R,雙擊回車鍵退出n); l=0; /printf(n%d,a); /printf(n%d,i1); /printf(n%d,ntext); fflush(stdin); d=getchar(); fflush(stdin); else printf(nn已經(jīng)找到要查找的數(shù)據(jù):ntt在第%d行,第%d列nR:繼續(xù)向后查找相同內容nA:進一步進行替換操作n請選擇:,hs,ls+1); /printf(n%d,a); /printf(n%d,i1); /printf(n%d,ntext); fflush(stdin); d=getchar(); if (d!=r&d!=R) printf(n
10、是否要替換該內容?nA:替換給內容n雙擊回車鍵:返回主菜單n請選擇:); fflush(stdin); d1=getchar(); if (d1=a|d1=A) printf(n輸入要替換的內容,以結束:); fflush(stdin); while (c=getchar()!=) /t1指替換后的內容長度 if (c=) break; else tht1=c; t1+; continue; if (t=t1) /將要被替換的內容和替換后的內容進行長度比較 for (i=0;it1) for (i=0;it1;i+) r.sri+a=thi; for (i=a+t1;i=a;i-) r.sri
11、+t1-t=r.sri; for (i=0;it1;i+) r.sri+a=thi; ntext=ntext+t1-t; printf(替換成功); printf(n當前文本信息為:n); for (i2=0;i2=ntext-1;i2+) printf(%c,r.sri2); getchar(); if (d=R|d=r) tihan(r,l); FILE *fp; int b11; fprintf(fp,The contents isn); for (b11=0;b11=ntext-1;b11+) fprintf(fp,%c,r.srb11); fclose(fp);int main()
12、shuru t; char n,i=0,p=a; int a3=0; printf(nnnnnnnnntttWelcom to use our TXT edition system!n); printf(nnttt 歡迎您使用文本編輯器軟件!n); printf(nnnnnnnnnpress Enter to continue.n); getchar();L1: system(cls); printf(nn The Function Of TXT Edition List n ); printf(n *n * *); printf(n * 0-clear all contents list *
13、n * *); printf(n * 1-Display all contents list *n * *); printf(n * 2-Input contents list *n * *); printf(n * 3-Lookfor contents list *n * *); printf(n * 4-replace contents list *n * *); printf(n * 5-insert contents list *n * *); printf(n * 6-move contents list *n * *); printf(n * 7-delete contents l
14、ist *n * *); printf(n * 8-exit contents list *n * *); printf(n *n); if (i=0) printf(ninput the number before function of you want to select:); else printf(ninput error! please select again); printf(nninput the number before function of you want to select:); fflush(stdin); scanf(%c,&n); switch (n) ca
15、se 0: system(cls); cs(t); i=0; getchar(); goto L1; break; case 1: system(cls); xs(t); i=0; getchar(); goto L1; break; case 2: system(cls); b+; if (b=1) ntext=0; Input(t); i=0; getchar(); goto L1; break; case 3: system(cls); chazhao(t,a3); i=0; getchar(); goto L1; break; case 4: system(cls); tihan(t,
16、a3); i=0; getchar(); goto L1; break; case 5: charu(t,a3); i=0; getchar(); goto L1; break; case 6: system(cls); kuaiyidong(t); i=0; getchar(); goto L1; break; case 7: system(cls); shanchu(t,a3,p); i=0; getchar(); goto L1; break; case 8: system(cls); printf(nnnnnnnnntttThanks to use our program!nnnnnn
17、nn); break; if (n!=0&n!=1&n!=2&n!=3&n!=4&n!=5&n!=6&n!=7&n!=8) i=1; goto L1; 4調試分析 5用戶手冊 清空以前的文本信息:將用數(shù)組存的數(shù)據(jù)內容全部置為0; 顯示當前文本信息:遍歷用數(shù)組存入的信息,并輸入到外部顯示器上; 編輯信息:定義一個結構體,并在結構體中定義一個字符型的一維數(shù)組和一個整型變量,這個整型變量用于記錄一維數(shù)組中存入數(shù)據(jù)的個數(shù); 替換文本信息:首先在數(shù)組中查找要被替換的信息,如果找到該信息,提示輸入要替換的信息內容,否則提示未找到要被替換的信息; 插入文本信息:首先在數(shù)組中查找要插入點,如果找到該插入點,提
18、示輸入插入信息,確認插入信息后,提示選擇向前插入信息還是向后插入信息,如果未找到插入點,顯示未找到要插入的位置; 移動文本信息:首先在數(shù)組中查找要移動的信息,如果找到該信息,提示是進行列移動還是進行行移動,否則提示未找到要移動的信息; 刪除文本信息:首先在數(shù)組中查找要刪除的信息,如果找到該信息,提示是否確認刪除該信息,通過確認來刪除信息,如果未找到要刪除的信息,提示未找到該信息; 退出編輯器:顯示感謝使用該軟件并退出。6測試結果文本編輯器主界面主界面功能,如圖22所示。圖22 文本編輯器主界面系統(tǒng)功能 輸入文本信息功能,如圖23所示。圖23 輸入界面 查找文本信息,如圖24所示。圖24查到功能
19、界面 移動文本信息(列移動),如圖25,圖26所示。圖25 列移動功能圖26 列移動功能 移動文本信息(行移動),如圖27所示。圖27 行移動界面 顯示文本內容,如圖28所示。圖28 進行行移動后顯示的內容7附錄1文件base含有自定義的MyArc類,Graph類,MyQueues類。2文件SmallestTree.cpp為本設計項目的主測試文件,含有main,kruskal算法函數(shù)和其他相關函數(shù).8心得體會程序的運行結果與理論推導結果完全吻合,即該算法與程序設計滿足課程設計要求。該程序的主要優(yōu)點是簡單易懂,不存在理解上的障礙,也很自然地能想到這種解法。通過數(shù)據(jù)結構的課程設計使我們對所學知識有了更好的理解,也增強了大家的動手能力。同時也發(fā)現(xiàn)了自己的很多不足之處,對知識的應用能力很是欠缺,應用軟件的能力及編程水平與課程要求更是存在很大的差距。9參考文獻1 嚴蔚敏,吳偉民數(shù)據(jù)結構(C語言版)M 北京:清華大學出版社,20092 錢能C+程序設計教程(第二版)M 北京:清華大學出版社,20053譚浩強C程序設計(第二版)M 北京:清華大學出版社,200520