基于Android系统电子词典的设计与开发_第1页
基于Android系统电子词典的设计与开发_第2页
基于Android系统电子词典的设计与开发_第3页
基于Android系统电子词典的设计与开发_第4页
基于Android系统电子词典的设计与开发_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、潍 坊 学 院 本 科 毕 业 论 文 摘 要基于android系统电子词典的设计与开发摘要:近年来,随着android手机的日趋流行,android手机软件也日益发展壮大。而在全球化的背景下,对于英语的学习也变得越来越重要。手机电子词典软件作为学习英语的工具,凭借其便捷、简单、高效的优势,日益受到年轻人的青睐。它通过使用联网数据库或者本地数据库来实现对单词、句子的查询,并且显示在图形用户界面上。基于android系统的电子词典软件包括三部分:第一部分是词典,第二部分是翻译,第三部分是单词本。词典部分包括在线的英文词典和离线的柯林斯词典。该部分主要是根据用户的输入调用有道api或者使用sqli

2、te数据库来实现对单词的查询与显示释义等操作。翻译部分主要是调用百度api来实现对英语句子的翻译。单词本部分则是将查询到的生疏单词添加到生词本以便于随时的复习。关键词:android;sqlite数据库;有道api;百度api;英文单词design and implementation of the electronic dictionary system on androidabstract: in recent years, with the popularity of android, android software has become increasingly strong.and

3、 in the context of globalization,the learning of english is also becoming increasingly important.with its convenient,simple,efficient operation,it is relied on by teenagers.it translates english words and sentences into chinese and display on the graphical user interface by the use of local network

4、or databases. the electronic dictionary software which is based on android system consists of three parts: the first part is the dictionary, the second part is the translation ,and the third part is the word. the dictionary includes offline collins dictionary and online english dictionary. this part

5、 using youdao api and sqlite database is used to show the result of users queries. the translation using baidu api translates english sentence to chinese. the wordbook is used to add unfamiliar word to the wordbook by which we can review.keywords:android; sqlite database; youdao api; baidu api; engl

6、ish words2潍 坊 学 院 本 科 毕 业 论 文目录1绪论12系统需求分析22.1 软件功能22.2 需求分析22.3 功能需求(用例图分析)23数据库设计73.1 数据库分析73.2 数据库实现74环境搭建124.1 关于android的简单介绍124.2 android开发环境的搭建124.3 android工程的简单介绍155系统详细设计185.1 查询模块设计185.2 菜单模块实现315.3 单词本模块设计375.4 每日一句实现406系统测试与性能分析446.1 测试446.2 性能测试及分析44结束语45参考文献46致谢4747潍 坊 学 院 本 科 毕 业 论 文 1

7、绪论在21世纪初期,andy rubin(安迪鲁宾)创立了手机操作系统-android。2005年,互联网巨头google收购了android公司, andy rubin也因此成为google工程副总裁。在过去十几年中,android发展日趋成熟,并已经成为一个十分安全、可靠的操作系统平台。android基于linux开源平台和sun microsystems(现已被oracle公司收购。在互联网大潮中,“当年差点咬下苹果”的如日中天的sun公司也不能幸免于难。)的java语言。如今,相比其他手机操作系统,更多的品牌制造商(如samsung、htc,国内的小米、华为等)选择android作为其

8、生产的手机的操作系统。在google和品牌制造商的维护下,android变成一个越发成熟并且成功的操作系统。android使用xml等标准,以及linux、java等免费、自由的开源技术,为开发者和世界上众多著名的手机制造商提供了一个应用程序的发布和展示平台。什么是机会?android就是最好的机会!全球化渗入到我们生活的方方面面,英语在我们学习、生活和工作中扮演着重要的角色。手机词典软件的出现给人们对于英语的学习与使用带来了极大的便利,通过使用手机词典软件,我们可以轻松解决所遇到生疏的英语单词。随着android手机的使用日益普遍,支持android系统的手机应用软件也日益增多,电子词典软件

9、就是其中很好的学习英语的工具。本手机词典软件基于android平台开发,功能明确,内容准确,操作简单,适合大部分人群使用。在设计本软件之前,我们首先对手机软件市场做了充分的调研,明确了人们对于手机电子词典软件的功能需求,然后进行了详细的软件需求分析以及软件的整体结构设计,确保本软件的每一个功能对于用户来说都是有意义的。接着我们对软件进行了详细设计,将项目分成多个设计模块,完成各个设计模块的功能,最后将各个模块通过设计好的框架整合在一起。最后当整个项目完成后,对软件做性能测试,确保软件按照正确方式运行。在本论文中,各个章节的主要内容介绍如下:第一章主要介绍了android系统的起源以及发展;第二

10、章主要介绍了手机电子词典软件的需求分析;第三章主要介绍了手机电子词典软件数据库的设计;第四章主要介绍了本应用软件的运行环境与开发环境的搭建;第五章主要介绍了本应用软件各个模块的具体功能实现;第六章主要介绍了本软件的性能测试与分析。2系统需求分析2.1 软件功能经过对手机应用软件市场的详细调查以及人们对于手机电子词典功能需求的分析,基本上可以确定本电子词典软件设计必须要完成的功能目标了。以下是电子词典软件具备的功能:1) 开始界面,显示每日一句。2) 主菜单界面,供用户选择要执行的操作界面。3) 词典界面,供用户选择合适的词典查词解释。4) 翻译界面,供用户进行句子的翻译。5) 其他界面,供用户

11、选择其他的功能。6) 单词本界面,供用户学习加入单词本的生疏词汇。7) 离线词典界面,供用户使用柯林斯词典进行查词解释。8) 版权界面,显示本软件的版权信息。2.2 需求分析在设计软件之前,我们首先要对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么,要得到什么结果,最后应输出什么。使用电子词典软件的最大群体是学生,他们需要准确性很强的单词解释,而对操作界面没有太高的要求。因而,我们最重要的就是增强电子词典软件的准确性。我们使用有道api、百度api这样准确性很强的电子词典接口,另外离线的柯林斯也是最适合中国人学习英语的词典。软件设计的布局要清晰,功能不宜太复杂,只有这样才能使不

12、参与本软件编写的人熟练的使用。我们将本软件定义为c/s结构,本软件有离线翻译与在线翻译,即使手机不能连入网络,该软件也能正常使用。在设计过程中,我们使用android xml布局技术完成ui设计,使用sqlite数据库保存数据。2.3 功能需求(用例图分析)根据项目所要实现的目标,我们以用例图的方式来描述系统的功能需求。下面,我们从以下几个用例图分别进行描述:基本功能用例图、离线词典用例图、在线词典用例图、在线翻译用例图、单词本用例图。各个用例图描述了各个模块的基本功能。基本功能用例图:图2.1 基本功能用例图其中各个模块的详细功能描述如下表所示:表2-1 查询功能表用例名称查询参与者用户目标

13、从手机数据库或者从服务器数据库查询前置条件应用程序启动基本事件点击查询按钮表2-2 添加到单词本功能表用例名称添加到单词本参与者用户目标把查询到的单词及其释义添加到单词本前置条件已经查询到单词释义基本事件点击添加按钮离线词典用例图:图2.2 离线词典用例图其中各个模块的详细功能描述如下表所示:表2-3 离线查询功能表用例名称离线查询参与者用户目标从手机数据库查询前置条件选择离线词典基本事件点击离线查询按钮在线词典用例图:图2.3 在线词典用例图其中各个模块的详细功能描述如下表所示:表2-4 在线查询功能表用例名称在线查询参与者用户目标从服务器数据库查询前置条件选择在线词典基本事件点击在线查询按

14、钮在线翻译用例图:图2.4 在线翻译用例图其中各个模块的详细功能描述如下表所示:表2-5 在线翻译功能表用例名称在线翻译参与者用户目标从服务器数据库查询句子前置条件选择在线翻译基本事件点击在线翻译按钮单词本用例图:图2.5 单词本用例图其中各个模块的详细功能描述如下表所示:表2-6 单词本功能表用例名称单词本参与者用户目标操作单词本前置条件选择单词本基本事件1.点击单词本菜单 2.点击删除单词3数据库设计3.1 数据库分析sqlite是一款轻量型的关系型数据库,它具有零配置、足够小、操作速度快等优点,被广泛应用于手机应用软件中。 对系统数据进行分析,设计如下表格: 表3-1 数据库中所使用的表

15、表名说明collinsdict柯林斯离线数据库dict索引数据库wordbook单词本数据库表3-2 collinsdict表结构字段名称数据类型说明idinteger单词编号wordtext单词contenttext释义串表3-3 dict表结构字段名称数据类型说明idinteger单词编号wordtext单词meaningtext单词释义表3-4 wordbook表结构字段名称数据类型说明wordtext单词meaningtext释义timetext添加时间3.2 数据库实现3.2.1 数据库的创建create table collinsdict (id integer not null,

16、word text,content text,primary key (id);create table dict (id integer not null,word text,meaning text,primary key (id asc);create table wordbook (word text not null,meaning text,time text,primary key (word);离线的柯林斯词典,我们是使用mdict的mdx词典转化而来。这里我们使用开源的readmdict.py(/xwang/mdict-analysis

17、)将mdx数据库转化为可以被我们识别的数据,然后使用c+语言将数据导入sqlite数据库中。/unicode to utf-8char* unicode2utf8(const char* unicode) int len; len = widechartomultibyte(cp_utf8, 0, (const wchar_t*)unicode, -1, null, 0, null, null); char *szutf8 = (char*)malloc(len + 1); memset(szutf8, 0, len + 1); widechartomultibyte(cp_utf8, 0,

18、(const wchar_t*)unicode, -1, szutf8, len, null, null); return szutf8;/ansi to unicodechar* ansi2unicode(const char* str) int dwunicodelen = multibytetowidechar(cp_acp, 0, str, -1, null, 0); if (!dwunicodelen) return _strdup(str); size_t num = dwunicodelen*sizeof(wchar_t); wchar_t *pwtext = (wchar_t*

19、)malloc(num); memset(pwtext, 0, num); multibytetowidechar(cp_acp, 0, str, -1, pwtext, dwunicodelen); return (char*)pwtext;/ansi to utf-8char* convertansitoutf8(const char* str) char* unicode = ansi2unicode(str); char* utf8 = unicode2utf8(unicode); free(unicode); return utf8;/mdx to sqliteint main(in

20、t argc, char* argv) size_t icount = 0; ifstream fin(data.txt); string word; string content; string sql = insert into collinsdict(id, word, content) values(?,?,?); sqlite3 *db = null; char *err_msg = null; sqlite3_stmt *stmt; if (sqlite_ok != sqlite3_open(dict.db, &db) cout cant open the database. en

21、dl; exit(-1); sqlite3_exec(db, pragma synchronous = off; , 0, 0, 0); sqlite3_exec(db, begin;, 0, 0, 0); sqlite3_prepare_v2(db, sql.c_str(), strlen(sql.c_str(), &stmt, 0); while (getline(fin, word) icount+; cout 插入第 icount 条数据 属性-高级系统设置-高级-环境变量-系统变量“中写入以下环境变量:java_home值为:d:javajdk1.8.0_45(你安装jdk的目录)。

22、classpath值为:.;%java_home%libtools.jar;%java_home%libdt.jar;%java_home%bin; path:追加写入%java_home%bin;b. 检查jdk是否安装成功:(cmd下运行java -version)图4.1 验证jdk是否安装成功2) 下载eclipse3) android sdk安装a. 在android developer下载android-sdk_r24.1.2-windows.zip并解压到任意路径。b. 运行文件夹下的android-sdk文件夹下的sdk setup.exe,选择所需的文件安装。c. 在用户环境

23、变量中追加path值为:android sdk中的tools文件夹绝对路径(本机为d:android-sdk-windowstools)。d. 检查android sdk是否安装成功:图4.2验证android sdk是否安装成功4) android development tools安装a. 打开 eclipse,选择菜单中的 help - install new software。b. 点击add按钮,在弹出的对话框输入name和location,name可以由用户随意填写,location输入/android/eclipse。(也可以选择离线

24、安装包)c. 确定返回后,展开developer tools,勾选android ddms和android development tool。d. 然后按照提示一步一步选择next。e. 选择window-preferences-android,然后在右侧点击browse并选中android-sdk路径,本机为:d:android-sdk-windows。点击apply、ok。5) 创建android运行环境本论文使用的是基于virtualbox的genymotion模拟器。配置如下:图4.3 genymotion配置图4.4 genymotion显示效果4.3 android工程的简单介绍1

25、. 建立一个新的android项目之后,会看到android插件已经帮我们建立了不少文件。检查新建立的mdict项目,我们可以得到一个android项目的基本结构:表4-5 android资源的类型和布局表目录结构资源类型src源代码目录gen自动生成目录res资源目录res/layout版面配置目录res/values参数值目录res/raw不被编译的文件目录res/drawable图片目录下图4.6和4.7为电子词典工程结构图:图4.6 电子词典工程结构图1图4.7 电子词典工程结构图22. androidmanifest.xmlandroidmanifest.xml是android应用程

26、序的功能清单。当你新增一个页面行为(activity)时,你需要先在此注册这个新增的activity后,才能顺利调用。任何一个androidmanifest.xml文件的格式都类似于: xml(extensible markup language)是一种可扩展标记描述语言,不管是语法还是看起来的样子,都类似于编写网页文件所使用的html语言。xml被广泛地运用在android程序设计中。第一行是每个xml文件固定的开头内容,用来指示这个文件是由xml描述的。xmlns:android是xml的命名空间,这个的主要作用是在运行的时候控件的属性都是通过它来识别的。android.permissio

27、n.internet用来使应用具有联网权限。android.permission.write_external_storage与android.permission.mount_unmount_filesystems用来使应用程序具有访问手机sd卡的权限。在application中我们定义了应用的图标、名称、主题等属性。ent.category.launcher与ent.action.main标志当前的activity为第一个启动。5系统详细设计搭建完环境,我们就开始进行android电子词典的详细设计。在系统设计时,我们分为两个主要的方面:一个是数

28、据库的设计,一个是布局的设计。每个文件的功能:表5-1 文件功能表文件名功能dictfragment.java在线查词界面mainactivity.java主界面myfragment.java其他界面start.java启动界面transfragment.java翻译界面dict.java单词类offlinedict.java离线查词界面getstringfromweb.java获取json字符串about.java版权界面dbhelper.java封装的数据库处理文件mycustomadapter.java适配器wordbook.java单词本界面5.1 查询模块设计5.1.1 离线单词查询

29、离线查词模块主要是ui与sqlite数据库的交互。通过监听edittext,我们来获取用户的输入,将html渲染的数据显示在webview中。离线单词查询界面:图5.1 离线查词界面详细代码:public class offlinedict extends activity private final string database_paths = android.os.environment .getexternalstoragedirectory().getabsolutepath() + /mdict; private final string database_filenames =

30、dict.db; private edittext etoff; private webview wvcollins; private inputmethodmanager inputmethodmanager; override protected void oncreate(bundle savedinstancestates) super.oncreate(savedinstancestates); setcontentview(r.layout.offlinedict_layout); etoff = (edittext) findviewbyid(r.id.etoff); wvcol

31、lins = (webview) findviewbyid(r.id.wvcollins); wvcollins.getsettings().setdefaulttextencodingname(utf-8); / 监听键盘事件etoff.setonkeylistener(new onkeylistener() override public boolean onkey(view view, int keycodes, keyevent events) if (keycodes = keyevent.keycode_enter) inputmethodmanager = (inputmetho

32、dmanager)getsystemservice( context.input_method_service); if (inputmethodmanager.isactive() inputmethodmanager.togglesoftinput(inputmethodmanager.show_implicit, inputmethodmanager.hide_not_always); / 调用sqlite string databasefilenames = database_paths + / + database_filenames; sqlitedatabase db = ope

33、norcreatedatabase(databasefilenames, context.mode_private, null); cursor cursor = db.rawquery(select * from collinsdict where word=?, new stringetoff.gettext().tostring().trim(); if (cursor.movetofirst() string content = cursor.getstring(2); wvcollins.loaddatawithbaseurl(, content, text/html, utf-8,

34、 ); wvcollins.setfocusable(true); wvcollins.setfocusableintouchmode(true); wvcollins.requestfocus(); else toast.maketext(offlinedict.this, 无本单词,toast.length_short).show(); etoff.settext(); db.close(); return false; ); 5.1.2 在线单词查询在线查词模块我们提供了:基本释义,柯林斯英汉双解大辞典,21世纪大英汉词典,英英释义,专业释义,网络释义,同根词,同近义词,双语例句,原声例

35、句,权威例句,百科,12种词典,给用户合理的选择。我们通过监听edittext和button来获取用户的输入,并合理的显示在webview中。给用户的生疏单词,我们可以加入生词本。在线单词查询界面:图5.2 在线查词界面详细代码:public class dictfragment extends fragment mediaplayer mediaplayer; private view view; private imagebutton ibtnbook; private button btnsearch; private button btnclear; private edittext

36、etinput; private webview wvshow; private inputmethodmanager inputmethodmanager; private spinner spinner; private string dictname; private string basicmeaning; private arrayadapter adapters; private final string database_paths = android.os.environment .getexternalstoragedirectory().getabsolutepath()

37、+ /mdict; private final string database_filenames = dict.db; private static final string dict = 基本释义, 柯林斯英汉双解大辞典, 21世纪大英汉词典, 英英释义, 专业释义, 网络释义, 同根词, 同近义词, 双语例句, 原声例句, 权威例句, 百科 ; private static final string dicts = ec, collins, ec21, ee, special, web_trans, rel_word, syno, blng_sents_part, media_sents

38、_part, auth_sents_part, baike ; private static final string linkcss = ; private static final string body = + linkcss + ; override public view oncreateview(layoutinflater inflater, viewgroup container,bundle savedinstancestate) view = inflater.inflate(r.layout.dict_fragment, container, false); initviews(); setlistener(); / 内部打开连接 wvshow.setwebviewclient(new webviewclient() public boolean shouldoverrideurlloading(webview view, string url) view.loadurl(url); return true; ); / 滚动条 wvshow.setscrollbarstyle(view.scrollbars_inside_overlay); return view; / 初始化 publi

温馨提示

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

评论

0/150

提交评论