资源预览内容
第1页 / 共81页
第2页 / 共81页
第3页 / 共81页
第4页 / 共81页
第5页 / 共81页
第6页 / 共81页
第7页 / 共81页
第8页 / 共81页
第9页 / 共81页
第10页 / 共81页
亲,该文档总共81页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
. word格式 . 课程名称 Linux下的标准C 设计题目 英汉电子辞典 项目组长 邢美慧 组 员 丁宝 陈飞 郭宗良 欧阳晨阳 指导教师 王建立 2014 年 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.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 主函数代码41七、 测试417.1 单元测试427.1.1 模块1测试427.1.2 模块2测试437.1.3 模块3测试447.1.4 模块4测试467.2 集成测试47八、使用说明书48九、维护49. 学习参考 .一、设计时间2014年8月18日-2014年8月25日二、设计目的通过本次课程设计,熟悉C语言的程序设计与技巧,进一步提高编写程序,分析程序及上机操作,调试程序的能力,提高动手操作能力及分析问题和解决问题的能力三、需求分析3.1 单词查询给定文本文件“dict.txt”,该文件用于存储词库。词库为“英-汉”,“汉-英”双语词典,每个单词和其解释的格式固定,如下所示:#单词Trans:解释1解释2解释n每个新单词由“#”开头,解释之间使用“”隔开。一个词可能有多个解释,解释均存储在一行里,行首固定以“Trans:”开头。下面是一个典型的例子:#abyssinianTrans:a. 阿比西尼亚的n. 阿比西尼亚人;依索比亚人该词有两个解释,一个是“a. 阿比西尼亚的”;另一个是“n. 阿比西尼亚人;依索比亚人”。要求编写程序将词库文件读取到内存中,接受用户输入的单词,在字典中查找单词,并且将解释输出到屏幕上。用户可以反复输入,直到用户输入“exit”字典程序退出。程序执行格式如下所示:./app text-text表示使用文本词库进行单词查找。3.2 建立索引,并使用索引进行单词查询要求建立二进制索引,索引格式如下图所示。将文本文件“dict.txt”文件转换为上图所示索引文件“dict.dat”,使用索引文件实现单词查找。程序执行格式如下:./app index-index表示使用文本词库dict.txt建立二进制索引词库dict.dat./app bin-bin表示使用二进制索引词库进行单词查找。3.3 用户添加新词用户添加的新词存放在指定文件中。如果待查单词在词库中找不到,则使用用户提供的词库。用户的词库使用文本形式保存,便于用户修改。程序执行格式图1-1所示。./app 词库选择选项 -f 用户词库文件名词库选项为-test1,或者-test2,表示使用文本词库或者二进制索引词库。-f为固定参数,用来指定用户词库文件名。四、系统分析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文件中查询该单词,若查到,即在终端显示解释;若未查到,再到自定义文本my_dict.txt中查询,若查到,即在终端显示解释;若未查到,则在终端提示“此单词未找到”。用户可以反复查询,直到键入Exit结束整个程序。4.1.3 建立索引功能分析当用户从终端输入./app -index后进入该功能模块,系统会生成一个新的二进制文件dict.dat,若原已存在,将会被覆盖,程序将文本文件dict.txt中的内容写进该二进制文件,并且生成一个目录写进该二进制文件,在建立完成后将会提示“建立成功”4.1.4 索引查找功能分析当用户从终端输入./app -bin后进入该功能模块,系统会提示用户输入要查询的英文单词,当用户键入待查单词后,程序会从二进制索引文件dict.dat中查询该单词,若查到,即在终端显示解释;若未查到,则在终端提示“此单词未找到”。用户可以反复查询,直到键入Exit结束该程序。4.1.5 添加新词功能分析当用户从终端输入./app -insert后进入该功能模块,系统会提示用户要插入的英文单词,当用户键入待插单词后,程序会先在标准文本和自定义文本两个文件中查找该单词,若查到,则提示“该单词已存在,不能添加”;若未查到,则提示用户输入待插单词的所有解释,将单词及解释写进自定义文本my_dict.txt中4.2 概要设计4.2.1 系统功能结构图图-系统功能4.2.2 文本查找功能图图 module1.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.锁定在特定链表中查询,查找速度很快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.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 添加新词细化分析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 index_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 *first_p;/*4.存放指针哈希数组的结构体*/struct arrayfirst_p hash26;typedef array_t *array_p; /
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号