数据结构简易文本编辑器.doc
- 文档编号:144790
- 上传时间:2022-10-04
- 格式:DOC
- 页数:25
- 大小:183.50KB
数据结构简易文本编辑器.doc
《数据结构简易文本编辑器.doc》由会员分享,可在线阅读,更多相关《数据结构简易文本编辑器.doc(25页珍藏版)》请在冰豆网上搜索。
.
题目:
【2】.简易文本编辑器
要求:
1)具有图形菜单界面;
2)查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除
3)可正确存盘、取盘;
4)正确显示总行数。
1需求分析
一个简易文本编辑器应该具有图形菜单界面,包括查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除文本信息等功能并可正确存盘、取盘,正确显示总行数。
2概要设计
为实现数据的有序存储,该编辑器应该用顺序表来存储输入的信息。
顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。
其特点为:
在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。
在编辑器的主界面中应有如下提示信息:
⑴清空以前的文本信息:
将用数组存的数据内容全部置为0;
⑵显示当前文本信息:
遍历用数组存入的信息,并输入到外部显示器上;
⑶编辑信息:
定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数;
⑷替换文本信息:
首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息;
⑸插入文本信息:
首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置;
⑹移动文本信息:
首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息;
⑺删除文本信息:
首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;
⑻退出编辑器:
显示感谢使用该软件并退出。
3详细设计
voidmenu();
voidshuru(chartext[]);
voidbc(chartext[]);
voiddakai(chartext[]);
voiddayin(chartext[]);
voidchazhao(chartext[],intl);
voidtihan(chartext[],intl);
intstrindex(chartext[],chart[],inti2,intl);
voidshanchu(charp[],intl);
voidcs(chartext[]);
voidcharu(chartext[],intl);
voidtuichu(intstatus);
chartext[MAX]=""; //文本编辑域
charname[20]=""; //文件保存的位置
intstatus=0; //显示是否保存过的状态
intntext; //文本编辑的位置
4用户使用说明
⑴清空以前的文本信息:
将用数组存的数据内容全部置为0;
⑵显示当前文本信息:
遍历用数组存入的信息,并输入到外部显示器上;
⑶编辑信息:
定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数;
⑷替换文本信息:
首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息;
⑸插入文本信息:
首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置;
⑹移动文本信息:
首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息;
⑺删除文本信息:
首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;
⑻退出编辑器:
显示感谢使用该软件并退出。
5调试分析/测试结果
文本编辑器主界面
主界面功能,如图2—2所示。
图2—2文本编辑器主界面
系统功能
⑴输入文本信息功能,如图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}替换文本内容,如图2—8所示。
图2—8(替换456为abc)的内容
.
6心得体会
程序的运行结果与理论推导结果完全吻合,即该算法与程序设计满足课程设计要求。
该程序的主要优点是简单易懂,不存在理解上的障碍,也很自然地能想到这种解法。
通过数据结构的课程设计使我们对所学知识有了更好的理解,也增强了大家的动手能力。
同时也发现了自己的很多不足之处,对知识的应用能力很是欠缺,应用软件的能力及编程水平与课程要求更是存在很大的差距。
7程序
#include
#include
#include
#include
#defineMAX10000
#define_CRT_SECURE_NO_DEPRECATE //在vs中取消warning的警告
voidmenu();
voidshuru(chartext[]);
voidbc(chartext[]);
voiddakai(chartext[]);
voiddayin(chartext[]);
voidchazhao(chartext[],intl);
voidtihan(chartext[],intl);
intstrindex(chartext[],chart[],inti2,intl);
voidshanchu(charp[],intl);
voidcs(chartext[]);
voidcharu(chartext[],intl);
voidtuichu(intstatus);
chartext[MAX]=""; //文本编辑域
charname[20]=""; //文件保存的位置
intstatus=0; //显示是否保存过的状态
intntext; //文本编辑的位置
voiddakai(chartext[])
{
system("cls");
FILE*fp;
charpd,ch;
charname[30];
inti=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",name);
}
cs(text);
while(!
feof(fp))
{
ch=fgetc(fp);
text[i]=ch;
i++;
}
text[i]='\0';
ntext=i;
fclose(fp);
printf("\n文件读取成功\n文件内容为\n");
dayin(text);
}
if(pd=='M'||pd=='m')
menu();
}
voidbc(chartext[])
{
system("cls");
FILE*fp;
charpd;
chartmp;
inti;
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("文件不存在,请重新输入文件名:
");
scanf("%s",name);
}
printf("\nA:
确定;B:
取消:
");
while(scanf("%c",&tmp)!
=EOF)
{
if(tmp=='A'||tmp=='a')
{
for(i=0;i fprintf(fp,"%c",text[i]); fclose(fp); status=1; printf("\n文件保存成功\n"); break; } if(tmp=='B'||tmp=='b') { break; } } } } voidcs(chartext[]) { inti; for(i=0;i { text[i]='\0'; } ntext=0; status=0; } intstrindex(chartext[],chart[],inti2,intl)//查找要操作的数据的位置(模式匹配) { inti1=l,j=0; while(i1 { if(text[i1]==t[j]) //继续匹配下一个字符 { j++; i1++; //主串和子串依次匹配下一个字符 } else //主串、子串指针回溯重新开始下一次匹配 { i1=i1-j+1; //主串从下一个位置开始匹配 j=0; //子串从头开始匹配 } } if(j>=i2) { return(i1-i2); } //返回匹配的第一个字符的下标 else return(-1);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 简易 文本 编辑器