zoukankan      html  css  js  c++  java
  • 电子词典

    下面是项目要求的描述:
    【项目需求描述】
    一、单词查询
    给定文本文件“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文件中。使用用户提供的文本进行查询就是修改第一二部分的代码,只不过打开文件是用户提供的文件而不是默认的词典文件。
    具体的代码还有分块整理完成,明天整理完之后,再完善这一篇博客。

  • 相关阅读:
    canvas制作简单动画
    jQuery 2.2 和 1.12 新版本发布
    jquery实现简单鼠标经过图片预览效果
    js深入理解"闭包"
    js判断一个变量是否为数组的解决方案
    js+css:43种常见的浏览器兼容性问题大汇总
    js判断当前操作系统
    js判断是否微信浏览器打开
    h5connect.js 腾讯云视频点播使用指南
    Docker入门书籍
  • 原文地址:https://www.cnblogs.com/Mr--Yang/p/6624576.html
Copyright © 2011-2022 走看看