基于Android平台的课表查询软件设计

2013-11-01 09:25
天水师范学院学报 2013年2期
关键词:课表服务器端教务

吴 衡

(天水师范学院 物理与信息科学学院,甘肃 天水 741001)

大学生的课程具有课程种类多、教室分布分散、上课时间和次数安排灵活、每门课有不同的教室、选修课程多等特点,所以记录这些信息的课表往往密密麻麻。学生一般会将课表打印出来,随身携带。纸质的课表在使用中容易破损、遗失、难以长期保存,而且很难及时更新,一旦课程发生变化,经常会发生因课表没有及时更新导致学生找错教室、上课延误等问题。

本文将教务管理与智能手机相结合,设计实现基于Android(安卓)系统的应用软件——高校课表查询软件,很好地解决了查课表难的问题。本软件设计新颖,学生只需输入学号,便可以快速显示本人的详细课表,包括代课教师、授课地点、上课时间、课程周节次等。通过笔者所在单位的实践,该系统得到了师生的认可。

1 Android系统简介

Android是目前最流行的智能手机平台(占据全球智能手机操作系统市场的59%的份额,中国市场占有率为76.7%),其最大特点是采用Linux系统做内核和应用程序使用JAVA语言开发。

2 系统的框架设计

整个系统由服务器端和客户端组成,系统流程按照C/S模式构架。如图1所示。

图1 教务数据流拓扑图

智能手机终端通过无线数据网络将学生信息发往Job Schedule Server(任务调度服务器,简称JSS),JSS将学生信息转发到系统负载低的Application Server(应用服务器,简称APP)。APP SERVER负责与学校的教务平台通信,它将从JSS传来的请求逐一按以下步骤处理:安全检查;远程SQL查询教务平台;数据重新格式化;压缩封装;查询结果返回,最后课表信息再通过无线数据网返回智能手机终端。接收到信息后,手机终端按如下步骤逐一进行:安全扫描;数据解包;数据重新格式化;更新手机界面、呈现学生课表。

代码的编写使用开源编辑器Eclipse。编译、运行和调试在Google提供的手机模拟器上进行。

为了尽可能避免安卓平台碎片化的问题,开发应用程序接口选择Android2.2版本,最大程度地解决程序在不同运行安卓版本手机间的安装问题。同时,在开发的过程中采用模拟器和真机双测试,从而保证了程序的运行效果,加快了开发进度。[1]

3 系统的设计实现

3.1 客户端实现

安卓手机客户端使用JAVA语言编写、Eclipse编辑,项目结构如图2所示。

图2 教务项目结构示意图

程序运行后首先启动欢迎界面。欢迎界面在屏幕上短暂停留几秒后进入学生信息输入界面,在该界面输入学号,点击“查课表”按钮,学生周课表出现,单击每一节课,显示每节课的详细情况。

3.1.1 欢迎界面的实现

欢迎界面的代码文件是Splash.java,继承了android的Activity类,它是整个程序的默认入口。欢迎界面在屏幕上停留几秒后使用Intent方法进入信息录入界面(SNoInput.java)。停留效果由子线程方法实现。[2]主线程建立欢迎界面后,用户新建一个子线程实例,用子线程实现规定时间的延迟,结束后告诉主线程进行用户界面(User Interface简称:UI)刷新,从而产生了屏幕停留的效果。实例代码如图3所示。

3.1.2 学生信息输入界面

SNoInput.java实现学生输入学号和网络获取详细课表两个功能,其中网络处理部分是整个程序的核心和难点。数据从服务器端通过网络传入手机客户端时往往会产生延迟现象,延迟可能在1s以内,也可能会达到4~5秒或者更长。[3]Android程序运行后默认情况下在一个线程内,UI更新、数据处理是一步一步进行的。如果网络延迟很短,点击查询后很快会进入课表显示界面。一般来讲,延迟超过3秒,手机会产生假死机现象,就会严重影响程序的用户体验。网络性能决定延迟的长短,处理延迟的最好方法就是将网络处理与主程序线程分开处理,也就是异步任务机制,Android提供了工具类android.os.asynctask来实现该机制。SNoInput.java使用Asynctask创建异步任务来解决网络延迟问题,代码如图4所示。

3.1.3 课表详细显示界面

Android标准库中的GridView类用表格的排列方法显示数据。[4]以节次——星期关系按照表格的形式显示课程名称,在课表的每个窗格的onClick事件中触发Dialog,显示详细信息,如图5所示。

3.2 服务器端实现

App SERVER服务器端是客户端和学校教务Oracle数据库的纽带,它首先要考虑数据安全和系统负载。安全方面,底层操作系统选用Linux3.0,代码使用Shell脚本和PHP语言共同编写,采用多层次防护安全策略,这样可以有效地增加系统安全性;同时系统对所有的客户端请求进行安全扫描,过滤敏感SQL查询语句。PHP调用原生Oracle数据库接口,直接与学校教务数据库进行通信,SQL查询课程表的实例代码如图6所示。

图3 屏幕延迟代码及效果图

图4 异步任务机制处理代码及截图

图5 课表显示代码与截图

图6 SQL查询语句的实现代码实例

在Oracle数据库上的查询均优化为单表查询,查询的结果返回App SERVER服务器上后进行重新封装的,这样数据处理工作全部转移到App SERVER服务器上,将数据库的负载降到了最低。

4 结束语

文中实现的课表查询软件是基于Android平台的查询服务,利用教务Oracle服务器数据接口,制作APP SERVER服务器对课表进行查询,客户端手机列出详细的课表信息,并且在笔者工作单位进行了应用。通过移动通信网络与手机课表应用服务器之间的互联通信,提供给学生各种与课程有关的信息,方便了师生的生活和学习。

附程序下载地址:http://dep.tsnc.edu.cn/android/tsncjw.php

[1]沈文瑞,曾连荪,杨臻.基于Android平台的校园导览软件设计[J].电子设计工程,2012,(9):26-28.

[2]郭宏志.Android应用开发详解[M].北京:电子工业出版社,2010.

[3]佘志龙.Google Android SDK开发范例大全[M].北京:人民邮电出版社,2010.

[4]Meier R.Android 2 高级编程[M].2版.王超,译.北京:清华大学出版社,2010.

猜你喜欢
课表服务器端教务
学生出招解决”日课牌“问题
高校教务管理工作的现状分析与优化研究
如果我是校长
教务排课对高等院校教学运行的作用分析
Linux环境下基于Socket的数据传输软件设计
浅析新时期高校教务管理工作创新探讨
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
各地区学生课表
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用