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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

简易文本编辑器--数据结构课设.doc

1、摘 要当下C+语言是一门重要的课程学习,学会运用并结合其他的知识一起解题是一件值得我们重视的,数据结构是一门结合C+知识的重要课程,因此我们要学会将平时课本的知识运用到我们现实生活当中,这样才能让我们所学的知识更加深刻。简易文本编辑器的问题就是一个例子,传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。计算机信息管理为人们的生活、工作提供了方便,提高了效率。“简易文本编辑器”就是为了帮助老师、同学或其他一些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。关键词:简易文本编辑器,数据结构,顺序表。 目 录一、需求分析11.1问题描述11.2基本任务1二、概要设计12.

2、1主界面设计12.2数据结构设计1三、详细设计23.1清空内容模块23.2打开文件模块23.3输入模块23.4插入模块23.5删除模块23.6替换模块23.7显示模块23.8保存模块33.9系统层次图3四、测试结果34.1文本编辑器主界面34.2系统功能4五、调试分析7六、心得体会8七、参考文献9八、程序源代码10一、需求分析1.1问题描述 传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。计算机信息管理为人们的生活、工作提供了方便,提高了效率。“简易文本编辑器”就是为了帮助老师、同学或其他一些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。1.2基本任务 通过用户

3、调查分析及实际需求,系统需要实现如下基本任务:(1) 输入数据信息建立文本;(2) 打开文本读取已保存的信息;(3) 插入新的信息到文本中;(4) 删除不再需要的文本信息;(5) 替换不需要的文本信息;(6) 显示所有的文本信息;(7) 保存所输入、插入、替换过的文本信息;(8) 清空文本信息。二、概要设计2.1主界面设计为了实现简易文本编辑器的各项功能,设计一个含有多个菜单项的主控菜单模块以操作系统的各项功能,进而方便用户使用系统。2.2数据结构设计为实现数据的有序存储,该编辑器应该用顺序存储结构来存储输入的信息。顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元

4、素。其特点为:在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。三、 详细设计3.1清空内容模块清空以前的文本信息,将用数组存的数据内容全部置为0。3.2打开文件模块确认打开文件并提示未保存的数据将会丢失,如果未选择打开文件,则返回主菜单。3.3输入模块输入文本信息,从主菜单中选择输入,提示输入内容,并统计文本字符数和行数。3.4插入模块插入文本信息,首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置。3.5删除模块删除文本信息,首先在数组中查找要删除的

5、信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息。3.6替换模块替换文本信息,首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息。3.7显示模块显示当前文本信息,遍历用数组存入的信息,并输入到外部显示器上。3.8保存模块 保存当前信息,并提示输入文件名,确认保存之后提示保存成功。3.9系统层次图简易文本编辑器清空内容输入保存显示替换删除插入打开文件图3-1 系统层次图四、测试结果4.1文本编辑器主界面主界面功能,如图41所示。图41 文本编辑器主界面4.2系统功能 输入文本信息功能,如

6、图42所示。图42 输入界面 查找文本信息,如图43所示。 图43查找功能界面 显示文本信息,如图44所示。图44显示文本界面插入操作,如图45所示。图45插入功能界面删除操作,如图46所示。图46删除功能界面替换文本内容,如图47所示。图47 替换功能界面文件保存,如图48所示。图48 保存功能界面五、调试分析程序设计没有按照一定的流程来,导致程序臃肿,可重复利用率太低,比如程序中的chazhao函数,在替换,删除等的过程中可以充分利用到,从而减少代码的长多,提高可读性和减少时间的复杂性,设计开始的时候没有充分考虑到,到最后无法在短时间内修改完成;程序的选择语句运行比较的多,当初是为了程序的

7、安全和便捷,选择了较多的选择,确认步骤,这样一来使得程序中的选择语句比较的多,比较乱。这个在概要设计中没有充分的理清思路,导致程序的可读性较差。六、心得体会这是第一次比较全面的设计一个可执行多种功能的程序的课程设计,暴露出较多的知识点的缺乏,比如文件的打开与保存等。程序的运行结果与理论推导结果基本吻合,即该算法与程序设计基本满足课程设计要求。该程序的优点是简单易懂,不存在理解上的障碍,很自然地能想到这种解法。但是该程序比较臃肿,可重复利用率低,还有待修改和完善。通过这次数据结构的课程设计使我对所学知识有了更好的理解,增强了自己的动手能力,但同时也发现了自己的不足之处,对知识的应用能力很是欠缺,

8、应用软件的能力及编程水平与课程要求更是存在很大的差距。通过这个实验,使我基本操作有了一定的思路,知道该从哪里着手去完成一项功能编译,也让我学会了如何通过书籍查阅到自己想要的信息,并有一个思维方向去解决编译时出现的问题,提高了我的编程效率,我想这对我以后的学习会有很大的帮助,会让我有信心去完成下一个实验。七、参考文献1严蔚敏 吴伟名 编著,数据结构,清华大学出版社,2007年9月2谭浩强 编著,c语言程序设计,清华大学出版社3钱能C+程序设计教程(第二版)M 北京:清华大学出版社,2005八、程序源代码#include #include #include #include #define MAX

9、 10000#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

10、);void 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)printf(请

11、输入要打开文件名字(例如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);FILE *fp;char pd;char

12、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,&tmp)!=EOF)if (tmp=A | tmp=a) for(i=

13、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 (i1ntext&j=i2)return(i1-i2); /返回匹配的第一个字符的下标else

14、return(-1); /模式匹配不成功void menu()system(cls);time_t timep; time (&timep);printf(%s,ctime(&timep);printf(信息与计算科学 1209010314 范亚飞n);printf(nnnnnnnnntttWelcom to use our TXT edition system!n);printf(nnttt 欢迎您使用文本编辑器软件!n);printf(nnnnnnnnnpress Enter to continue.n);getchar();loop:system(cls);printf(nnnntt*简

15、易文本编辑器*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);printf(ntt*选项*n);printf(ntttt输入选项0-9:);ch

16、ar 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 7: dayin(text);break;case 8: bc(text);break;case 9:

17、tuichu(status);default : break;elseprintf(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(%s,pattern);printf(您查找的内容是:%sn,pattern);t=strlen(pattern);loop:a=str

18、index(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】继续查找下一处;任意键返回主菜单,hs,ls);fflush(stdin);bd=getchar(); if (bd=R|bd=r) goto loop; if (pd=R|pd=r) l

19、=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(请输入内容(输入结束输入并返回主菜单):n);printf(%s,text);char c;int i=ntext,j=ntext;fflush(stdin); while (c=getchar()!=)t

20、exti=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(textcout= )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

21、,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;elsext2=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)prin

22、tf(已查找结束,您要删除的内容不存在n输入【R】重新输入要删除的内容;其他键将返回主菜单:);l=0;fflush(stdin);pdx=getchar(); else printf(你要删除的内容在第%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);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;elsecrt=c;t+;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2