Linux下电子词典的设计与实现.doc

上传人:仙人指路1688 文档编号:2388005 上传时间:2023-02-17 格式:DOC 页数:39 大小:450.50KB
返回 下载 相关 举报
Linux下电子词典的设计与实现.doc_第1页
第1页 / 共39页
Linux下电子词典的设计与实现.doc_第2页
第2页 / 共39页
Linux下电子词典的设计与实现.doc_第3页
第3页 / 共39页
Linux下电子词典的设计与实现.doc_第4页
第4页 / 共39页
Linux下电子词典的设计与实现.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《Linux下电子词典的设计与实现.doc》由会员分享,可在线阅读,更多相关《Linux下电子词典的设计与实现.doc(39页珍藏版)》请在三一办公上搜索。

1、 毕业设计(论文)题目:Linux下电子词典的设计与实现学 生 姓 名 学 号 201022080223 班 级 通信102202H班 所属院(系) 电子信息工程系 指 导 教 师 2014 年 5 月 20日 Linux下电子词典的设计与实现摘要 随着嵌入式技术的发展,智能移动终端的普及,用户对数据处理和管理需求也不断提高,更多的用户群也越来越希望能对嵌入式产品中的数据进行更有效的管理,嵌入式数据库便是一个非常有效的工具。如何在智能终端中使用嵌入式数据库以及如何让嵌入式数据库在嵌入式设备中充分有效的使用有限的存储资源成为嵌入式系统研究的重要方向。本文的主要任务是对电子词典的设计,主要功能有英

2、译汉、汉译英、生词库储存等。本设计主要应用的技术有数据库、Qt、本设计用SQLite的B+树索引机制进行改进,将改进后的 SQLite与 Qt/Embedded相结合设计和实现智能终端中的电子词典。本设计的特点是操作简单、快速、实用性强。关键词:嵌入式,用户界面,数据库,B+树The Design and Implementation of Electronic Dictionary Based on LinuxAbstract With the development of embedded technology, the popularity of smart mobile devices

3、, users of data processing and management needs is also rising, more and more users want to be able to embedded products for more efficient data management, embedded database is a very effective tool. How intelligent terminal using the embedded database and how to make an embedded database in embedd

4、ed devices fully effective use of the limited storage resources has become an important research direction of embedded systems. The main task is to design electronic dictionary, the main function of Chinese Translation, Chinese to English, raw thesaurus storage. The main application of the technolog

5、y are designed database, Qt, this design SQLite B + tree indexing mechanism to improve the improved SQLite with Qt / Embedded combining design and implementation of intelligent terminal electronic dictionary. This design is characterized by simple, fast, and practical. KeyWords: Embedded,Qt,SQLite,B

6、+ tree目 录摘要IIAbstractIII第章 绪 论11.1 研究背景和意义11.2 数据库在电子词典中的应用1第2章 系统需求分析32.1用户需求分析32.2可行性分析3第3章 相关技术53.1 Qt/Embedded体系结构与框架53.2 Qt/Embedded的信号与槽机制53.2.1 信号与槽的连接与实现63.2.2 元对象编译器63.3 SQLite数据库73.4 SQLite的索引机制73.4.1 B+树的概念83.4.2 B+树查找83.4.3 B+树插入83.4.4 B+树删除9第4章 电子词典的设计与实现104.1 建立电子词典的开发与运行环境104.2 使用Qt/E

7、mbedded设计运用程序的方法104.3 电子词典的界面设计与实现114.4 电子词典的功能设计与实现124.4.1 系统的功能模块图124.4.2 功能的实现步骤12第5章 系统的界面实现155.1 主界面155.2 生词本界面155.3 添加单词界面165.4 编辑单词界面16第6章 电子词典设计中遇到的问题186.1 设计中文查询功能的问题186.2 音标正确显示的实现18第7章 总结19参考文献20致谢21附录22第章 绪 论1.1 研究背景和意义随着计算机技术的飞速发展,嵌入式系统已经成为该领域的一个重要方面,得到了更多的应用。“嵌入式对我们来说不再是一个陌生词,早已深入生活的每一

8、个角落,电子词典、自动取款机、电视机顶盒、PDA、MP4、智能手机、电子医疗仪器、电梯等等,嵌入式设备可谓说是在我们日常生活中处处可见。而且,随着智能移动终端的多样化,嵌入式技术快速发展,用户对管理的需求及数据的处理不断的提高,越来越多的用户渴望对嵌入式产品的数据进行更好的管理,嵌入式数据库可谓说是十分重要。电子词典是种将传统的印刷词典转成数码方式、进行快速查询的数字学习工具。电子词典以轻便易捷、查询快捷等特点,成为21世纪学生学习生活、社会人士移动办公的掌上利器。在中国,电子词典的主要目标客户是英语学习人群,应该说,这个人群庞大的基数和每年数以千万记的增长量,为电子词典市场提供了滚滚而来的商

9、机和极其广阔的发展空间。电子词典的设计就需要用到数据库,嵌入式数据库大多用于电子产品中,比如智能手机、PDA、车载设备等内存空间比较有限的嵌入式设备。由于嵌入式系统存储空间有限,所设计的产品需要对某种数据库处理数据时,则需利用的存储容量小,这样才能使效率更高。怎样让嵌入式数据库在嵌入式设备中更好的被应用及怎样在嵌入式设备中使嵌入式数据库更有效的利用存储资源成为电子产品设计及研究的重要方向。基于上述原因,对深入研究一种相对成熟、快速、简单易用和能改进空间利用率的电子词典具有重要的意义。1.2 数据库在电子词典中的应用随着移动计算机时代的到来,数据库技术随着计算机的发展不断的进步,嵌入式数据库的技

10、术已从初步的研究阶段步入应用阶段。数据库系统对嵌入式的操作系统的贡献为数据库的技术开辟了更广阔的发展空间。目前已经在移动平台、电子产品比如智能电子词典、数字电视机等领域有了广泛应用。随着用户对数据的管理要求及实时处理的不断提高,移动智能终端普及,嵌入式数据库的优越性越来越突出,得到了各个国家的青睐。各个研究机构都对嵌入式数据库展开了更进一步的研究。 在国内,北京网易研制的“有道词典”是网易有道推出的词典相关的服务和软件。基于有道搜索引擎后台的海量网页数据以及自然语言处理中的数据挖掘术。数据库在嵌入式操作系统中形成一个数据库环境,在电子词典的设计中嵌入式数据库主要是对其进行数据计算及数据存储管理

11、。它可以完成数据的查询、修改、增加、删除等功能。还有国内其他一些研究机构和公司已经推出了自己的嵌入式数据库系统或者正在进行着这方面的研究工作。第2章 系统需求分析2.1用户需求分析随着科学技术的不断提高,计算机科学日渐成熟,电子词典也越来越受到人们的欢迎。纵观传统的文本词典,不仅查询效率不高、不易携带,而且存储容量有限;与此同时,传统词典的单词印刷出错误码率高,同时内容越来越难以满足用户的需求。而电子词典与传统文本词典相比较,有着无法比拟的优越性:多种多样的检索方式、便利的查询窗口、灵活的显示界面和连续的参见功能,无一不体现这种知识媒体的智能化和人性化特色;电子多媒体在词典中的应用,更使得单调

12、、呆板的词典变得形象生动在词典中获取知识变得轻松和快捷。当今社会的发展使人们越来越清楚地看到单词查询方面的重要性,它直接决定查询效率与质量。所以电子词典软件将在当今个人单词查询中发挥越来越重要的作用。通过对目前软件市场的分析可知,大多的传统词典,有功能方面不能满足客户的需求。因此,开发这样一套多功能电子词典系统是一件很有必要的事情。2.2可行性分析 可行性分析的目的是使用最小的代价在尽可能短的时间里确定问题是否能解决,通过复杂系统的规模与目标,研究与此类似的系统后,我具体从下面几个方面考虑:(1) 技术上的可行性电子词典的开发已有一定的时期,而且有很多成功的实例,技术基础也已经非常雄厚,因而技

13、术上的准备应该不成问题。(2) 经济上的可行性由于所开发的是个电子词典,要求并不是很高,普通的计算机都可以实现,所以从各方面来说都是可行的。(3) 操作上的可行性本系统不要求使用者对开发工具有任何了解,用户仅需按自己的需求点击自己想要进入的界面,在查询模块里输入自己所需要查询的词汇,就可以得到自己所需要的与之相关的信息。(4) 结论通过各方面条件的调查和研究,对项目的可行性做出结论,电子词典项目的开发是可行的。第3章 相关技术3.1 Qt/Embedded体系结构与框架Qt/Embedded是著名开发商Trolltech的Qt库,它于2001年发明了嵌入式系统的Qt版本,是个针对嵌入式系统的应

14、用程序的框架与类库。由于Qt的便携性相当不错,很多基于Qt的Xwindow的程序可以很容易地移植到嵌入式系统。由于Qt/Embedded被发布在GPL条款下,所以有很多的嵌入式Linux开发人员研究Qt/Embedded系统,如摩托罗拉的Linux手机 “A780” 和“E680”使用的Qt/Embedded作为其图形用户界面。就像Qt,对于Qt/Embedded来说,它也是用c+编写的。虽然它会增加系统的资源消耗,但却为开发人员提供了一个清晰的程序框架,使开发人员快速适应,而且能轻松的编写自定义用户界面程序。由于Qt/Embedded是作为产品推出的,所以它有良好的技术支持和开发团队。这是利

15、用Qt/Embedded的开发来促进开发过程的,增加了产品的可靠性。综上所述Qt/Embedded具有一下特点:(1) 与Qt一样,有相同的API开发人员只需知道Qt的API,无需关心程序所使用的平台和系统。它具有良好的便携性。(2)Qt/Embedded不需要任何额外的图形库,拥有自己的图形引擎,底层的图形驱动frameBuffer可以直接被进行操作。(3) Qt/Embedded可运行在所有流行的CPU和平台上,与硬件平台无关。支持所有主要的嵌入式Linux,Qt/Embedded的基本需要。3.2 Qt/Embedded的信号与槽机制Qt的核心机制是信号和槽,为Qt的程序奠定好了基础。信

16、号和槽是一个高层次接口,用于对象之间的通信,也是其他工具包与之区别的重要之处。Qt自己定义的信号和槽,它是一种通信机制。它独立于标准的C/C+语言,因此要正确的处理信号和槽,必须使用一个被称为moc(Meta Object Compiler)的Qt工具,这是一个C+的Qt工具预处理程器,它是一个高层次的事件处理自动生成所需要的额外代码。信号和槽可以携带任何类型的参数和任何数量,它们是完全安全的类型,不会带来系统崩溃的危险。信号与槽构造了一个很大的组件编程机制,接收信号主要利用槽,槽是普通对象的成员函数。一开始一个槽不知道自己是否可以与任何信号连接。此外,一个对象成员并不是了解具体的通信机制。单

17、个的槽可以与很多信号进行连接,也可以是多个槽与单一的信号进行连接,还可以将单个信号之间进行连接。这样,当第一个信号传输系统时将立即启动第二个信号。 3.2.1 信号与槽的连接与实现当某一个信号的所有者或拥有者内部状态发生变化,信号由一个对象发送。这个信号只可以由定义过它的类及派生类进行传输。若一个信号被传输后,将立刻执行与其相关联的槽,就好像调用一个正常的函数。所有的槽先返回后,传输函数(emit)才返回。假若存在多个与一个信号相关联的槽,则发射该信号后,这些槽将一个个被执行,值得注意的是它们执行的顺序是不确定的、随机的。信号和槽的连接原理如图2.2所示。图2.2 信号和槽的连接原理3.2.2

18、 元对象编译器moc(meta object compiler) 即元对象编译器,它是用来分析C+文件中的类声明并生产C+代码,以便用于初始化元对象。所有链接到函数的指针以及全部信号和槽的名字都包含在元对象中。moc是信号与槽机制所必要的。元对象编译器读C+的源文件时,如果发现有Q_OBJECT宏声明的类,那么它就会生成另外一个C+的源文件,这个新生成的文件中包含有该类的元对象代码。元对象编译器并没有扩展#define宏定义或#include,它仅仅是跳过所有遇到的任意预处理指令。用元对象编译器生成的C+源文件必须与类实现一起进行连接和编译,或者用#include语句将其包含到类的源文件中。3

19、.3 SQLite数据库在2000年时,开发人员开发出一种小型的嵌入式数据库即SQLite。是一个自身就完全包含数据库引擎功能的小型的C语言链接库,它在嵌入式系统中很方便的可以使用。SQLtie对SQL92提供了大多数支持,它支持索引、视图、多个表、事务等一系列用户界面和驱动程序。速度非常快,易于使用,也提供了很多的数据库接口。这个库具有很强的凝聚力,它是完全开放的源代码可以应用于所有的领域。SQLite链接库的大部分接口的实现函数都能在main.c源文件中找到,为了避免和其它程序发生冲突,接口函数都以sqlite3为前缀。SQLite有自己的高度优化的分析器和生成器,它可以快速的生产出高效率

20、的代码,而且它的新颖设计对内存溢出有着特别的抵抗力。SQLite有以下特点:(1) 源代码完全开放,不管哪个界的用户都可以免费使用; (2) 不受外部的影响,相对独立;(3) 数据库是一个完整的,且储存在单一的磁盘文件中;(4) 附有很好的源代码,并且注释的很清楚,方便用户自己学习,而且准确率达到90%以上;(5) 当电源故障和系统崩溃之后,事务的操作仍是独立的、一致的、持久的;SQLite的应用程序界面非常好用,数据库的操作也非常简单。比如排序、删除、插入、修改、查询只需简单的三个用来获得数据和执行SQL的函数。使用C语言的应用程序界面需三个步骤:1.提供所需文件以及查询的模式以便调出sql

21、ite3 open()来与数据库连接,其中这里有两个参数,一个负责打开数据库的文件名,另外一个是用来返回数据库的。2.给出一个回调函数,SQLite执行回调函数(Callback)返回到数据库所获得的结果。3.执行sqtlite3_exec( ),将回调函数的指针和SQL查询语句作为函数参数进行传递。3.4 SQLite的索引机制对于电子词典的设计,查询的速度越快越好,这样我们就研究如何才能使查询单词的效率变得更高。sqlite3是使用优化的B树即B+进行结构索引。在关键字的顺序查找方面,数据库的效率得到大大的提升。这种索引可以进行多种方式进行查询,如随机查询、规范查询等。3.4.1 B+树的

22、概念(1) 有n棵子树的结点中含有n-1个关键字,每个关键字不保存数据,只用来索引,所有数据都保存在叶子结点。(2) 你的全部关键字的数据以及包含着所有关键字的记录指针都包括在叶子结点中,并且依据全部关键字的大小叶子结点自动连接。(3) 凡是非最末端的结点都可以看作是索引部分,他们中只含其子树(根结点)中的最大(或最小)关键字。3.4.2 B+树查找B+树有两种查找方法:1. 从根结点开始进行随机查找。2.从最小关键字起顺序查找。在查找时,若非最末端的结点的关键字等于给已知值时,并非终止,则是要继续查找直到叶子结点。其次B+树也可以通过由叶子结点所组成的链表来规范查找。3.4.3 B+树插入n

23、阶B树的插入操作在叶子结点上进行,假设要插入关键值a,找到叶子结点后插入a,做如下算法判别:1. 如果当前结点是根结点并且插入后结点关键字数目小于等于m,则算法结束;2. 如果当前结点是非根结点并且插入后结点关键字数目小于等于m,则判断若a 是新索引值时转步骤4后结束,若a不是新索引值则直接结束;3. 如果插入后关键字数目大于n(阶数),则结点先分裂成两个结点X和Y,并且他们各自所含的关键字个数分别为:u=大于(n+1)/2的最小整数,v=小于(n+1)/2的最大整数;由于索引值位于结点的最左端或者最右端,不妨假设索引值位于结点最右端,有如下操作:(1) 如果当前分裂成的X和Y结点原来所属的结

24、点是根结点,则从X和Y中取出索引的关键字,将这两个关键字组成新的根结点,并且这个根结点指向X和Y,算法结束;(2) 如果当前分裂成的X和Y结点原来所属的结点是非根结点,依据假设条件判断,如果a成为Y的新索引值,则转步骤4得到Y的双亲结点P,如果a不是Y结点的新索引值,则求出X和Y结点的双亲结点P;然后提取X结点中的新索引值a,在P中插入关键字a,从P开始,继续进行插入算法;4.提取结点原来的索引值b,自顶向下,先判断根是否含有b,是则需要先将b替换为a,然后从根结点开始,记录结点地址P,判断P的孩子是否含有索引值b而不含有索引值a,是则先将孩子结点中的b替换为a,然后将P的孩子的地址赋值给P,

25、继续搜索,直到发现P的孩子中已经含有a值时,停止搜索,返回地址P。3.4.4 B+树删除B+树删除也是在叶子结点上操作,当要删除叶子结点中最大的关键字,则在非终端结点中值可以无需删除,一直保持存在。若因为删除使结点中的关键字的个数小于n/2时,则B+树删除方法如下:(1) 被删除关键字所在的结点为叶结点,关键字数目大于或等于n/2,则只需要直接删去关键字即可;(2) 被删除关键字所在的结点为叶结点,关键字数目等于n/2-1,相邻的左右兄弟关键字数目至少有一方大于或者等于n/2,此时,如果右兄弟关键字数目大于或者等于n/2,则将右兄弟中最小的关键字向上移动到双亲结点中,然后将其中紧靠在向上移动的

26、关键字左边的一个关键字移动到被删除关键字所在的结点的最右边;否则,如果左兄弟的关键字数目大于或者等于n/2,则左兄弟中最大的关键字上移到双亲结点中,将紧靠在该上移关键字右边的一个关键字移动到被删除关键字所在的结点的最左边。这些做法类似于减法的借位运算。(3) 被删除关键字所在的结点为叶结点,关键字数目等于n/2-1,相邻的左右兄弟关键字数目均等于n/2-1,则从双亲借关键字补充,然后算法进入非叶结点的删除判断。第4章 电子词典的设计与实现嵌入式系统其中一个主要应用范围是电子产品,为了是用户使用方便,现在开发人员主要生产手持电子类产品。随着嵌入式技术的前景越来越光明及电子类产品越来越受人们的青睐

27、,对于所需产品的功能及美观提出了更多的要求。所以为了满足用户,本论文主要以设计电子词典为例,并且增加了应用功能以满足用户需要,本文使用Qt/Embedded和SQLite相结合设计了英语电子词典。它主要有三大功能:英汉查询、汉英查询、生词本增删词,下面将主要介绍这些功能的设计与实现。4.1 建立电子词典的开发与运行环境由于本论文开发电子词典的初衷是用于:如PDA、手机、车载设备等智能终端中,同时,Trolltech公司提供手机版和PDA版的Qtopia,其中手机版是商业版本,PDA版是免费版。因此本文选择在PDA版的Qtopia平台上发布应用程序。Qt/Embedded开放了源代码,为了开发嵌

28、入式Linux应用系统,使开发人员可以在GPL许可协议下随意的利用。程序要运行在Linux系统上,运行后可获得以下需要创建应用程序的包:(1) designer是专门设计窗口界面组件的应用程序。用它来最后生成file.ui文件和main.cpp文件;(2) qmake工具用来生成filepro文件;tmake是跨平台MakefiIe生成器。(3) uic是从XML文件生成代码的用户界面编译器。其主要作用是将file.ui文件生成file.h和file.cpp文件。使用这几个工具就可以对电子词典进行运行开发、编译、调试。4.2 使用Qt/Embedded设计运用程序的方法对界面设计工具Qt来说,

29、在设计的过程中常用的两种设计方法是:一种设计方法是采用图形化界面设计与源代码编写相结合的方式,可以用Qt desinger (Qt设计器)设计要求实现的界面,另一种方法是通过采用完全利用编写源代码来实现,这种方法是纯编码,要求完全编写main文件、头文件以及运用文件,相对于Qt来说,就是完成*.cpp和*.h文件。但是它们有各自的优缺点,比如:图形化界面设计方法,是根据自己的需求,通过改变组件的属性来完成。界面中所参与的信号/槽也是用信号/槽的属性窗口来设置。当界面设计好以后,就会自动生成一个不完整的main文件和*.cpp源文件,每个应用程序名称在信号槽设置中已定义,这时我们只需编写源文件中

30、没有的内容。这种方法最大的缺点就是受到源程序、图形界面的改变及Qt designer的限制的相互影响。面向对象语言的设计方法很容易使用,无需Qt desinger的限制,使用的程序或文档库中包含的信号/槽实施更容易。优点就是你可以根据自己的设计需要采取更好的优势资源。其次,因为这种方法没有现成的程序需要开发者自己编写所源代码,尤其是对一些已经存在在库中的组件,这就需要个人自己编代码来设置组件的属性,从而开发人员的工作量就会大大增加。又因为界面只有在整个代码运行编译后才能看见,所以这种方法对工作中的互动与发展速度产生不利影响。本论文电子词典的设计与实现利用了这两种方法的结合体,而且事实验证表明,

31、巧用纯编码和Qt designer的结合体可以很大的提高效率与速度。4.3 电子词典的界面设计与实现图形用户界面的编码是一件工作量非常大的事情,前面我们已经提到Qt/Embedded可以提供一个非常好的工具,它有自身的特点。Qt系统特定的界面开发工具是Qt Designer,它只是提供一个可视化界面编辑器不包括任何编辑器。Qt Designer将编辑完成的界面以XML其保存为ui文件,然后由专用的uic界面编译器将其转换为标准c+的源文件。在Qt Designer中,我们可以拖动或通过点击的方式,适当的在空白表单添加一些输入框和按钮等小部件。这样Designer工具可以自动编写和维护代码。利用

32、Qt Designer对C+程序进行编制的具体操作如下是:(1) 窗口的建立,并且根据应用的需要添加控件在窗体中。Qt将会把窗口的建立保存为ui文件;(2) 使用Qt提供的uic工具将ui文件转换为h和cpp文件,控制的动作则需要手动添加。(3) 应用程序建立pro工程文件需要使用program工具,工程建立Makefile文件利用tmake工具为主。(4) 运行make,即可得到所需的可执行文件。为了使用户操作方便简洁,在电子词典的界面设计时在一个窗口中设计了几个标签,每个标签是一个功接口,里面包括行文本框、按钮、编辑框等。4.4 电子词典的功能设计与实现主界面加入生词本进入生词本退出添加单

33、词编辑单词删除单词保存单词4.4.1 系统的功能模块图图4.1 系统的功能模块图(1)主界面模块:进行生词加入生词本、进入生词本、以及退出程序。(2)加入生词本:加入一个生单词,并进行保存。(3)进入生词本:对加入的生单词进行详细的解释。(4)添加单词:对新单词进行添加。(5)编辑单词:对已经添加过的单词进行重新编辑。(6)删除单词:对没用或者已经很少用到的单词进行删除操作。(7)保存单词:对新添加的生单词或编辑过的旧单词进行保存。4.4.2 功能的实现步骤具体实现上述功能需要具备单词词库、Qt/Embedded开发环境、SQLite。具体实现步骤如下:1. 创建数据库文件大多数SQL数据库引

34、擎是作为一个单独的服务终端进程被执行。使用数据库SQLite时,如果需要访问数据库中的程序,我们直接可以从磁盘中的数据库文件里读写,没有中间的服务终端进程。所以,我们在调用数据库SQLite时必须创建数据库文件,依据数据库的特点,我们可以根据以下的过程进行创建数据库文件:(1) 调用SQLite的函数sqlite3 open()创建一个数据库文件 (2) 创建表。在英语词典中通常需要具备英语单词、单词的解释这几项,所以在此需要创建一个words表。(3) 将词库倒入数据库文件。在倒入时是以行为单位读取的,每一行的“单词、解释”都是用空格分隔。最后调用函数即可创建一个完整的数据库文件。若上面这三

35、步完成后,我们就成功的建立起数据库文件,这将为后面的章节奠定了扎实的基础。2. QtEmbedded与SQLite的连接我们可以通过对Qt designer设计的界面编译后生成的.cpp文件和工程文件的修改的方法来实现Qt/Embedded与SQLite的连接。虽然这种方法比较容易于实现,但是利用这种方法效率会大大的降低以及应用程序的易用性和可读性,对于嵌入式应用程序的可移植性大大降低。本文采取面向对象的编程思想和中间件意识形态之间的连接。整个过程实际是用SqliteProcess这个类对SQLite本身进行抽象,在这里不再详述整个程序的代码。这样的好处在于:(1) 可扩展性良好; (2) 系

36、统的质量及可维护性得到了提高; (3) 可移植性好,其它的数据库也方便使用;(4) 简化整个程序。若果Qt/Embedded与数据库SQLite连接后,电子词典的基本功能就可以通过嵌入式系统的信号与槽机制来实现。先定义了三个成员函数connect()在查询中,其分别是:connect(ListBoxWords,SIGNAL(highlighted(const QString&),this,SLOT(ListBoxWordsClickSlot(const QString&);connect(PBtSearch,SIGNAL(clicked(),this,SLOT(PBtSearchPress()

37、; connect(LineEditInput,SIGNAL(textChanged(const QString&),this,SLOT(1ineEditChangeSlot(const QString&)。第一个函数是在组件编辑框中点击某个单词。槽的设计中是想点击表中的单词,如果匹配只在文本框里显示其意思。该函数实现思想也与前面的槽设计相类似。使用以上几个函数,我们就可以实现词语的查找功能。第二个函数是点击图形界面中的查询按钮组件发送信号,由一开始定义的槽PBtSearchPress()来接收信号。整个槽函数的实现思想是执行语句SQL获得数据的行和列,用行和列的乘积配置循环查找结束条件,如果

38、输入的内容与从数据库里找到的内容匹配,就将与它相对应的意思显示到文本框中。槽的设计中是在组件编辑框中输入单词点击查询按钮,将相对应单词意思显示在文本编辑框中。第三个函数是在组件编辑框中输入,槽的设计中是列表编辑框的内容随着行编辑框的内容变化而变化。此函数的主要功能是插入内容到列表中。它实现的思想与前一个槽函数的实现相似。为了使用户使用的更加方便,我们还为之设计了索引功能。我们可以输入一个单词的开头字母,通过索引查找自己想要的单词。这个设计主要是方便于单词记得不太熟的用户,这样既可以查到你所要的单词,也会节约很多宝贵的时间。第5章 系统的界面实现5.1 主界面 主界面是系统的首页面,在此页面能够

39、直接进行生词的添加,也可以进入到进入生词本模块进行生单词的添加,此页面还可以通过网络在线词库索引实现英汉查询等操作。具体界面如下图5.1所示。图5.1 系统主界面5.2 生词本界面 生词本界面是主要进行生单词的添加,包括添加的生单词,所添加的生单词的解释,以及添加生单词的具体时间。在此页面下可以进入到添加单词界面进行具体的生单词的添加。具体界面如下图5.2所示。图5.2 生词本界面5.3 添加单词界面添加单词界面主要是进行生单词的添加,包括具体的生单词,以及生单词的详细解释。还可以对新添加的生单词进行保存和清空等操作。具体界面如下图5.3所示。图5.3 添加单词页面5.4 编辑单词界面 编辑单

40、词界面主要是对添加过的单词进行更新以及修改的操作,此外还可以清除本页面上正在编辑的单词。具体界面如下图5.4所示。图5.4 编辑单词页面第6章 电子词典设计中遇到的问题6.1 设计中文查询功能的问题前面我们主要讲英汉查询的实现方法,顺理成章我们考虑汉英查询的功能,按理说英汉查询和汉英查询相类似,但是我们需要解决的问题是如何识别汉语输入以及输入的内容与数据库中的内容相匹配。我们可以把中英文的查询设计放到同一个页面,这样可以让用户使用起来比较方便。所以我们应该对查询的时候,判断数据类型是否与之匹配。如果有ASCII码值和空格存在于数据中,则表示文本框中输入的是英文。假使完全没有ASCII码值和其他

41、字符在数据库中,则表示文本框中输入的是中文。若以上问题解决掉,我们就可以实现中文查询功能。经过指导老师的帮助在最后终于实现。6.2 音标正确显示的实现在我们日常生活中,我们所见到的电子词典在汉译英查询时,在英文出现的同时后面会出现英文单词的音标。所以音标对于电子词典设计来说也是非常重要的。因为由于在Qt/Embedded中对于一些词组无法识别音标,这就需要我们进一步研究和探讨。这里不再详述,今后定会实现这一功能。第7章 总结通过这段时间准备毕业设计,使我学到了很多以前没有学过的知识,也体会到很多。首先,我明白其实认真学习一门语言并不困难,关键是寻找好的学习方法和途径。一种好的学习方法能便于快速

42、掌握,熟练运用语言。其次,所谓好程序是要符合各种严密要求的。可读性、容错性、可维护性、高效性等要求。其实大部分功能是比较容易实现的,但其后的测试、修改、完善、注释和现在的编写系统文档要用不少的时间。再次,这次的程序训练培养了我们实际分析问题、编程和动手能力,使我们掌握了程序设计的基本技能,提高了我们适应实际,实践编程的能力。最后,我明白了编程是需要细心和耐心的,特别是在调试的时候,查找错误是很麻烦的,所以我们要养成一个良好的编程习惯,注意标明注释。程序设计是一件很复杂的事情,需要我们耐心的对待。在程序设计过程中有一些我们没学过的知识,但大部分我们学过,那些没学过的知识我们只要看下书就很容易弄明

43、白。在本次电子词典设计与实现的过程中遇到了很多问题,首先由于个人能力有限,对C+编程不熟悉,对于许多的算法和数据库不够熟悉,许多标准对话框不了解,导致在运行过程中遇到了很大的困难。比如C语言编程的程序与Qt界面链接不起来。经过老师的指导与帮助,在最后紧要时刻才实现链接。这次论文主要以电子词典的设计与实现为主,在算法上面引用了数据库的B+树索引机制,借鉴了嵌入式数据库SQLite的优点。改进了SQLite的B+树索引机制,改善了空间利用率低的问题。最后利用改进后的索引机制的SQLite与Qt/Embedded结合来设计与完成电子词典。具体的工作总结如下:(1) 通过对电子词典的设计,了解了很多关

44、于电子词典的知识。由于所学知识不精,也遇到了一些难以解决的问题。(2) 在嵌入式数据库SQLite中,在研究与改进B+树索引机制的的基础上,也研究了如何解决B树的索引机制空间利用率较低的问题,分析了改进B+树索引机制的主要实现思想,为本论文的实现奠定了扎实的理论基础。(3) 深入的学习和研究了Qt/Embedded和SQLite的各种开发技术,为电子词典的设计与实现奠定了理论基础。我们还分析了电子词典的开发与运行环境、数据库文件的创建、用Qt designer进行界面设计、Qt/Embedded和SQLite的连接以及应用程序功能的实现。参考文献1 丁蓉.嵌入式数据库技术研究D.西北工业大学,

45、2002.2 D Hughes.ZIP-RTDBMS.A Real-time Database Management System.Technical Report PRISTG-93-011M,1994.16.3 陈霞.“小金灵”移动数据库同步机制的设计与实现D.中国人民大学,2001.4 祁献鹏.基于嵌入式Qt中文GUI平台的设计D.解放军信息工程大学,2002.5 徐广毅,张晓林.嵌入式Linux系统中GUI系统的研究与移植单片机与嵌入式系统应用J,2004.1114.6 薛贺.嵌入式数据库技术研究D.西北工业大学,2002.7 Trolltech Qt/embedded.Qt/Embe

46、dded White PaperM,2003.192196.8 Yasushi Saito.Optimistic Replication AlgorithmsM.Teeh Report Universty of Washington,2000.1114.9 解超,李善平.基于Linux的嵌入式GUI.计算机工程与应用M,2003.135139.10 E Pitoura,B Bhagrava.Revising Transaction Concepts for Mobile Computing.Proceeding of The IEEE Workshop on Mobile System and Applications.Santa Cruz.CAM,1994.164167.11 徐广毅,张晓林,崔迎炜等.Qt/Embdedde在嵌入式Linux系统中的应用M.单片机与嵌入式系统,2004.1417.12 倪继利.Qt及Linux操作系统窗口设计M.(北京)电子工业出版社,2006.132137.13 G D Walbom,P K Chysanthis.Transaction Processing in PRO-MOTION.Proeeeding of 1999 ACM Symposium on applied computingM,1999.149162.14 王存健

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号