数据结构简易文本编辑器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构简易文本编辑器 Revised by Jack on December 14,2020
题目:
【2】.简易文本编辑器
要求:
1) 具有图形菜单界面;
2) 查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除
3) 可正确存盘、取盘;
4) 正确显示总行数。
1需求分析
一个简易文本编辑器应该具有图形菜单界面,包括查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除文本信息等功能并可正确存盘、取盘,正确显示总行数。
2概要设计
为实现数据的有序存储,该编辑器应该用顺序表来存储输入的信息。顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。其特点为:在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。在编辑器的主界面中应有如下提示信息:
⑴清空以前的文本信息:将用数组存的数据内容全部置为0;
⑵显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上;
⑶编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组
和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数;
⑷替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,
提示输入要替换的信息内容,否则提示未找到要被替换的信息;
⑸插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示
输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置;
⑹移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提
示是进行列移动还是进行行移动,否则提示未找到要移动的信息;
⑺删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提
示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;
⑻退出编辑器:显示感谢使用该软件并退出。
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);
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]=""; .\n");
getchar();
loop:
system("cls");
printf("\n\n\n\n\t\t******************简易文本编辑器
*****************\n\n");
printf("\t\t\t\t----0.清空内容--\n");
printf("\t\t\t\t----1.打开文件--\n");
if (ntext==0){
printf("\t\t\t\t----2.输入内容--\n");
}
else {
printf("\t\t\t\t----2.继续输入--\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");
printf("\t\t\t\t----7.显示内容--\n");
printf("\t\t\t\t----8.保存------\n");
printf("\t\t\t\t----9.退出------\n");
printf("\n\t\t*********************选项************************\n");
printf("\n\t\t\t\t输入选项0-9:");
char n;
fflush(stdin);
n=getchar();
if(n>='0'&&n<='9')
{
switch (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;
}
}
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;