数据结构课程设计简易文本编辑器_第1页
数据结构课程设计简易文本编辑器_第2页
数据结构课程设计简易文本编辑器_第3页
数据结构课程设计简易文本编辑器_第4页
数据结构课程设计简易文本编辑器_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、安徽省巢湖学院计算机与信息工程学院课程设计报告课程名称 数据结构 课题名称 简单文本编辑器 专业 计算机科学与技术 班级 10计本2班 学号 10012108 姓名 联系方式 指导教师 20 11 年 12 月 30 日1需求分析一个简易文本编辑器应该具有图形菜单界面,包括查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除文本信息等功能并可正确存盘、取盘,正确显示总行数。2概要设计 为实现数据的有序存储,该编辑器应该用顺序表来存储输入的信息。顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。其特点为:在顺序表上逻辑关系相邻的俩

2、个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。在编辑器的主界面中应有如下提示信息: 清空以前的文本信息:将用数组存的数据内容全部置为0; 显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上; 编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数; 替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息; 插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找

3、到插入点,显示未找到要插入的位置; 移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息; 删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息; 退出编辑器:显示感谢使用该软件并退出。文本编辑器的运行流程图,如图21所示。 图21文本编辑器流程图3详细设计 #include #include #include #include #include #define maxsize 100int ntext; /全局变量int b=0;typ

4、edef struct char srmaxsize; int hang; int lie;shuru ;int strindex(shuru m,char t,int i2,int l) /查找要操作的数据的位置(模式匹配) int i4=l,j=0; while (i4ntext&j=i2) return(i4-i2); /返回匹配的第一个字符的下标 else return(-1); /模式匹配不成功void charu(shuru &k,int l) /向文本中插入内容 system(cls); int i,t=0,t2=0,a=-1; char cr20,pd,x500,c,d; in

5、t i2; printf(n当前文本信息为:n); for (i2=0;i2=ntext-1;i2+) printf(%c,k.sri2); printf(n输入您要在哪个内容前插入,以结束:); fflush(stdin); while (c=getchar()!=) /用一个数组接收要插入在哪个内容之前 if (c=) break; else crt=c; t+; continue; a=strindex(k,cr,t,l); /查找并返回要插入的位置点 if (a!=-1) l=a+t; int hs=1,ls=0; for (b=0;ba;b+) ls+; if (k.srb=n) h

6、s+; ls=0; if (a=-1) printf(n查找到结尾没有找到插入点nr:重新查找点n双击回车键返回菜单:n); l=0; fflush(stdin); d=getchar(); fflush(stdin); else int i2; printf(n当前文本信息为:n); for (i2=0;i2=a;i-) k.sri+t2=k.sri; for (i=0;it2;i+) k.sri+a=xi; ntext=ntext+t2; printf(n当前文本信息为:n); for (i2=0;i2=ntext-1;i2+) printf(%c,k.sri2); printf(插入成功

7、n); fflush(stdin); getchar(); if (d=r|d=r|pd=r|pd=r) l=0; charu(k,l); file *fp; int b11; fprintf(fp,the contents isn); for (b11=0;b11=ntext-1;b11+) fprintf(fp,%c,k.srb11); fclose(fp);void tihan(shuru &r,int l) /内容替换 int t=0,t1=0,i,a; char c,th20,d,d1,bth20; int i2; printf(n当前文本信息为:n); for (i2=0;i2=n

8、text-1;i2+) printf(%c,r.sri2); printf(n输入要被替换的内容,以结束:); fflush(stdin); while (c=getchar()!=) /t指替换前内容的长度 if (c=) break; else btht=c; t+; continue; a=strindex(r,bth,t,l); /查找要被替换的内容的位置 if (a!=-1) l=a+t; int hs=1,ls=0; for (b=0;ba;b+) ls+; if (r.srb=n) hs+; ls=0; if (a=-1) printf(n查找到结尾没有找到要被替换的内容n继续查

9、找请按r,双击回车键退出n); l=0; /printf(n%d,a); /printf(n%d,i1); /printf(n%d,ntext); fflush(stdin); d=getchar(); fflush(stdin); else printf(nn已经找到要查找的数据:ntt在第%d行,第%d列nr:继续向后查找相同内容na:进一步进行替换操作n请选择:,hs,ls+1); /printf(n%d,a); /printf(n%d,i1); /printf(n%d,ntext); fflush(stdin); d=getchar(); if (d!=r&d!=r) printf(n

10、是否要替换该内容?na:替换给内容n双击回车键:返回主菜单n请选择:); fflush(stdin); d1=getchar(); if (d1=a|d1=a) printf(n输入要替换的内容,以结束:); fflush(stdin); while (c=getchar()!=) /t1指替换后的内容长度 if (c=) break; else tht1=c; t1+; continue; if (t=t1) /将要被替换的内容和替换后的内容进行长度比较 for (i=0;it1) for (i=0;it1;i+) r.sri+a=thi; for (i=a+t1;i=a;i-) r.sri

11、+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;b11+) fprintf(fp,%c,r.srb11); fclose(fp);int main()

12、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 edition list n ); printf(n *n * *); printf(n * 0-clear all contents list *

13、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 * *); printf(n * 6-move contents list *n * *); printf(n * 7-delete contents l

14、ist *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:); else printf(ninput error! please select again); printf(nninput the number before function of you want to select:); fflush(stdin); scanf(%c,&n); switch (n) ca

15、se 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; break; case 3: system(cls); chazhao(t,a3); i=0; getchar(); goto l1; break; case 4: system(cls); tihan(t,

16、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(); goto l1; break; case 8: system(cls); printf(nnnnnnnnntttthanks to use our program!nnnnnn

17、nn); break; if (n!=0&n!=1&n!=2&n!=3&n!=4&n!=5&n!=6&n!=7&n!=8) i=1; goto l1; 4调试分析 5用户手册 清空以前的文本信息:将用数组存的数据内容全部置为0; 显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上; 编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数; 替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息; 插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提

18、示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置; 移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息; 删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息; 退出编辑器:显示感谢使用该软件并退出。6测试结果文本编辑器主界面主界面功能,如图22所示。图22 文本编辑器主界面系统功能 输入文本信息功能,如图23所示。图23 输入界面 查找文本信息,如图24所示。图24查到功能界面 移动文本信息(列移动),如图25,图26所示。图25 列移动功能图26 列移动功能 移动文本信息(行移动),如图27所示。图27 行移动界面 显示文本内容,如图28所示。图28 进行行移动后显示的内容7附录1文件base含有自定义的myarc类,graph类,myqueues类。2文件smallesttree.cpp为本设计项目的主测试文件,含有main,kruskal

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论