基于Android系统的英语词库查询程序的设计与实现——毕业论文_第1页
基于Android系统的英语词库查询程序的设计与实现——毕业论文_第2页
基于Android系统的英语词库查询程序的设计与实现——毕业论文_第3页
基于Android系统的英语词库查询程序的设计与实现——毕业论文_第4页
基于Android系统的英语词库查询程序的设计与实现——毕业论文_第5页
免费预览已结束,剩余44页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计基于Android的英语词库查询程序的设计与实现学生姓名: 学号: 系 部: 计算机工程系 专 业: 计算机科学与技术 指导教师: 年 月毕业设计(论文)任务书设计(论文)题目: 基于Android系统的英语词库查询程序的设计与实现 系部: 计算机工程系 专业: 计算机科学与技术 学号: 学生: 指导教师(含职称): (副教授) (助教) 1课题意义及目标本课题旨在开发一款基于Android平台的英语查询程序,可以对单词进行查询,四六级词汇学习,具有生词本添加功能的多用途程序。该程序针对学习四六级的人群开发,可以方便他们对四六级词汇的学习,从而更好的掌握四六级词汇。2主要任务(1)调查高校学生在四六级学习中遇到的问题,根据这些问题对本课题进行系统的分析,划分其功能模块(2)对已划分的功能模块进行界面布局,设计出大概风格(3)进行英语四六级词汇和英汉互译词汇数据库的搭建以及单词录入工作。(4)对英汉查询模块中英语与汉语的互译功能实行具体的代码编写。(5)对四六级词汇的学习功能以及生词本功能进行设计实现(6)对程序进行测试,检测各功能的可行性3主要参考资料1耿祥义,张跃平.Java2实用教程M.北京:清华大学出版社, 2006:1-126.2彭艳,杨欧.Android平台的数据储存技术J.计算机系统应用,2012,05(3):120-124.3陈琮,李文亮.Android内核分析J.现代计算机,2009,06(11):112-115.4进度安排设计(论文)各阶段名称起 止 日 期1进行需求分析,并分析功能模块并搭建框架12月01日3月13日2数据库搭建与UI界面设计3月14日4月07日3添加英汉互译功能4月8日5月13日4实现四六级词库分类查询及其他功能5月14日6月03日5完成毕业论文及答辩工作6月4日6月22日审核人: 年 月 日基于Android系统的英语词库查询程序的设计与实现 摘要本程序的以基于Android系统的英语词库查询为课题的毕业设计,通过该课题的研究可以满足用户在无网络和有网络的情况下对英语词汇进行查询学习,加深用户对四六级词汇的记忆,提高四六级考试的通过率。该程序是在Win7操作系统下,使用Eclipse为开发工具,使用Android自带的轻量级数据库Sqlite作为数据库,采用Java语言来实现程序主要功能。程序界面美观,操作简便,用户体验良好。从功能上讲将系统划分为四个模块:离线查询模块、在线查询模块、生词本模块、四六级词汇学习模块。本文以技术背景简介、需求分析、数据库设计,详细设计为主线,详细介绍了基于Android系统的英语词库查询程序的设计与实现的流程。关键词:Android,Sqlite数据库,英文单词The Design and Implementation of English Vocabulary Query System Based on Android SystemAbstractThe program is based on the topic of querying of English word based on Android system, can satisfy the user inquiring and learning of English vocabulary in the case of no network and the Internet, deepen the memory of CET vocabulary, improve the pass rate of CET exams. The program uses the Eclipse as the development tool running on the operating system of Win7, uses Androids built-in lightweight database Sqlite as the database, uses language of Java to implement the main function of program. Programs interface is beautiful, operation is simple, user experience is good. It is divided into four modules on the foundation of function: off-line query module, on-line query module, the new words module, the learn module of CET vocabulary. This article is based on the background introduction、requirement analysis、database design, detailed design as main module, introduced in detail the design and process of implementation based on the Android system of English word library query program.key words: Android, Sqlite database, English words太原工业学院毕业设计(论文)目录1绪论11.1研究目的及意义11.1.1研究目的11.1.2研究意义11.2国内外研究12相关技术背景介绍32.1 Android工程的简单介绍32.2关键技术52.3 Android环境的搭建52.4 Android虚拟机的创建72.5运行环境73系统需求分析83.1软件的功能需求83.2功能需求(用例图分析)93.2.1基本功能需求用例图93.2.2离线词典用例图103.2.3在线词典用例图113.2.4添加到生词本用例图123.3系统结构图123.4软件数据模型134数据库的设计154.1离线词典的数据库设计154.2连接数据库164.2.1数据库的创建164.2.2数据库的操作164.2.3数据库的查看165详细设计及其编码实现185.2查询功能模块205.2.1离线查询205.2.2在线查询模块245.3生词本模块255.3.1生词本界面255.3.2生词本点击事件及编辑界面265.3.3生词本菜单添加新单词界面275.4四六级模块285.4.1四六级词汇显示285.4.2四六级词汇播放295.5菜单模块315.5.1查询Activity的菜单315.5.2生词本的菜单项325.5说明界面346系统测试356.1测试356.1.1离线精确查询测试356.1.2离线查询菜单测试366.1.3添加或移除生词本单词测试376.1.4生词本单词的点击事件测试3761.5生词本的编辑界面测试386.1.6四六级词汇显示界面测试386.1.7四六级播放功能测试396.2性能测试及分析406.2.1可扩展性406.2.2可移植性40参考文献42致谢42第II页,共II页太原工业学院毕业设计(论文)1绪论1.1研究目的及意义1.1.1研究目的本课题旨在开发一款基于Android平台的英语词库查询程序,可以对英语或者汉语词汇进行查询,同时可以进行四六级词汇学习,具有生词本添加功能的多用途程序。该程序针对学习四六级的人群开发,可以方便他们对四六级词汇的学习,从而更好的掌握四六级词汇。提升英语能力,增加高校在校生的英语四六级通过几率。1.1.2研究意义在高校中,四六级考试已成为大学生活中必不缺少的一部分。而四六级考试中词汇的记忆问题是四六级考生所面临的重要问题。目前,很多公司开发了各种各样的电子词典,这些字典具有海量词库,具有真人发音,整句翻译等功能。但没有针对于四六级学习的专项电子词典,且需要联网。而该程序可以满足广大高校学子的英语学习需求,为用户提供英语单词查询与学习及相关服务,从而更好地帮助他们进行英语学习。因此开发一款适用于考四六级同学的基于Android系统的英语词库查询程序有着十分重要的意义,可以随时随地的不受网络限制进行学习。1.2国内外研究现在的手机电子词典功能比较完善,使用起来也比较方便。手机词典内置本地词库,提供数以万计的常用中英文本地词汇,外加智能输入提示功能,另外还提供真人发音、联网网络释义查询、翻译功能,包含从数十亿网页中提取的精准网络解释和两百万例句,让用户准确理解各种词汇的详细解释和用法1。最新有道电子词典也新增了摄像头查询功能,这在手机电子词典行业是一个比较大的创新。HiDict推出的HiDict词典集成了本地词库、在线翻译、屏幕取词、快速词典等功能,同时支持更换词典程序主题,自带阅读器可进行背景图片、字体、自动翻页的功能设置2。GF Midia Apps开发的French Translator是一款在Android1.5及以上版运行的手机词典软件,支持英文与法文互译,支持听说功能与电子邮件或SMS翻译,但是需要连接网络。也有不少是以漫画或游戏的形式帮助用户对单词的记忆。像Newave Enterprise开发的The Children Of ThePhoenix(在凤凰的孩子)以及Sand Storm的主题便是游戏和漫画,画面精致,操作简单,但占用资源较大3。2相关技术背景介绍2.1 Android工程的简单介绍Android系统将插件ADT集成到了Eclipse工具上,因此,一个Android程序启动后,系统会启动一个模拟器(Emulator),该模拟器是一款手机版的样式,拥有手机硬件的基本操作,界面的大小可以自由设定4。 (1)Android的工程程序的结构:Android工程基本结构目录包括:src(源码),gen(Android系统自动生成的常量),res(资源文件):主要是存放程序界面的布局配置(.xml)文件和图片资源。AndroidMainfes.xml是Android四大组件的驱动配置文件,有它的存在,Android程序的四大组件才可以正常的跳转。Android资源的类型和布局如表2.1所示:表2.1资源的类型和布局目录结构资源类型res/animXML动画文件res/drawable一些图片文件res/layout布局文件res/values各种xml资源文件arrays.xml:XML数组文件colors.xml:XML颜色文件dimens.xml:XML尺寸文件style.xml:XML样式文件res/xml任意的xml文件res/raw直接拷贝到设备中的原生文件res/menuXML菜单文件下图2.2和2.3为本程序代码结构和资源配置文件,图像资源等,其中src为java的源代码,res/drawable为工程程序中用到的图片资源,res/layout为工程中用到的布局文件。res/values为工程中用到的各种xml资源文件,res/raw为工程中离线查询时用到的数据库资源。图2.2工程结构图 1 图2.3工程结构图2(2)Android工程的配置文件AndroidMainifest.xml的介绍5Android系统的任何一个程序启动都需要AndroidMainifest.xml来启动程序,任何一个新建的工程目录都会自动生成一个AndroidMainifest.xml文件,此配置文件是整个程序能够运行的核心,他里面包含了AndroidSDK的版本,程序运行的默认Activity,当程序中的任何一个组件触发事件后,系统都会自动的去AndroidMainifest.xml中寻找标示来做出相应的操作。任何一个AndroidMainifest.xml文件的格式都应为: 这时系统确定的首先要启动的Activity是MainActivity。在intent-filter选项中,有action和category等等属性,我们需要定义action的值为ent.action.MAIN,categor的值为ent.category.LAUNCHER,他们是系统的值,程序在解析到这些常用后就可以确定首先要启动的Activity。当我们需要通过一个组件触发另一个组件时,我们将设定action和category的其他属性值,系统会根据我们设定的属性值去AndroidMainifest.xml的application中去寻找标识,任何一个Activity的action和category是唯一,所以程序在任何时候都能唯一启动一个Activity,这样,不同的Activity之间的跳转就实现了6。2.2关键技术本程序采用Eclipse为开发工具,以java为开发语言,数据存储和布局是程序开发中的关键技术,数据存储技术主要记录了用户所有的操作数据及用户所需要提取的数据,数据的操作通过SQL语言对已存储的数据进行操作,布局用来设计用户交互界面,布局的设计是否美观和合理直接影响到用户的体验,所以运用好布局技术时直接和用户相关的。在Android中,界面的布局主要使用xml技术设计,而xml中控件的位置和状态离不开布局的使用,Android中常用的有五中布局,AbsoluteLayout绝对布局、LinerLayout线性布局,RelativeLayout相对布局、FrameLayout帧布局、TableLayout表格布局,由于布局的使用,使布局之间可以相互嵌套,从而使得Android软件UI布局更加灵活方便,即使是一些非常复杂的界面设计,只要合理的使用布局也会变的非常容易7。Android中的数据存储技术主要有:文件存储、sharepreference、sqlite、ContentProvider和网络存储,本程序主要使用了五种当中的sqlite和文件存储,文件存储是以流的形式进行文件的读写操作,可以以文件的格式,也可以以二进制流的形式,在java中要使用流,则写入文件的对象必须进行序列化。Sqlite是嵌入式移动设备中经常用到的轻量级数据库,可看做是计算机上使用的sqlserver和oracle数据库7。本程序中,四六级词汇以及查询的单词信息全部存储在sqlite中,只有生词本中的词汇是保存在文件中。2.3 Android环境的搭建下面介绍Android的开发环境的配置8。(1)搭建开发环境需要的软件操作系统:WindowsXP或Linux软件包:AndroidSDK(Software Development kit Java Development Kit)、ADT(Android Development Tool)IDE环境:EclipseIDE+ADTEclipse3.3以上JDK:JavaRuntimeEnvironment虚拟机、(JDK)Java Development Kit(2)安装步骤如下:第一步:安装Java虚拟机sun-java7-jdk版本,可以在这个网址进行下载第二步:安装Eclipse3.5工具官网/downloads/选择版本第三步:安装Android SDK,首先下载SDK,可以在这个网址下载/sdk,选择相应的系统安装第四步:安装Android ADT插件,运行Eclipse,选择help-installnewsoftware选择add,将会弹出一个如图对话框,点击OK,选择要安装的软件,然后next,选择接受协议,直到安装成功,重启Eclipse软件,设置AndroidSDKHome,window-refrence在SDKlocation中输入SDK Tools路径:E:androidandroid-sdk-windows点击OK这样Android的环境就搭配成功了。图2.1环境搭配图2.4 Android虚拟机的创建(1)创建Android Virtual Device(AVD)使用android list target命令列出当前可用SDK的版本android create avd n-t-(2)模拟器Emulator的使用启动和停止模拟器emulator-avd(3)Android Debug Bridge(adb)的使用查询当前模拟器实例数量adb devices(4)本地机与模拟器之间相互拷贝文件D:adb push d:test.txtsdcardD:adb pull /sdcard/test.txt d:/(5)安装apk应用程序adb push d:test.apk/sdcard/adb install test.apk(6)使用shell命令在DOS命令行输入adb shell进入shell命令行退出shell 用exit2.5运行环境操作系统:Android系统基于linux操作系统支持环境:2.3.3及其以上版本开发环境:eclipse版本4.3.0 ADT版本21.1.03系统需求分析在程序设计之前,我们要做的是对现行电子词典的流程,操作等做出详细的调查,从而了解本程序要实现的基本功能。程序在开发过程中要经过较长时间的设计阶段,以使程序贴近生活,具有较大的现实意义。一般学生都比较频繁的使用本程序,尤其是学习四六级的同学,考虑到本程序使用的专用性,程序设计过程中遵循实际运用的原则。因此操作界面会尽可能的简洁,明了,各种控件的布置也会非常清晰,使用的控件种类不会太多,对空间的操作不会太复杂。使用程序的学生也能熟练地操作和使用。根据用户查询单词和记忆单词的要求,软件实现后,能达到智能查询的灵活性,此软件主要包括两部分的设计,一部分是离线的单词查询。离线的单词查询又分为英汉和汉英查询,为了使界面简洁以及使用方便,将需要查询的英语词汇和汉语词汇的输入设置在一个文本框,用户可以输入英语或者汉语词汇进行查询,程序通过对输入的内容进行判断,然后做出相应的数据库查询。Android自带的轻量级数据库SQlite来保存单词信息,程序通过SQlite数据库保存的单词信息查找到与指定英文对应的单词的中文信息。实现这样一个查询程序需要解决一系列问题,如何使用户更方便的查询,如何使界面更加的美观,保证及时处理信息。另一部分是四六级词汇的学习功能,该部分同样使用Android自带的SQlite存储四六级单词,从数据库查询单词信息后显示在程序中,供用户浏览学习。最后一部分是在线的单词查询。该部分是为了防止用户在离线查询不能满足用户需求时,进行在线查询,在线查询部分没有设计自己的服务端,只是用webview显示调用第三方的网页查询。此方法解决了在既没有服务器,又不增加客户端的复杂性的情况下可以满足用户的需求,很好的解决了用户在离线查询不能满足需求时,进行有网络连接的在线查询,包括单词查询,句子翻译等。3.1软件的功能需求 经过对在校高校生的调查,以及对现行行业流程分析的基础上,分析高校生对英语词汇的,以及对四六级词汇学习需求,现确定程序的功能需求,以下是英语词库查询程序的功能:(1)设有主菜单选项界面,供用户选择和要执行的操作。(2)设有离线查询界面,供用户输入单词进行查询。(3)设有在线查询界面,当离线查询不能满足用户需求时查询。(4)设有生词本显示界面,供用户查看生词本以及对生词本中的词汇进行操作。(5)设有四六级词汇显示界面,供用户学习四六级词汇。(6)设有四六级词汇学习界面,供用户对四六级词汇进行记忆学习3.2功能需求(用例图分析) 根据对程序的需求分析,确定了程序的基本需求,以下从不同角度来描述程序的需求并且使用用例图来描述,程序的功能需求分为以下几个部分进行描述:基本功能需求用例图,离线查询功能用例图,四六级学习功能用例图。3.2.1基本功能需求用例图系统基本功能用例图如图3.1所示。 图3.1 系统基本功能用例图其中查询功能表和添加到生词本功能表如下表3.1与3.2所示表3.1 查询功能表用例名称查询参与者用户目标从手机数据库中查询单词前置条件程序启动基本事件流点击查询按钮查询表3.2 生词本功能表用例名称添加到生词本参与者用户目标将查询出来的单词释义添加到生词本前置条件已经查到该单词基本事件流点击添加按钮添加到生词本3.2.2离线词典用例图离线词典用例图如图3.2所示,离线词典功能表如表3.3所示。图3.2 离线词典用例图表3.3离线词典功能表用例名称离线查询参与者用户目标从手机数据库中查询单词前置条件切换到离线词典基本事件流1.点击离线词典2.输入单词后点击查询按钮3.2.3在线词典用例图在线词典用例图如图3.3所示,在线词典功能表如表3.4所示。图3.3在线词典用例图表3.4在线词典功能表用例名称在线查询参与者用户目标从第三方网页查询单词前置条件切换到在线词典基本事件流1点击在线词典2输入单词后点击查询按钮3联网3.2.4添加到生词本用例图添加到生词本用例图如图3.4所示,显示生词本的单词表如下表3.5所示。图3.4添加到生词本用例图表3.5显示生词本的单词用例名称显示生词本的单词参与者用户目标显示已添加到生词本的单词前置条件单词已成功添加到生词本基本事件流1切换到生词本2单击上一个显示上一个单词3单击通过显示下一个单词4单击播放按钮播放生词本中的单词3.3系统流程图本程序主要包括四个部分,离线查询、在线查询、生词本、四六级学习。其中离线词典主要使用Android自带的轻量级数据库Sqlite保存单词信息,系统通过SQL语句进行数据库的查询获得与指定单词相对应的中英文释义,从而实现离线词典。在线词典是在有网络情况下利用第三方有道词典网页版进行查询,实现英汉词语的查询。生词本部分是将查询出的单词及释义保存为txt文档,然后再读出来显示在生词本列表中供用户学习。四六级同样是使用Android自带的轻量级数据库Sqlite保存四六级单词信息,通过通过SQL语句进行数据库的查询获得单词信息显示在四六级列表中。实现本程序需要解决一系列技术问题。例如:如何将数据库文件与apk文件一起发布,且发布后如何打开数据库对数据库进行操作9;如何实现智能提示功能;如何实现四六级词汇的显示与学习。其中系统流程图如图3.5所示。3.5系统流程图3.4软件数据模型建立系统数据模型的主要工具是实体关联图,即E-R图。根据上面给出的E-R图的图形符号表的描述画出数据库的E-R图如图4.1所示。单词词汇单词释义图4.1E-R图单词以及单词释义对应的实体类为词汇word实体。4数据库的设计数据结构组织和数据库文件进行设计时要根据不同的用途,使用要求等,来决定数据库的整体组织形式等一系列问题。数据库,顾名思义,是存放数据的仓库。只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的重复度、较高的数据独立性和易扩展性。并且可以被在一定范围内的各种用户共享。在涉及数据库的软件开发中,需要根据有待解决的问题性质、规模以及所采用的前端程序创建工具等,做出合适的数据库选择10。4.1离线词典的数据库设计 本程序采用sqlite数据库,sqlite数据库是Android自带的小型数据库,可以将少量的数据存储在该数据库中。这里的数据库的设计与单词的单词表的设计基本类似,本程序的主要有三张表,分别是engtoch、foursix、t_words ,分别用来存放英译汉单词,四六级单词和汉译英的单词。下面为三张表的具体设计。表4.1 数据库的具体设计数据库名称dictionary表名engtoch、foursix、t_words表4.2 离线时的英译汉engtoch表的设计字段名数据类型长度是否为空englishvarchar20非空chinesevarchar100非空表4.3离线时的四六级foursix表的设计字段名数据类型长度是否为空englishvarchar20非空chinesevarchar100非空表4.4离线时的汉译英t_words表的设计字段名数据类型长度是否为空englishvarchar30非空chinesevarchar100非空4.2连接数据库这里将首先介绍如何进行Android数据库连接,Android中自带的数据库是一个很小的数据库,这样正适合Android平台的使用,Android数据库的存储位置在data/data/databases/目录下,而本程序是先用操作sqlite数据库的sqlitedev软件新建数据库,将建好的db文件放在Android目录下raw的目录下,该目录通常保存Android项目中需要的音频、视频以及一些不可更改的资源。然后用io操作将数据库复制到sd卡路径下,在Android中利用SQLiteDatabase对象打开数据库对数据库进行操作,即SQLiteDatabase.openOrCreateDatabase(databaseFilename, null) 11。4.2.1数据库的创建本程序是采用用操作sqlite数据库的sqlitedev可视化软件新建数据库名为dictionary的数据库,然后建立三张表,分别为英译汉表engtoch、四六级词汇表foursix、汉译英表t_words。然后建立各表字段名。最后将已有单词数据的csv表中的数据录入到对应表中,完成了数据库的创建,且创建后文件为dictionary.db。4.2.2数据库的操作Android对sqlite数据库的操作一般有插入、查找、删除、更新等操作。但是前置条件是数据库必须打开,打开数据库才能进行相关操作。注意当操作完数据库需要对资源进行释放,因此需要关闭数据库,关闭数据库的方法是close()。4.2.3数据库的查看 Android中程序是利用Cursor游标类只想数据中的某一项,然后进行数据查询,用Log显示出来。查询时的方法是数据库本身的方法query(),需要注意的是这个方法比较复杂,它有8个参数,因为它将一个完整的SQL语句拆分成若干个部分12。第一个参数table :表名,相当于SQL的from 后面的部分。在此还要注意如果和多表联合查询时,就用逗号将两个表名分开,拼成一个字符串的table 值。第二个参数是columns, 要查询出来的列名。相当于SQL的select 后面的部分。第三个参数是selection, 查询的条件,相当于SQL的where 后面的部分,在这个语句中允许使用?,也就是说这个用法和JDBC中的Prepared Statement 的用法相似。第四个参数selection Args,对应于selection的值,selection 有几个问号,这里就得用几值。第五个参数group By ,相当于SQL的group by 后面的部分。第六个参数having, 相当于SQL的having 后面的部分。第七个参数order by, 相当于SQL的order by 后面的部分,如果是倒序,或者是联合排序,可以写成类似这样:string order by =id dese ,name 。第八个参数limit, 指定的结果集的大小,它和Mysql 的limit 用法不太一样,Myspl可以指定从多少行开始之后取多少条,例如limit 100,10,但是这里只支持一个数值。注意:游标查询时,必须把Cursor 移动到第一个位置,即move To first (),因为每次查询时,游标都会从第一个往后查找,通常在查询数据库之前进行。此外,游标和数据库一样都要及时关闭,要不会出现异常。其详细代码见程序清单。数据的query ()方法,他用的参数只有一个就是sql 语句,sql语句的写法是sql=“select sum (字段名)as 别名from 数据表where 条件表达式”例如String sql=select from b _dict where name =?。最后要执行sql语句,用法如下set rs =conn.excute (sql),用rs(别名)表示获取统计的值。5详细设计及其编码实现Android环境搭建好了之后,我们就开始设计我们的客户端各部分模块,主要分为三部分,一部分是在线查询,一部分是离线查询,另外一部分是四六级学习。下面是对各个模块分别进行详细的分析设计。在设计时我们应该注意两个方面,一个是数据库的设计,一个是各功能模块的布局。在Eclipse新建一个android project工程,工程名为Dictionary,它的结构如图5.1所示图5.1程序工程结构图在com.example.util包中openDB类是打开数据库的类,在com.example.dictionary中的每一个类都对应一个界面。详细情况如下:About.java是菜单中的说明界面Cetfour.java是四六级词汇显示的界面Editword.java是编辑生词本单词的界面HomeActivity.java是程序的启动界面MainActivity.java是程序主界面NoteBook.java是显示生词本单词的界面Offline.java是离线查询界面Online.java是在线查询界面5.1系统界面设计当今社会,Android技术的发展已渐入成熟,Android界面技术发展更为迅速,各种app的界面美观,简洁,操作方便,用户体验良好。因此人们从以前追去技术上升到追求视觉,追求体验,因此也逐步提高了对系统的要求。因此我们在对程序设计时应该注重界面的美观与友好性以及用户的体验。这样才能使产品更符合大众的要求。图5.2是程序的主界面:图5.2是程序的主界面说明:图3.7是系统默认的主界面,用户在文本框输入相应的单词或者汉字,会出现相关单词的智能提示下拉列表,然后点击要查询的单词或汉字确认后,点击查询按钮就能显示出相应的汉语释义或者英文释义,然后用户可以点击加入生词本按钮将不熟悉的单词加入到生词本。点击在线查询就会出现在线查询的界面,在文本框输入单词或者汉字,在有网络的情况下会跳到有道web查询页面,显示出对应的英文或者中文释义。点击生词本就会出现已加入生词本单词列表,用户可以进行单词的复习,当点击学会的单词的行时会弹出提示对话框,提示用户对生词的操作,可以选择删除或者编辑或者取消操作。5.2查询功能模块查询模块主要是将用户指定输入的中文或者英文单词翻译成对应的英文释义和中文释义显示到界面上,它分为离线查询和在线查询两个部分。离线查询就是在不借助网络的情况下通过查询手机自带轻量级数据库sqlite中保存的中英文单词信息将需要的内容查询出来,从而显示在界面上。而在线查询时将输入单词传到有道网页版查询,通过webview将网页显示在界面中,实现单词的查询。5.2.1离线查询在离线查询中,我们首先要解决的前面提出的几个技术问题。第一如何将数据库文件与程序apk一起发布、第二如何实现四六级单词的学习功能以及如何使界面简洁美观、第三如何实现输入智能提示功能。(1)如何将事先建好的dictionary.db文件与程序一起发布。因为在通常的程序设计中,数据库文件的建立是通过代码创建的,它的创建是在打开文件之后,而在本程序设计中,数据库文件是事先建好后放进去的,因此要做到将数据库文件与程序一起发布,可以将dictionary.db文件拷贝到android工程的raw目录下,该目录用来保存原生文件,即不编译,可以保证数据库文件的完整性,当程序安装后可以将该数据库文件通过io流操作复制到sdcard目录下,从而实现数据库文件与程序一起发布。具体放置位置如图5.3。图5.3 dictionary.db的放置(2)如何实现四六级单词的学习功能以及如何使界面简洁美观四六级单词的学习功能主要通过查讯数据库将四六级单词信息显示到listview控件上,然后可以对这些词汇进行播放,加深用户的记忆,当用户记住一个单词时可以点击通过显示下一个单词,或者上一个没有记清楚点击上一个会显示上一个单词信息。为了使界面简洁我们通过tabhost实现界面之间的方便切换,同时我们将英文单词和中文输入放在一起,当输入内容时,我们通过代码判断用户输入的是中文还是英文,然后做出相应的查询操作。如图5.4和5.5所示分别为输入英文和汉语是查询的内容。图5.4输入英文查询结果 图5.5输入中文查询结果(3)如何实现输入智能提示功能13 智能提示功能即当用户输入两个及两个字母以上时或者输入一个及一个以上汉字时会显示以该字母开头或者以该汉字开头的英中文词汇列表,当用户选择时即选定查询该单词。智能提示功能的实现首先定义一个AutocompleteTextview控件,然后为其定义一个填充数据的自定义Adapter类。要注意的是不能将整个数据库的单词都查出,然后生成一个Adapter对象再使用setAdapter方法来设置AutocompleteTextview组件的Adapter对象。AutocompleteTextview组件不会筛选以某个字符开头的单词。这些工作需要通过代码来实现。基本思路是在AutocompleteTextview类的afterTextChanged事件中监听在AutocompleteTextview中的字符输入情况,每当输入一个字符就生成一个Adapter对象与AutocompleteTextview相关联。主要代码如下所示。private void setView(View view, Cursor cursor) TextView tvWordItem = (TextView) view;tvWordItem.setText(cursor.getString(cursor.getColumnIndex(_id);tvWordItem.setPadding(15, 10, 10, 15);tvWordItem.setTextSize(18);输入以字符串开头的单词列表如图5.6及5.7所示。图5.6输入英文提示列表 图5.7 输入中文提示列表选定时及其选定后点击查询如图5.8和5.9所示图5.8 选定时的提示列表 图5.9 选定后的查询结果程序的核心就是查找中英文单词释义。在查找释义之前,首先需要使用opendatabase方法在Offline的oncreate()方法中打开数据库,代码如下database= SQLiteDatabase.openOrCreateDatabase(databaseFilename, null);然后点击查询按钮按来查找单词。5.2.2在线查询模块在线查询模块没有开发自己的服务器,而是在有网络的情况下,通过将查询内容放在有道web版页面中进行查询,将web页面显示在webview控件实现单词的查询或者句子的翻译。这样做既能满足用户在离线查询不能满足用户的需求时进行有网查询,同时也解决了没有服务端的问题13。主要代码如下所示如图5.10为在线查询的查询结果。图5.10 在线查询查询结果主要功能代码如下所示String strURL = strURI = (seek.getText().toString();strURI = strURI.trim();if(strURI.length()=0)Toast.makeText(OnlineQuery.this, 查询内容不能为空!, Toast.LENGTH_LONG).show();else String strURL = /m/search?keyfrom=dict.mindex&q=+strURI;myWebView1.loadUrl(strURL);5.3生词本模块5.3.1生词本界面生词本是当用户遇到难以记忆的单词时,可以将查询出来的单词点击加入生词本按钮添加到生词本中。如图5.11为生词本界面。 图5.11 生词本界面5.3.2生词本点击事件及编辑界面用户可以对生词本中的单词进行操作,如编辑、删除,所以我们给listview添加点击事件,当用户点击生词本列表中的某一项时,会弹出一个提示对话框,用户可以选择删除,或者编辑或取消。当点击删除时,该项的生词即被删除,当点击编辑时,跳到编辑界面,可以对单词的信息进行编辑。当点击取消时,提示对话框消失。如图5.11为点击是弹出的对话框。图5.12 点击生词本某一项时的界面编辑生词本单词是通过io流操作修改txt文档中的单词的中文chinese和英文english内容,编辑生词本的界面如图5.13所示图5.13生词本编辑界面5.3.3生词本菜单添加新单词界面当用户在生词本界面时,点击菜单会出现两个菜单项,分别为添加新单词和退出,用户点击添加新单词菜单项时会跳转到添加新单词界面,为了使程序简化,又因为该部分功能与编辑生词功能类似,故而只设计了一个界面,通过Intent传过来的buddle内容判是编辑还是添加,从而做出不同的操作14。主要代码如下所示。arrayList = (ArrayListHashMap) new ObjectFile().r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论