数据结构课设报告--词频统计系统的设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

沈阳航空航天大学课程设计报告课程设计名称:数据结构课程设计课程设计题目:词频统计系统的设计院(系):专业:计算机科学与技术班级:学号:姓名:指导教师:完成日期:2012年01月11日沈阳航空航天大学课程设计报告-I-目录目录...................................................................................................................................I第1章概要设计...........................................................................................................11.1题目的内容与要求..................................................................................................11.2总体结构..................................................................................................................1第2章详细设计...........................................................................................................32.1主函数模块..............................................................................................................32.2读取单词函数模块..................................................................................................42.3显示单词统计函数模块..........................................................................................52.4单词统计函数模块..................................................................................................62.5单词添加函数模块..................................................................................................7第3章调试分析...........................................................................................................8第4章使用说明...........................................................................................................9参考文献.........................................................................................................................12附录(程序清单)...................................................................................................13沈阳航空航天大学课程设计报告-1-第1章概要设计1.1题目的内容与要求内容:打开一篇英文文章,统计每个词在该文章中的出现频率,然后根据用户输入的两个阈值a和b,将词频大于a的和词频小于b的所有单词输出。要求:1)独立完成系统的设计、编码和调试;2)系统利用C语言实现;3)按照课程设计规范书写课程设计报告。1.2总体结构本程序主要分为五个模块:主函数模块,读取单词函数模块,显示单词统计函数模块,单词统计函数模块,单词添加函数模块。主函数模块:先调用读取单词函数,然后根据用户输入的阈值调用显示单词统计函数输出结果。读取单词函数模块:打开用户输入的文件,调用单词统计函数,然后关闭文件。显示单词统计函数模块:将链表中频率大于a且小于b的单词输出在操作界面上。单词统计函数模块:用户输入的文章以字符的形式进行判断,如果该字符为字母(包括“’”),则添加到单词数组中,否则,调用单词添加函数添加一个新单词。单词添加函数模块首先将要添加单词首字母改为小写,然后判断该单词在链表中是否存在,若存在,则出现频率加1,否则在链表中创建一个新的节点,将该单词信息放到该节点中。沈阳航空航天大学课程设计报告-2-图1.1总体结构示意图读取单词函数ReadWord()显示单词统计函数ShowWord(inta,intb)单词统计函数WordCount()单词添加函数AddWord(char*ww)主函数main()沈阳航空航天大学课程设计报告错误!未指定书签。第2章详细设计-3-第2章详细设计2.1主函数模块打开一篇英文文章,统计每个词在该文章中的出现频率,然后根据用户输入的两个阈值a和b,将词频大于a的和小于b的所有单词输出。其中首先调用读取单词函数ReadWord()统计文章中的单词,然后由用户输入阈值a和b,通过调用显示单词统计函数ShowWord(inta,intb)将词频大于a小于b的所有单词输出。图2.1主函数模块流程图开始进入读取单词函数ReadWord()模块输入阈值a和b进入显示单词统计函数ShowWord(inta,intb)模块结束沈阳航空航天大学课程设计报告错误!未指定书签。第2章详细设计-4-2.2读取单词函数模块此函数主要作用是打开用户需要打开的英文文章,首先在界面上输出请输入要读取的单词文件名[如:test.txt]:,待用户输入一个文件名后,打开该文件,然后调用单词统计函数WordCount()对该英文文章进行单词统计,最后关闭文件。图2.2读取单词函数模块流程图开始结束fp,name输入文件名namefp=fopen(name,r)进入单词统计函数WordCount()模块fclose(fp)沈阳航空航天大学课程设计报告错误!未指定书签。第2章详细设计-5-2.3显示单词统计函数模块此函数主要作用是根据用户输入的阈值a和b,把词频大于a和小于b的所有单词输出。其中先定义一个链表指针p,让其指向头结点,判断其若为空,则结束,否则将该节点内单词频率与阈值比较,若满足要求,则输出该节点内单词,然后指向下一个节点,若不满足,则直接指向下一节点,继续判断节点是否为空,如此循环,直至结束。NYNY图2.3显示单词统计函数模块流程图开始*p,a,bp=headp!=NULL词频大于a且小于b输出该单词p=p-next结束沈阳航空航天大学课程设计报告错误!未指定书签。第2章详细设计-6-2.4单词统计函数模块此函数主要作用是对该英文文章中每个单词出现频率的统计。首先,该文章以字符的形式进行读取,判断每一个字符是否为字母,如果该字符为字母(包括“’”),则添加到单词数组中,否则,调用单词添加函数AddWord(char*ww)添加一个新单词。NYNYNY图2.4单词统计函数模块流程图开始i=0,j=0word[],c文件未执行完fscanf(fp,%c,&c)c为字母word[j]=cj++i++结束word[j]='\0'j0AddWord(word)j=0沈阳航空航天大学课程设计报告错误!未指定书签。第2章详细设计-7-2.5单词添加函数模块此函数作用主要是添加单词。首先将要添加单词首字母改为小写(若首字母为大写字母,则该字母ASCII码加32),然后判断该单词在链表中是否存在,若存在,则出现频率加1,否则在链表中创建一个新的节点,将该单词信息放到该节点中。否是图2.5单词添加函数模块流程图开始首字母改为小写单词在链表中频率加1新建节点添加单词信息结束沈阳航空航天大学课程设计报告错误!未指定书签。第2章详细设计-8-第3章调试分析调试分析包括以下的几个方面:(1).一开始拿到这个题目时无从下手,刚开始就在用树还是用链表上无法选择,后来发现这个题目的要求不是很复杂,用链表就可完成其数据的处理,最终选择用链表来处理这个题目。(2).词频统计系统要首先打开一篇文章,因此我选择以一个一个字符的形式对文章进行处理,先判断字符是否为字母,然后对单词用链表进行处理,链表的每个节点代表一个单词,该节点中存储该单词的频率,通过单词频率与阈值的比较,把满足要求的单词筛选出来,最终输出到操作界面上,完成对整篇文章每个单词词频的统计。(3).在程序的调试过程中,我也出现了一些问题,首先没有解决好单词的比较问题,后来通过书本找到了用于字符串比较的函数以及字符串复制的函数,大大的减轻了我编程的难度。沈阳航空航天大学课程设计报告错误!未指定书签。第4章使用说明-9-第4章使用说明运行操作及结果:进入主界面,输入所要操作文件名。图4.1输入文件名菜单输入阈值图4.2输入阈值菜单沈阳航空航天大学课程设计报告错误!未指定书签。第4章使用说明-10-词频统计结果显示图4.3最终结果显示沈阳航空航天大学课程设计报告错误!未指定书签。第4章使用说明-11-程序所操作原文件。图4.4程序所操作的文件沈阳航空航天大学课程设计报告参考文献-12-参考文献[1]严蔚敏,吴伟民.数据结构:C语言版[M].北京:清华大学出版社,2007[2]王敬华,林萍.C语言程序设计教程[M].北京:清华大学出版社,2009[3]严蔚敏.数据结构习题集[M].北京:清华大学出版社,2009沈阳航空工业学院课程设计报告附录-13-附录(程序清单)#includestdafx.h#includestdio.h#includestring.h#includestdlib.h#defineFile_Name_Max30//文件名最大长度#defineWord_Max_Size60//每个单词最大长度typedefstructword//连表单词结构{charw[Word_Max_Size];//单词intcount;//个数structword*next;}Link;Link*head=NULL;//连表头FILE*fp;//文件指针intcount=0;intIsNotWord(chara)//判断是否为字母{if(a='z'&&a='a'){return0;}沈阳航空工业学院课程设计报告附录-14-elseif(a='Z'&&a='A'){return0;}elseif(a=='\''){return0;}elsereturn1;}voidAddWord(char*ww)//添加单词{Link*p1,*p2;if(ww[0]='Z'&&ww[0]='A')//转成小写字母{ww[0]+=32;}for(p1=head;p1!=NULL;p1=p1-next)//判断单词在连表中是否存在{if(!strcmp(p1-w,ww)){p1-count++;//存在就个书加1return;}}//不存在添加新单词p1=(structword*)malloc(sizeof(word));沈阳航空工业学院课程设计报告附录-15-strcpy(p1-w,ww);p1-count=1;

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功