基于J2MEJ2EE的手机校友录系统设计.docx
《基于J2MEJ2EE的手机校友录系统设计.docx》由会员分享,可在线阅读,更多相关《基于J2MEJ2EE的手机校友录系统设计.docx(33页珍藏版)》请在冰豆网上搜索。
![基于J2MEJ2EE的手机校友录系统设计.docx](https://file1.bdocx.com/fileroot1/2023-1/6/99c19631-e0f1-44be-b5ec-9c4414d70731/99c19631-e0f1-44be-b5ec-9c4414d707311.gif)
基于J2MEJ2EE的手机校友录系统设计
基于J2ME/J2EE的手机校友录系统设计
[摘要]随着手机的日益普及和Java功能在移动设备上的实现,Java应用程序产生的手机增值服务逐渐体现出其影响力,这对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。
第三代移动通信的脚步越来越近了,企业应用、多媒体应用和联网游戏逐渐成为了移动开发领域关注的热点。
本文介绍了在基于Java2MicroEdition(J2ME)规范的手机上开发移动校友录系统。
该系统的设计采用了面向对象的方法,对J2ME客户端体系架构,J2EE服务器体系结构以及移动客户端与J2EE服务器集成进行了设计,实现了现有的Web校友录的基本功能。
[关键词]J2ME/J2EE手机校友录系统
TheDesignofMobilityAlumniSystemBasedonJ2ME/J2EE
[Abstract]Whencellphoneisgettingevermorepopularnowadays,withtheimplementationofJavatechnologyonmobileequipment,incrementofcapitaloncommunicationserviceexhibitsitsforceonpeople’severydaylife,providingthemeverfastinformationjustinhand.Asthethird-generationwirelesscomingalong,enterpriseapplications,multimediaapplicationsandonlinegamesgraduallybecomethehotspotinthefieldofthemobilitydevelopment.ThisdissertationintroducesthathowtodevelopthemobilealumnisystemonthemobilephonewiththeJava2MicroEditioncriterion.ThissystemdesignedthearchitecturesontheJ2MEclientandtheJ2EEserver,designedtheintegrationbetweenthemobilityclientandtheJ2EEserverusingObject-Orientedtechnique.ItimplementedthebasefunctionsontheWebalumniinexistence.
[KeyWord]J2ME/J2EE,mobiletelephone,AlumniSystem
第一章引言
1.1论文研究背景与意义
校友录是一种为用户提供网上交流、聚会的网络工具,它可以提供用户与朋友、同学、同事、老师和亲人等在网上有一个相互交流的机会。
目前已有的校友录系统都是基于Web的,其中最著名的就是SohuChinaRen的校友录。
基于Web的校友录系统可以利用网页丰富的元素和JavaScript等脚本语言构建出内容丰富的用户界面,但是它也存在一定的局限性。
校友录系统的用户间的交互是非即时的,也就是主要以留言的方式,虽然目前PC已经普及,但用户还是无法做到随时随地得使用PC连接互联网来访问Web校友录系统,再加上目前基于Web2.0的实名校园社区的出现,使得基于Web校友录的用户数量在逐渐减少。
随着第三代移动通信脚步的临近,移动领域的应用将带来越来越巨大的商机。
目前绝大多数的主流手机都支持J2ME应用程序,设计基于J2ME的手机校友录系统,结合了手机移动性,使得用户可以随时随地与友人交流,轻松地体验移动网络的方便性。
1.2本课题研究内容与目标
本课题采用面向对象的方法,运用J2ME、J2EE、数据库等现有的技术,设计开发一个基于J2ME的手机校友录系统,实现传统的基于Web的校友录系统的基本功能。
第二章开发环境及相关技术的介绍
2.1Java语言的特点
平台无关性
Java的一个显著优点就是运行时环境提供了平台无关性,它引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。
使用Java编写的程序能在不同的平台运行。
Java的数据类型与机器无关,Java规范中没有“依赖具体实现”[1]的概念。
Java中基本数据类型的大小及其算法都做了明确的规定。
安全性
Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。
它提供了安全管理器,防止程序的非法访问。
面向对象
Java吸收了C++面向对象的概念,将数据和操作封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。
分布式
Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。
健壮性
Java致力与检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。
Java取消了C语言的结构、指针、#define语句、多重继承、goto语句、操作符、重载等不易被掌握的特性,提供垃圾收集器自动回收不用的内存空间。
多线程
多线程可以带来更好的交互响应和实时行为。
适当地使用多线程可以更充分地利用系统资源,使程序的效率大大提升。
Java对多线程的处理十分简单,在不同的平台上,调用多线程的代码是完全相同的。
2.2J2ME是什么?
SunMicrosystems公司将J2ME定义为“一种以广泛的消费性产品为目标的、高度优化的Java运行时环境,包括寻呼机、移动电话、可视电话、数字机顶盒和汽车导航系统。
”
1999年6月在JavaOneDeveloperConference上声明之后,J2ME进入了小型设备开发的行列。
J2ME通过Java的特性,遵循J2ME规范开发的Java程序可以运行在各种不同的小型设备上。
Sun公司希望借助J2ME这把利剑对嵌入式设备这个混乱的领域进行统一,让Java的范围扩展到所有电子设备开发上。
按照现在的发展速度,J2ME很快将被广泛应用于消费和嵌入式设备中。
J2ME主要适用于小型嵌入式设备,这些设备与PC或是服务器设备相比没有统一的硬件标准、外观与操作方式,其功能也是千差万别的。
但是J2ME在适用于这些设备的同时也保留了Java的传统特性,即任何时候和任何地点的代码具有可移植性、部署灵活性、安全的网络传输性,以及代码稳定性。
2.3J2ME总体架构
J2ME使用配置(Configuration)和简表(Profile)[2]定制Java运行时环境(JRE)。
作为一个完整的JRE,J2ME由配置和简表组成,配置决定了使用的JVM,而简表通过添加特定于域的类来定义应用程序。
配置将基本运行时环境定义为一组核心类和一个运行在特定类型设备上的特定JVM。
简表定义应用程序,特别地,它向J2ME配置中添加特定于域的类,定义设备的某种作用。
图2-1描述了不同的虚拟机、配置和简表之间的关系。
它同时把J2SEAPI和它的Java虚拟机进行了比较。
虽然J2SE虚拟机通常被称为一种JVM,但是J2ME虚拟机、KVM和CVM都是JVM的子集。
KVM和CVM均可被看作是一种Java虚拟机——它们是J2SEJVM的压缩版,并特定于J2ME。
图2-1不同的虚拟机、配置和简表之间的关系
2.4关于WirelessToolKit
WTK(WirelessToolKit)是Sun公司针对J2ME推出的用于手机和Palm等移动设备的开发包,是除手机厂商的专用开发包外唯一的手机模拟器开发包。
它通用性高,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商具有一定的不兼容性。
虽然它没有强大的功能和完善的调试手段,但它提供运行模拟器的最基本组件,是其他IDE需集成采用的必备元素。
2.5关于NetbeansIDE5.5和MobilityPack5.5
Netbeans是一个开源项目,致力于为开发者提供稳定、出色的开发工具。
NetbeansIDE和Netbeans平台是netbeans.org的两个著名产品。
目前NetbeansIDE的稳定版本是5.5,MobilityPack是NetbeansIDE用于开发、测试和调试MIDP应用程序的插件。
MobilityPack5.5可以和NetbeansIDE5.5无缝集成,支持CLDC1.1和MIDP2.0开发环境。
MobilityPack还可以很容易地与第三方模拟器集成,为开发者提供所需的运行环境。
本课题主要使用NetbeansIDE和MobilityPack搭建开发环境并进行开发、测试与调试。
2.6MIDP应用程序
MIDP引入了全新的应用程序模型——MIDlet。
MIDlet是应用程序的主类,被应用程序管理软件(ApplicationManagementSoftware,AMS)管理。
多个MIDlet可以组成MIDlet套件,以jar包的形式发布。
与jar文件一起发布的还有一个文本文件——Java应用程序描述符(JavaApplicationDescriptor,JAD)。
JAD文件的作用在于描述MIDlet套件的基本信息,AMS安装MIDlet套件时可以首先解析JAD文件的内容读取套件信息。
按部署方式的不同,MIDP应用程序可分OTA和非OTA两种。
MIDlet:
是Jave一个类,扩展了javax.microediton.midlet.MIDlet抽象类。
MIDlet生命周期分3种状态:
运行状态、暂停状态、销毁状态等。
2.7Java应用程序管理器
手机中负责调配程序运行资源的管理后台是JavaApplicationManager。
它所使用的传输媒体可以是红外线、网络、以及其他可用来传输的媒体。
JavaApplicationManager会从网络上下载代表该ApplicationSuite的JAR档,接着在手机上安装此MIDletSuite,然后在手机开始执行该应用程序。
2.8预先审核
由于移动设备的内存大小和处理器的能有都有一定的限制,因此原本在虚拟机中进行的class文件校验审核动作[3]一般在PC上执行,速度可以接受。
为了是对安全的考虑,任何来自本地或者远程机器,都必须经过ByteCode审核器的验证,以防止程序在传输途中遭到恶意更改。
2.9开发环境的搭建
1.下载JDK和J2ME无线工具包()
安装SUNJDK:
jdk-1_5_0_06-windows-i586-p.exe
安装SUNJ2MESDK:
j2me_wireless_toolkit-2_2-ml-windows.exe
2.下载并安装NetbeansIDE5.5(beans.org)
NetbeansIDE5.5集成了ApacheTomcat5.5.17
3.下载并安装NetbeansMobilityPack5.5(beans.org)
4.下载并安装MySQL5.0()
第三章需求分析
3.1对功能的规定
该系统的用户类型分为普通用户和班级管理员用户,班级管理员除了具有普通用户所有的属性和操作外,还具有管理班级的操作。
普通用户的基本操作:
(1)用户的注册申请和系统登录和注销,并且可以参看系统帮助文档;
(2)维护个人信息,包括个人信息的修改和登录密码的修改,查看自己的登录次数和上次登录时间;
(3)查找学校和班级,加入自己的班级,或者创建新的学校或班级;
(4)查看自己的班级信息和班级成员信息,查看班级留言,添加班级留言,退出班级;
(5)查看和发送纸条。
班级管理员的基本操作:
(1)所有普通用户的基本操作;
(2)班级管理,包括班级成员管理。
手机校友录系统的UserCase如图3-1和图3-2:
图3-1UserCase图1
图3-2UserCase图2
3.2用例描述
(1)注册新用户用例描述:
[引言]
用户必须注册才能登录该系统。
[主事件流]
用户在界面上选择“注册”按钮时,用例开始。
用户通过按键输入用户名、密码(输入两次)以及其他个人信息,按“提交”按钮进行提交注册。
系统验证用户名是否可用。
若用户名不可用,系统提示重新输入一个用户名;若用户名可用,系统建立该用户,并返回“注册成功”的提示,该用例结束。
[异常事件流]
用户可以在任何时候按“取消”取消一个事务,该用例结束。
[异常事件流]
用户按“提交”按钮进行提交时,若用户输入的名不可用或者有一个项为空或者两次输入的密码不同,系统进行提示,并重新输入,用例重新开始。
(2)用户登录用例描述:
[引言]
用户必须登录该系统,才能进行其他操作。
[主事件流]
用户在界面上选择“登录”按钮时,用例开始。
用户通过按键输入用户名、密码(输入一次),按“提交”按钮进行登录。
系统验证用户名是否存在,并验证密码时候正确。
若用户名存在且密码正确,系统承认这次登录,并返回“登录成功”的提示和用户上次登录的时间,用例结束。
[异常事件流]
用户可以在任何时候按“取消”取消一个事务,该用例结束。
[异常事件流]
用户按“提交”按钮后,若用户输入的用户名不存在,系统给出提示,用户重新输入用户名,重新开始该用例。
或者用户选择“注册”按钮,开始一个注册新用户的用例。
[异常事件流]
用户按“提交”按钮后,若用户输入的密码不正确,系统给出提示,用户重新输入密码,重新开始该用例。
(3)用户注销用例描述:
[引言]
用户离开该系统时应进行注销操作。
[主事件流]
用户登录后,在界面上选择“注销”按钮,用例开始。
系统进行该用户的注销,并返回“成功注销”的提示,用例结束。
(4)查看或修改用户信息用例描述:
[引言]
用户可以查看或修改自己的个人信息。
[主事件流]
用户在界面上选择“个人信息”按钮时,用例开始。
系统返回该用户的详细信息,包括用户名、真实姓名、性别、生日、QQ号码、电话号码、MSN帐号、Email地址、联系地址、工作单位,以及用户的访问次数。
用户通过按键输入真实姓名、性别、生日、QQ号码、电话号码、MSN帐号、Email地址、联系地址、工作单位,按“提交”按钮进行提交。
系统验证各项信息的正确性,若验证通过,系统更新数据库,并提示“用户信息修改成功”,用例结束。
[异常事件流]
系统验证信息时发现有一个或多个选项不正确,提示用户重新输入,重新开始用例。
[异常事件流]
用户可以在任何时候按“取消”取消一个事务,该用例结束。
(5)添加留言用例描述:
[引言]
用户可以在已加入的班级里添加留言。
[主事件流]
用户进入以加入的班级后,选择菜单“添加留言”项时,开始用例。
用户通过按键输入留言内容,按“提交”按钮进行提交。
系统将该留言添加进数据库,并提示“留言成功”,结束用例。
[异常事件流]
用户可以在任何时候按“取消”取消一个事务,该用例结束。
(6)发送纸条用例描述:
[引言]
用户可以给班级成员发送纸条。
[主事件流]
用户在成员列表里选择“发送纸条”项时,或者查看纸条选择“回复”时,开始用例。
用户通过按键输入纸条内容,按“预览”按钮进行预览,按“发送”按钮进行发送。
系统接受纸条并加入数据库,提示“纸条发送成功”,用例结束。
[异常事件流]
用户可以在任何时候按“取消”取消一个事务,该用例结束。
(7)创建学校用例描述:
[引言]
用户所在的学校还没有创建时,用户可以创建自己所在的学校。
[主事件流]
用户选择“创建学校”按钮时,开始用例。
用户通过键盘输入学校名称,通过选择学校所在的省份,按“提交”按钮进行提交。
系统验证输入的学校是否已经存在,若不存在,则在数据库里创建该学校的纪录,并返回“学校创建成功”的提示,用例结束。
[异常事件流]
若输入的学校已经存在,系统给出提示,用例结束。
[异常事件流]
用户可以在任何时候按“取消”取消一个事务,该用例结束。
(8)创建班级用例描述:
[引言]
用户所在的班级还没有创建时,用户可以创建自己所在的班级。
[主事件流]
用户选择“创建班级”按钮时,用例开始。
用户通过选择班级所在学校,通过键盘输入班级名称、班主任姓名,按“提交”按钮进行提交。
系统验证输入的班级是否已经存在,若不存在,则在数据库里创建该班级的纪录,并返回“班级创建成功”的提示,用例结束。
[异常事件流]
若输入的班级已经存在,系统给出提示,用例结束。
[异常事件流]
用户可以在任何时候按“取消”取消一个事务,该用例结束。
(9)加入班级用例描述:
[引言]
用户必须加入自己所在的班级,才能够和班级成员进行交流或者进行班级留言。
[主事件流]
用户选择了一个班级,并选择“加入班级”按钮时,用例开始。
用户通过按“提交”按钮进行提交。
系统将更新数据库,用例结束。
[异常事件流]
若用户已经提交过请求,再一次进行提交请求,系统给出提示,用例结束。
[异常事件流]
用户可以在任何时候按“取消”取消一个事务,该用例结束。
(10)脱离班级用例描述:
[引言]
用户可以脱离自己所在的班级。
[主事件流]
用户选择了自己所在的一个班级时,并选择“脱离班级”按钮时,用例开始。
系统给出“是否要退出该班级”的提示,用户按“确认”,系统删除数据库中的纪录,并提示用户已经退出该班级。
[异常事件流]
系统给出“是否要退出该班级”的提示时,用户按“取消”按钮,用例结束。
用户并未退出该班级。
(11)查找学校用例描述:
[引言]
用户可以查找已有的学校。
[主事件流]
用户选择“搜索班级”按钮进入搜索界面,选择“搜索学校”时,开始用例。
用户通过选择学校所在省份或输入关键字,按“查找”按钮进行查找。
系统根据所选择的省份或者根据用户所提供的关键字,从数据库中检索,并返回符合条件的学校列表,用例结束。
[异常事件流]
用户可以在任何时候按“取消”取消一个事务,该用例结束。
(12)显示班级列表用例描述:
[引言]
用户可以查看一个学校的所有班级列表。
[主事件流]
用户选择“搜索班级”按钮进入搜索界面,选择“搜索班级”时,开始用例。
用户通过输入关键字,按“查找”按钮进行查找。
系统根据用户所提供的关键字,从数据库中检索班级,并返回该学校的班级列表。
用例结束。
[异常事件流]
用户可以在任何时候按“取消”取消一个事务,该用例结束。
(13)显示班级留言用例描述:
[引言]
用户可以查看所在班级的留言。
[主事件流]
用户在所在班级选择“查看班级留言”按钮时,开始用例。
系统返回该班级的留言列表。
用户选择一条留言,并按“查看留言内容”按钮,系统返回该留言的内容、留言者ID、留言者姓名、留言时间。
用例结束。
[异常事件流]
用户可以在任何时候按“取消”取消一个事务,该用例结束。
(14)显示班级成员列表用例描述;
[引言]
用户可以查看所在班级的成员。
[主事件流]
用户在所在班级选择“查看班级成员”按钮时,开始用例。
系统返回该班级的成员列表。
用例结束。
[异常事件流]
用户可以在任何时候按“取消”取消一个事务,该用例结束。
(15)显示成员详细信息用例描述:
[引言]
用户可以查看所在班级成员的成员的详细信息。
[主事件流]
用户选择“查看成员详细信息”按钮时,开始用例。
系统返回用户选择的成员的具体联系信息,包括成员的ID、姓名、性别、生日、QQ号码、电话号码、MSN帐号、Email地址、联系地址、工作单位,以及该成员的访问次数。
用例结束。
[异常事件流]
用户可以在任何时候按“取消”取消一个事务,该用例结束。
(16)显示纸条用例描述:
[引言]
用户可以查看自己的纸条,包括发送的纸条和接收到的纸条。
[主事件流]
用户选择“我的纸条”按钮时,开始用例。
系统返回该用户的纸条列表。
用户选择“查看纸条内容”按钮,系统返回该纸条的内容、发送者ID、发送者姓名、接收者ID、接收者姓名、发送时间。
用例结束。
[异常事件流]
用户可以在任何时候按“取消”取消一个事务,该用例结束。
(17)踢除班级成员用例描述:
[引言]
班级管理员可以踢除班级里面的成员。
[主事件流]
班级管理员在班级成员列表里,选择一个成员,并按“踢出本班”按钮时,用例开始。
系统提示“是否真的要将某某成员踢出本班?
”,并给出“确认”和“取消”按钮。
管理员若按“确认”按钮,系统将该成员与该班级解除关系,并返回“操作成功”的提示。
用例结束。
[异常事件流]
用户可以在任何时候按“取消”取消一个事务,该用例结束。
3.3运行环境规定
客户端
支持J2MEMIDP2.0并可以连接互联网的手机
服务器端
PC机或服务器
应用程序服务器:
ApacheTomcat5.5.17
数据库系统:
MySQL5.0
第四章概要设计
4.1系统框架设计
该系统分为客户端和服务器端两部分。
其中,客户端处于J2ME的手机设备上。
由于目前无线网络受到传输质量的约束,手机与服务器的通信应尽量减少[4];而且手机为资源受限的设备,其计算能力远不如PC机或服务器,因此应让其主要的业务功能处理、运算等交给服务器来完成[5],手机只简单地作为表现层。
服务器端采用Servlet来进行业务逻辑处理。
Servlet可以直接处理HTTP的请求,可以减小客户端与服务器端之间的耦合度,也容易进行后期的扩展,如用JSP等技术构建网页,用PC机上的浏览器登陆后台进行的维护和管理,还可以扩展为用内容更加丰富的Web校友录系统。
服务器端则划分为3层。
业务逻辑层:
主要用Servlet来实现,负责与客户端通信和处理业务数据等功能。
持久层:
采用开源的Hibernate框架,负责访问数据库,提供对业务数据的保存、更新、删除和查询等操作。
数据库层:
采用开源的关系数据库系统MySQL。
通过以上的分层,将会提高系统的伸缩性、可维护性、可扩展性、可重用性、可管理性等性能。
具体的系统框架如图4-1所示:
图4-1系统框架图
4.2类-责任-协作模型
根据需求分析中的功能规定和用例描述,可以抽取出以下各个分析类:
用户、学校、班级、访问记录、班级留言、纸条。
系统具体的类-责任-协作(Class-Responssbility-Collaborator,CRC)模型[6]如表4-1到表4-7所示:
表4-1User类的CRC模型
类名:
User
类的类型:
角色
类的属性:
用户编号、用户名、密码、真实姓名、性别、生日、QQ号码、电话号码、MSN帐号、Email地址、联系地址、工作单位
责任:
协作:
修改用户密码
修改个人信息
加入班级
与Classes类协作
脱离班级
与Classes类协作
创建班级
与Classes类、School类协作
创建学校
与School类协作
发送纸条
与Scrip类协作
添加班级留言
与Classes类协作
表4-2Class