基于Linux的电子词典的系统设计与实现设计论文.docx
- 文档编号:527975
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:44
- 大小:412.20KB
基于Linux的电子词典的系统设计与实现设计论文.docx
《基于Linux的电子词典的系统设计与实现设计论文.docx》由会员分享,可在线阅读,更多相关《基于Linux的电子词典的系统设计与实现设计论文.docx(44页珍藏版)》请在冰点文库上搜索。
本科生毕业设计(论文)
题目 基于Linux的电子词典的系统设计与实现
摘要
现代社会的信息交互需求将全人类推向一个新的台阶。
物联网,云计算等新兴技术应育而生,现代人对于信息的依赖根深蒂固。
本文的研究主要集中于利用先进的BSDSocket技术,将原本功能较为单一的电子词典从过去的单进程,单用户,平台依赖性转换为实现多进程,多用户,多平台的电子词典查询系统。
本文将剖析现有的通信机制,利用tcp/ip技术,合理改善和优化信息读写模式,实现一个较为高效,安全,多用户并发以及多平台通用的信息管理架构。
本文需要多进程模块,实现多用户多任务,这部分需要利用linux进程以及
TCP并发服务器模型;为了实现电子词典的收集与存储,这部分需要sqlitec/c++
数据库的开发;同时为了实现多平台的查询管理,此部分需要利用html以及boa网页服务器实现web的人机界面;也可以引入android的手段,实现手机终端对系统的管理与控制。
安装了VMwareWorkstation9虚拟机,搭建好了UbuntuLinux操作系统,包括交叉编译环境的建立、BootLoader的移植、内核的配置以及根文件系统的制作。
关键字:
SQLite,TCP并发服务器,Socket,Linux操作系统
ABSTRACT
Informationexchangeneedsofmodernsocietywillmankindtoanewlevel.Things,cloudcomputingandotheremergingtechnologiesshouldbeeducationandhealth,themodernrelianceoninformationentrenched.ThisstudyfocusedontheuseofadvancedBSDSockettechnology,theoriginalsinglefunctionofelectronicdictionariesfromthepastasingleprocess,singleuser,multi-platformdependenciesconvertedtoprocess,multi-user,multi-platformelectronicdictionarylookupsystem.Thisarticleanalyzestheexistingcommunicationmechanism,theusetcp/iptechnology,reasonableimproveandoptimizetheinformationread-writemode,toachieveamoreefficient,secure,multi-userandmulti-platformcommoninformationmanagementinfrastructure.
Thisarticlerequiresmulti-processmodule,multi-usermulti-tasking,thispartoftheprocessneedtouselinuxandTCPconcurrentservermodel;electronicdictionaryinordertoachievethecollectionandstorage,whichispartoftheneedsqlitec/c++
Databasedevelopment;atthesametimeinordertoachievemulti-platformquerymanagement,thissectionneedtousehtmlandboawebserverimplementationswebofman-machineinterface;meansandroidmayalsobeintroduced,toachievemobileterminalofthesystemmanagementandcontrol.
VMwareWorkstation9installedvirtualmachine,buildagoodUbuntuLinuxoperatingsystem,includingtheestablishmentofcross-compilerenvironment,BootLoadertransplantation,kernelconfiguration,andtherootfilesystemofproduction.
KeyWords:
SQLite,TCPconcurrent server,Socket,Linuxoperatingsystem
目录
第1章绪论 1
1.1研究背景 1
1.2选题意义 1
第2章相关技术 2
2.1Linux操作系统结构简介 2
2.2Linux内核体系结构 3
2.2.1进程管理 3
2.2.2内存管理 3
2.2.3虚拟文件系统 4
2.2.4网络协议栈 4
2.2.5设备驱动程序 4
2.3Ubuntu系统安装及基本开发环境搭建 4
2.4嵌入式多进程开发与进程间通信 6
2.4.1进程的概念 6
2.4.2进程的创建 7
2.4.3进程间的通信 7
2.4.4套接字通信 8
2.5TCP并发服务器模型 8
2.6SQLite数据库简介 9
2.6.1SQLite的体系结构 9
2.6.2SQLite开发技术 11
2.7Makefile总述 11
2.7.1Makefile简介 11
2.7.2调试makefile 12
第3章电子词典的功能设计与实现 13
3.1建立电子词典的开发与运行环境 13
3.2电子词典的功能与实现 13
3.2.1系统的主要模块图 13
3.3功能实现步骤 14
第4章电子词典在Ubuntu环境下的实现 15
参考文献 19
致谢 21
附录 22
1.主函数代码 22
2.用户注册代码 26
3.用户登录代码 27
4.单词查询代码 31
第40页
本科毕业设计(论文)
第1章绪论
1.1研究背景
随着电子技术、计算机技术等各种科学技术的飞速发展,芯片等半导体器件造价越来越低,计算机从科学研究的领域逐渐进入普通民用领域,各式各样的计算机系统也出现在大众的面前,作为计算机系统的嵌入式系统也得到了普及,嵌入式设备对普通百姓也在不是什么新奇的,在很多方面都已经进入了我们的生活中的各个角落,如嵌入式技术的深入发展,智能移动终端的多样化,并且用户需求不断扩大,更多的用户群体渴望对嵌入式产品中的数据进行高效率的管理,嵌入式数据库则显得尤为重要。
自从21世纪以来传统的英语学习已经不能够满足大众对英语的需求,书本的内容知识更新缓慢,还有携带不方便等各种缺点。
什么是电子词典,电子词典是新世纪的产物是新型的数码产品,不同于书籍类的产品,古老的书本有它的韵味,但是对于工具手册来说没有电子词典便利,电子词典是新时代的宠儿,不仅上班族用它,学生也用它,效果很显然应用的范围非常之广大。
目前为止电子词典面向的客户是学习英语人群,此人群日积月累不断增长,因此电子词典为中国市场带来了巨大的商机。
当我们设计一款电子词典的时候需要很多知识,数据库就是其中要用到的一个知识,嵌入式数据库充分利用到电子类的产品领域里,像一些数据采集、图书馆借书系统、智能仓储、自动取款机、收银机、电子词典等等,由于嵌入式系统的存储空间十分有限,所以当设计的产品需要对数据进行处理的时候,为了更加高效,正需要利用存储量小的特点。
对于怎样让嵌入式在电子设备中更完好的应用,是我们需要研究的重要方向。
1.2选题意义
自从21世纪以来传统的英语学习已经不能够满足大众对英语的需求,书本的内容知识更新缓慢,还有携带不方便等各种缺点。
计算机网络技术的发展,计算机辅助语言已经十分成熟了,电子词典也逐渐受人喜爱,传统的词典,不仅容量小,不易携带,且查询效率还很低。
传统词典由于印刷等原因出错率就高,电子词典与传统词典相比,其优势就足以显现出来,多种多样的检索方式,便利的查询窗口,灵动的界面,在单调呆板的书籍词典面前,无疑更受人喜爱。
所以,开发这样的多功能词典是一件极为必要的事情。
第2章相关技术
2.1Linux操作系统结构简介
Linux内核是Linux操作系统的重要组成部分,等于Linux操作系统的心脏。
Linux内核是所需的软件集合,构成一个完整的Linux操作系统,结构如图2-1所示,一共有四层,共同组成了操作系统的机构,第一层的本质是不被系统所包含的,因为它是比系统的级别高,在其头上运行着,作为使用者来说是通过此层获得所需要的功能的;第二层是一个接口层,通过接口达到和内核达到一个匹配,如果匹配系数高,则完成对接的功能;第三层为内核层,是整个系统的关键所在,该层负责管理系统中程序的运行、内存和外存的使用、网络数据收发以及外部设备请求等。
第四层是与硬件相关的驱动程序层,依赖于具体的硬件,该层屏蔽掉各个硬件的特性,为内核层提供一个统一的接口。
每一层之间都存在相互依赖的关系,都是利用底层提供的服务、完成本层的功能、同时还为上层提供服务[1]。
内核
内核空间
应用程序/C语言
用户空间
系统调用
驱动程序
硬件
图2-1Linux操作系统架构
要达到提高系统的安全性与健壮性目的,所以计算机科学家把系统空间被设置成了User空间和Kernel空间,User空间一般就是指用户级别范围的程序代码运行的所在的空间,如QQ、WPS等处于User空间.在系统架构的角度考虑,Kernel空间在User空间的下面,意思就是说Kernel空间是User空间的基础,Kernel空间通常包括三个基本方面:
供用户级别调用函数接口的POXIC、调度系统资源的内核、屏蔽硬件细节的驱动程序等。
会产生警告操作的程序代
码只准在Kernel空间执行。
一般为了完成用户的一次函数调用任务目标,系统会根据情况在User空间和Kernel空间转换多次。
2.2Linux内核体系结构
一个拥有内存和进程管理、虚拟文件系统、驱动程序、网络协议和体系结构六大部分构成了linux的内核,以该内核为核心的我们用用中最重要之一的
linux管理着系统的所有资源。
内核(Kemel)是整个系统的心脏。
Linux内核的体系结构如图2-2所示。
系统调用接口
文件系统
进程管理
内核
与系统结构相关的代码
驱动程序
硬件
网络协议栈
内存管理
图2-2Linux内核体系结构图
2.2.1进程管理
进程管理的主要任务是协调各个进程对CPU的使用权,包括进程的创建
(fork,exec)、进程的终止(kill,exit)以及进程间的通信(signal/POSXI机制)、调度。
进程管理的相关源代码所在的目录的kernel子目录下。
2.2.2内存管理
在内存中会有很多进程处于游离状态,四处散乱,这个时候就需要管理着对其进行管束,达到祥和的局面,内存管理有多个方面,一对一的内存对照,和源代码无关的被除去,有关的留下并且利用。
内存管理的相关源代码所在目录的/mm子目录下。
2.2.3虚拟文件系统
每个文件都会有其不想被发现的一面,虚拟文件系统最只要的任务就是讲各种文件掩盖到同一个端口。
文件系统的源代码在源代码所在目录的fs子目录下。
2.2.4网络协议栈
网络协议栈的主要任务是实现每一种可能的网络传输协议的支持,为用户提供网络访问接口。
内核中网络源代码在代码所在目录的net子目录下。
2.2.5设备驱动程序
设备驱动程序的主要任务是把内核其他子模块的服务请求转化为特定设备控制器能够理解的语言、完成服务功能。
这一层把设备的具体特性掩盖了,为其他子层提供统一的设备操作接口。
Linux驱动程序在源代码所在目录的
drivers子目录下,这个目录又分为各种支持的设备的子目录,如
bluetooth、serial等[2]。
2.3Ubuntu系统安装及基本开发环境搭建
VMware Workstation是一个类似手机里的APP,这款软件是用来模仿
windows系统的电脑。
我们便可以在这个仿真的电脑上安装Ubuntu系统。
运行VMwareWorkstation软件,单击File->NewVirtualMachine进行创建虚拟机,如图2-3所示:
图2-3创建虚拟机
在虚拟机中添加Ubuntu镜像,如图2-4进行操作:
图2-4添加Ubuntu镜像
虚拟机的建设就是这么多,应该还是很容易的吧,Ubuntu镜像也加载成功,下一步就是Ubuntu操作系统的建立与安装了。
单击”Power on this virtual
machine”开始安装Ubuntu系统如图2-5所示:
图2-5安装Ubuntu系统
安装之后如图2-6所示:
图2-6Ubuntu平台界面
2.4嵌入式多进程开发与进程间通信
2.4.1进程的概念
Linux是可以同时执行好几个任务、可以同时运行多个任务的操作系统。
也正是由于此操作系统的这种特性,使得用户能够一次进行多个作业且可以实现作业间的任意切换。
这个操作系统还支持多用户操作。
现在在使用的操作系统中有相当一部分都是只有一个CPU和一个内存的,但是在同一个系统却有可能有多个二级存储磁盘和多个输入输出设备。
这就为我们拓展操作系统的性能提供了可能性。
作为计算机最关键的操作系统,它是来帮助用户来管理,使用计算机的所有资源的[3]。
将一些机器的底层操作转化成人类可以轻易接受的操作方式。
例如:
打印、邮件和文件管理等等所有计算机的操作任务都可以由操作系统来完成。
操作系统在处理某一项任务时,首先会对任务的优先级进行判断,继而可以达到人性化的处理各个任务的目的[4]。
在判断好各个任务的优先级之后就会根据各个任务的优先级来进配计算机的资源,也就是我们所说的时间片,给各个任务分以一定长度的时间片来处理相关任务。
(这里的时间片只是一个形象化的说法,其实就是一个一个特别短的时间,短到微秒的量级,也就是一瞬间,虽说只有一瞬间,但是以今天的计算机的处理能力来说,也足以处理掉我们日常所需要处理的任务了。
)也就是说,我们所要处理的任务就会像我们平时排队一样,将一个个任务按照它们的优先级进行排队,然后一个个的按顺序进行处理,处理完就将这个任务从列队中剔
除,如果在给定的时间片内并没有将任务处理完,则也要终止该任务的处理,处理下一个任务。
而这个还没有被处理完的任务则要被排到队列后,等下次轮到在接着处理此任务。
就这样处理所有任务,直到处理完队列中的所有任务。
本文所说的Linux与上述所说的操作系统虽说在总体上是相一致的,但是
Linux作为一个有生命力的操作系统被众多用户所使用,是拥有一些它本身所具有的不一样的特点的[5]。
如:
在Linux中,将所有的任务,不管是什么类型的任务,都称之为进程。
而在Linux处理进程的时候就比较简单粗暴,它根本不会去关心这些任务是如何被处理的,计算机的资源是如何被分配的。
它所关注的是以我们使用者为本位,如何能够使得我们更好的掌控我们所要完成的任务,如何让任务的执行按照使用者的意志来,这个才是Linux的关注的。
2.4.2进程的创建
进程在执行过程中,可以通过系统函数内部使用的方式来生成多个新的进程[6]。
不同的操作系统有不同生成新进程的方式,而Linux系统有两种独特的生成方式:
(1)通过调用fork()函数,将会在父进程中生成子进程,子进程则完全复制了父进程的所有资源,它们唯一的区别就是PID;
(2)通过调用exec()函数用来启动其他进程使之代替当前的进程所要完成的任务。
2.4.3进程间的通信
进程间通信(InterProcessCommunication,IPC)有以下几种方式:
(1)信号量(Semaphore)
信号量的功能就是用来形成一种进程(线程)间的同步机制。
信号量是一种变量,被保护的,只能通过wait、signal来访问。
(2)管道(Pipeline)
管道是linux最初支持的IPC方式,它有两种形式:
(1)一个被称为无名管道,它是半双工的,临时的
(2)另一个被称为有名管道,它又被称为FIFO,它是有系统权限的,不删除的话,会一直存在在系统中。
在管道通信中,发送进程通过字符流的形式把数据送入管道,从而实现通信。
(3)信号(Signal)
信号是UNIX系统最早的PIC方式之一。
操作系统通知某一进程发生了什么时间是用信号来传递的;进程若接收到,就可以通过不同的方式来处理,一是可以采用默认的处理方式,即进程中断或退出,二是忽略该信号。
(4)共享内存(SharedMemory)
我们计算机中的内存是有限的,我们要高效的利用我们有限的内存,为此我们提出了共享的内存的处理方法[7]。
所谓共享,就是说我们的内存可以被多
个进程访问。
(5)消息队列(MessageQueue)
在计算机间的通信中,我们常常为信息传递中的信息量太少而烦恼,为了解决这个问题,我们提出了消息队列的方法。
该方法是将这些消息连成一个链表,而这个链表有一个非常好的特性就是可以被多个进程多访问,从而在提高了信息传递量。
(6)套接字(Socket)
通过Socket我们就能在不同的PC之间的或者不同的程序之间数据交换[8]。
Socket是进程间数据交换的端点,其他进程可以通过Socket链接、访问和进行数据的交换。
2.4.4套接字通信
进程间的消息传递是有其端点的,这个端点我们将其命名为套接字,不同进程之间的连接、消息传递就可以通过该端点来进行。
从Unix操作系统,套接字接口的概念被引入,这是种技术不仅是全新的,还扩展了管道的概念。
形象的说,一个套接字就类似于一扇门。
一个网络通信程序被设计,其中所有的程序都是依靠套接字来进行发送和接收消息的,所以套接字在计算机网络中覆盖率非常广。
通常很简单的就可以使用套接字思想,客户端与服务端之间的链接用的就是上述方法来实现的。
连接建立之后就可以进行客户端与服务端的数据传送[9]。
程序员在开发IP/TCP程序的时候定义了很多函数等来支持Socket接口,一次该接口可以很好的支持相关应用程序之间的通信[10]。
该接口都是有各自一个唯一的编号的,这些编号大大的方便了我们来使用该接口,从而很容易、很清晰的实现我们所要处理的进程之间的连接,从而实现它们相互之间的通信。
2.5TCP并发服务器模型
流式套接字的服务器进程和客户端进程必须先建立好连接在通信之前[12]。
首先,服务器用Socket创建一个套接字,将次操作资源分配给该服务器,
所以其他进程都不能对它访问。
其次,我们需要给每一个套接字命名并将该已经被命名完的套接字与我们的服务器地址对应起来,当有进程需要建立连接时,就会与之前被我们命名并与内存相对应的套接字连接起来。
当连接起来之后,我们这个时候就需要开始创建一个对列,当有客户端连接上来后我们就开始进行处理,若没有来自客户端的连接需求,就会被结束。
再次,当我们接收到连接时,相关的进程就会被启动,此时就会及时的创
建一个套接字,创建完之后,我们就会利用这个来建立连接,虽说这个时候来所建立的,但是我们要注意的是,监听等服务是早就已经生成的。
最后,客户和服务之间是进行数据的是交换是通过两个函数(read\write)来完成的,而如果需要中断二者间的连接则是用另一个函数(close)来操作的
[13]。
2.6SQLite数据库简介
随着科技的发展,互联网各个新兴行业,在2000年的时候开发了一种关于嵌入式的小型数据库即SQLite。
是一个链接库,准确的说是一个C语言链接库,小型的还具有数据的索引功能,运用于嵌入式非常方便[14]。
它的开发称为之包含的服务器,零配置和事务SQL数据库搜索,都是非常受欢迎,在当今,全球使用的有几亿用户。
SQLite是在Solaris 10和Mac OS操作系统和iPhone和
Skype使用。
该Qt4函数库有内置的SQLite的支持,以及对Python和PHP语言。
许多流行的应用程序使用SQLite内部,如火狐,谷歌Chrome或Amarok的。
SQLite的实现了大部分的SQL的SQL-92标准。
SQLite引擎不是一个独立的过程。
相反,它是静态或动态链接到应用程序。
SQLite库很小,它可以要求小于300昆明植物研究所。
SQLite数据库是可以在目录层次结构中的任何位置的单一普通的磁盘文件。
这是一个跨平台的文件。
它可以在各种操作系统,包括32位和64位架构中使用。
SQLite的是用C编程语言,不过它有许多语言,包括C++,Java和C#,Python和Perl中,红宝石,VisualBasic中,和Tcl绑定SQLite的源代码是开源的。
用了接近25000行的ANSIC代码实现的。
SQLite链接库为了避免和其他的程序发生冲突所以它的接口都是以sqlite3为前代码的,实现函数都能够在main.c中找到。
它有自己的生成器和分析器,生产效率极高,不受外界干扰。
SQLite有下列特点:
(1)是单独的,不依赖任何外部条件;
(2)可以存储的信息非常大,最大可以达2TB;
(3)实现了大部分的SQL92标准;
(4)源码完全开放,也方便用户自行学习,非常具有业界良心,可以用于任何用途包括商业盈利。
(5)遇到电脑系统崩溃或者是电源出现故障的时候,仍然是保持独立持久的操作。
2.6.1SQLite的体系结构
SQLite主要有10个子系统,设计也十分简单标准。
图2-7所示,一些管理型的数据库和关系型数据库是无比接近的[15]。
在这些源文件中可以找的到SQLite的接口函数,例如在main.c、legacy.c等源文件中都可以找的到但是如果接口函数不以sqlite3为前缀就会容易与其他程序发生冲突。
(1)标记生成器
当包含SQL语句的字符串将被执行,接口传递的字符串标记生成器。
标记生成器的工作是打破了原字符串成令牌,并通过这些令牌逐一解析器。
标记生成器是手工编码的C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Linux 电子词典 系统 设计 实现 论文
![提示](https://static.bingdoc.com/images/bang_tan.gif)