数据结构课设报告--词频统计系统的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
沈阳航空航天大学
课程设计报告
课程设计名称:数据结构课程设计课程设计题目:词频统计系统的设计
院(系):
专业:计算机科学与技术
班级:
学号:
姓名:
指导教师:
完成日期:2012年01月11日
沈阳航空航天大学课程设计报告
目录
目录 ................................................................................................................................... I 第1章概要设计 . (1)
1.1题目的内容与要求 (1)
1.2总体结构 (1)
第2章详细设计 (3)
2.1主函数模块 (3)
2.2读取单词函数模块 (4)
2.3显示单词统计函数模块 (5)
2.4单词统计函数模块 (6)
2.5单词添加函数模块 (7)
第3章调试分析 (8)
第4章使用说明 (9)
参考文献 (12)
附录(程序清单) (13)
第1章概要设计
1.1题目的内容与要求
内容:打开一篇英文文章,统计每个词在该文章中的出现频率,然后根据用户输入的两个阈值a和b,将词频大于a的和词频小于b的所有单词输出。
要求:
1) 独立完成系统的设计、编码和调试;
2) 系统利用C语言实现;
3) 按照课程设计规范书写课程设计报告。
1.2总体结构
本程序主要分为五个模块:主函数模块,读取单词函数模块,显示单词统计函数模块,单词统计函数模块,单词添加函数模块。主函数模块:先调用读取单词函数,然后根据用户输入的阈值调用显示单词统计函数输出结果。读取单词函数模块:打开用户输入的文件,调用单词统计函数,然后关闭文件。显示单词统计函数模块:将链表中频率大于a且小于b的单词输出在操作界面上。单词统计函数模块:用户输入的文章以字符的形式进行判断,如果该字符为字母(包括“’”),则添加到单词数组中,否则,调用单词添加函数添加一个新单词。单词添加函数模块首先将要添加单词首字母改为小写,然后判断该单词在链表中是否存在,若存在,则出现频率加1,否则在链表中创建一个新的节点,将该单词信息放到该节点中。
图1.1 总体结构示意图
第2章详细设计
2.1主函数模块
打开一篇英文文章,统计每个词在该文章中的出现频率,然后根据用户输入的两个阈值a和b,将词频大于a的和小于b的所有单词输出。其中首先调用读取单词函数ReadWord()统计文章中的单词,然后由用户输入阈值a和b,通过调用显示单词统计函数ShowWord( int a,int b)将词频大于a小于b的所有单词输出。
图2.1 主函数模块流程图
2.2读取单词函数模块
此函数主要作用是打开用户需要打开的英文文章,首先在界面上输出"请输入要读取的单词文件名[如:test.txt]:",待用户输入一个文件名后,打开该文件,然后调用单词统计函数WordCount( )对该英文文章进行单词统计,最后关闭文件。
图2.2 读取单词函数模块流程图
2.3显示单词统计函数模块
此函数主要作用是根据用户输入的阈值a和b,把词频大于a和小于b的所有单词输出。其中先定义一个链表指针p,让其指向头结点,判断其若为空,则结束,否则将该节点内单词频率与阈值比较,若满足要求,则输出该节点内单词,然后指向下一个节点,若不满足,则直接指向下一节点,继续判断节点是否为空,如此循环,直至结束。
图2.3 显示单词统计函数模块流程图
2.4单词统计函数模块
此函数主要作用是对该英文文章中每个单词出现频率的统计。首先,该文章以字符的形式进行读取,判断每一个字符是否为字母,如果该字符为字母(包括“’”),则添加到单词数组中,否则,调用单词添加函数AddWord(char *ww)添加一个新单词。
图2.4 单词统计函数模块流程图
2.5单词添加函数模块
此函数作用主要是添加单词。首先将要添加单词首字母改为小写(若首字母为大写字母,则该字母ASCII码加32),然后判断该单词在链表中是否存在,若存在,则出现频率加1,否则在链表中创建一个新的节点,将该单词信息放到该节点中。
图2.5 单词添加函数模块流程图
第3章调试分析
调试分析包括以下的几个方面:
(1).一开始拿到这个题目时无从下手,刚开始就在用树还是用链表上无法选择,后来发现这个题目的要求不是很复杂,用链表就可完成其数据的处理,最终选择用链表来处理这个题目。
(2).词频统计系统要首先打开一篇文章,因此我选择以一个一个字符的形式对文章进行处理,先判断字符是否为字母,然后对单词用链表进行处理,链表的每个节点代表一个单词,该节点中存储该单词的频率,通过单词频率与阈值的比较,把满足要求的单词筛选出来,最终输出到操作界面上,完成对整篇文章每个单词词频的统计。
(3).在程序的调试过程中,我也出现了一些问题,首先没有解决好单词的比较问题,后来通过书本找到了用于字符串比较的函数以及字符串复制的函数,大大的减轻了我编程的难度。
第4章使用说明
运行操作及结果:
进入主界面,输入所要操作文件名。
图4.1 输入文件名菜单
输入阈值
图4.2 输入阈值菜单
词频统计结果显示
图4.3 最终结果显示
程序所操作原文件。
图4.4 程序所操作的文件
沈阳航空航天大学课程设计报告参考文献
参考文献
[1] 严蔚敏,吴伟民. 数据结构:C语言版[M]. 北京:清华大学出版社,2007
[2] 王敬华,林萍. C语言程序设计教程[M]. 北京:清华大学出版社,2009
[3] 严蔚敏.数据结构习题集[M].北京:清华大学出版社,2009