版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、英文单词使用频度统计数据结构课程设计任务书学院名称:数学与计算机学院课程代码: 专业:软件工程 年级: 一、设计题目英文单词使用频度统计二、主要内容本设计属于数组链表的应用,统计英文文本文件中各单词的使用频度(使用次 数/单词总数)。要求使用数组链表存放文件中不同单词及出现的次数,数组链表的 节点内容包括指向左右子树的指针、单词本身、使用次数。基本操作过程是从文本 文件中读取一个单词并插入数组链表并累计出现次数,文件读完,即按使用频度顺 序输出各单词。三、具体要求及提交的材料1 .做好设计计划,认真查阅相关资料,完成程序设计及调试;2 .按课程设计说明书 实例模板完成课程设计说明书的撰写;3
2、.设计结束后,必须上交如下材料:(1)课程设计说明书(报告)打印稿一份;(2)课程设计说明书及源代码 电子文档四、主要技术路线提示认真分析系统功能需求,拟定设计方案和程序框架,查阅相关资料,完成算法 设计和程序调试。五、进度安排共计两周时间,建议进度安排如下:1. 选题,应该在上机实验之前完成2. 需求分析、方案拟定、程序框架思考可分配 4学时3. 详细的程序设计可分配8学时4. 调试和分析可分配8学时。可以有2学时的机动,即提前完成设计任务的学生可提前安排程序验收和答辩六、推荐参考资料1 .冯博琴 等编著,软件技术基础(修改版),西安交通大学出版社,19972 .严蔚敏 等著,数据结构,清华
3、大学出版社,20033 .李芸芳 等著,软件技术基础(第二版),清华大学出版社,20004 .徐孝凯 等著,数据结构(C语言描述),清华大学出版社,2004指导教师 签名日期 年月日系主任 审核日期 年一月日-2 -英文单词使用频度统计摘要1引言 12需求分析 12.1 用户需求12.2 功能需求 13概要设计23.1 设计思路图解23.1.1 数据结构图解 23.1.2 功能模块图 23.1.3 模块调用图33.1.4 程序流程图 43.2 编码设计思路 53.2.1 抽象数据类型 53.2.2 要模块设计 74详细设计 104.1 头文件代码设计 104.2 详细代码设计 125系统测试2
4、25.1 实现环境 225.2 语言选择225.3 测试文件225.4 测试分析23总结 26致谢 27参考文献 28摘要本课程设计需要完成对信息中单词出现频率的统计。信息中同一个 单词可能出现的格式有所不同,通过大小写转换后统一为小写格式来比较。 在窗口中输出整个文件信息,给出输入提示,执行程序后输出要查询的单 词出现的频率和位置。-2 -英文单词使用频度统计1引言1.1 问题的提出随着社会的发展,人们学习热情高涨,考证热已经遍布全国,特别是大学生的 四六级考试,及其他的英语考试,可谓是英语似乎占据了大家的大部分时间。而这 样便给很多出版社或知道书籍作者很多牟利的机会。统计单词便是他们吸引同
5、学购 买的一中手段,如何才能快捷准确的统计出所给出的信息中的指定的单词出现频率 呢,这样便孕育出了单词频率统计系统。1.2 任务与分析本设计属于二叉树的应用,统计英文文本文件中各单词的使用频度(使用次数 /单词总数)。要求使用二叉排序树存放文件中不同单词及出现的次数,二叉树的节 点内容包括指向左右子树的指针、单词本身、使用次数。基本操作过程是从文本文 件中读取一个单词并插入二叉排序树并累计出现次数,文件读完,即按使用频度顺 序输出各单词。2需求分析2.1 用户需求用户可以通过该程序查询和统计一篇英文文章中某些特定单词出现次数和位置。2.2 功能需求用户可以输入单词来查询单词出现次数和位置;程序
6、可以正确显示查询结果;用户可以选择是否在一次输出后继续查询;在一次查询中的结果记录到一个二维链表中 。3概要设计3.1设计思路图解3.1.1数据结构图解图1数据结构图解将从文件流读入的文章字符存到 szFile口字符数组中,以空格计数行单词个 数,以换行符记录文章列数,将输入后插入到链表中的单词与字符数组中的单词比 较,遇到相等的则将当前的行列数插入到链表的位置结点中,并且单词个数加1本程序允许用户选择是否重复进行,并且对于在一次操作中重复输入的单词, 在链表中不进行重复插入。3.1.2功能模块图图2功能模块图-3 -英文单词使用频度统计-6 -3.1.3模块调用图文本读入模块show_tex
7、t()主函数main ()返回头指针函数gethead ()字符输入模块input()插入函数Insert()结果显示模块showwindow()统计函数calcute()大小写字符转换模块A_to_a()图3模块调用图3.1.4程序流程图结束图4程序流程图行坐标所在行的列坐标指向下一个坐标结点的指针单词坐标坐点类型单词数组指向单词坐标结点的指针指向下一个单词结点的指针单词所含字符个数单词结点3.2编码设计思路3.2.1 抽象数据类型struct node int col; /int row; / node* next; /;/struct Node char words20; / node*
8、 ptr;/Node* next; / int num;/;/ class TLinkpublic:TLink() head = NULL;/构造函数TLink()/析构函数while( head != NULL )Node* temp;英文单词使用频度统计temp = head;head = head - next;delete temp;void Insert( char* Item );/前条件:参数Item口为一个字符数组。/后条件:Item口所包含的单词被插入到链表。void calcute(char *szFile,int size);/前条件:szFile口以正确保存了文本字符,
9、size为文本字符长度。/后条件:统计链表每一个插入的单词的个数及所在行、列坐标。Node* gethead();/前条件:链表已初始化/后条件:返回链表头指针private:Node* head;char A_to_a( char alp );/前条件:alp为一个正确的英文字母/后条件:如果alp是大写字母,则转化为小写字母,否则不变。void showwindow();/后条件:显示统计结果。void show_text();/前条件:在正确的路径上存在一个英文文本。/后条件:读入英文文本到字符数组并显示在屏幕上。void input();/后条件:读入用户输入的字符并插入到单词链表。-
10、6 -英文单词使用频度统计3.2.2主要模块设计I*,新建单词结点;while( Itemi != 0 )复制各字符到单词结点的单词数组中;记录单词字母个数;插入单词字母个数到链表相应域;temp - wordsi = 0;查找并比较链表中是否已有要插入的单词;如果有不进行插入并销毁新建结点;否则插入新建的单词结点;/*/统计函数(参数:char *szFile, int size)while(没有到文本字符的结尾)依次遍历文本字符,遇到非字母字符时计数单词所含字母个数;while( 没有到链表尾)if(单词结点所含单词的字母个数与计数相等)if忽略大小写比较本次遍历到的单词和链表中的结点单词
11、;(相等)插入行列值遇空格行单词个数加1;遇换行列数加1;*结构显示模块while( 没到链表尾)输出结点单词;如果存在,则输出单词的所有行、列值及出现次数;否则输出没有该词或输入错误信息;*输入模块doif( 链表不空)清空链表;输出提示信息;接受用户输入;while( true )输入的是结束字符;退出;记录输入逗号前的单词;插入到链表;继续输入;if( 链表空)输出没有插入任何单词!else统计;显示结果;提示是否继续;输入;while( 不继续);4详细设计4.1头文件设计/* 头文件 *FILE:source.h#ifndef SOURCE_H#define SOURCE_H str
12、uct nodeint col;int row;node* next;struct Nodechar words20;node* ptr;Node* next;int num;class TLinkpublic:-11 -英文单词使用频度统计TLink() head = NULL; TLink()while( head != NULL )Node* temp;temp = head;head = head - next;delete temp;void Insert( char* Item );void calcute(char *szFile,int size);Node* gethead(
13、);private:Node* head;char A_to_a( char alp );void showwindow();void show_text();void input();#endif/将链表类声明于头文件中便于调用,清晰易见-11 -英文单词使用频度统计4.2详细代码设计english.cpp#include#include#include#include source.husing namespace std;TLink link;int i=0;char szFile2000; /定义一个足够长度的字符/*主函数 */主要调用函数用来实现功能int main()show_t
14、ext(); /显示全文函数cout wordsi = Itemi;+ i;temp - num = i;temp - wordsi = 0;Node* ptrr = NULL;ptrr = link.gethead();while( ptrr != NULL )if( ptrr - num = temp - num )int n;for( n = 0; n wordsn ) != A_to_a( Itemn)/对他们进行比较break;if( n = i )/如果找到相等的单词flag = 1;英文单词使用频度统计break;ptrr = ptrr - next;if( flag != 1
15、)temp - ptr = NULL;temp - next = NULL;Node* Temp = head;if( head = NULL )head = temp;elsewhile( Temp - next != NULL )Temp = Temp - next;Temp - next = temp;elsedelete temp; /释放链表/*大写转化成小写 */将大些转化成小写,避免开头或特殊单词-14 -英文单词使用频度统计char A_to_a( char alp )if( ( alp = A ) & ( alp = Z) alp = alp + 32;return alp;
16、/*统计频率和位置*/-17 -void TLink二calcute(char *szFile, int size)记录已搜索过的字符数-1列标行标记录空格数-1int i = 0;/int col = 1; /int row = 0; / int count; / Node* ptrr = NULL;while( i =while( ( szFilei = a & szFilei= z ) | ( szFileiA & szFilei num = j ) int n;for( n = 0; n wordsn ) != A_to_a(szFilei -j + n)break;if( n = j
17、 ) node* temp;temp = new node;temp - col = col;temp - row = row;temp - next = NULL;node* Temp = ptrr - ptr;if( ptrr - ptr = NULL )ptrr - ptr = temp;elsewhile( Temp - next != NULL )Temp = Temp - next;Temp - next = temp;/插入行数ptrr = ptrr - next;if( szFilei = | szFilei = n)count = -1;while( szFilei=)+ i
18、; /设置列数+ row;/ 行的单词个数加+ count;/单词之间空格-1row = row - count;if( szFilei = n)+ col; /列遇到换行累加+ i;row = 0;/ 单词的行个数清零else+ i;cout wordsk != 0; + k )cout wordsk;cout ptr = NULL )cout 没有该词,或输入不正确! ptr != NULL )cout (;cout ptr - col ; /显示行数cout ,;cout ptr - row ; /显示列数cout );cout ptr = curptr - ptr - next;-18
19、 -word_num +; / 统计次数cout endl;cout 该单词共出现 word_num 次! next;显示全文*/*/打开文件并输出TXT文件中的信息void show_text()ifstream fin; / 流fin.open(D:english.txt); /打开文件if (fin.fail()coutInput file opening failed.n;exit;char next; /获取文件中的字符 fin.get(next);while (! fin.eof() /szFilei = next; /+ i;fin.get(next);判断是否到文件尾赋予szF
20、ile将整个文件的内容赋给szFile-19 -/英文单词使用频度统计szFilei = 0;/尾置空for( int k = 0; k i; + k )cout szFilek; /输出文件内容cout *Totai number : i endl;cout ”*” endl;/*输入函数*/-20 -/窗口录入用户输入信息给出相应的操作void input()char Item40; /暂存数组char in; /接受输入字符char ans; /判断是否重新开始doif( link.gethead() != NULL )link.TLink(); / 调用析构cout 请输入要统计的单词
21、,单词之间用逗号隔开(输入侬2束,本 程序忽略空格): in;int flag = 1; /用来判断是否输入结束while( true )if( in = )break;int m = 0;while( in !=,)英文单词使用频度统计Itemm = in;+ m;cin in;if( in = )flag = 0;break;Itemm = 0; /将暂存数据的字符置空link.Insert( Item );if( flag = 0 )break;cin in;if( link.gethead() = NULL )cout 没有插入任何单词! endl;elselink.calcute(
22、szFile, i );showwindow();cout ans;while( ( ans != n ) & ( ans != N ) ); /-21 -英文单词使用频度统计5.系统测试5.1 实现环境硬件平台:安装有windows系统,操作系统和版本:Microsoft visual vc+6.05.2 语言选择C+叫言5.3 测试文件D:english.txtExtravagant Spending on College CampusAccording to a survey, in recent years the monthly expenditure of a college st
23、udent has been on the sharp rise. Many college students spend money like water and have no concept of thrift in their mind. They take it for granted that they spend money from their parents before they enter into the society. This extravagant spending is mainly caused by the following factors.First
24、of all, nowadays most of students are the only children of their families. They are the apple in their family s eyes and naturallyget more care and pocket money. Secondly, with the improvement of living standard, parents can afford higher expenditure of their children. Thirdly, some students like to
25、 pursue fashion and trends, which tends to need more money. Finally, campus love is also a possible factor causing extravagant spending.From mypoint of view, a college student, as a pure consumer, should learn to be thrifty. We should limit our expenditure on daily necessities but not buy whatever w
26、e want regardless of their prices. The habit of thrift can help us form right values and is favorable to our future development.5.4 测试分析5.4.1 运行程序初始界面E;目婀程序语言程序EnglisNDebugEmgllkhmeBxtrauagfanit Spending on Collesfe CampusAccording to a surveyja. in i*ecenit years the monthly expenditure of a colleg
27、ehtudent has been on the and liaue no Concept of spend money From their kant spendingf is nainlvsharp rise. Many college students spend noneijp 1 ike waiter thrif t in t he ir mind. They take it for gfranted that they parents before they enter into the society. This extrauacaused by the followingFir
28、st of all, nouadas; most of students are|ies They ape the appl in the ii* family s eyes eke t money. Secondlil with tine in proue me nt offactors * the onlF children of their fanil and fiaturally get more care andliming standard, parentsi-rd higher expenditure oF their childremThirdli/ some students
29、 like to ashion and trends, which tends to need more m口mey. Finally, campus loue a possible fcausing1 extrauagisnt 霖pending.Fion ny point of view a collegie student, as a pure consumer shouldcan affpursue is alsolearn tq be thrifty. We should limit our expenditure on daily necessities but not buy w
30、hateuer we want regardless of their prices. The habit of thrift can help us form yight ualues and is fauorable to our future development己 1 nunber :1166MTKXaifMrKatMiMlM 畸蕤*KMSMMTMiMSMMrifM;著* 有 naan注注注W:班注注NMSM;著*有著KBt 第 MMSXiMMrK有著请输入要统计的单词,单词之间用逗号F哥R输入0键结束,本程序忽略空格M图5运行程序初始界面图5.4.2 输入单词“ of”查询结果图6
31、输入一个单词查询结果5.4.3 输入单词“ of”和“ student ”查询结果-33 -r JEtB%WiSWfSJEnglishDebLigEngli5h,exe*a possible factgp cansing extravagant spending1From my point of uieW* a college student, 已注 a pure consumer sliQuld learn t be thriftyH We should limit our expenditure on daily necessities hut not huy w hateuer we w
32、ant regardless the ii* prices * The habit of thrift can help us form right ualues and is f auorible to our future development.number请输入要统计的单词,单词之间用逗号P鬲开(输入0键结束,本程序忽略空格MN但 of 2.31) 3,345 4.32) 谬堇利共出现工瞅! 三百继续Y 口尸N/n,:y循输人要统计的单词,单词之间用逗号隔开(输入喷结束,本程序忽略空格F,studenot(2,10 2.31) C3,S 311 3.34 43.42) 4.32) 4,
33、37)该单词共出现次!student (4,7)该单词共出现2次!1否继续?y 口尸N/nh图7输入两个单词显示结果5.4.4 输入“tomorrow ”显示结果图8输入文中未出现单词显示结果5.4.5 输入“ n”推出程序图9退出程序总结在本次课程设计中感受到自己也可以编写小程序让单词统计变得如此简单,同时 再次体会了链表在数据结构中的重要作用,通过查阅书籍与网上查询了解了链表的更 多使用技巧,进一步夯实了以后编程的能力。致谢在这次课程设计中学到了很多在课堂上没有学到的东西,首先感谢我的老师在上机时 对我的耐心指导和帮助,在我编写的程序难以运行满意是老师总是能够给我充分的帮助, 启发我成功排
34、除错误,少走了不少弯路;其次我要感谢学校给提供给我们足够的实验环境 与器材,同时配备了优秀的指导老师让我们在轻松愉快的环境中学习与实验。在这次实验 中可谓是让我受益匪浅,学得轻松,学得开心,学得满足。参考文献1谭浩强等.C语言程序设计教程.高等教育出版社.20052 李建学 等.数据结构课程设计案例精编(用C/C+的述).清华大学出版.2007-2-13严蔚敏 等.数据结构(C语言版).清华大学出版社.2003-1#include#include#include#include source.husing namespace std;TLink link;int i=0;char szFile
35、2000; / 定义一个足够长度的字符/*主函数 *int main()show_text(); / 显示全文函数cout wordsi = Itemi;+ i;temp - num = i;temp - wordsi = 0; /将录入的单词赋予 wordNode* ptrr = NULL;ptrr = link.gethead();while( ptrr != NULL )if( ptrr - num = temp - num )int n;for( n = 0; n wordsn ) != A_to_a( Itemn) break;if( n = i ) / 如果相等flag = 1;b
36、reak;ptrr = ptrr - next;if( flag != 1 )temp - ptr = NULL;temp - next = NULL;Node* Temp = head;if( head = NULL )head = temp;elsewhile( Temp - next != NULL )Temp = Temp - next;Temp - next = temp;elsedelete temp;大写转化成小写/*/*char A_to_a( char alp )if( ( alp = A ) & ( alp = Z) alp = alp + 32;return alp;/*
37、统计频率和位置*/void TLink二calcute(char *szFile, int size)记录已搜索过的字符数-1列标行标记录空格数-1int i = 0;/int col = 1; /int row = 0; / int count; / Node* ptrr = NULL;while( i = a & szFilei =A & szFilei num = j )int n;for( n = 0; n wordsn ) != A_to_a( szFilei - j+ n)break;if( n = j ) /如果相等node* temp;temp = new node;temp - col = col;temp - row = row;temp - next = NULL;node* Temp = ptrr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度社保劳动合同范本与社会保障3篇
- 二零二五年度劳动合同转让及员工劳动合同解除协议3篇
- 2025年度矿产资源开发与购买合同3篇
- 二零二五年度数据中心搬迁服务合同3篇
- 二零二五年度房地产买卖合同A3版(含产权登记服务)3篇
- 二零二五年度文化产业园区财务担保合同文化创意产业与会计操作3篇
- 二零二五年度教育行业助学贷款合同合规性分析3篇
- 二零二五年度二手珠宝首饰买卖简单协议书范本20253篇
- 海南政法职业学院《程序设计语言(C语言)》2023-2024学年第一学期期末试卷
- 2025年度建筑施工合同具体条款和工程标的2篇
- 北京2025年首都医科大学附属北京友谊医院招聘140人历年参考题库(频考版)含答案解析
- 股权质押权借款合同模板
- 《工商管理专业毕业实习》课程教学大纲
- 2025年中国社区团购行业发展环境、运行态势及投资前景分析报告(智研咨询发布)
- 国开电大本科《西方经济学(本)》网上形考(作业一至六)试题及答案
- 提高有风险患者预防跌倒坠床护理措施落实率品管圈PDCA案例汇报
- 2024年行政执法人员执法资格知识考试题库(附含答案)
- 西那卡塞治疗甲旁亢
- 无人驾驶 物流行业市场调研分析报告
- 代理记账有限公司简介(5个范本)
- 南京邮电大学通达学院学生成绩复核申请表
评论
0/150
提交评论