数据结构 简易文本编辑器

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目:

【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]=""; //文本编辑域

char name[20]=""; //文件保存的位置

int status=0; //显示是否保存过的状态

int ntext; //文本编辑的位置

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

#define MAX 10000

#define _CRT_SECURE_NO_DEPRECA TE //在vs中取消warning的警告

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; //显示是否保存过的状态

int ntext; //文本编辑的位置

void dakai(char text[])

{

system("cls");

FILE *fp;

char pd,ch;

char name[30];

int i=0;

printf("输入A:确定打开文件(未保存的数据将会丢失) M:返回主菜单");

fflush(stdin);

pd=getchar();

if (pd=='A'||pd=='a')

{

printf("请输入要打开文件名字(例如c:\\a.txt)");

scanf("%s",name);

相关文档
最新文档