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

上传人:lis****210 文档编号:110831411 上传时间:2022-06-19 格式:DOCX 页数:18 大小:152.61KB
收藏 版权申诉 举报 下载
数据结构课设报告--词频统计系统的设计_第1页
第1页 / 共18页
数据结构课设报告--词频统计系统的设计_第2页
第2页 / 共18页
数据结构课设报告--词频统计系统的设计_第3页
第3页 / 共18页
资源描述:

《数据结构课设报告--词频统计系统的设计》由会员分享,可在线阅读,更多相关《数据结构课设报告--词频统计系统的设计(18页珍藏版)》请在装配图网上搜索。

1、沈阳航空航天大学课程设计报告课程设计名称:数据结构课程设计课程设计题目:词频统计系统的设计院(系):专业:计算机科学与技术班级:学号:姓名:指导教师:完成日期: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,将

2、词频大丁a的和词频小丁b的所有单词输出。要求:1)独立完成系统的设计、编码和调试;2)系统利用C语言实现;3)按照课程设计规范书写课程设计报告。1.2总体结构本程序主要分为五个模块:主函数模块,读取单词函数模块,显示单词统计函数模块,单词统计函数模块,单词添加函数模块。主函数模块:先调用读取单词函数,然后根据用户输入的阈值调用显示单词统计函数输出结果。读取单词函数模块:打开用户输入的文件,调用单词统计函数,然后关闭文件。显示单词统计函数模块:将链表中频率大丁a且小丁b的单词输出在操作界面上。单词统计函数模块:用户输入的文章以字符的形式进行判断,如果该字符为字母(包括,则添加到单词数组中,否则,

3、调用单词添加函数添加一个新单词。单词添加函数模块首先将要添加单词首字母改为小写,然后判断该单词在链表中是否存在,若存在,则出现频率加1,否则在链表中创建一个新的节点,将该单词信息放到该节点中。图1.1总体结构示意图第2章详细设计2.1主函数模块打开一篇英文文章,统计每个词在该文章中的出现频率,然后根据用户输入的两个阈值a和b,将词频大丁a的和小丁b的所有单词输出。其中首先调用读取单词函数ReadWord()统计文章中的单词,然后由用户输入阈值a和b,通过调用显示单词统计函数ShowWord(inta,intb)将词频大丁a小丁b的所有单词输出。进入读取单词函数ReadWord()模块进入显示单

4、词统计函数ShowWord(inta,intb)模块图2.1主函数模块流程图2.2读取单词函数模块此函数主要作用是打开用户需要打开的英文文章,首先在界面上输出请输入要读取的单词文件名如:test.txt:,待用户输入一个文件名后,打开该文件,然后调用单词统计函数WordCount()对该英文文章进行单词统计,最后关闭文件。图2.2读取单词函数模块流程图2.3显示单词统计函数模块此函数主要作用是根据用户输入的阈值a和b,把词频大丁a和小丁b的所有单词输出。其中先定义一个链表指针p,让其指向头结点,判断其若为空,则结束,否则将该节点内单词频率与阈值比较,若满足要求,贝U输出该节点内单词,然后指向下

5、一个节点,若不满足,则直接指向下一节点,继续判断节点是否为空,如此循环,直至结束。图2.3显示单词统计函数模块流程图2.4单词统计函数模块此函数主要作用是对该英文文章中每个单词出现频率的统计。首先,该文章以字符的形式进行读取,判断每一个字符是否为字母,如果该字符为字母(包括,则添加到单词数组中,否则,调用单词添加函数AddWord(char*ww)添加一个新单词。图2.4单词统计函数模块流程图2.5单词添加函数模块此函数作用主要是添加单词。首先将要添加单词首字母改为小写(若首字母为大写字母,则该字母ASCII码加32),然后判断该单词在链表中是否存在,若存在,则出现频率加1,否则在链表中创建一

6、个新的节点,将该单词信息放到该节点中。图2.5单词添加函数模块流程图第3章调试分析调试分析包括以下的几个方面:(1) .一开始拿到这个题目时无从下手,刚开始就在用树还是用链表上无法选择,后来发现这个题目的要求不是很复杂,用链表就可完成其数据的处理,最终选择用链表来处理这个题目。.词频统计系统要首先打开一篇文章,因此我选择以一个一个字符的形式对文章进行处理,先判断字符是否为字母,然后对单词用链表进行处理,链表的每个节点代表一个单词,该节点中存储该单词的频率,通过单词频率与阈值的比较,把满足要求的单词筛选出来,最终输出到操作界面上,完成对整篇文章每个单词词频的统计。(2) .在程序的调试过程中,我

7、也出现了一些问题,首先没有解决好单词的比较问题,后来通过书本找到了用丁字符申比较的函数以及字符申复制的函数,大大的减轻了我编程的难度。第4章使用说明运行操作及结果:进入主界面,输入所要操作文件名。mPrograFileslicrosoftVisualStudioYIyProjectsXcipinXDebuYcipi.图4.1输入文件名菜单输入阈值认rD:PrograFilesIicrosoftVisualStudioIyProjectscipinDebugcipi黄输入阈值耕昉伽;2切;.图4.2输入阈值菜单词频统计结果显示J*D:PrograFilejMicrosoftVisualStudi

8、oMyProjectscipinDebugcipi.3b43情出入爰读取的单词文件名如匕tegtirtLg捉幻ct隋瑜!入2101!28格教单i司hobbiesliketothingsnywithinforandgames图4.3最终结果显示程序所操作原文件。rtest-记事本支悴(F)mE)格式9)查看(V)藕助(H)Differentpeoplehavedifferenthobbies.Somelikepaintingordrawingwhileothersloveplayingbasketball.IhavemanyhobbiesbecauseIliketodomanythings.Le

9、tmeshareafewofmyhobbieswithyou.Tobeginwith,IreallygoinforsportSjbothindoorsandoutdoors.Ilikecollectingcardsandplayingcardgameswithnyfriends.Butmyfavoritegainesarevideogames.Icouldplaythemalldaylong.Iamforbeingoutsideinthefreshairandsunshin已too,Ilikeridingverymuch,butswindlingismyfavoritesport.gu.ita

10、r.Finally,IenjoylearningIlikespeakingwithforeignersandDisneycartoons.myhobbieskeepmebusyandexcited.InadditionIliketodrawpicturesandreadcomics.ListeningtomusicandsingingsongsarethingsIenjoytoo.NowImlearninghowtoplayaninstrument一theEnglishbecauseIlikewatchingAsyoucansee,Emalwayslookingfornewthingstodo

11、I图4.4程序所操作的文件参考文献1严蔚敏,吴伟民.数据结构:C语言版研.北京:活华大学出版社,20072王敬华,林萍.C语言程序设计教程研.北京:活华大学出版社,20093严蔚敏.数据结构习题集M.北京:活华大学出版社,2009附录(程序清单)#include#include#include#include#defineFile_Name_Max30文件名最大长度#defineWord_Max_Size60每个单词最大长度typedefstructword连表单词结构charwWord_Max_Size;单词intcount;个数structword*next;Link;Link*head=

12、NULL;连表头FILE*fp;文件指针intcount=0;intIsNotWord(chara)判断是否为字母if(a=a)return0;elseif(a=A)(return0;elseif(a=)(return0;elsereturn1;voidAddWord(char*ww)添加单词(Link*p1,*p2;if(ww0=A)/转成小写字母(ww0+=32;for(p1=head;p1!=NULL;p1=p1-next)/判断单词在连表中是否存在(if(!strcmp(p1-w,ww)(p1-count+;存在就个书加1return;不存在添加新单词p1=(structword*)m

13、alloc(sizeof(word);strcpy(p1-w,ww);p1-count=1;p1-next=NULL;count+;if(head=NULL)head=p1;elsefor(p2=head;p2-next!=NULL;p2=p2-next);p2-next=p1;voidWordCount()统计单词inti=0,j=0;charwordWord_Max_Size,c;while(!feof(fp)fscanf(fp,”%c”,&c);if(IsNotWord(c)wordj=0;if(j0)AddWord(word);j=0;else(wordj=c;j+;i+;voidRe

14、adWord()读取文件中的单词(charnameFile_Name_Max;printf(请出入要读取的单词文件名如:test.txt:);scanf(%s”,name);getchar();fp=fopen(name,r);WordCount();fclose(fp);voidShowWord(inta,intb)显示单词统计情况(Link*p;printf(个数t单词n);for(p=head;p!=NULL;p=p-next)(if(p-counta)&(p-countcount,p-w);intmain()ReadWord();inta,b;printf(”请输入阈值a和b如:210

15、:);scanf(%d%d,&a,&b);getchar();ShowWord(a,b);getchar();课程设计总结:通过这次课程设计中对词频统计系统的设计,使我对文件以及链表有了新的了解和认识,让我受益匪浅。也让我知道在数据结构的领域还有许多需要我去学习的地方。在做这次课设之前,也学习了数据结构这门学科的初步知识,但是并不知怎样才能自己编写和更好的利用,但通过这次课设,经过查找资料,并且通过老师和同学的帮助终丁能够完成这项任务,并且掌握了运用方法,使我增强了数据结构的兴趣,同时还增强了我的动手能力和逻辑思维,提高了自己的编程能力,让我受益良多,在遇到困难时我学会了查阅资料和讨论学习的方法,而查阅资料和讨论学习的方法也在这个过程中被我逐渐地掌握熟练。我觉得课程设计对丁我来说既是一项作业,也是一个新的学习的过程。在这个过程中,我对数据结构以及程序设计的兴趣和潜能也被很大程度地激发了出来。如今我认为,其实享受课程设计中的失败、成功以及学习的过程是一种很大的乐趣,而这种学习方式我也将在以后的学习过程中更好更多地利用到。指导教师评语:指导教师(签字):年月日课程设计成绩

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!