电子辞典课程设计DOCWord文档下载推荐.docx

上传人:b****5 文档编号:15691254 上传时间:2022-11-15 格式:DOCX 页数:52 大小:617.73KB
下载 相关 举报
电子辞典课程设计DOCWord文档下载推荐.docx_第1页
第1页 / 共52页
电子辞典课程设计DOCWord文档下载推荐.docx_第2页
第2页 / 共52页
电子辞典课程设计DOCWord文档下载推荐.docx_第3页
第3页 / 共52页
电子辞典课程设计DOCWord文档下载推荐.docx_第4页
第4页 / 共52页
电子辞典课程设计DOCWord文档下载推荐.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

电子辞典课程设计DOCWord文档下载推荐.docx

《电子辞典课程设计DOCWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《电子辞典课程设计DOCWord文档下载推荐.docx(52页珍藏版)》请在冰豆网上搜索。

电子辞典课程设计DOCWord文档下载推荐.docx

一个词可能有多个解释,解释均存储在一行里,行首固定以“Trans:

”开头。

下面是一个典型的例子:

#abyssinian

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.ddd

4.2.3建立索引功能图

图module2.ddd

4.2.4索引查找功能图

图module3.ddd

4.2.5添加新词功能图

图module4.ddd

4.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.ddd

4.3.3.2清除字符串后的空格

图clear_space.ddd

4.3.3.3在哈希表中查询单词

图search_word_text.ddd

4.3.3.4在自定义文本中查询单词

图search_word_mytext.ddd

4.3.4建立索引文件细化分析

4.3.4.1建立二进制索引文件

图build_dat_index.ddd

4.3.4.2将文本内容写入二进制索引文件

图write_content_dat_index.ddd

4.3.4.3将目录写进二进制索引文件

图write_list_dat_index.ddd

4.3.4.4将目录开始的索引写进二进制索引文件

图write_listkey_dat_index.ddd

4.3.4.5将单词个数写进二进制索引文件

图write_wordnum_dat_index.ddd

4.3.5索引查询细化分析

4.3.5.1加载内存

图Load_memory_bin.ddd

4.3.5.2在目录中查询单词

图search_index_bin.ddd

4.3.5.3通过索引在正文中查询单词

图search_word_with_index_bin.ddd

4.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抽象数据类型

typedefstructtranstrans_t;

typedefstructwordword_t;

typedefstructfirstfirst_t;

typedefstructarrayarray_t;

typedefstructindexindex_t;

typedefstructindexdataindex_data;

/*1.存放解释的结构体*/

structtrans

{

inttrans_length;

chartrans_name[SIZE];

trans_t*next;

};

typedeftrans_t*trans_p;

/*2.存放单词的结构体*/

structword

intword_length;

charword_name[SIZE];

inttrans_num;

trans_phead;

word_t*next;

typedefword_t*word_p;

/*3.存放哈希数组元素的结构体*/

structfirst

charch;

word_pnext;

typedeffirst_t*first_p;

/*4.存放指针哈希数组的结构体*/

structarray

first_phash[26];

typedefarray_t*array_p;

/*5.存放目录的结构体*/

structindex

longposition;

index_t*next;

typedefindex_t*index_p;

/*6.存放目录数据域的结构体*/

structindexdata

5.5.2函数接口声明

5.5.2.1模块1

函数原型:

voidmodule1(void)

函数参数:

void

函数返回值类型:

函数功能:

使用文本词库进行单词查询

array_pload_memory_text(char*,array_p)

char*,array_p

array_p

文本词库加载到内存中,采用哈希表结构

word_psearch_word_text(array_p,char*)

array_p,char*

word_p

哈希表中查找单词

word_psearch_word_mytext(char*,char*)

char*,char*

自定义文本词库中查找单词

trans_pcreate_trans_node_text(char*)

char*

trans_p

生成解释结点

trans_pinsert_trans_node_text(trans_p,trans_p)

trans_p,trans_p

解释结点插到解释链表尾部

word_pcreate_word_node_text(char*,trans_p)

char*,trans_p

生成单词结点

word_pinsert_word_node_text(word_p,word_p)

word_p,word_p

单词结点插到单词链表尾部

intget_trans_num(trans_p)

int

获取某个单词的解释个数

voidprint_hash(array_p)

遍历哈希表

voidpri

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1