毕业设计(论文)-基于J2ME的手机英语学习软件的设计与实现.doc_第1页
毕业设计(论文)-基于J2ME的手机英语学习软件的设计与实现.doc_第2页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

湖 南 农 业 大 学全日制普通本科生毕业设计基于j2me的手机英语学习软件的设计与实现the design and implementation of mobile english learning software based on j2me湖南长沙提交日期:2011 年 6 月湖南农业大学全日制普通本科生毕业设计诚 信 声 明本人郑重声明:所呈交的本科毕业设计是本人在指导老师的指导下,进行研究工作所取得的成果,成果不存在知识产权争议。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体在文中均作了明确的说明并表示了谢意。本人完全意识到本声明的法律结果由本人承担。 毕业设计作者签名: 年 月 日目 录摘 要1关键词11 前言21.1 课题的研究背景21.2 课题的研究目的和意义21.3 手机英语学习软件现状32 系统开发关键技术及开发环境32.1 j2me简介32.1.1 j2me体系结构42.1.2 midlet概述52.1.3 ui知识62.1.4 记录管理系统62.1.5 定时器和定时器任务72.2 系统开发环境82.2.1 具体开发环境82.2.2 开发环境介绍83 系统分析83.1 系统功能需求83.2 系统性能需求93.3 系统可行性93.3.1 经济可行性分析93.3.2 技术可行性分析93.3.3 操作可行性分析104 手机英语学习软件详细设计104.1 用户界面模块设计104.1.1 欢迎界面模块设计104.1.2 功能选择界面模块设计114.2 数据存储设计124.3 词库管理模块设计164.4 单词记忆模块设计174.5 简单测试模块设计194.6 困难测试模块设计214.7 英汉词典模块设计214.8 趣味游戏模块设计244.9 帮助系统模块设计245 系统维护与测试255.1 测试步骤255.2 模块测试265.3.1 欢迎界面测试265.3.2 功能选择界面测试265.3.3 词库管理模块测试275.3.4 单词记忆模块测试285.3.5 简单测试模块测试285.3.6 困难测试模块测试295.3.7 英汉词典模块测试295.3.8 帮助系统模块测试306 总结31参考文献:31致 谢33基于j2me的手机英语学习软件的设计与实现学 生指导老师(湖南农业大学信息科学技术学院,长沙 410128) 摘 要:文中详细分析了手机英语学习软件的用户界面设计和各个功能模块实现方法,并介绍了本系统永久性数据存储的设计。本系统基于j2me平台,在windows xp操作系统下,以pulsar eclipse sr2、wireless toolkit 2.5.2为开发工具,实现了手机英语学习软件的设计。该软件拥有词库管理、单词记忆、记忆测试、英汉词典四种功能,满足了手机用户单词记忆的学习需求。 关键词:j2me;java;midlet;记录管理系统;手机英语学习软件the design and implementation of mobile english learning software based on j2mestudent: tutor: (college of information science and technology, hunan agricultural university, changsha 410128, china)abstract: this paper analyses how to design mobile english learning softwares user interface and implement every function in detail. and it is introduced that how to store date permanently on the system. the system which is based on j2me, implement the design of mobile english learning software. the software is developed by pulsar eclipse sr2 and wireless toolkit 2.5.2 in windows xp operating system. and the software meet mobile phone users learning requirement, which has four function such as lexicon management, word memory, memory examination, chinese-english dictionary.key words: j2me; java; midlet; record management system; mobile english learning software 1 前言随着互联网技术和信息技术的日益成熟,人类社会开始进入信息时代。信息时代的到来给社会生活的各个方面带来了巨大的变化,比如手机各种软件开发。信息技术和信息系统几乎渗透到了手机软件应用的每一个细节。移动学习是伴随移动设备应用而产生的一种新型学习方式。当前,用于移动学习平台开发的技术主要包括wap方式和j2me平台1。由于wap方式在访问互联网上的局限性,并且内容都必须处于联网状态才能浏览,用户需要支付额外的流量费。所以本文的软件平台采用j2me进行开发,当然,由于j2me提供的记录管理系统可以在本地处理数据,故手机要支持j2me才能应用相应的程序。用户通过手机移动设备这个“可移动”终端,人们可以实现在任何地点、时间进行学习2。1.1 课题的研究背景java自从20世纪90年代早期诞生以来,以其强大的功能迅速为广大程序员们所接受。随着手机的发展,国内外各大开发商纷纷运用java进行软件开发。手机技术的出现,更是进一步丰富的人类生活,数字化生存已经一步步走进我们的生活与工作。它有三个平台技术,其中j2me技术主要是用于满足消费性电子产品和嵌入式设备的需要3。j2me作为java技术专为消费嵌入式系统制定的版本,其稳定性、跨平台性、安全性、扩展性使其成为移动通讯设备上的主流开发平台。同时,相比其它平台而言,基于j2me设计的本系统具有成本低、实用性强、嵌入方便等诸多优点4。现在手机软件的开发,已经成为软件市场上的一大热门行业。1.2 课题的研究目的和意义现在的英语学习软件市场上,针对windows系统的软件更加成熟,它不仅仅只具有词典功能,近几年在质和量上都有很大的飞跃,讲究能有效提高学习效率的一些附加功能,比如:如何让不同文化的人,更快进入英语的文化;在软件上做一些小游戏,增加学习的趣味性;在软件上支持语音,增强英语的语感等。而许多商家也看到了这一点,纷纷推出自己的产品。但是这些在电脑操作系统上比较成熟技术,如何才能够有效的实现这些,让软件功能强大、实用、趣味性强,这就是当前市场上迫切要解决的问题。而j2me是sun公司为资源有限的设备上使用java编程语言而设计的,可为资源有限的设备提供最大的功能5。手机英语学习软件实质是信息技术的高效处理,以手机为基础的现代信息处理的产生和发展,正是英语学习信息化的客观要求。现代科技的飞速发展,英语学习信息化处理从根本上可以为更多的使用者减少多方面的经济资源,在实际操作上也是提高工作效率的捷径,能够很好地做到信息的有效共享和协同。它是一种新型的移动学习方式,已经开始向学习者渗透,让学习者彻底摆脱了学习的时空限制,真正做到了在任何时间、任何地点,根据需求进行自主学习。1.3 手机英语学习软件现状 在国内外手机英语学习软件设计中,在功能方面常见的有以下几种类型:1) 词库维护,包含了一整套管理词库的功能,在这里您可以方便地增减词库、修改词库、增减单词、修改单词等。例如,91英语的词汇管理模块,可以自动记录学习内容,用户可以根据学习记录,进行个性修改。2) 学习内容,包含了一系列的学习内容供用户选择,在这里你可以选择背诵单词、英语听力、英语作文、朗读等内容。例如,英语单词课本大全,集小学英语单词、初中英语单词、高中英语单词、大学四级英语词汇及大学六级英语词汇于一体,通过仿真课堂,分为不同课本、不同课时进行学习。3) 词典,用户可以输入英文搜索出单词的中文翻译,同样也可以在输入中文时搜索出英文单词。例如,金山词霸手机版,随时查询320余万词条海量词典,不联网也可查询常用词汇。还有各大手机生产商,例如nokia、sonyericsson等,都在他们的产品上添加了词典功能模块。4) 单词测试,用户可以针对自己的学习情况进行一个简单的 测试,也对单词进行了再一次的记忆,有效加强记忆。例如,单词风暴手机版,提供了多种测试选项,针对四、六级单词进行测试。5) 趣味游戏,用户可以通过参加一项小游戏,来加强英语学习,也可以在学习的同时放松自己,真正做到在娱乐中学习,提高效率。例如,91英语学习软件,提供了多个有趣的小游戏,用户可以玩对对碰、打气球、填字游戏等。从目前世界范围内对移动学习的研究项目可以看出,利用移动设备自主学习这种方式极大的调动了学习者的学习兴趣7。同时,由于手机系统计算能力和处理能力的明显增强,手机功能逐渐强大,为手机用户移动学习提供了良好的硬件支持。2 系统开发关键技术及开发环境2.1 j2me简介j2me是一个专门面向小型设备应用的“简易”平台,这里的小型设备包括移动电话、个人数字辅助设备、网络电话、数字电视上的机顶盒、自动娱乐系统、导航系统、网络交换以及家用自动电器等。它并不是一种具体的产品,而是一种技术领先的开发和部署无线数据服务的解决方案,并没有为无线设备定义一个新的操作系统或者一个完整的系统软件栈,只是定义和标准化了一种可移植的无线应用开发环境,主要是针对第三方应用开发商8。j2me在1999年的javaone开发人员大会上初次亮相,它的目标是面向智能无线设备和小型计算设备的开发人员,这些开发人员需要在他们的产品中整合跨平台的能力。无线设备和小型计算设备的消费者期望这些设备能够有较高的性能。他们希望小型计算设备有快速的响应时间,与同种设备相兼容,拥有功能完备的应用程序。消费者希望桌面计算机和笔记本电脑上的软件和功能同样能够运行在移动电话和个人数字助理上。为了满足他们的需求,开发人员必须重新考虑他们设计计算机系统的方式。开发人员需要利用商业计算机上现有的前端和后端软件的计算能力,并将这些能力传递到微型、移动和无线的计算设备上。j2me能够以最小的修改来实现这种传递,如果应用程序的设计是可伸缩的,应用程序就可以适应小型计算设备上有限的资源。j2me为在小型电子设备上创建性能卓越的网络应用提供了一套完整的解决方案,能很好的解决软件跨平台的兼容性和安全性的问题。2.1.1 j2me体系结构java me由多种配置(configuration)、简表(profile)和可选包(optional package)组成。应用程序的开发技术人员,可以从中选择并组合出一个完整的运行环境,来满足用户特定的设备系统环境。因此,java me开发的体系结构可以如图1所示:目前,java me主要包括两个配置,即cldc和cdc。cldc是两个配置中较小的一个,为具有间断性联网能力、较慢的处理器和有限内存的设备设计的。cdc是为处理能力较强、内存空间更大、联网能力更出色的设备设计的9。cdc包含一个具有完备特性的java虚拟机,比cldc更大的java se的子集。简表是为目标设备提供完备的应用程序运行环境而设计的。它主要有五个重要的简表:移动信息设备简表、信息模块简表、基础简表、个人简表、个人基础简表。可选包是模块化的,设备制造商可以有选择地把它们添加到自己的java平台,这大大丰富了设备的特性。掌握以下六个功能强大的可选包对开发者得能力有很大帮助,它们分别是:无线信息api、移动多媒体api、pda简表、蓝牙api、web服务api和移动3d图形。图1 j2me的架构fig l the chart of j2me s structure2.1.2 midlet概述 开发midlet前必须首先弄清楚midlet的生命周期,这样才能理解midlet的各种行为和状态切换。midlet有三种状态:暂停、活动和死亡状态。各种状态之间的转换规则如图2所示:图2 midlet状态转化fig 2 the chart of change about midlet s status midlet是一个可执行的应用程序基本单位,所有基于midp的程序的主类都必须继承一个抽象类midlet,它主要实现了startapp()、pauseapp()和destroyapp()三个抽象方法10:1) startapp():该方法表明midlet正在从暂停状态向活动状态转换,此时,midlet通常会初始化激活midlet时需要的所有对象,并且设置当前的屏幕。pauseapp():当midlet从活动状态向暂停状态转换时,该方法将被调用。2) destroyapp():该方法表明midlet方法正在被转换成死亡状态,它释放或关闭midlet在生命周期获得的全部资源。2.1.3 ui知识 ui,user interface的缩写,即用户界面11。用户界面设计是手机屏幕产品的重要组成部分。ui的核心是screen的概念,它代表midlet上的一个display,在任何一个时间点,只能有一个screen可见。每个midlet只能有一个display对象,应用程序可以通过调用静态成员函数getdisplay获得display对象的引用。1) 高级ui midlet用户界面的核心是屏幕对象,屏幕是反映用户输入的设备相关图形加以封装的对象,有且仅有一个屏幕是可见的,并且用户只能在这个屏幕的各组件之间进行切换。高级ui提供了mid的一个抽象接口,通过它可以获得大量的功能。使用高级api首先创建组件把它们加入到屏幕,然后与它们相交互。高级ui一般划分为两大类,屏幕(screen)和组件(form)。2) 低级ui 高级用户界面api不允许控制显示在屏幕上的内容,应用程序只能对组件进行少量管理。但是,有些用户程序可能需要对屏幕上绘制的内容进行更多的控制,因此midp也提供了低级用户界面。低级ui提供了一个工具包来移动和绘制图形、显示文字、获取直接的按键事件等,常用的有canvas类、graphic类、font字体和image图像。2.1.4 记录管理系统在j2me平台上,我们利用记录管理系统来替代数据库系统完成数据的存储、查询等一系列功能12。可以在javax.microedition.rms包中找到它,这个包中所有的类如表1:表1 rms包table 1 the rms package 类/接口 描述recordstore 允许访问记录存储集功能。recordcomparator 提供一个用来实现两个记录间比较的接口。recordcomparation 提供记录存储集的枚举器,可以和比较器和过滤器联合使用。recordfilter 对获取的数据进行过滤。recordlistener 提供一个用来“监听”rms中发生的事件的接口,比如记录增加,修改和删除。rms采用记录的方式来保存数据,然后使用唯一的记录号来应用这些数据,成组的数据就被保存在存储集中。在midp中,记录存储是使用recordstore类来实现的,它定义了维护存储对象的方法以及访问记录的相关操作,它的实例对象是由一系列记录组成的集合。无论什么样的数据,只要能够转换为字节数组,都能够存储到recordstore对象中;读取recordstore对象后,recordstore同样以字节数组的方式返回13。2.1.5 定时器和定时器任务在单词记忆的部分,要实现单词的一个一个显示,用户根据显示的单词进行记忆。在这里,我采用了定时器,可以通过不同的方法来确定什么时候执行任务,包括在一个指定的时间执行一次和那个时间后按照一个固定的时间间隔连续执行。也可以在一段延迟后执行任务,还可以选择以固定的时间间隔连续执行。midp api提供了两个关于定时器的类,java.util.timer类和java.util.timertask类(如表2和表3所示):timertask和timer,它们被称为定时器框架。timertask是用户定义的需要被调度的所有任务的抽象基类。timer类在任务执行的时候负责创建和管理执行的线程。表2 java.util.timer类table 2 the java.util.timer class 方法 描述timer() 构造一个新的timer对象。void cancel() 停止timer。void schedule(timetask task,dare d) 把一个任务定时在时间d运行。void schedule(timetask task,data firsttime,long period ) 让一个任务第一次在一个指定的时间运行,然后每 隔period毫秒运行一次。 void schedule(timetask task,long delay) 指定一个任务在delay毫秒后运行一次。void schedule(timetask task,long delay,long period) 指定一个任务从delay毫秒连续运行,然后每 隔period毫秒运行一次。void scheduleatfixedrate(timetask task,date firsttime,long period) 指定一个任务从firsttime连续运行,然 后以固定间隔period毫秒运行。void scheduleatfixedrate(timetask task,long delay,long period) 指定一个任务在delay毫秒后运行,然后以 固定间隔period毫秒运行。表3 java.util.timertask类table 3 the java.util.timertask class 方法 描述 timer task() 构造一个新的timer task对象。 boolean cancel() 结束该任务。 abstract void run() 这个方法必须被一个包含timer时间执行的代码的方法重载。 long scheduledexecution time() 返回任务上一次执行的确切时间。在本软件中就使用了定时器,实现单词每3秒一个一个的显示,用户有比较充分的时间来记忆单词,同时还自动保存单词显示到了哪一个,下一次打开软件可以自动从这个单词之后开始记忆。2.2 系统开发环境2.2.1 具体开发环境1) 操作系统: microsoft windows xp2) 开发平台: j2me3) 程序语言: java4) 集成开发环境:wtk 2.5.2、pular eclipse sr25) 数据存储: rms、txt2.2.2 开发环境介绍wireless toolkit(简称wtk)是由sun设计的midp应用程序开发工具,虽然功能不如商业版的ide强大,但是对于编译、仿真以及调试而言,算是一个非常实用的工具。它是一个可视化的开发环境,它使你能够通过一个图形用户界面来创建,编辑,打包和测试j2me应用程序。这一个工具包的设计目的是为了帮助开发人员简化j2me开发过程。目前,各大手机厂商往往把wtk经过自身的简化与改装,推出适合自身的产品,如sonyericsson、nokia developers suit等。而jbuilder、eclipse等ide j2me开发包工具,可以被绑定在wtk集成开发环境中,进一步提高开发效率14。eclipse是一个开放源代码,基于java的可扩展开发平台15。它专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由eclipse项目、eclipse工具项目和eclipse技术项目三个项目组成,具体包括四个部分组成eclipse platform、jdt、cdt和pde。jdt支持java开发、cdt支持c开发、pde用来支持插件开发,eclipse platform则是一个开放的可扩展ide,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。eclipse platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。3 系统分析3.1 系统功能需求 该英语学习软件应该实现以下四种核心功能:1) 词库管理,在这里用户可以添加和删除单词;2) 单词记忆,用户可以记忆单词,每隔3秒刷新一个单词;3) 测试,用户可以测试单词的记忆效果;4) 词典,用户在学习中可以查询生词的中文意思。详细功能结构图如图3:图3 功能结构图fig 3 the chart of system structure3.2 系统性能需求 目标硬件环境:1) 显示:96*54象素,1位颜色,大约1:1的象素比例。2) 输入:单手键盘或者小键盘;双手的qwertv键盘;触摸屏。 3) 内存:128kb非易失性内存,供midp组件使用;1024kb的非易失性内存,供应用程序生成的永久数据使用;32kb的易失性内存,供java堆使用。3.3 系统可行性 可行性研究的目的不是解决问题,而是确定问题是否值得去解决。一般来说,至少要从经济可行性、技术可行性、操作可行性三个方面研究16。3.3.1 经济可行性分析 本环节通过分析新系统的成本效益,其中包括估计项目开发的成本,开发费用和今后的运行、维护费用以及新系统将获得的效益,估算开发成本是否高于项目预期的全部经费。本系统投资低,只需一台配置稍好的电脑及相关的应用软件。此外,本系统能够提高数据处理的及时性和准确性,降低用户劳动强度,提高了劳动效率;使用信息更加方便、快捷。3.3.2 技术可行性分析 根据本系统的功能需求,基于j2me进行开发。j2me在1999年的javaone开发人员大会上初次亮相,它的目标是面向智能无线设备和小型计算机设备的开发人员。j2me的一个关键优点是,j2me与所有支持java的设备都是兼容的。支持java的设备就是任何运行java虚拟机器的计算机。motorola、nokia等生产厂商都生产支持java的设备。因此,从技术层面讲,是完全可行的。3.3.3 操作可行性分析该软件系统的目标就是帮助手机用户,实现在闲暇时间记忆英语单词。由于该软件的开发是采用j2me平台,现在几乎大部分手机都支持java,程序的编写也是严格坚持通用的原则,因此该软件系统能够很好的为用户服务。4 手机英语学习软件详细设计4.1 用户界面模块设计4.1.1 欢迎界面模块设计用户在启动midlet后,即进入软件主画面,屏幕开始显示为欢迎画面,超时后自动进入功能选择界面。详细流程图如图4:图4 软件欢迎界面流程图fig 4 the chart of welcome user interface关键代码如下:public void run() synchronized(this)try loaddisplay();alert alert = new alert( 英语学习手机助手, 欢迎使用英语学习手机助手, null, alerttype.info );alert.settimeout( 1000 );globalvariable.display.setcurrent(alert);thread.sleep(1000);/显示功能选择菜单util.show(uilist.index); catch (exception e) e.printstacktrace();return;4.1.2 功能选择界面模块设计功能选择界面流程图如图5所示:图5 功能选择流程图fig 5 the chart of functions choice当欢迎界面超时,进入功能选择主界面,在这里定义了一个uilist类,在类里我采用了一个哈希表,通过键(key)与值(value)的映射,来实现用户选择要用的功能。关键代码如下:public final class uilist/定义功能选择菜单public static string index=index;public static string lexiconlist=lexiconlist;public static string lexicon=lexicon;public static string learn=learn;public static string game=game;public static string dictionary_en=dictionary_en;public static string testfir=testfir;public static string testsec=testsec;public static string helper=helper;public static string exist=exist;public final static string index_text = 0.词库管理,1.记单词, 2.困难测试,3.简单测试,4.英汉词典,5.趣味游戏,6.帮助系统,7.退出系统;public final static string index_code = lexiconlist,learn,testfir,testsec,dictionary_en,game,helper,exit;/新建一个哈希表index_keycodepublic final static hashtable index_keycode=new hashtable();/哈希表静态对应关系static for(int i=0;iindex_text.length;i+)index_keycode.put(index_codei, index_texti);4.2 数据存储设计通过定义一个名为databaseutil的类,来实现永久性数据存储的操作。详细流程图如图6:数据存储的操作要通过记录管理系统来进行操作,而要使用记录管理系统,需要在应用程序中引入包:javax.microedition.rms。要使用记录存储,首先就要创建或打开记录存储,然后才可以对立面的数据进行添加、删除等操作。当要访问rms数据时,必须通过recordstore类提供的openrecordstore()方法开启rms。开启rms之后,就可以对rms进行操作了。例如:当我们要写入一条信息时,只需用addrecord(bytestr, 0, bytestr.length)即可把数据添加到rms中。图6 数据存储流程图fig 6 the chart of data storage当涉及到多条记录的操作,如记录存储中的遍历、排序和查找,就要使用枚举器、比较器和过滤器。构建枚举器、比较器和过滤器对象需要实现rms类包中的其它三个接口,分别为枚举器接口recordenumeration、比较接口recordcomparator和过滤器接口recordfilter17。以下是数据存储的关键代码:public class databaseutil private static recordstore recordstore = null; private static recordenumeration recordenumeration = null; public static vector getdata(string recordname)tryvector v=new vector();recordstore = recordstore.openrecordstore(recordname, true);recordenumeration = recordstore.enumeraterecords(null, null, true);while(recordenumeration.hasnextelement()string str = new string(recordenumeration.nextrecord();v.addelement(str);return v;catch(exception e)e.printstacktrace();return null;finallytry recordstore.closerecordstore(); catch (exception e) e.printstacktrace();return null;/添加数据public static void setdata(string recordname,string record)byte bytestr = record.getbytes();try recordstore = recordstore.openrecordstore(recordname, true);rec

温馨提示

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

评论

0/150

提交评论