首页 > 范文大全 > 正文

基于Android平台的校园信息查询系统客户端设计与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于Android平台的校园信息查询系统客户端设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:针对广大师生随时查询校园信息的需求,设计了基于android平台校园信息查询系统客户端,利用Java、数据库和WebServices等技术完成了系统的设计实现了从移动客户端通过Wifi或3G网络查询服务器端数据信息的功能。系统经过校园网环境测试,可顺利实现各项查询功能,为广大师生即时查询信息带来了便利。

关键词:Web Services;Android;信息查询;移动客户端

中图分类号:

文献标识码:A 文章编号:1672-7800(2014)003-0101-03

0 引言

随着互联网的快速发展,各个高校都有了自己的校园网,并在校园网上了基于Web的各类信息管理系统和查询系统,这些系统的,为师生获取信息提供了便捷的通道。各类基于Web的信息查询系统都离不开互联网和计算机的支持,对于小数据量查询,比如通知公告、课程表、通信录、考试安排、考勤信息、学生个人信息等的查询,显得比较繁琐,特别是在远离计算机的某些紧急情况下,又要即时查询这些信息就变得特别困难[4]。

由于3G网络的覆盖,使得移动互联网的应用可以不受地理位置限制,加之移动终端智能化程度的不断提高,综合使用移动智能终端和移动互联网几乎可以实现在任意时间任意地点查询任意内容[3]。智能手机作为移动智能终端的典型代表,在高校师生中的拥有率和PC拥有率相当,而智能手机中尤以Android系统发展最为迅速,本文根据目前的应用需求开发了一款基于Android平台的校园信息查询系统客户端,同时为节约流量,将部分常用信息利用SQlite 数据库进行本地化存储,最大化地满足师生对校园信息的即时查询需求。

1 系统框架结构

根据需求分析,本系统主要采用客户端/服务器端模式(C/S模式),服务器端利用Visual 2008搭建的Web Services为Android智能终端提供访问远程数据库的接口;客户端则利用Wifi、2G或3G网络访问服务器端的Web Serivces提供的接口来获取相关数据信息,系统业务模型如图1所示。

系统角色包括教师、辅导员和学生,教师可以查询教学任务、通知公告、教职工手机号码、部门电话、班级课表、班级辅导员、班级考勤、学生手机号码等信息;辅导员除教师角色所能查询的信息外,还可以查询学生的个人基本信息、详细信息、出勤情况、院系加扣分情况等信息;学生可以查询通知公告、课程表、考试成绩、考试安排、个人出勤情况、个人院系加扣分情况、教师信息、辅导员及班级任课教师的联系方式等信息。

为区分角色,系统启动后进入欢迎界面过程中会自动读取本机号码,并将读取的手机号码与数据库中预存的号码进行比较,若是教师号码则进入到教师查询界面,若是辅导员号码则进入辅导员界面,若在预存的教师和辅导员号码中都未匹配成功,则进入到学生查询界面。因此,若教辅人员更换手机号码应及时通知管理员进行数据库号码更新,否则将不能进入相应角色查询,系统流程如图2所示。

2 关键技术

2.1 常用数据信息本地化存储

SQLite是一种流行的关系数据库管理系统(Relational Database Management System,RDMS),是Android系统集成的一个轻量级数据库,同时支持SQL语言[1]。SQLite数据库一般存储在/data/data//databases/路径下,为了节约使用者流量,本系统在Eclipse设计环境下的assets目录中有预存一个名为data.db的数据库,该数据库存储有部分常用但较长时间不会更改的相关信息,系统初次运行时会判断SQLite存储路径下是否有数据库,若有则不做任何操作,若无则从assets文件夹下将数据库拷贝至SQLite存储路径下,其中拷贝部分实现的关键代码如下:

InputStream myInput = myContext.getAssets().open(ASSETS_NAME);

String outFileName = DB_PATH + DBNAME;

OutputStream myOutput = new FileOutputStream(outFileName);

byte[] buffer = new byte[1024];

int length;

while ((length = myInput.read(buffer)) > 0)

{ myOutput.write(buffer, 0, length); }

myOutput.flush();

代码中DB_PATH为SQLite数据库存储路径,ASSETS_NAME、DBNAME为数据名称。在联网查询过程中,若发现数据有更新,则可通过调用SQLiteOpenHelper类来访问数据库,通过这个类的getWriteableDatabase( )方法可以获取一个SQLiteDatabase对象,该对象通过提供insert、delete和update方法来封装执行这些操作所需要的SQL语句,若需要手动执行这些操作,可以使用execSQL方法来对数据库表执行任何有效的SQL语句,如更新语句。

2.2 移动客户端与服务器端的数据交互

在Android系统中要完成客户端与服务器端的数据交互,一般都必须借助于WebService,它是一种基于SOAP协议的远程调用标准,通过WebService可以将不同操作系统平台、不同语言、不同技术整合到一起。在Android SDK中并没有提供调用WebService的库,因此,需要使用第三方的SDK来完成调用。目前比较适合智能手机的SDK是Ksoap2,它是一个开源项目,为Android平台提供了一个轻量级的高效的SOAP库[2],利用它调用WebService的关键代码如下:

SoapObject request = new SoapObject(WebService_nameSpace,methodName);

request.addProperty(param, value);

SoapSerializationEnvelope envelope =

new SoapSerializationEnvelope(SoapEnvelope.VER11);

Envelope.bodyOut = request;

HttpTransportSE ht = new HttpTransportSE(serviceURL);

ht.call(null,envelope);

SoapObject soapObject = (SoapObject)envelope.getResponse( );

以上代码返回的结果通常都是XML结构,因此,必须对返回结果进行解析方可正确读取数据,在Android中,XML文件解析最常用的有DOM、SAX和PULL 3种解析方式,DOM的工作方式比较耗手机资源[1],SAX和PULL工作方式类似,本系统采用的解析方式是SAX,实现的关键代码如下:

SAXParseFactory factory = SAXParserFactory.newInstance( );

SAXpraserHelper helperHandler = null;

SAXParser parser = factory.newSAXParser( );

XMLReader xmlReader = parser.getXMLReader( );

helperHandler = new SAXPraserHelper( );

xmlReader.setContentHandler(helperHandler);

InputStream stream = getResources( ).getAssets( ).open(xml);

InputSource is = new InputSource(stream);

xmlReader.parse(is);

helpHandler.getLinks( );

通过SAXParser解析器获取事件源对象XMLReader,然后连接事件源对象XMLReader到事件处理类DefaultHandler中,再调用XMLReader的parse方法从输入源中获取XML数据,最后通过实例化的对象helpHandler返回需要的数据集合,并将其显示在视图界面上。

2.3 信息查询实现

本系统的信息查询包括通知公告查询、教学任务查询、教工号码查询、班级课表查询、班级考勤查询、学生号码查询、学生详细信息查询、考试安排、学生成绩、出勤情况、院系加扣分情况查询等,由于实现的方法较为相似,在此以辅导员角色查询学生详细信息为例加以说明。学生详细信息查询支持按系、专业、班级模块查询,也支持按姓名模糊查询或按身份证号码精确查询,查询模块如图3所示,这里主要用到的控件是Spinner控件的三级联动查询,查询结果通过ListView控件显示,关键实现代码如下:

List bjString;

departmentDAO bjDao = new departmentDAO(context);

bjString = bjDao.getBJ(zyNoString);

adapterBJ = new ArrayAdapter

(context, android.R.layout.simple_spinner_item, bjString);

adapterBJ.setDropDownViewResource

(android.R.layout.simple_spinner_dropdown_item);

spbj.setAdapter(adapterBJ);

其中,departmentDAO为自定义的数据操作类,通过它的自定义方法,getBJ可以获取到相应专业的班级列表

控件上,通过OnItemSelectedListener监听Spinner控件,当选项内容发生改变时,绑定不同数据到相应Spinner控件上。

3 结语

为方便高校师生快速准确地查询到校园相关信息,本文开发了一种基于Android平台的校园信息查询系统客户端,实现了通知公告、课程表、通信录、考勤信息、考试安排、学生成绩、师生个人基本信息等的快速获取。系统采用Web Services技术实现了客户端与服务器端的数据通信,为节约流量,利用SQlite将常用信息进行本地化存储。该系统在智能手机上已经通过测试且运行稳定。

参考文献:

[1] 陈文,郭依正.深入理解Android网络编程技术详解与最佳实践[M].北京:机械工业出版社,2013:72-74.

[2] 闵现畅,黄理灿.基于Android平台的Web服务技术研究[J].工业控制计算机,2011(4):92-94.

[3] 张新柱,白立静,郭福三.基于Android手机终端信息查询系统的设计[J].齐齐哈尔大学学报,2012(7):47-51.

[4] 徐浙君.基于Android的教务信息查询系统设计与实现[J].信息技术,2013(7):72-74.