ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:20.40KB ,
资源ID:4158006      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4158006.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构简易文本编辑器.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构简易文本编辑器.docx

1、数据结构简易文本编辑器 TPMK standardization office【 TPMK5AB- TPMK08- TPMK2C- TPMK18】数据结构简易文本编辑器题目:【2】简易文本编辑器要求:1) 具有图形菜单界面;2) 查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除3) 可正确存盘、取盘;4) 正确显示总行数。1需求分析一个简易文本编辑器应该具有图形菜单界面,包括查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除文本信息等功能并可正确存盘、取盘,正确显示总行数。2概要设计 为实现数据的有序存储,该编辑器应该用

2、顺序表来存储输入的信息。顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。其特点为:在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。在编辑器的主界面中应有如下提示信息: 清空以前的文本信息:将用数组存的数据内容全部置为0; 显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上; 编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数; 替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息

3、; 插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置; 移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息; 删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息; 退出编辑器:显示感谢使用该软件并退出。3 详细设计void menu(); void shuru(char text);void bc(char tex

4、t); 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 textMAX=; /文本编辑域char name20=; /文件保存的位置int statu

5、s=0; /显示是否保存过的状态int ntext; /文本编辑的位置 4用户使用说明 清空以前的文本信息:将用数组存的数据内容全部置为0; 显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上; 编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数; 替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息; 插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,

6、显示未找到要插入的位置; 移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息; 删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息; 退出编辑器:显示感谢使用该软件并退出。5调试分析 /测试结果文本编辑器主界面主界面功能,如图22所示。图22 文本编辑器主界面系统功能 输入文本信息功能,如图23所示。图23 输入界面 查找文本信息,如图24所示。图24查到功能界面 显示文本信息,如图25。图25 4删除操作,如图2-6图26 (删除1

7、23)功能5插入操作 如图27所示。图27 (在789前插入123)界面6替换文本内容,如图28所示。图28 (替换456为abc)的内容6心得体会程序的运行结果与理论推导结果完全吻合,即该算法与程序设计满足课程设计要求。该程序的主要优点是简单易懂,不存在理解上的障碍,也很自然地能想到这种解法。通过数据结构的课程设计使我们对所学知识有了更好的理解,也增强了大家的动手能力。同时也发现了自己的很多不足之处,对知识的应用能力很是欠缺,应用软件的能力及编程水平与课程要求更是存在很大的差距。7程序#include #include #include #include #define MAX 10000#

8、define _CRT_SECURE_NO_DEPRECATE /在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

9、 charu(char text,int l);void tuichu(int status);char textMAX=; /文本编辑域char name20=; /文件保存的位置int status=0; /显示是否保存过的状态int ntext; /文本编辑的位置 void dakai(char text) system(cls); FILE *fp; char pd,ch; char name30; int i=0; printf(输入A:确定打开文件(未保存的数据将会丢失) M:返回主菜单); fflush(stdin); pd=getchar(); if (pd=A|pd=a) p

10、rintf(请输入要打开文件名字(例如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); texti=ch; i+; texti=0; ntext=i; fclose(fp); printf(n文件读取成功n文件内容为n); dayin(text); if (pd=M|pd=m) menu(); void bc(char text) system(cls); F

11、ILE *fp; char pd; char tmp; int i; printf(n输入【A】保存;任意键返回主菜单不保存n); fflush(stdin); pd=getchar(); if (!(pd=A|pd=a) menu(); else if(name20=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,&t

12、mp)!=EOF) if (tmp=A | tmp=a) for(i=0;intext;i+) fprintf(fp,%c,texti); fclose(fp); status=1; printf(n文件保存成功n); break; if (tmp=B | tmp=b) break; void cs(char text) int i; for (i=0;intext;i+) texti=0; ntext=0; status=0; int strindex(char text,char t,int i2,int l) /查找要操作的数据的位置(模式匹配) int i1=l,j=0; while

13、(i1ntext&j=i2) return(i1-i2); /返回匹配的第一个字符的下标 else return(-1); /模式匹配不成功void menu() system(cls); time_t timep; time (&timep); printf(%s,ctime(&timep); printf(nnnnnnnnntttWelcom to use our TXT edition system!n); printf(nnttt 欢迎您使用文本编辑器软件!n); printf(nnnnnnnnnpress Enter to continue.n); getchar();loop: s

14、ystem(cls); printf(nnnntt*简易文本编辑器*nn); printf(tttt-0.清空内容-n); printf(tttt-1.打开文件-n); if (ntext=0) printf(tttt-2.输入内容-n); else printf(tttt-2.继续输入-n); printf(tttt-3.查找-n); printf(tttt-4.插入-n); printf(tttt-5.删除-n); printf(tttt-6.替换-n); printf(tttt-7.显示内容-n); printf(tttt-8.保存-n); printf(tttt-9.退出-n); pr

15、intf(ntt*选项*n); printf(ntttt输入选项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

16、 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 pattern20,bd,pd; printf(原文为:n); dayin(text); printf(请输入您要查找的内容); scanf

17、(%s,pattern); printf(您查找的内容是:%sn,pattern); t=strlen(pattern);loop: a=strindex(text,pattern,t,l); if (a!=-1) l=a+t; int hs=1,ls=0; for (i=0;i=a;i+) ls+; if (texti=n) hs+;ls=0; if (a=-1) printf(查找到结尾没有找到n输入【R】将重头查找;任意键返回主菜单); l=0; fflush(stdin); pd=getchar(); else printf(已经找到在第%d行第%d列,输入【R】继续查找下一处;任意键

18、返回主菜单,hs,ls); fflush(stdin); bd=getchar(); if (bd=R|bd=r) goto loop; if (pd=R|pd=r) l=0;chazhao(text,l);void dayin(char text) system(cls); printf(现在文本的内容为:n); printf(%sn,text); int hs=1,i; for (i=0;intext;i+) if (texti=n) hs+; printf(n文本共有%d行n,hs);void shuru(char text) system(cls); printf(请输入内容(输入结束

19、输入并返回主菜单):n); printf(%s,text); char c; int i=ntext,j=ntext; fflush(stdin); while (c=getchar()!=) texti=c; i+; ntext=i; continue; int cout=0,zf=0,h=1,hs=1,zfs=0; for(;coutntext;cout+) zf+; if(textcout=n) h+;zf-; if(textcout= ) zf-; for(cout=j;coutntext;cout+) zfs+; if(textcout=n) hs+;zfs-; if(textcou

20、t= ) zfs-; printf(统计:文本一共有%d个字符,%d行,本次输入了%d个字符,%d行n,zf,h,zfs,hs);void shanchu(char p,int l) int i,a=-1,t2=0; char x20,px,pd,pdx,c; system(cls); printf(%s,p); printf(n输入【A】执行查找删除内容;任意键返回主菜单:); fflush(stdin); px=getchar(); if (px=a|px=A) printf(n输入您要删除的内容,以结束:); fflush(stdin); while (c=getchar()!=) if

21、 (c=) break; else xt2=c; t2+; continue; loop: a=strindex(p,x,t2,l); int hs=1,ls=0; for (i=0;i=a;i+) ls+; if (pi=n) hs+; ls=0; if (a=-1) printf(已查找结束,您要删除的内容不存在n输入【R】重新输入要删除的内容;其他键将返回主菜单:); l=0; fflush(stdin); pdx=getchar(); else printf(你要删除的内容在第%d行第%d列n 输入【A】确定删除;输入【B】寻找下个词;其他键将返回主菜单:,hs,ls); fflush

22、(stdin); pd=getchar(); l=t2+a; if (pd=a|pd=A) for(i=a;intext;i+) pi=pi+t2; ntext=ntext-t2; printf(删除成功,删除后的内容为:n%sn,text); else if (pd=b|pd=B) goto loop; if(pdx=r|pdx=R) shanchu(text,l); void charu(char text,int l) /向文本中插入内容 system(cls); int i=0,t=0,t2=0,a=-1,b; char cr20=,pd,x500,c,d; printf(n当前文本信息为:n); printf(%s,text); printf(n输入您要在哪个内容前插入,以结束:); fflush(stdin); while (c=getchar()!=) /用一个数组接收要插入在哪个内容之前 if (c=) break; else crt=c; t+; continue; loop: a=strindex(text,cr,t,l); /查找并返回要插入的位置点 int hs=1,ls=0; for (b=0;b=a;i-) texti+t2=texti;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1