数据结构简易文本编辑器资料_第1页
数据结构简易文本编辑器资料_第2页
数据结构简易文本编辑器资料_第3页
数据结构简易文本编辑器资料_第4页
数据结构简易文本编辑器资料_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

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);intstrindex(chartext,c

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

5、中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否那么提示未找到要被替换的信息;插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息如果未找到插入点,显示未找到要插入的位置;移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否那么提示未找到要移动的信息;删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;退出编辑器:显示感谢使用该软件并退出.5调试分析/测试结果文本编辑

6、器主界面主界面功能,如图22所示intstatus=0;/显示是否保存过的状态N N- -C:DacmeintsandSett5g&adnintC:DacmeintsandSett5g&adnint 桌面 e e 直旨TpiJanTpiJan03150315:2424:46462B142B14UelcvmtouseourTXTeditionsystenfUelcvmtouseourTXTeditionsystenf欢送您便月文本编辑器软件!hppessEntertocontinue,hppessEntertocontinue,. .图22文本编辑器主界面系统功能输入文本信息功能

7、,如图23所示.IA.Tl:,;:,;CABociMentsandCABociMentsand5 5 姓七工 0 0 9191 疝、桌面.1 1口那3 3 3636*l同曷文本编辑室*-z zz z-相容-一容一一-jhJ-rtr,5rtr-rtr=-H 一开入关除唇一八存巴杳插删替显保建-01234567890123456789输入选功gyt图23输入界面查找文本信息,如图24所示图24查到功能界面显示文本信息,如图25图254删除操作,如图2-6氤r rC C; Bocxuent3andSettincsadainnDBocxuent3andSettincsadainnD bu(3.bu(3

8、. xexe123456709123456709BABAA执行登我删除内部任意键返回主菜单4 4局技任意键继续.一图26删除123功能5插入操作如图27所小输入您要删除的内备以笆吉兼皿侬时土容在急行知列123(?班脍成球删僚篇BB寻找F F个祠;其他键将返回主菜单:口成成C:DocuBtntsandSettin(skadBinASDetucVueC:DocuBtntsandSettin(skadBinASDetucVue苜前文本信息为!4567g4567g9 9输入您要在哪个内容前插入.以P P结索:789?789?输入您要插入的内容,以度吉弟,或即苜前文本信息为:45612378345612

9、3783文本插入成功图27在789前插入123界面6替换文本内容,如图28所示.的是用近r入不在键:立此应回弟向入日单ElnH:一善下NC:Docuentsand5ettineJadiinSDebag3,ere,NC:Docuentsand5ettineJadiinSDebag3,ere,解要替换的内冬加结束:西理当前支本信息为;123789123789请抹任意樨胫机一当施文本信息力:郛容行内-耦L3L_J_si也FAFAT T出籽 熹 三 捷k k别AlAl他,我 ml 经 入 入恒主回这4 4二链?他I I该容投内力替 给:否瞽也n|K图28替换456为abc的内容Ld16心得体会程序的运

10、行结果与理论推导结果完全吻合,即该算法与程序设计满足课程设计要求.该程序的主要优点是简单易懂,不存在理解上的障碍,也很自然地能想到这种解法.通过数据结构的课程设计使我们对所学知识有了更好的理解,也增强了大家的动手能力.同时也发现了自己的很多缺乏之处,对知识的应用水平很是欠缺,应用软件的水平及编程水平与课程要求更是存在很大的差距.7程序#include#include#include#include#defineMAX10000#define_CRT_SECURE_NO_DEPRECATEvoidmenu();voidshuru(chartext);voidbc(chartext);voidda

11、kai(chartext);voiddayin(chartext);voidchazhao(chartext口,intl);voidtihan(chartext,intl);intstrindex(chartext口,chart,inti2,intl);voidshanchu(charp口,intl);voiddakai(chartext)system(cls);FILE*fp;charpd,ch;charname30;inti=0;printf(输入A确定翻开文件(未保存的数据将会丧失)M:返回主菜单);fflush(stdin);pd=getchar();if(pd=A|pd=a)教育资料

12、(printf(请输入要翻开文件名字(例如c:a.txt);scanf(%s,name);while(fp=fopen(name,r)=NULL)(printf(n翻开文件失败,请重新输入要翻开的文件名:);scanf(%s,name);/在vs中取消warning的警告voidcs(chartext);voidcharu(chartext,intl);voidtuichu(intstatus);chartextMAX尸;charname20=;intstatus=0;intntext;/文本编辑域/文件保存的位置/显示是否保存过的状态文本编辑的位置cs(text);while(!feof(f

13、p)(ch=fgetc(fp);texti=ch;i+;texti=0;ntext=i;fclose(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();else(if(name20=NULL)(printf(n请输入保存文件名(例如:c:a.txt):);s

14、canf(%s,name);)while(fp=fopen(name,w+)=NULL)(printf(文件不存在,请重新输入文件名:);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+)(t

15、exti=0;)ntext=0;status=0;)intstrindex(chartext口,chart,inti2,intl)/查找要操作的数据的位置配)(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);

16、printf(nnttt欢送您使用文本编辑器软件!n);printf(nnnnnnnnnpressEntertocontinuen);getchar();loop:system(cls);printf(nnnntt*简易文本编辑器*nn);printf(tttt-0.printf(tttt-1.if(ntext=0)清空内容-n);翻开文件-n);printf(tttt-2.输入内容-n);elseprintf(tttt-2.printf(tttt-3.printf(tttt-4.printf(tttt-5.继续输入-n);查找n);插入-n);删除n);printf(nttttcharn;f

17、flush(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:

18、break;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!=

19、-1)(l=a+t;inths=1,ls=0;for(i=0;i=a;i+)(ls+;if(texti=n)(hs+;ls=0;printf(tttt-6.printf(tttt-7.printf(tttt-8.printf(tttt-9.替换-n);显示内容-n);保存-n);退出n);printf(ntt*选项*n,);输入选项0-9:);if(a=-1)(printf(查找到结尾没有找到n输入【E 将重头查找;任意键返回主菜单);l=0;fflush(stdin);pd=getchar();else(printf(已经找到在第d行第d列,输入【R】继续查找下一处;任意键返回主菜单,hs,

20、ls);fflush(stdin);bd=getchar();if(bd=R|bd=r)gotoloop;if(pd=R|pd=r)l=0;chazhao(text,l);voiddayin(chartext口)system(cls);printf(现在文本的内容为:n);printf(%sn,text);inths=1,i;for(i=0;intext;i+)(if(texti=n)(hs+;)printf(n文本共有cn,hs);)voidshuru(chartext)(system(cls);printf(请输入内容(输入吉束输入并返回主菜单):n);printf(%s,text);ch

21、arc;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;for(;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(统计:文本一共有dj字符,d行,本次输入了%d个字符,%d行n,zf,h,zf

22、s,hs);)voidshanchu(charp,intl)(inti,a=-1,t2=0;charx20,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(c=)(break;)else(xt2=c;t2+;continue;)loop:a=strindex(p,x,t2,l);inths=1,ls=

23、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行第列坨输入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(删除成功,删除

24、后的内容为:n%sn,text);)elseif(pd=b|pd=B)gotoloop;)if(pdx=r|pdx=R)shanchu(text,l);)voidcharu(chartext,intl)/向文本中插入内容(system(cls);inti=0,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;)els

25、e(crt=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;)ntext=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)

26、/(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输入要被替换的内容,以画束:);fflush(stdin);while(c=getchar()!=)/t指替换前内容的长度(if(c=)(break;else(btht=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=

温馨提示

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

评论

0/150

提交评论