1、沈阳工程学院课程设计报告 简易文本编辑器文本编译器第二章 简易文本编辑器2.1 问题分析一个简易文本编辑器应该具有图形菜单界面,包括查找,替换(等长,不等长) ,插入(插串,文本块的插入) 、块移动(行块,列块移动) ,删除文本信息等功能并可正确存盘、取盘,正确显示总行数。2.2 数据结构与算法分析2.2.1 结构与算法分析为实现数据的有序存储,该编辑器应该用顺序表来存储输入的信息。顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。其特点为:在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。在编辑器的主界面中应有如下提示信息:
2、 清空以前的文本信息:将用数组存的数据内容全部置为 0; 显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上; 编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数; 替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息; 插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置; 移动文本信息:首先在数组中查找要移动的信息,如果找到该信息
3、,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息; 删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息; 退出编辑器:显示感谢使用该软件并退出。2.2.2 系统运行流程图文本编辑器的运行流程图,如图 21 所示。沈阳工程学院课程设计报告 简易文本编辑器图 21 文本编辑器流程图2.3 核心代码#include #include #include #include #include #define MAXSIZE 100int ntext; /全局变量int b=0;typedef stru
4、ctchar srMAXSIZE;int hang;沈阳工程学院课程设计报告 简易文本编辑器int lie;shuru ;int strindex(shuru m,char t,int i2,int l) /查找要操作的数据的位置( 模式匹配)int i4=l,j=0;while (i4=i2)return(i4-i2); /返回匹配的第一个字符的下标elsereturn(-1); /模式匹配不成功void charu(shuru int i,t=0,t2=0,a=-1;char cr20,pd,x500,c,d;int i2;printf(“n 当前文本信息为:n“);for (i2=0;i
5、2=a;i-)k.sri+t2=k.sri;for (i=0;it1)for (i=0;i=a;i-)r.sri+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;b
6、11+)fprintf(fp,“%c“,r.srb11);fclose(fp);沈阳工程学院课程设计报告 简易文本编辑器int main()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 Edi
7、tion List n “);printf(“n *n * *“);printf(“n * 0-clear all contents list *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
8、 * *“);printf(“n * 6-move contents list *n * *“);printf(“n * 7-delete contents list *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:“);elseprintf(“ninput error! please select again“);printf(
9、“nninput the number before function of you want to select:“);fflush(stdin);scanf(“%c“,switch (n)case 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;bre
10、ak;case 3:system(“cls“);chazhao(t,a3);i=0;getchar();goto L1;break;case 4:system(“cls“);tihan(t,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();沈阳工程学院课程设计报告
11、 简易文本编辑器goto L1;break;case 8:system(“cls“);printf(“nnnnnnnnntttThanks to use our program!nnnnnnnn“);break;if (n!=0goto L1;2.4 运行结果2.4.1 文本编辑器主界面主界面功能,如图 22 所示。图 22 文本编辑器主界面沈阳工程学院课程设计报告 简易文本编辑器2.4.2 系统功能 输入文本信息功能,如图 23 所示。图 23 输入界面 查找文本信息,如图 24 所示。图 24 查到功能界面 移动文本信息(列移动) ,如图 25,图 26 所示。沈阳工程学院课程设计报告 简易文本编辑器图 25 列移动功能图 26 列移动功能 移动文本信息(行移动) ,如图 27 所示。沈阳工程学院课程设计报告 简易文本编辑器图 27 行移动界面 显示文本内容,如图 28 所示。图 28 进行行移动后显示的内容沈阳工程学院课程设计报告 简易文本编辑器