电子词典

下面是项目要求的描述:
【项目需求描述】
一、单词查询
给定文本文件“dict.txt”,该文件用于存储词库。词库为“英-汉”,“汉-英”双语词典,每个单词和其解释的格式固定,如下所示:
#单词
Trans:解释1@解释2@…解释n
每个新单词由“#”开头,解释之间使用“@”隔开。一个词可能有多个解释,解释均存储在一行里,行首固定以“Trans:”开头。下面是一个典型的例子:
#abyssinian
Trans:a. 阿比西尼亚的@n. 阿比西尼亚人;依索比亚人
该词有两个解释,一个是“a.阿比西尼亚的”;另一个是“n.阿比西尼亚人;依索比亚人”。
要求编写程序将词库文件读取到内存中,接受用户输入的单词,在字典中查找单词,并且将解释输出到屏幕上。用户可以反复输入,直到用户输入“exit”字典程序退出。
程序执行格式如下所示:
./app –text
-text表示使用文本词库进行单词查找。
二、建立索引,并且使用索引进行单词查询
要求建立二进制索引,索引格式如下图所示。将文本文件“dict.txt”文件转换为上图所示索引文件“dict.dat”,使用索引文件实现单词查找。程序执行格式如下:
./app –index
-index表示使用文本词库dict.txt建立二进制索引词库dict.dat
./app –bin
-bin表示使用二进制索引词库进行单词查找。
三、支持用户自添加新词
用户添加的新词存放在指定文件中。如果待查单词在词库中找不到,则使用用户提供的词库。用户的词库使用文本形式保存,便于用户修改。程序执行格式图所示。
./app 词库选择选项 -f 用户词库文件名
词库选项为-test1,或者-test2,表示使用文本词库或者二进制索引词库。-f为固定参数,用来指定用户词库文件名。


项目需求分析:
这个项目分为三个部分,第一部分是通过读txt文件,将文件中的内容拆分写入链表,通过与链表中的内容进行比较找到正确的单词,打印出来解释即可。第二部分是建立索引,将txt文件中内容按照上图的格式写入dat文件中。建索引,将单词与该单词在dat文件中的位置绑定,查到索引中某个单词的位置,相应的打开dat文件,直接按照位置读出该单词的信息即可。第三部分是支持用户自己添加和使用用户自己的文件进行查询,前两部分完成之后,这一部分的工作就很简单。用户添加单词就是读用户手动输入的单词信息,按照要求的格式写入txt文件或者dat文件中去。使用用户自己的文件进行查询就是将用户指定路径的指定文件,按照一、二两部分的功能再走一遍。
程序设计:

第一部分程序设计:
1.设计链表结点,结点包括单词(一位数组),翻译个数(int整型),翻译(二维数组)
2.设计计算文件中单词个数的程序,读txt文件,判断“#”个数,计算出来链表的长度。
3.设计读txt文件中内容到链表的程序,读txt文件,单词和翻译是两行,因此每两行读一次,一个单词的所有信息插入一个链表的结点。读txt文件的时候,先把一行内容全部读到一个临时缓存数组中,根据是“#”还是“T”来判断是单词还是翻译。如果是单词,直接将缓存数组中的字符串赋值给链表节点中的单词内容,如果是翻译,先根据“@”判断有一个翻译,分别赋值给链表节点中的翻译数组。
4.设计查询英语单词的程序,用户输入单词,根据用户输入的单词与链表中的单词进行一一对比,如果找到相同的单词,打印出该单词的信息,如果没有,提示用户没有要查询的单词,询问用户是否添加该单词,添加单词第三部分会提到,这里不细说。
5.设计查询汉语单词的程序,用户输入汉语意思,根据用户输入的汉语意思与链表中的翻译进行对比,如果找到相同的汉语,输出该汉语对应的英文单词即可,如果没有,可以提示用户是否要添加新单词。
第一部分的设计主要读文件和拆分文件,这里读写文件都是用流的方式来进行的。经过实践,我觉得这一部分中,打开文件用fopen函数,一行一行读文件用fgets函数,字符串的比较用strcmp函数。单词翻译有多个,通过分隔标志“@”将翻译分割的时候,用strtok函数,复制字符串用strcpy函数。

第二部分程序设计
这一部分我觉得用两个结构体数组比较妥当,要写入文件,可以直接写入结构体,一个结构体数组中存单词的所有信息,这个数组存放从txt文件中读出来的数据,然后写入到dat文件中。另外一个结构体数组作为索引,存放单词和单词在dat文件中的位置,查单词的时候直接插索引,找到单词定位单词在dat文件中的位置,直接打开文件,读单词内容打印出来。
第三部分程序设计

第三部分的程序设计中,用户添加单词要与第一二部分的程序进行结合,如果第一二部分查询过程中没有查到要查的单词,用户可以输入单词的信息,然后将用户输入的单词信息写入txt或者dat文件中。使用用户提供的文本进行查询就是修改第一二部分的代码,只不过打开文件是用户提供的文件而不是默认的词典文件。
具体的代码还有分块整理完成,明天整理完之后,再完善这一篇博客。

 

posted @ 2017-03-26 22:59  杨静远  阅读(666)  评论(0编辑  收藏  举报