电子辞典课程设计.doc
《电子辞典课程设计.doc》由会员分享,可在线阅读,更多相关《电子辞典课程设计.doc(60页珍藏版)》请在咨信网上搜索。
1、电子辞典课程设计542020年4月19日文档仅供参考,不当之处,请联系改正。 课程名称 Linux下的标准C 设计题目 英汉电子辞典 项目组长 邢美慧 组 员 丁宝 陈飞 郭宗良 欧阳晨阳 指导教师 王建立 年 8 月目录一、设计时间1二、设计目的1三、需求分析13.1 单词查询13.2 建立索引,并使用索引进行单词查询13.3 用户添加新词1四、系统分析24.1 功能分析24.1.1 系统功能分析24.1.2 文本查找功能分析24.1.3 建立索引功能分析24.1.4 索引查找功能分析24.1.5 添加新词功能分析34.2 概要设计34.2.1 系统功能结构图34.2.2 文本查找功能图44
2、.2.3 建立索引功能图54.2.4 索引查找功能图64.2.5 添加新词功能图74.3 各模块细化分析84.3.1 内存存储结构 - 哈希表的实现84.3.2 二进制索引文件构造图94.3.3 文本查询细化分析94.3.4 建立索引文件细化分析124.3.5 索引查询细化分析164.3.6 添加新词细化分析19五、系统设计205.1 硬件环境215.2 选择语言215.3 功能关系215.4 框架设计225.5 详细设计235.5.1 抽象数据类型235.5.2 函数接口声明23六、 编码276.1 模块1代码286.2 模块2代码286.3 模块3代码366.4 模块4代码396.5 主函
3、数代码41七、 测试417.1 单元测试427.1.1 模块1测试427.1.2 模块2测试437.1.3 模块3测试447.1.4 模块4测试467.2 集成测试47八、使用说明书48九、维护49一、设计时间 8月18日- 8月25日二、设计目的经过本次课程设计,熟悉C语言的程序设计与技巧,进一步提高编写程序,分析程序及上机操作,调试程序的能力,提高动手操作能力及分析问题和解决问题的能力三、需求分析3.1 单词查询给定文本文件“dict.txt”,该文件用于存储词库。词库为“英-汉”,“汉-英”双语词典,每个单词和其解释的格式固定,如下所示:#单词Trans:解释1解释2解释n每个新单词由“
4、#”开头,解释之间使用“”隔开。一个词可能有多个解释,解释均存储在一行里,行首固定以“Trans:”开头。下面是一个典型的例子:#abyssinianTrans:a. 阿比西尼亚的n. 阿比西尼亚人;依索比亚人该词有两个解释,一个是“a. 阿比西尼亚的”;另一个是“n. 阿比西尼亚人;依索比亚人”。要求编写程序将词库文件读取到内存中,接受用户输入的单词,在字典中查找单词,而且将解释输出到屏幕上。用户能够重复输入,直到用户输入“exit”字典程序退出。程序执行格式如下所示:./app text-text表示使用文本词库进行单词查找。3.2 建立索引,并使用索引进行单词查询要求建立二进制索引,索引
5、格式如下图所示。将文本文件“dict.txt”文件转换为上图所示索引文件“dict.dat”,使用索引文件实现单词查找。程序执行格式如下:./app index-index表示使用文本词库dict.txt建立二进制索引词库dict.dat./app bin-bin表示使用二进制索引词库进行单词查找。3.3 用户添加新词用户添加的新词存放在指定文件中。如果待查单词在词库中找不到,则使用用户提供的词库。用户的词库使用文本形式保存,便于用户修改。程序执行格式图1-1所示。./app 词库选择选项 -f 用户词库文件名词库选项为-test1,或者-test2,表示使用文本词库或者二进制索引词库。-f为
6、固定参数,用来指定用户词库文件名。四、系统分析4.1 功能分析4.1.1 系统功能分析该项目包含4个主要功能:使用文本文件进行单词查询;使用文本文件生成二进制索引文件;使用二进制索引文件进行单词查询;用户添加新词; 当用户输入./app -text 执行功能1; 当用户输入./app -index 执行功能2; 当用户输入./app -bin 执行功能3; 当用户输入./app -insert 执行功能4;4.1.2 文本查找功能分析当用户从终端输入./app -text后进入该功能模块,系统会提示用户输入要查询的英文单词,当用户键入待查单词后,程序会先从dict.txt文件中查询该单词,若查
7、到,即在终端显示解释;若未查到,再到自定义文本my_dict.txt中查询,若查到,即在终端显示解释;若未查到,则在终端提示“此单词未找到”。用户能够重复查询,直到键入Exit结束整个程序。4.1.3 建立索引功能分析当用户从终端输入./app -index后进入该功能模块,系统会生成一个新的二进制文件dict.dat,若原已存在,将会被覆盖,程序将文本文件dict.txt中的内容写进该二进制文件,而且生成一个目录写进该二进制文件,在建立完成后将会提示“建立成功”4.1.4 索引查找功能分析当用户从终端输入./app -bin后进入该功能模块,系统会提示用户输入要查询的英文单词,当用户键入待查
8、单词后,程序会从二进制索引文件dict.dat中查询该单词,若查到,即在终端显示解释;若未查到,则在终端提示“此单词未找到”。用户能够重复查询,直到键入Exit结束该程序。4.1.5 添加新词功能分析当用户从终端输入./app -insert后进入该功能模块,系统会提示用户要插入的英文单词,当用户键入待插单词后,程序会先在标准文本和自定义文本两个文件中查找该单词,若查到,则提示“该单词已存在,不能添加”;若未查到,则提示用户输入待插单词的所有解释,将单词及解释写进自定义文本my_dict.txt中4.2 概要设计4.2.1 系统功能结构图图-系统功能4.2.2 文本查找功能图图 module1
9、.ddd4.2.3 建立索引功能图图 module2.ddd4.2.4 索引查找功能图图 module3.ddd4.2.5 添加新词功能图图 module4.ddd4.3 各模块细化分析4.3.1 内存存储结构 - 哈希表的实现分析:1.将同一个解释的长度和内容组成一个结点; 2.将同一个单词的所有解释存储在一条链表上; 3.将一个单词的长度、内容、解释个数及解释链表的头指针组成一个结点; 4.将所有单词首字母相同的单词结点存储在一条链表上; 5.声明一个结构体数组,数组元素分别存放26个英文字母和26条单词链表 的头指针图 哈希表存储结构 好处:1.只加载英文部分,加载速度很快 2.锁定在特
10、定链表中查询,查找速度很快4.3.2 二进制索引文件构造图4.3.3 文本查询细化分析4.3.3.1 加载内存图 load_memory_text.ddd4.3.3.2 清除字符串后的空格图 clear_space.ddd4.3.3.3 在哈希表中查询单词图search_word_text.ddd4.3.3.4 在自定义文本中查询单词图 search_word_mytext.ddd4.3.4 建立索引文件细化分析4.3.4.1 建立二进制索引文件图 build_dat_index.ddd4.3.4.2 将文本内容写入二进制索引文件图 write_content_dat_index.ddd4.3
11、.4.3 将目录写进二进制索引文件图 write_list_dat_index.ddd4.3.4.4 将目录开始的索引写进二进制索引文件 图 write_listkey_dat_index.ddd4.3.4.5 将单词个数写进二进制索引文件 图 write_wordnum_dat_index.ddd4.3.5 索引查询细化分析4.3.5.1 加载内存 图 Load_memory_bin.ddd4.3.5.2 在目录中查询单词图 search_index_bin.ddd4.3.5.3 经过索引在正文中查询单词图 search_word_with_index_bin.ddd4.3.6 添加新词细化
12、分析4.3.6.1 将单词及解释写进自定义文本中图 write_word_mytext_insert.ddd五、系统设计5.1 硬件环境支持Linux下的gcc编译环境5.2 选择语言C语言5.3 功能关系5.4 框架设计5.5 详细设计5.5.1 抽象数据类型typedef struct trans trans_t;typedef struct word word_t;typedef struct first first_t;typedef struct array array_t;typedef struct index index_t;typedef struct indexdata i
13、ndex_data;/*1.存放解释的结构体*/struct transint trans_length;char trans_nameSIZE;trans_t *next;typedef trans_t *trans_p;/*2.存放单词的结构体*/struct wordint word_length;char word_nameSIZE;int trans_num;trans_p head;word_t *next;typedef word_t *word_p;/*3.存放哈希数组元素的结构体*/struct firstchar ch;word_p next;typedef first_t
14、 *first_p;/*4.存放指针哈希数组的结构体*/struct arrayfirst_p hash26;typedef array_t *array_p; /*5.存放目录的结构体*/struct indexchar word_nameSIZE;long position;index_t *next;typedef index_t *index_p;/*6.存放目录数据域的结构体*/struct indexdatachar word_nameSIZE;long position;5.5.2 函数接口声明5.5.2.1 模块1函数原型:void module1(void)函数参数:void
15、函数返回值类型:void函数功能:使用文本词库进行单词查询函数原型:array_p load_memory_text(char *,array_p)函数参数:char *,array_p函数返回值类型:array_p函数功能:文本词库加载到内存中,采用哈希表结构函数原型:word_p search_word_text(array_p,char *)函数参数:array_p,char *函数返回值类型:word_p函数功能:哈希表中查找单词函数原型:word_p search_word_mytext(char *,char *)函数参数:char *,char *函数返回值类型:word_p函数
16、功能:自定义文本词库中查找单词函数原型:trans_p create_trans_node_text(char *)函数参数:char *函数返回值类型:trans_p函数功能:生成解释结点函数原型:trans_p insert_trans_node_text(trans_p,trans_p)函数参数:trans_p,trans_p函数返回值类型:trans_p函数功能:解释结点插到解释链表尾部函数原型:word_p create_word_node_text(char *,trans_p)函数参数:char *,trans_p函数返回值类型:word_p函数功能:生成单词结点函数原型:wor
17、d_p insert_word_node_text(word_p,word_p)函数参数:word_p,word_p函数返回值类型:word_p函数功能:单词结点插到单词链表尾部函数原型:int get_trans_num(trans_p)函数参数:trans_p函数返回值类型:int函数功能:获取某个单词的解释个数函数原型:void print_hash(array_p)函数参数:array_p函数返回值类型:void函数功能:遍历哈希表函数原型:void print_word(word_p)函数参数:word_p函数返回值类型:void函数功能:遍历单词链表函数原型:void clear_
18、space(char *)函数参数:char *函数返回值类型:void函数功能:清除字符串后的空格5.5.2.2 模块2函数原型:void module2(void)函数参数:void函数返回值类型:void函数功能:建立二进制索引文件函数原型:void build_dat_index(array_p,char *)函数参数:array_p,char *函数返回值类型:void函数功能:生成二进制索引文件函数原型:index_p write_content_dat_index(array_p,char *)函数参数:array_p,char *函数返回值类型:index_p函数功能:将哈希表
19、中的内容写进二进制文件,并保存每个单词所正确索引,生成目录函数原型:long write_list_dat_index(index_p,char *,long *)函数参数:index_p,char *,long *函数返回值类型:long函数功能:将目录写进dat文件,并保存目录开始的索引和目录中单词的个数函数原型:void write_listkey_dat_index(long)函数参数:long函数返回值类型:void函数功能:将目录开始的索引写进dat文件函数原型:void write_wordnum_dat_index(long)函数参数:long函数返回值类型:void函数功能:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子辞典 课程设计
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。