数据结构__简易文本编辑器

上传人:小*** 文档编号:150932941 上传时间:2022-09-11 格式:DOC 页数:24 大小:546KB
收藏 版权申诉 举报 下载
数据结构__简易文本编辑器_第1页
第1页 / 共24页
数据结构__简易文本编辑器_第2页
第2页 / 共24页
数据结构__简易文本编辑器_第3页
第3页 / 共24页
资源描述:

《数据结构__简易文本编辑器》由会员分享,可在线阅读,更多相关《数据结构__简易文本编辑器(24页珍藏版)》请在装配图网上搜索。

1、题目:【2】简易文本编辑器要求:1)具有图形菜单界面;2)查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除3)可正确存盘、取盘;4)正确显示总行数。1需求分析一个简易文本编辑器应该具有图形菜单界面,包括查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除文本信息等功能并可正确存盘、取盘,正确显示总行数。2概要设计为实现数据的有序存储,该编辑器应该用顺序表来存储输入的信息。顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。其特点为:在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上

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

3、:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息;删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;退出编辑器:显示感谢使用该软件并退出。3详细设计voidmenu();voidshuru(chartext);voidbc(chartext);voiddakai(chartext);voiddayin(chartext);voidchazhao(chartext,intl);voidtihan(chartext,intl);intstrind

4、ex(chartext,chart,inti2,intl);voidshanchu(charp,intl);voidcs(chartext);voidcharu(chartext,intl);voidtuichu(intstatus);chartextMAX=;/文本编辑域charname20=;/文件保存的位置intstatus=0;/显示是否保存过的状态intntext;/文本编辑的位置4用户使用说明清空以前的文本信息:将用数组存的数据内容全部置为0;显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上;编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,

5、这个整型变量用于记录一维数组中存入数据的个数;替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息;插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息如果未找到插入点,显示未找到要插入的位置;移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息;删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;

6、退出编辑器:显示感谢使用该软件并退出。5调试分析/测试结果文本编辑器主界面主界面功能,如图22所示。图22文本编辑器主界面系统功能输入文本信息功能,如图23所示。賦*C:EocuentsandSettingsadiLin桌面DEbug?.eeeKJCiKKiKJCKKKJCJCKWJCKK農xj旬易目-厶福牛算XjCKXXKKWXWKWX容内文内空开入找入陳喪一八存已-s.ffl書甩麻.M0123456789城耳埴X域耳JCXKKWXKKWXWKHTlTlOKX过耳埴XOtXXKKWXK耳图23输入界面查找文本信息,如图2一4所示。图24查到功能界面5显示文本信息,如图25。图2564删除操作

7、,如图2-6图26(删除123)功能75插入操作如图27所示。图27(在789前插入123)界面第句入&此&0的是比道B人不在犍:插他择IA1B其选您II按请丄9点86替换文本内容,如图28所示。9#:圭樹入要替换的内容,以世结東:abcP眷抿成功当前文本倩息九abcl23789请發任意犍继续.轄轉Ik返盼单当前文本信息为:45鉅即*C:DocumentsandSettingsa(iiLin.桌面Debugk3.eae图28(替换456为abc)的内容鞘容行内琢!si要纟禅k到Al他!经入入选#6心得体会程序的运行结果与理论推导结果完全吻合,即该算法与程序设计满足课程设计要求。该程序的主要优点

8、是简单易懂,不存在理解上的障碍,也很自然地能想到这种解法。通过数据结构的课程设计使我们对所学知识有了更好的理解,也增强了大家的动手能力。同时也发现了自己的很多不足之处,对知识的应用能力很是欠缺,应用软件的能力及编程水平与课程要求更是存在很大的差距。7程序#include#include#include#include#defineMAX10000#define_CRT_SECURE_NO_DEPRECATE在vs中取消warning的警告voidmenu();voidshuru(chartext);voidbc(chartext);voiddakai(chartext);voiddayin(c

9、hartext);voidchazhao(chartext,intl);voidtihan(chartext,intl);intstrindex(chartext,chart,inti2,intl);voidshanchu(charp,intl);voidcs(chartext);voidcharu(chartext,intl);voidtuichu(intstatus);chartextMAX=;/文本编辑域charname20=;/文件保存的位置intstatus=0;/显示是否保存过的状态intntext;/文本编辑的位置voiddakai(chartext)system(cls);FI

10、LE*fp;charpd,ch;charname30;inti=0;printf(”输入A:确定打开文件(未保存的数据将会丢失)M:返回主菜单”);fflush(stdin);pd=getchar();if(pd=A|pd=a)printf(”请输入要打开文件名字(例如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;fcl

11、ose(fp);printf(n文件读取成功n文件内容为n”);dayin(text);if(pd=M|pd=m)menu();voidbc(chartext)system(cls);FILE*fp;charpd;chartmp;inti;printf(n输入【A】保存;任意键返回主菜单不保存n);fflush(stdin);pd=getchar();if(!(pd=A|pd=a)menu();elseif(name20=NULL)printf(n请输入保存文件名(例如:c:a.txt):);scanf(%s,name);while(fp=fopen(name,w+)=NULL)printf(

12、”文件不存在,请重新输入文件名:”);scanf(%s,name);printf(nA:确定;B:取消:”);while(scanf(%c,&tmp)!=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;voidcs(chartext)inti;for(i=0;intext;i+)texti=0;ntext=0;status=0;intstrindex(chartext,chart,inti2,intl

13、)/查找要操作的数据的位置(模式匹配)inti1=l,j=0;while(i1ntext&j=i2)return(i1-i2);/返回匹配的第一个字符的下标elsereturn(-1);/模式匹配不成功voidmenu()system(cls);time_ttimep;time(&timep);printf(%s,ctime(&timep);printf(nnnnnnnnntttWelcomtouseourTXTeditionsystem!n);printf(nnttt欢迎您使用文本编辑器软件!n);printf(nnnnnnnnnpressEntertocontinue.n);getchar

14、();loop:system(cls);printf(nnnntt*简易文本编辑器*nn)printf(tttt0.清空内容-n);printf(tttt1.打开文件-n);if(ntext=0)printf(tttt2.输入内容-n);elseprintf(tttt2.继续输入-n);printf(tttt3.查找n);printf(tttt4.插入n);printf(tttt5.删除n);printf(tttt6.替换n);printf(tttt7.显示内容-n);printf(tttt8.保存n);printf(tttt9.退出n);printf(ntttt输入选项0-9:);charn

15、;fflush(stdin);n=getchar();if(n=0&n=9)switch(n)case0:cs(text);break;case1:dakai(text);break;case2:shuru(text);break;case3:chazhao(text,0);break;case4:charu(text,1);break;case5:shanchu(text,0);break;case6:tihan(text,0);break;case7:dayin(text);break;case8:bc(text);break;case9:tuichu(status);default:br

16、eak;elseprintf(n输入有误,请重新输入:);fflush(stdin);n=getchar();system(pause);gotoloop;voidchazhao(chartext,intl)system(cls);inti,t,a=-1;charpattern20,bd,pd;printf(”原文为:n);dayin(text);printf(”请输入您要查找的内容”);scanf(%s,pattern);printf(您查找的内容是:sn,pattern);t=strlen(pattern);loop:a=strindex(text,pattern,t,l);if(a!=-

17、1)l=a+t;inths=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();elseprintf(已经找到在第d行第%d列,输入【R】继续查找下一处;任意键返回主菜单”,hs,ls);fflush(stdin);bd=getchar();if(bd=R|bd=r)gotoloop;if(pd=R|pd=r)l=0;chazhao(text,l);voiddayin(chartext)system(

18、cls);printf(现在文本的内容为:n);printf(%sn,text);inths=1,i;for(i=0;intext;i+)if(texti=n)hs+;printf(n文本共有d行n,hs);voidshuru(chartext)system(cls);printf(”请输入内容(输入结束输入并返回主菜单):n);printf(%s,text);charc;inti=ntext,j=ntext;fflush(stdin);while(c=getchar()!=)texti=c;i+;ntext=i;continue;intcout=0,zf=0,h=1,hs=1,zfs=0;f

19、or(;coutntext;cout+)zf+;if(textcout=n)h+;zf-;if(textcout=)zf-;for(cout=j;coutntext;cout+)zfs+;if(textcout=n)hs+;zfs-;if(textcout=)zfs-;printf(统计:文本一共有d个字符,%d行,本次输入了d个字符,d行n,zf,h,zfs,hs);voidshanchu(charp,intl)inti,a=-1,t2=0;charx20,px,pd,pdx,c;system(cls);printf(%s,p);printf(n输入【A】执行查找删除内容;任意键返回主菜单:

20、”);fflush(stdin);px=getchar();if(px=a|px=A)printf(n输入您要删除的内容,以结束:);fflush(stdin);while(c=getchar()!=)if(c=)break;elsext2=c;t2+;continue;loop:a=strindex(p,x,t2,l);inths=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

21、();elseprintf(“你要删除的内容在第%d行第d列n输入【A】确定删除;输入【B】寻找下个词;其他键将返回主菜单:,hs,ls);fflush(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);elseif(pd=b|pd=B)gotoloop;if(pdx=r|pdx=R)shanchu(text,l);voidcharu(chartext,intl)/向文本中插入内容system(cls);inti=0,

22、t=0,t2=0,a=-1,b;charcr20=,pd,x500,c,d;printf(n当前文本信息为:n);printf(%s,text);printf(n输入您要在哪个内容前插入,以结束:);fflush(stdin);while(c=getchar()!=)/用一个数组接收要插入在哪个内容之前if(c=)break;elsecrt=c;t+;continue;loop:a=strindex(text,cr,t,l);/查找并返回要插入的位置点inths=1,ls=0;for(b=0;b=a;i-)texti+t2=texti;for(i=0;it2;i+)texti+a=xi;nte

23、xt=ntext+t2;printf(n当前文本信息为:n);for(i=0;i=ntext-1;i+)printf(%c,texti);printf(n文本插入成功n);fflush(stdin);getchar();if(d=r|d=R)l=0;charu(text,l);status=0;voidtihan(charp,intl)/内容替换intt=0,t1=0,i,a,b;charc,th20,d,d1,bth20;inti2;system(cls);printf(n当前文本信息为:n);for(i2=0;i2=ntext-1;i2+)printf(%c,pi2);printf(n输入

24、要被替换的内容,以结束:”);10fflush(stdin);while(c=getchar()!=)/t指替换前内容的长度if(c=)break;elsebtht=c;t+;continue;loop:a=strindex(p,bth,t,l);/查找要被替换的内容的位置inths=1,ls=0;for(b=0;ba;b+)ls+;if(pb=n)hs+;ls=0;if(a=-1)printf(n查找到结尾没有找到要被替换的内容n输入【R】查找其他内容,按其他键返回主菜单键n);l=0;d=getchar();fflush(stdin);elseprintf(nn已经找到要查找的数据在第d行

25、第d列5输入【A】继续向后查找相同内容n输入其他键将进行替换操作n请选择:”,hs,ls+l);fflush(stdin);l=t+a;charpd;11pd=getchar();if(pd!=a&pd!=A)printf(n是否要替换该内容?nA:替换给内容;其他键返回主菜单n请选择:”);fflush(stdin);d1=getchar();if(d1=a|d1=A)printf(n输入要替换的内容,以结束:);fflush(stdin);while(c=getchar()!=)/t1指替换后的内容长度if(c=)break;elsetht1=c;t1+;continue;if(t=t1)

26、/将要被替换的内容和替换后的内容进行长度比较for(i=0;it1)for(i=0;it1;i+)pi+a=thi;for(i=a+t1;i=a;i-)pi+t1-t=pi;for(i=0;it1;i+)pi+a=thi;ntext=ntext+t1-t;printf(”替换成功”);printf(n当前文本信息为:n);for(i2=0;i2=ntext-1;i2+)printf(%c,pi2);getchar();status=0;elsegotoloop;if(d=r|d=R)tihan(text,l);voidtuichu(intstatus)charpd;if(status)exit(0);elseprintf(”还未保存文件,确定退出?(Q.直接退出;Y.保存后退出”);fflush(stdin);pd=getchar();if(!(pd=Q|pd=q)bc(text);exit(0);intmain()menu();return(0);13

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!