数据结构-课程设计--简易文本编辑器_第1页
数据结构-课程设计--简易文本编辑器_第2页
数据结构-课程设计--简易文本编辑器_第3页
数据结构-课程设计--简易文本编辑器_第4页
数据结构-课程设计--简易文本编辑器_第5页
免费预览已结束,剩余20页可下载查看

下载本文档

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

文档简介

数据结构 课程设计 班班 级 级 1010 计本计本 2 2 班班 姓姓 名 名 邓邓 寅寅 森森 学学 号 号 20103052022010305202 指导教师 指导教师 杨杨 老老 师师 完成日期 完成日期 20112011 年年 1212 月月 1 计算机科学与技术系课程设计评分表 课程名称 数据结构 简易文本编辑器 项项 目目评评 价价 设计方案的合理性与创造性 设计与调试结果 设计说明书的质量 功能完善度 综合成绩 教师签名 日 期 学 号班 级姓 名综合成绩 201030520210 计本 2 班 邓寅森 教师评语 2 目 录 一 需求分析 3 二 概要设计 3 三 模块设计 5 四 详细设计 7 五 调试分析 8 六 用户使用说明 11 七 参考文献 12 八 对所设计的软件进行自我评价 如创新点 未解决的问题等情 况说明 12 九 程序源代码 13 3 一 需求分析一 需求分析 1 1 问题描述 传统的纸质文档已经不能满足大家的需求 有容易丢失 查找 不方便等缺点 计算机信息管理为人们的生活 工作提供了方便 提高了效率 简易文本编辑器 是为了帮助老师 同学或其他一 些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序 1 2 基本任务 通过用户调查分析及实际需求 系统需要实现如下基本任务 1 输入数据信息建立文本 2 查询文本中满足要求的信息 3 插入新的信息到文本中 4 删除不再需要的文本信息 5 查看所有的文本信息 二 概要设计二 概要设计 为了完成需求分析的基本任务 主要从以下 3 个方面进行设计 2 1 主界面设计 为了实现简易文本编辑器的各项功能 设计了一个含有多个菜 4 单项的主控菜单模块以操作系统的各项功能 以方便用户使用系统 5 系统进入菜单运行界面如图所示 简易文本编辑器主菜单 2 2 数据结构设计 系统采用线性表的顺序存储结构表示和存储 简易文本编辑器 6 中的信息 实现文本的输入 删除 插入 查找 显示功能 2 3 系统功能设计 运行程序 提示进入菜单 按 回车键 进入主菜单 再可以 在主菜单上进行各项操作 每次进入菜单 选择 1 键 新建文本 然后才可以进行其他操作 或者按 0 键 选择退出 三 模块设计三 模块设计 3 1 模块设计 系统主要包含主程序模块和其它操作模块 其调用关系如图所示 模块调用示意图 3 2 系统子模块及其功能设计 本系统共设计了 16 个子模块 各程序的函数名及功能说明如下 1 由模式串 nextval 值 void GetNextval SqVString T int nextval 2 模式匹配 KMP 算法 int KMPIndex SqVString S int pos int next SqVString T 3 初始化串 主函数各操作模块 7 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 SqVString 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 个子模块之间的主要调用关系所示 8 系统函数调用关系图 四 详细设计四 详细设计 4 1 数据结构设计 系统采用线性表的顺序存储结构存储通讯录信息 4 2 系统主要模块设计 9 1 建立文本模块 由 void InitString SqVString S char str 函数实现 该模块的算法思想是 按照给定的线性表存储空 1 间的初始化分配量分配存储空间 若分配成功 则往下进行 令 2 线性表长为 0 令线性表当前存储容量为给定的线性表存储空间 3 的初始化分 配量 该模块的算法描述如下 见源程序 2 查看文本中得所有记录 需要一个模式匹配 int KMPIndex SqVString S int pos int next SqVString T 函数实 现 该模块的算法思想是 在此略 该模块的算法描述如下 见源程序 其它模块设计 略 五 调试分析五 调试分析 5 1 调试方法 首先打开 Microsoft Visual C 6 0 运行程序 出现错误 修改再运行 直至运行结果 0 error 0 warning 结束 接着进入 程序界面 看程序能否实现所要求的各项功能 再作下一步的修改 5 2 调试结果 10 主菜单 新建 显示 11 删除 查找 12 插入 退出 5 3 程序出现的问题 还有几个程序模块未能成功调用 其他问题 见 第八项中未能解决的问题 13 六 用户使用说明六 用户使用说明 当用户打开程序 就会提示按 回车键 进入 按 回车键 则进入主菜单页面 进入主菜单 选择 1 键 新建文本信息 编辑好后 按照程序中的文字提示 返回到主菜单 此时在主菜单 选择其他操作 当进入各项操作 均有提示 每一操作完成 按 回车键 返回主菜单 选择 0 键 安全退出程序 7 7 参考文献参考文献 数据结构理论与实践 杨永斌 8 8 对所设计的软件进行自我评价 如创新对所设计的软件进行自我评价 如创新 点 未解决的问题等情况说明 点 未解决的问题等情况说明 拿到该课程题目 准备仿照电脑上的文本编辑器写该程序 由 于我所学不是扎实 于是就借助课本上所学的串与数组 写好了这 个程序 程序能够正确的完成 程序充分包含了本学期的所学内容 体现了数据结构的特点 继续沿用了清屏函数 是屏幕看起来很舒 服 不至于那么杂乱 未解决的问题 在完成插入 查找功能的时候 出现了问题 1 当程序执行到此处时 程序未能进入下一步 而是直接退出了 14 当进入主菜单后 只能选择 1 键 或者退出 这是未能得到优 2 化的 块移动 行块 列块移动 正确存盘 取盘 正确显示总行数等 3 功能未能完成 九 程序源代码 九 程序源代码 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 15 int j 0 k 1 nextval 0 1 while j T length if k 1 T ch j T ch k j k if T ch j T ch k nextval j nextval k else nextval j k else k nextval k 模式匹配 KMP 算法 int KMPIndex SqVString S int pos int next SqVString T int i pos j 0 r while i S length else r 1 return r 初始化串 void InitString SqVString S char str 16 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 ch i str i 赋值串值 串插入 int StrInsert SqVString S int pos SqVString T int i int len if posS length cout length T length S ch char realloc S ch len sizeof char if S ch cout length 1 i pos i S ch i T length S ch i for i 0 ich i pos T ch i S length len return 1 串删除 int StrDelete SqVString S int pos int len int i 17 int length char str if pos 0 lenS length S length 0 cout length len if length 0 length pos 若 pos len 大于串长 则从 pos 删到串尾 str char malloc length sizeof char if str cout t t 分配空间出错 无法完成串的删除操作 return 0 for i 0 ich i for i pos len ilength i str i len S ch i 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 0 cout t t 空串 无法完成求子串操作 return 0 if posS length len 0 cout S length len S length pos 1 当子串长度超过主串长度 则只取到串尾即可 if T length free T ch 释放 S 的原有空间 18 T ch char malloc len sizeof char if T ch cout t t 分配空间出错 无法完成求子串操作 return 0 for i 0 ich i S ch i pos T length len return 1 串连接 int Concat 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 t t 分配空间出错 无法完成串连接操作 return 0 for i 0 ich i S length T ch i S length len return 1 串赋值 int StrAssign SqVString S char value int count 0 int i char c S SqVString malloc sizeof SqVString if S length 0 free S ch 释放 S 的原有空间 c value while c n count c 19 求 value 的长度 if count value 为空串 S ch NULL S length 0 else S ch char malloc count if S ch cout t t 分配空间出错 无法完成串赋值操作 return 0 for i 0 ich i value i S length count return 1 SqVString lines MAXLINE void InputString char buffer MAXSTRING SqVString tmp int LineNum 0 flushall cout t t endl cout t t 新 建 文 本 endl cout t t endl cout t t 请输入文本 每以回车结束 一段以 结束行 buffer tmp SqVString malloc sizeof SqVString InitString tmp buffer lines LineNum tmp LineNum while buffer 0 cout t tOK 20 void DeleteString int i cout t t endl cout t t 删 除 文 本 endl cout t t endl cout i free lines i 1 while lines i ch 0 lines i 1 lines i i lines i 1 lines i cout t tOK endl void InsertSubstring int i 0 int pos 0 char buffer MAXSTRING SqVString tmp cout t t endl cout t t 插 入 子 串 endl cout t t endl cout i cout pos cout buffer InitString StrInsert lines i pos tmp cout t tOK endl void DeleteSubstring int i 0 int pos 0 int len 0 cout t t endl 21 cout t t 删 除 子 串 endl cout t t endl cout i cout pos cout len StrDelete lines i pos len cout t t OK endl void FindSubstring int i 0 int pos 0 char buffer MAXSTRING int next MAXSTRING SqVString tmp cout t t endl cout t t 查 找 文 本 endl cout t t endl cout buffer InitString GetNextval tmp next while lines i ch 0 if pos KMPIndex lines i 0 next tmp 1 cout t t 子串 buffer 在第 i 1 行的 pos 位置上出现 endl return i cout t tOK endl void DisplayString int i 0 cout t t endl cout t t 显 示 文 本 endl 22 cout t t ch 0 cout ch endl i cout t tOK endl void cd 进入界面 cout endl endl cout t t endl cout t t endl cout t t 欢 迎 使 用 endl cout t t endl cout t t 简易文本编辑器 endl cout t t endl cout t t endl cout t t 重庆工商大学派斯学院 endl cout t t 计算机科学系 endl cout t t 制作人 10 计本 2 班 邓寅森 endl cout t t 2011 年 11 月 endl cout t t endl cout t t endl

温馨提示

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

评论

0/150

提交评论