基于四层架构J2ME移动课表查询系统的开发设计

2011-01-04 02:07徐炳文
关键词:课表服务器端客户端

徐炳文

(广东岭南职业技术学院 电子信息工程学院,广州 510663)

基于四层架构J2ME移动课表查询系统的开发设计

徐炳文

(广东岭南职业技术学院 电子信息工程学院,广州 510663)

随着手机的智能化程度越来越高,为方便教师与学生利用手机随时随地对教务课表信息进行查询,提出一种基于四层架构的J2ME移动课表查询系统.系统划分为客户层、Web服务层、数据业务层和数据存储层进行开发与设计.对系统的实现过程提出了一些改进方法,丰富了软件系统开发的构架周期理论,有效解决了原有教务课表系统只能利用校园网在计算机上进行存储与查询的缺点.

四层架构;J2ME;课表;查询

随着GPRS技术的成熟与3G时代的到来,手机的智能化程度和扩展性随之提高,手机的应用也越来越广泛,这就需要开发越来越多的手机应用软件系统来满足用户的需求.近几年来,高校教务部门的信息化建设取得了长足的发展,几乎所有高校都使用计算机信息系统来管理课表[1].但软件系统在使用中仍存在一些不足,如教务排课系统形成的课表只能利用校园网在计算机上进行存储与查询,且不能满足师生进行移动实时无线查询课表信息的需要.本研究提出一种基于四层架构的J2ME移动课表查询系统.J2ME是JAVA 2的一个组成部分,专为机顶盒和移动电话等嵌入式消费电子设备提供JAVA语言平台,包括虚拟机和一系列标准化的JAVA AP[2].J2ME程序可以在PC机上开发和仿真运行,然后很容易地部署到目标机上,从而降低其开发、测试和发布的操作难度和成本.

1 J2ME课表查询系统架构设计

开发一个能够通过移动手机对教务课表信息随时随地按需要进行查询的信息系统需要设计出移动手机终端查询教务系统课表信息的方式.移动手机的数据传输与有线网络的数据传输方式不同,既需要软件支持也需要硬件设备支持.在开发时客户端的手机数据传输方式采用GPRS方式,服务器端通过增加一个无线接口硬件设备来接收移动手机发来的查询请求,然后通过有线网络连接服务器.软件的设计与实现主要分4大模块:客户层的移动终端、Web服务层的教务课表服务器端、数据业务层的教务课表服务器端和数据存储层的课表信息数据库系统.客户层的移动终端用于接收用户的查询输入和显示查询结果.Web服务层与数据业务层的教务课表服务器端主要负责接收来自移动手机终端的查询请求,通过JDBC连接数据存储层的后台课表数据库,并把查询结果传回客户端的手机.数据存储层的课表信息数据库部分用于保存课表信息.根据系统需求分析,设计出四层架构J2ME课表查询系统的整体层次架构如图1所示.

图1 J2ME课表查询系统层次架构Figure 1 Architecture of J2ME school timetable query system

2 J2ME课表查询系统的设计与实现

2.1 J2ME课表查询系统的算法设计

本系统对应分成4部分进行开发设计:客户层的J2ME客户端、Web服务层的J2EE课表服务器端、数据业务层的J2EE课表服务器端和数据存储层的后台课表信息数据库.具体J2ME-J2EE课表查询系统算法流程如图2所示.

图2 J2ME课表查询系统算法流程图Figure 2 Algorithm of J2ME school timetable query system

2.2 客户层多线程访问控制的设计与实现

移动客户端属于客户层,采用J2ME去开发设计,是系统用户输入查询信息和显示查询结果的用户界面.J2ME移动客户端程序发出课表信息查询请求并连接到J2EE服务器端程序,J2EE服务器经过一系列的处理后把查询结果数据集传回给移动客户端.在设计实现时,客户层的移动终端使用HttpConnection打开与Web层服务器的网络连接,然后使用setRequestMethod(HttpConnection.POST)方法向服务器传递教师工号或学生班别号和第几学期等信息.网络连接成功后,使用open-DataOutputStream()方法和write.UTF()方法发送查询请求内容给J2EE课表服务器,最后使用DataInputStream()方法和read.UTF()方法接收J2EE课表服务器传回的课表查询信息数据集.

客户层移动终端的实现主要是开发MIDlet,使同样的服务能够被很好地移植到不同的移动客户端[3].由于系统为J2ME-J2EE开发的C/S工作模式,客户层的移动客户端程序在运行时由于同样需要执行网络连接,如HTTP连接、UI调度等操作,可能会出现因竞争临界资源而导致的死锁现象.为了防止多个移动客户端访问网络时的并发多线程出现死锁,需要把其中一个线程设计为独立线程[4].当移动客户端程序想访问网络时,可通过调用notify()方法来唤醒访问网络的线程,当访问完成退出网络后,可通过调用wait()方法释放“锁旗标”使该线程进入等待状态,则另外的线程能够调用notify()方法进入网络.客户层的并发多线程访问网络控制的设计如图3所示.

图3 客户层多线程访问网络控制Figure 3 Client layer multi-threaded access to the network control

在客户层并发多线程访问网络控制中的P(S)与V(S)是2条原语操作,其中S为信号量,P(S)操作表示是否允许该线程访问网络,V(S)操作表示访问完成后退出网络,在具体编程语言中可以转换为if()或while()语句实现.为了方便客户层多线程访问控制,把客户层移动终端访问网络时的线程技术设计成一个独立的CommandThread类,主要部分实现如下:

2.3 Web服务层与数据业务层的设计与实现

J2EE服务器由Web服务层和数据业务层构成.Web服务层使用Servlet容器处理来自移动客户端的请求,然后再将这些请求发往数据业务层的企业级服务器,使用EJBs进行会话处理请求,并通过JDBC连接到数据存储层的后台课表数据库.课表数据库处理完SQL查询后形成的查询结果数据集被发往数据业务层的企业级服务器并提交给Web服务器,由Web服务器再传回给客户层的移动终端上显示.J2EE课表服务器实现时使用的是Servlet,因此需要设计一个ServletAPP类.在ServletAPP类中使用doGet()和doPost()方法与J2EE课表服务器网页交互信息,使用destroy()方法清除资源,对于移动终端程序的查询请求则使用Request.getInputStream()方法接收,另外使用readUTF()方法从输入流中读取“教师工号或学生班别号”和“学期信息”等信息.Web服务器端的输出流向移动终端传回查询处理结果信息,使用response.getOutputStream()方法处理响应,然后使用writeUTF()函数输出返回字符串的数据流,通过无线网络发送给移动终端接收.Web服务层与数据业务层主要部分实现如下:

(1)服务器端使用doGet(),doPost()和destroy()方法来实现接收移动终端的网络连接请求.主要部分实现如下:

(2)服务器接收来自客户端的请求,对服务器来说是输入流.服务器端接收的移动终端查询请求信息主要是教师工号ID或者学生班别号ID以及学期信息等.这些信息对于服务器来说是输入流,服务器端接收查询课表信息请求处理的主要部分实现如下:

(3)服务器处理移动终端发来的查询请求后形成查询结果数据集输出流传送给客户端.主要部分实现如下:

2.4 数据存储层的设计与实现

教务课表信息存储在数据存储层的后台课表数据库,服务器接收到客户端的查询请求后通过JDBC连接后台课表数据库.JDBC连接数据库主要分为3步工作:与数据库建立起连接、向数据库发出查询请求和把处理结果从数据库中取出来.为了实现这些工作,本系统设计一个访问存储课表信息的后台Access数据库公共类TimetableQuery和4个表:CourseTB表、StudentTB表、TeacherTB表和ClassroomTB表.其中,CourseTB表存储与课程有关的信息,包括课程ID(主键)、课程Name、上课班别、讲授教师、上课时间和上课课室等.StudentTB表存储有关班别的课表信息,包括班别ID(主键)、上课课室、上课时间、上课课程和讲授教师等.TeacherTB表存储有关教师的课表信息,包括教师ID(主键)、上课课室、上课时间、上课课程和上课班别等.ClassroomTB表存储有关课室的课表信息,包括课室ID(主键)、上课课程、上课时间、讲授教师和上课班别等.CourseTB表、StudentTB表、TeacherTB表和ClassroomTB表在开发设计上基本相似,下面只给出CourseTB表的设计,如表1所示.

表1 CourseTB表Table 1 CourseTB table

课表信息存储在排课系统形成的课表数据库中,因此需要设计程序访问后台的数据库.JDBC是JAVA数据库连接技术的API的简写,它允许用户从JAVA应用程序中访问任何表格化的数据源.JDBC除提供更宽范围的SQL数据库的连接外,还允许用户访问其他数据库(如Access)和电子表格的数据源等.本系统采用Access数据库,连接数据库的工作是通过JDBC的API来实现的.主要部分实现如下:

(1)注册数据库JDBC驱动:

(2)建立与数据存储层Timetable Query数据库的连接:(3)对课表进行查询可以按教师工号、学生班别号、课程号、教室号或学期等信息进行,以下仅以教师工号进行课表查询为例:

(4)把查询的课表信息结果取出来:

//定义一个空的字符串变量,把查询结果取出来

3 J2ME课表查询系统主要界面的实现

由于移动手机受到存储容量非常小、屏幕小和按键简单等资源条件的限制,要开发能够处理大量信息的、交互式的软件,将使移动手机产生频繁屏幕转换,运行软件力不从心.结合J2ME-J2EE的特点,系统分别使用Alert类、Form类、TextField类、List类、Ticker类和Command类等.其中使用Alert类在软件启动时显示软件版权,用户通过在Form对象中放置的TextField对象输入查询请求的教师工号ID或学生班别号ID等信息,再通过List对象选择查询请求的学期信息,这些信息均作为客户层移动终端查询请求的内容输入,处理结果形成的数据集在另外一个Form对象中.使用Ticker类显示软件帮助信息,使用Command对象类添加按钮.

下载移动客户端程序到手机上并装载启动后,在请按提示输入查询信息栏中输入教师工号、学生班别号、课程号或课室号,然后选择第几学期的查询请求内容,按“发送”按钮把查询请求信息传递到J2EE课表服务器端,经过一系列处理后传回查询结果数据集.使用教师工号查询课表信息的主要操作界面如图4所示.

图4 J2ME课表查询系统主要界面Figure 4 Main interfaces of J2ME schedule query system

4 结束语

测试与试用表明系统具有运行稳定、易于扩展和安装简便等良好性能.四层架构J2ME移动课表查询系统的实现丰富了软件系统开发的构架周期理论,设计过程中提出了一些改进方法,极大地方便了学生和老师对课表信息的查询.J2ME凭借其开放的特性占据了绝对的移动软件开发市场,商业市场中其他类似的应用十分广泛,非常值得改造推广.此外,移动软件开发的难点之一就是要开发能够处理大量交互信息、具有频繁屏幕变换且不需要占用很大存储空间的系统,但目前移动手机的存储容量有限,屏幕小,要实现这些技术还需要进一步探索.

[1] 杨淑莹,张桦.“数字图像处理”教学软件的开发设计[J].天津师范大学学报:自然科学版,2009,29(4):76-80.

[2] 许立春,陈勇,李传之.基于J2ME-GPRS学生信息管理系统的设计与实现[J].计算机工程与设计,2009,30(23):5415-5418.

[3] 金英,李泽鹏,张晶.多线程Java程序安全行为模型的静态检查方法[J].计算机学报,2009,32(9):1856-1868.

[4] 池瑞楠.基于J2ME和J2EE的移动电子商务系统研究[J].微计算机信息,2007,23(12):60-62,79.

Design and implementation of a four-layer J2ME-based mobile phone on school timetable query system

XUBingwen
(College of Electronic and Information Engineering,Guangdong Lingnan Institute of Technology,Guangzhou 510663,China)

A four-layer J2ME-based mobile phone on school timetable query system is presented for the convenience of teachers and students to query schedule at all times and places with the increasing intelligence and scalability of mobile phone.The four-layer J2ME-based mobile phone on school timetable query system is designed and implemented in accordance with four layers:client layer,Web service layer,data services layer and data storage layer.By using some improved method the architecture of software system development cycle theory is enriched in the implementation process of system.The system effectively overcomes the shortcomings of the original system that can only use the campus network to storage and query.

four-layer;J2ME;school timetable;query

TP311.5

A

1671-1114(2011)02-0059-05

2011-01-28

徐炳文(1977—),男,高级工程师,讲师,主要从事计算机管理软件开发方面的研究.

(责任编校 纪翠荣)

猜你喜欢
课表服务器端客户端
学生出招解决”日课牌“问题
如果我是校长
Linux环境下基于Socket的数据传输软件设计
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
各地区学生课表