电子辞典课程设计DOCWord文档下载推荐.docx
《电子辞典课程设计DOCWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《电子辞典课程设计DOCWord文档下载推荐.docx(52页珍藏版)》请在冰豆网上搜索。
一个词可能有多个解释,解释均存储在一行里,行首固定以“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