第一篇:數(shù)據(jù)結(jié)構(gòu) 簡易文本編輯器(共)
題目:
【2】.簡易文本編輯器 要求:
1)具有圖形菜單界面;
2)查找,替換(等長,不等長),插入(插串,文本塊的插入)、塊移動(行塊,列塊移動),刪除
3)可正確存盤、取盤; 4)正確顯示總行數(shù)。
1需求分析
一個(gè)簡易文本編輯器應(yīng)該具有圖形菜單界面,包括查找,替換(等長,不等長),插入(插串,文本塊的插入)、塊移動(行塊,列塊移動),刪除文本信息等功能并可正確存盤、取盤,正確顯示總行數(shù)。
2概要設(shè)計(jì)
為實(shí)現(xiàn)數(shù)據(jù)的有序存儲,該編輯器應(yīng)該用順序表來存儲輸入的信息。順序表是數(shù)據(jù)結(jié)構(gòu)中線性表的一種,它是用一塊地址連續(xù)的存儲空間依次存儲線性表的元素。其特點(diǎn)為:在順序表上邏輯關(guān)系相鄰的倆個(gè)元素在物理位置上也相鄰;在順序表上可以隨即存取表中的元素。在編輯器的主界面中應(yīng)有如下提示信息:
⑴ 清空以前的文本信息:將用數(shù)組存的數(shù)據(jù)內(nèi)容全部置為0;
⑵ 顯示當(dāng)前文本信息:遍歷用數(shù)組存入的信息,并輸入到外部顯示器上; ⑶ 編輯信息:定義一個(gè)結(jié)構(gòu)體,并在結(jié)構(gòu)體中定義一個(gè)字符型的一維數(shù)組和一個(gè)整型變量,這個(gè)整型變量用于記錄一維數(shù)組中存入數(shù)據(jù)的個(gè)數(shù); ⑷ 替換文本信息:首先在數(shù)組中查找要被替換的信息,如果找到該信息,提示輸入要替換的信息內(nèi)容,否則提示未找到要被替換的信息;
⑸ 插入文本信息:首先在數(shù)組中查找要插入點(diǎn),如果找到該插入點(diǎn),提示輸入插入信息,確認(rèn)插入信息后,提示選擇向前插入信息還是向后插入信息,如果未找到插入點(diǎn),顯示未找到要插入的位置;
⑹ 移動文本信息:首先在數(shù)組中查找要移動的信息,如果找到該信息,提示是進(jìn)行列移動還是進(jìn)行行移動,否則提示未找到要移動的信息; ⑺ 刪除文本信息:首先在數(shù)組中查找要刪除的信息,如果找到該信息,提示是否確認(rèn)刪除該信息,通過確認(rèn)來刪除信息,如果未找到要刪除的信息,提示未找到該信息;
⑻ 退出編輯器:顯示感謝使用該軟件并退出。詳細(xì)設(shè)計(jì)
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(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;
//文本編輯的位置
4用戶使用說明
⑴ 清空以前的文本信息:將用數(shù)組存的數(shù)據(jù)內(nèi)容全部置為0;
⑵ 顯示當(dāng)前文本信息:遍歷用數(shù)組存入的信息,并輸入到外部顯示器上; ⑶ 編輯信息:定義一個(gè)結(jié)構(gòu)體,并在結(jié)構(gòu)體中定義一個(gè)字符型的一維數(shù)組和一個(gè)整型變量,這個(gè)整型變量用于記錄一維數(shù)組中存入數(shù)據(jù)的個(gè)數(shù); ⑷ 替換文本信息:首先在數(shù)組中查找要被替換的信息,如果找到該信息,提示輸入要替換的信息內(nèi)容,否則提示未找到要被替換的信息;
⑸ 插入文本信息:首先在數(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 文本編輯器主界面
系統(tǒng)功能
⑴ 輸入文本信息功能,如圖2—3所示。
圖2—3 輸入界面
⑵ 查找文本信息,如圖2—4所示。
圖2—4查到功能界面 ⑶ 顯示文本信息,如圖2—5。
圖2—5 {4}刪除操作,如圖2--6
圖2—6(刪除123)功能 {5}插入操作
如圖2—7所示。
圖2—7(在789前插入123)界面 {6}替換文本內(nèi)容,如圖2—8所示。
圖2—8(替換456為abc)的內(nèi)容 6心得體會
程序的運(yùn)行結(jié)果與理論推導(dǎo)結(jié)果完全吻合,即該算法與程序設(shè)計(jì)滿足課程設(shè)計(jì)要求。該程序的主要優(yōu)點(diǎn)是簡單易懂,不存在理解上的障礙,也很自然地能想到這種解法。通過數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì)使我們對所學(xué)知識有了更好的理解,也增強(qiáng)了大家的動手能力。同時(shí)也發(fā)現(xiàn)了自己的很多不足之處,對知識的應(yīng)用能力很是欠缺,應(yīng)用軟件的能力及編程水平與課程要求更是存在很大的差距。
7程序
#include
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(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;int ntext;//顯示是否保存過的狀態(tài)
//文本編輯的位置
//在vs中取消warning的警告
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)
{
printf(”n打開文件失敗,請重新輸入要打開的文件名:“);
scanf(”%s“,name);
}
cs(text);
while(!feof(fp))
{
ch=fgetc(fp);
text[i]=ch;
i++;
}
text[i]='