数据结构课程设计文章编辑系统剖析_第1页
数据结构课程设计文章编辑系统剖析_第2页
数据结构课程设计文章编辑系统剖析_第3页
数据结构课程设计文章编辑系统剖析_第4页
数据结构课程设计文章编辑系统剖析_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、数据结构课程设计说明书文章编辑2016 年 6月 15 日140203403161460140311成 绩:目录1 系统需求分析52 系统设计62.1 输入模块62.2 统计模块62.3 删除模块63 程序设计流程图74 测试结果及运行效果95 测试过程中的问题及注意事项135.1 问题135.2 注意事项 13 总结14参考文献15系统需求分析本实验所要实现的功能:输入一页文字,程序可以统计出文字、数字、空格 的个数。静态存储一页文章,每行最多不超过 80 个字符,共 N行;要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(

2、3)删除某一子串,并将后面的字符前移。存储结构使用线性表,分别用几个子函数实现相应的功能; 输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符 号。输出形式:(1)分行输出用户输入的各行字符;(2)分 4行输出全部字母数 、数字个数 、 空格个数和文章总字数 输出删除某一字符串后的文章; 用链表存放数据非常灵活,只要内存足够大,对链表可以做任意扩充和修改。 主要的手段为链表的遍历。 定义一个头指针 head,每个结点的数据域存放数据 本身,指针域存放下一个结点地址,所以,我们只要知道head,就可以遍历整个链表,找到我们所需要的字符(串) ,进行相应的操作。2 系统设计2.1

3、 输入模块存储结构: 采用单链表结构存储文章, 每个结点存储一行, 每行最长不超过 80 个字符。结构定义:typedef struct linechar *data; / 字符串指针需要时动态分配内存struct line *next;LINE;算法描述:用 gets 函数接收输入,每遇到一个回车换行就新建一个结点, 将当前行存入其 data 域。当发现输入为 E 时,在 Data 的最后加上字符串结束 标志,并置当前结点的 Next 指针域为 NULL。2.2 统计模块统计模块包括统计全部字母数, 统计数字个数, 统计空格个数, 以及统计文 章总字数,这四个部分的实现算法大体相同, 四者的

4、关系是: 全部字母数数字 个数空格个数文章总字数, 也就是说可以在统计出其中三者的前提下计算出 第四个的数量。另外一个重要的统计功能是统计某一字符串在整篇文章中出现的次数, 这个 需要用到串的模式匹配算法来实现。2.3 删除模块删除模块的算法思想类同统计字符串的算法思想, 由于采用了链表的存储结 构,使得删除算法的时间复杂度大大减少。void Del_String(LINE * &head,char *sch) /删除指定的字符串LINE *p=head;dowhile(strstr(p-data,sch)!=NULL)del_string_word(p-data,sch); while(p=

5、p-next)!=NULL); / 遍历链表程序设计流程图根据题目与上述分析,可得主程序设计流程图如下所示:图 3-1 主程序设计流程图文章输入、浏览、统计串、统计及删除的详细流程如图 12 所示:图 3-2 详细流程图测试结果及运行效果程序运行,首先显示选择菜单,如图示:图 4-1 选择菜单选择 1, 输入文章,界面运行结果如下:图 4-2 输入界面7按回车,调出开始菜单,输入 2, 选择浏览,可以原样显示出刚才输入的文本:图 4-3 文章浏览界面回车后输入 3,可以看到文章统计信息结果:图 4-4 统计结果界面8根据页面提示,回车统计字符串模块, 输入要统计的字符串, 可以查找出该字符串在

6、文章中出现 过的次数。运行情况如下图示:图 4-5 统计字符串出现次数界面根据页面提示,回车删除模块, 输入要删除的字符串, 执行删除后可以显示删除后的文本。 界面如下:图 4-6 删除字符串后的界面9 根据页面提示,回车: 退出页面,执行后的结果如下:图 4-7 退出界面105 测试过程中的问题及注意事项5.1 问题1 . 主流程进入死循环。 .解决方案:每个循环都加 break ,每跳出一个模块, opt 重新赋值为 0。2 输入多个变量,需要空格间隔时,程序只读空格前的变量 解决方案:输 . 入函数用 get( ) 函数,形式为: get(tmp) ,即可解决着个 问题。3. 不识别自定

7、义函数。解决方案:函数定义前要函数声明, 若不声明, 则调用函数必须在函数定义 之后,否则不识别。4, 程序结束之后,链表仍占空间。 解决方案:在建立链表是所申请的内存空间在程序结束之前用 free_link(LINE *&head) 函数释放,即删除链表中的全部结点,且将链表头指针 置为空。5.2 注意事项(1)opt 代表选项(共六个,多于六个显示“不可识别选项” )。(2)建立文章,用链表存储, p=p-next=new LINE, 即文章的每一行存储在 一个结点中。(3)Ctrl+E 为结束标志。(4)了解常用 AS码。11总结本实验采用链式顺序表结构实现了文章编辑的基本功能, 实验过

8、程中遇到了 很多或大或小的问题, 在这些问题的解决过程中, 加深了对链表的理解, 使我对 链表操作的字符串的模式匹配有了更深更全面的认识。本实验提高了我对数据逻辑结构的特点和存储表示方式的认识, 培养了我在 具体应用中选择合适的数据结构和存储结构的能力。通过该实验, 使我熟悉了软件开发的基本过程, 初步掌握了软件开发过程的 问题分析、系统设计、程序编码测试等阶段的基本任务和技能方法。使我的算法设计和算法分析能力以及运用所学理论知识和方法独立分析问 题的能力得到全面的提高。训练了我用系统的观点和软件开发的一般规范。 使我认识到一个软件工作者 所应该具备的科学的工作方法、作风和相互合作精神。本实验的模块化比较强,各个模块之间用指针 head 连接。认清模块化的概 念给程序的顺利编制起到了很大的作用。 分模块各个调试, 可以减少很多不必要 的麻烦。12参考资料1 严蔚敏, 吴伟民. 数据结构 M. 清华大学出版社, 2002.2 殷人昆. 数据

温馨提示

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

评论

0/150

提交评论