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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构课程设计简易文本编辑器.docx

1、数据结构课程设计简易文本编辑器重慶工商大學派斯學院簡易文本編輯器 說明書 班 级: 10计本2班 * 学 号: * * 完成日期: 2011年12月 计算机科学与技术系课程设计评分表 课程名称: 数据结构 简易文本编辑器项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量功能完善度综合成绩学 号班 级姓 名综合成绩201030520210计本2班邓寅森教师评语 教师签名: 日 期: 一、需求分析1.1 问题描述 传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。计算机信息管理为人们的生活、工作提供了方便,提高了效率。“简易文本编辑器”是为了帮助老师、同学或其他一

2、些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。1.2 基本任务 通过用户调查分析及实际需求,系统需要实现如下基本任务:(1)输入数据信息建立文本;(2)查询文本中满足要求的信息;(3)插入新的信息到文本中;(4)删除不再需要的文本信息; (5) 查看所有的文本信息。二、概要设计为了完成需求分析的基本任务,主要从以下3个方面进行设计:2.1 主界面设计 为了实现简易文本编辑器的各项功能,设计了一个含有多个菜单项的主控菜单模块以操作系统的各项功能,以方便用户使用系统。系统进入菜单运行界面如图所示:简易文本编辑器主菜单2.2 数据结构设计系统采用线性表的顺序存储结构表示和存储“简易文本

3、编辑器”中的信息。实现文本的输入,删除,插入,查找,显示功能。2.3 系统功能设计 运行程序,提示进入菜单,按“回车键”进入主菜单,再可以在主菜单上进行各项操作。每次进入菜单,选择“1键”新建文本,然后才可以进行其他操作,或者按“0键”选择退出。三、模块设计3.1 模块设计系统主要包含主程序模块和其它操作模块。其调用关系如图所示。模块调用示意图3.2 系统子模块及其功能设计本系统共设计了16个子模块,各程序的函数名及功能说明如下:1、/*由模式串nextval值*/void GetNextval(SqVString T,int nextval)2、/*模式匹配KMP算法*/int KMPInd

4、ex(SqVString S,int pos,int next,SqVString T)3、/*初始化串*/void InitString(SqVString *S,char *str)4、/*串插入*/int StrInsert(SqVString *S,int pos,SqVString T)5、/*串删除*/int StrDelete(SqVString *S,int pos,int len)6、/*求子串*/int SubStr(SqVString S,int pos,int len,SqVString *T)7、/*串连接*/int Concat(SqVString *S,SqVSt

5、ring T)8、/*串赋值*/int StrAssign(SqVString *S,char *value)9、void InputString() /新建 10、void DeleteString()/删除11、void DeleteSubstring()/删除12、void InsertSubstring()/查找13、void DisplayString()/显示14、void cd()/进入界面15、void ts()/主菜单16、void tc()/退出3.3 系统模块之间的调用关系系统的16个子模块之间的主要调用关系所示:系统函数调用关系图四、详细设计4.1 数据结构设计系统采用

6、线性表的顺序存储结构存储通讯录信息。4.2 系统主要模块设计(1)建立文本模块,由void InitString(SqVString *S,char *str)函数实现。该模块的算法思想是:按照给定的线性表存储空间的初始化分配量分配存储空间,若分配成功,则往下进行;令线性表长为0;令线性表当前存储容量为给定的线性表存储空间的初始化分配量。该模块的算法描述如下:见源程序(2)查看文本中得所有记录,需要一个模式匹配int KMPIndex(SqVString S,int pos,int next,SqVString T)函数实现。该模块的算法思想是:在此略该模块的算法描述如下:见源程序(其它模块设

7、计 略)五、调试分析5.1、调试方法: 首先打开Microsoft Visual C+ 6.0 ,运行程序,出现错误修改再运行,直至运行结果0 error ,0 warning结束。接着进入程序界面,看程序能否实现所要求的各项功能,再作下一步的修改。5.2、调试结果主菜单新建显示删除查找插入退出5.3、程序出现的问题:还有几个程序模块未能成功调用。( 其他问题 见“第八项中未能解决的问题” )六、用户使用说明当用户打开程序,就会提示按【回车键】进入,按【回车键】则进入主菜单页面,进入主菜单,选择【1键】,新建文本信息,编辑好后,按照程序中的文字提示,返回到主菜单,此时在主菜单选择其他操作,当进

8、入各项操作,均有提示。每一操作完成,按【回车键】返回主菜单,选择【0键】,安全退出程序!七、参考文献数据结构理论与实践杨永斌八、对所设计的软件进行自我评价,如创新点、未解决的问题等情况说明。 拿到该课程题目,准备仿照电脑上的文本编辑器写该程序,由于我所学不是扎实,于是就借助课本上所学的串与数组,写好了这个程序,程序能够正确的完成,程序充分包含了本学期的所学内容,体现了数据结构的特点。继续沿用了清屏函数,是屏幕看起来很舒服,不至于那么杂乱。 未解决的问题:在完成插入,查找功能的时候,出现了问题,当程序执行到此处时,程序未能进入下一步,而是直接退出了。当进入主菜单后,只能选择【1键】或者退出,这是

9、未能得到优化的。块移动(行块,列块移动),正确存盘、取盘;正确显示总行数等功能未能完成。九、程序源代码:#include#include#include#include#include#define STRSIZE 100#define MAXSTRING 60#define MAXLINE 24/*存储结构*/typedef struct char*ch; int length;SqVString;/*由模式串nextval值*/void GetNextval(SqVString T,int nextval) int j=0,k=-1; nextval0=-1; while(jT.lengt

10、h) if(k=-1|T.chj=T.chk) j+; k+; if(T.chj=T.chk) nextvalj=nextvalk; else nextvalj=k; else k=nextvalk; /*模式匹配KMP算法*/int KMPIndex(SqVString S,int pos,int next,SqVString T) int i=pos,j=0,r; while(iS.length & jT.length) if(i=T.length) r=i-T.length; else r=-1; return r;/*初始化串*/void InitString(SqVString *S

11、,char *str) int i; char *c; int len=0; c=str; while(*c!=n) len+; c+; /*求str的长度*/ S-ch=(char *)malloc(len *sizeof(char);/*申请动态数组空间*/ S-length=len;/*置串的当前长度*/ for(i=0;ilength;i+) S-chi=stri;/*赋值串值*/*串插入*/int StrInsert(SqVString *S,int pos,SqVString T) int i; int len; if(posS-length) coutlength+T.lengt

12、h; S-ch=(char *)realloc(S-ch,len *sizeof(char); if(!S-ch) coutlength-1;i=pos;i-) S-chi=T.length=S-chi; for(i=0;ichi+pos=T.chi; S-length=len; return 1;/*串删除*/int StrDelete(SqVString *S,int pos,int len) int i; int length; char *str; if(pos0 | lenS-length |S-length=0) coutlength-len; if(length=0) lengt

13、h=pos;/*若pos+len大于串长,则从pos删到串尾*/ str=(char *)malloc(length*sizeof(char); if(!str) cout tt分配空间出错,无法完成串的删除操作; return 0; for(i=0;ichi; for(i=pos+len;ilength;i+) stri-len=S-chi; free(S-ch); S-length=length; S-ch=str; return 1;/*求子串*/int SubStr(SqVString S,int pos,int len,SqVString *T) int i; if(S.length

14、=0) cout tt空串,无法完成求子串操作; return 0; if(posS.length | len=0) coutS.length) len=S.length-pos+1;/*当子串长度超过主串长度,则只取到串尾即可*/ if(T-length) free(T-ch);/*释放S的原有空间*/ T-ch=(char *)malloc(len *sizeof(char); if(!T-ch) cout tt分配空间出错,无法完成求子串操作; return 0; for(i=0;ichi=S.chi+pos; T-length=len; return 1;/*串连接*/int Conc

15、at(SqVString *S,SqVString T) int i; int len; len=S-length+T.length; S-ch=(char *)realloc(S-ch,len *sizeof(char); if(!S-ch) cout tt分配空间出错,无法完成串连接操作; return 0; for(i=0;ichi+S-length=T.chi; S-length=len; return 1;/*串赋值*/int StrAssign(SqVString *S,char *value) int count=0; int i; char *c; /S=(SqVString

16、*)malloc(sizeof(SqVString); if(S-length!=0) free(S-ch);/*释放S的原有空间*/ c=value; while(*c!=n) count+; c+; /*求value的长度*/ if(!count)/*value为空串*/ S-ch=NULL; S-length=0; else S-ch=(char *)malloc(count); if(!S-ch) couttt分配空间出错,无法完成串赋值操作; return 0; for(i=0;ichi=valuei; S-length=count; return 1;SqVString *line

17、sMAXLINE;void InputString() char bufferMAXSTRING; SqVString *tmp; int LineNum=0; flushall(); couttt=endl; couttt 新 建 文 本 endl; couttt=endl; couttt请输入文本,每以回车结束,一段以#结束行buffer; tmp=(SqVString *)malloc(sizeof(SqVString); InitString(tmp,buffer); linesLineNum=tmp; LineNum+; while(buffer0!=#);/ cout ttOK.;

18、void DeleteString() int i; couttt=endl; couttt 删 除 文 本 endl; couttt=endl; couti; free(linesi-1); while(linesi-ch0!=#) linesi-1=linesi; i+; linesi-1=linesi; cout ttOK.endl;void InsertSubstring() int i=0; int pos=0; char bufferMAXSTRING; SqVString tmp; couttt=endl; couttt 插 入 子 串 endl; couttt=endl; co

19、uti; coutpos; coutbuffer; InitString(&tmp,buffer); StrInsert(linesi,pos,tmp); cout ttOK.endl;void DeleteSubstring() int i=0; int pos=0; int len=0; couttt=endl; couttt 删 除 子 串 endl; couttt=endl; couti; coutpos; coutlen; StrDelete(linesi,pos,len); couttt OK.endl;void FindSubstring() int i=0; int pos=0

20、; char bufferMAXSTRING; int nextMAXSTRING; SqVString tmp; couttt=endl; couttt 查 找 文 本 endl; couttt=endl; coutbuffer; InitString(&tmp,buffer); GetNextval(tmp,next); while(linesi-ch0!=#) if(pos=KMPIndex(* linesi,0,next,tmp)!=-1) cout tt子串buffer 在第i+1 行的pos位置上出现endl; return; i+; cout ttOK.endl;void Dis

21、playString() int i=0; couttt=endl; couttt 显 示 文 本 endl; couttt=ch0!=#) coutchendl; i+; cout ttOK.endl;void cd()/进入界面 coutendlendl; couttt_endl; couttt-endl; couttt 欢迎使用 endl; coutttendl; couttt 简易文本编辑器 endl; coutttendl; couttt-endl; couttt 重庆工商大学派斯学院 endl; couttt 计算机科学系 endl; couttt 制作人: 10计本2班 邓寅森endl; couttt 2011年11月 endl; coutttendl; couttt_endl; couttt 点击【回车】 进 入 endl; coutttendl; couttt;void ts() coutendl; couttt-

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

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