当前各高校都提供统一的账号和密码登陆学校的各种系统,包括学校新闻、图书馆系统、教务系统和校园一卡通系统等。这些系统一般都分散在不同的子系统中。本文设计和实现了基 于 Android 操作系统的校园客户端系统,该系统集成上述各个系统,方便校园师生访问校园信息。本系统使用解析 html 文本格式数据的 HtmlParser.jar 工具包、解析类 SAXParser 和 JSONObject 。经测试系统在 Android 2.3 及以上版 本运行良好。<br/ > Currently the teachers and students can visit the news system, library system, educational administration system and campus card system by username and password. These systems are generally distributed in different subsystems. This paper designs and implements the campus client system based on the Android operating system, which integrates the various systems to facilitate teachers and students to access campus information. The system uses HtmlParser.jar, SAXParser and JSONObject to parse html text format data. The system runs well under Android 2.3 and above system.
当前通迅设备特别是智能手机已经成为生活的必须品,各种手机操作系统应运而生,其中Google的Android操作系统因其开源、对开发商免费和良好的产业运作策略等优势吸引了众的移动厂商加盟。
当前各高校都提供了各种各样的信息系统供校园师生使用,这些系统主要包括学校新闻系统、图书馆系统、教务系统和校园一卡通系统等,这些系统一般都分散在不同的子系统中,由于分散,使用起来可能不太方便。本文设计和实现了基于Android操作系统的校园客户端系统,该系统集成上述功能,方便校园师生访问校园信息。
统一的账号和密码登陆学校的各种系统,包括学校新闻、图书馆系统、教务系统和校园一卡通系统等。这些系统一般都分散在不同的子系统中。所以开发一个基于Android操作系统的校园客户端应用是有必要的。本文设计和实现了基于Android操作系统的校园客户端系统,该系统集成上述功能,方便校园师生访问校园信息。本系统经测试系统在Android 2.3及以上版本运行良好。
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
Android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层[1-4]。
Android平台优势:android是一个开放的平台,允许任何移动终端厂商加入到Android联盟中来,而且免费向开发人员提供[
本校园客户端以湖北经济学院校园网为基础而开发,系统主要模块的设计和实现都是基于现有的系统。
本校园客户端主要包括如下图1所示的四个模块,即校园新闻、图书馆系统、教务系统和校园卡系统。
校园新闻作为学校师生和外界沟通的一个窗口,集成在校园客户中是非常重要的。校园新闻模块包括如图2所示的八个子模块,每一个子模块对应于一个方面的热点问题。
图书馆信息对于在校师生来说及为重要,将图书馆系统的相关功能集成在校园客户端中,当学校师生需要借阅书籍或是查阅资料时,就可以随时随地使用智能手机获取相关信息。如下图3是图书管系统的功能模块图。
具体功能如下:
1) 读者登录:通过读者证号和读者密码,进入
图1. 校园客户端模块
图2. 学校新闻
图3. 图书馆系统
图书馆查询系统。
2) 借还查询:通过查询方式的下拉框选择,可以得到借阅情况和归还情况的相关信息。
3) 预约查询:可以获取预约信息。若没有预约,则显示“暂时没有内容”。
4) 我的账目:通过表格显示序号、日期、正题名、科目以及金额。
5) 超期文献:可以了解目前所借书中是否有超期书本以便及时归还。
6) 荐购结果:填写荐购单可以通过图书馆管理员沟通,购买馆藏所需书籍。
7) 我的咨询:向系统提交相关咨询信息。
8) 我的书架:建立虚拟书架,并进行维护。
9) 喜欢类目:设置自己喜欢的类目,提交后可以进行检索观察。
10) 我的新书:可查知馆藏的新书通报。
11) 利用统计:图书馆利用统计可以从自己设置的开始日期到结束日期所借阅的书籍,有借还册数统计、阅览时间统计以及文献借还历史。
12) 资料修改:修改读者的登录信息。
13) 密码修改:填入读者证号、旧读者证号、新读者密码、确认新读者密码,提交后即完成密码修改。
14) 找回密码:输入读者证号,通过录入的Email信息接受读者密码,若没有录入Email信息,则与图书馆工作人员联系找回密码。
教务管理系统中的信息与学校师生息息相关,也是学校师生要经常使用到的,将其集成在校园客户端中,可以给学校师生提供及大的方便。如下图4是教务系统的功能模块。
具体功能如下:
1) 网上选课:包括必修和专业选修选课、选体育课、重修或补修选课、公共选修选课,直接从服务器获取相关数据,以多选方式给出,选完后提交给服务器。
2) 报名活动:包括报英语四六级等,从服务器获取相关数据,编辑相关资料提交给服务器
3) 教学质量评价:对代课老师做出相应评价,从服务器获取相关数据,以多选方式给出,选完后提交给服务器。
4) 信息维护:包括用户相关信息和密码的修改,从服务器获取相关数据,编辑相关资料提交给服务器
5) 信息查询:包括专业推荐课表、学生个人课表、学生成绩、学生考试、等级考试、培养计划、教室、学生选课情况查询,直接从服务器获取相关信息进行显示
6) 教学质量返馈:指学生信息员向学校返馈相关信息,编辑相关资料提交给服务器。
7) 公用信息:指教务处发出的公告,从服务器获取相关信息直接显示。
校园卡关联着学生的生活资金,学生会经常的查阅资金使用情况和向卡上转账,这些功能集成在校园
图4. 教务系统
客户端中在给予学生方便的同时也可以解决因学校硬件终端不足而造成排对臃肿现像。
校园卡系统功能模块:如图5所示。
具体功能如下:
1) 转账业务:实现银行卡余额查询、校园卡余额查询、修改消费密码、校园卡挂失、网费缴纳、修改查询密码、修改消费限额、校园卡解挂银行卡校园卡转账等查询功能。
2) 辅助信息查询:实现拾卡信息浏览、失卡信息浏览、资料下载和通知等查询功能,此处主要是帮助丢失校园卡的学生获得更多的信息找回失物。
3) 流水信息查询:通过输入帐(学)号、密码、验证码,并选择持卡人用户类型,即可进入流水信息查询界面,主要查询持卡人基本信息、持卡人统计、查询当日流水、查询历史流水等信息。
校园客户端的主要原理是通过访问现有的网站,获取网站内容,然后提取关键信息,将这些信息显示出来。所获取的网站内容可能是HTML文件或XML文件,这些文件本质上都是存文本,故只需要将这些文件的内容当做字符串进行信息提取,就可以获得所需要的内容[
工具包需要根据网址获取信息,校园新闻系统的网址为:http://news.hbue.edu.cn/index.php,通过该网址使用htmlparser.jar提取信息的原理流程如下:
1) 通过给定的url地址生成一个URL对象;
2) 通过URL对象的openConnection()方法得到一个HttpURLConnection对象con;
3) 用con的setRequestMethod (String method)方法设置URL的请求方法如:GET、POST等,如果要向服务器发送一些消息头属性,可以用con的setRequestProperty (String key, String value)方法来设置请性属性如:setRequestProperty (“Referer”, “”);
4) 通过con的getOutputStream()方法得到于服务连通的输出流对象outputStream,这样就可以通过
图5. 校园卡系统
outputStream的write方法向服务器写请求参数数据;
5) 通过con的getInputStream()方法得到与服务器连通的输入流对象inputStream,这样就可以通过inputStream的read方法获取从服务器那返回的数据。
详细实现如下图6所示。
但获取所需要的网站页面内容后,需要对这些页面内容进行解析,以获取说需要的关键信息,如下是对Html网页的解析原理,如图7所示。
该解析过程说明如下:
1) 用htmlParser.jar工具包中的Parser类的静态方法creatParser (String html,String charset)方法创建一个解析类对象parser;
2) 用名字标签过滤器TagNameFilter、属性标签过滤器HasAttributeFilter、逻辑标签过滤器如AndFilter等组合出一个标签过滤器对象如andFilter;
3) 通过extractAllNodesThatMatch(andFilter)方法得到一个结点列表nodeList,该列表中结点具有上面名字标签过滤器和属性标签过滤器指定的标签名和属性值;
4) 然后通循环对结点列表nodeList进行迭代,
图6. 数据获取流程
图7. html解析原理
获取其中的每个子结点parentNode;
5) 通过parentNode.toPlainTextString()方法获取结点中的文本信息,然后通过getChildren()方法得到其所有子结点的列表nodeList;
6) 重复步骤4)和5)的过程,直至取出所有结点的文本数据。
当获取特定的信息后,需要在Android客户端中显示出来。通常有两种方法可以显示。一是根据先提取关键内容,然后使用各种Android控件来显示。二是使用Android系统类库中的显示网面数据的视图类WebView直接显示,该方法在显示数据前需做一些设置:选用WebView对象的getSettings()方法获取一个Web Settings对象,然后调用该对象的相关方法设置一些属性,典型的需要设置的属相如 setBlockNetworkImage设置是否显示网络图像, setBuiltinZoomControls设置是否支持缩放, setJavaSciptEnabled设置是否支持Javascript脚本等。该过程的流程如图8所示。
JSON解析要求所解析的内容具有特定的格式,解析原理过程如下:
图8. 校园新闻模块显示原理
1) 准备好JSON格式文本json;
2) 用构造方法new JSONObject(json)创建一个JSONObject对象jsonObject;
3) jsonObject对象中的信息是以键值对的形式存在,故调用jsonObject.getString(键值)得到键所对应的值。解析原理流程如图9所示。
以图书馆系统为例来说明如何获取图书馆信息并实现图书馆系统的客户端。因为进入该模块前要验证用户名和密码信息,因此Android客户端需要一个添加一个登陆模块,其具体实现原理就是模访浏览器行为:向服务器提交用户名和密码信息,然后通过服务器返回的信息判断用户名和密码是否通过验证,没有通过就继续验证,通过则进图书馆系统。图书管理系统主要是查询和增删改查操作。查询模块的实现方式是直接将需要查询的数据提交到学校的服务器,然后接收从服务器那返回的数据,析解后进行合理的组织,最后显示出来;增删改查的操作则和登录操作的原理相同。该过程流程如图10所示。
其他主要模块的实现过程和新闻系统,图书馆系统的实现过程相同。
基于上述客户端原理,已经实现了校园客户端的
图9. JSON解析原理
图10. 登陆验证后获取数据
功能。如下是部分功能的界面。
1) 教务管理系统登录界面
在提示信息框中输入账号和密码,即可登录教务管理系统的界面。其中密码有明文和密文显示两种,登录身份有部门、教室和学生。图11是登录界面。
2) 学生教务系统的树形组件界面
在学生教务管理系统界面,由树形组件显示各功能的分组管理,更易于查找必要信息。图12是教务系统功能。
3) 学生个人课表
学生个人课表通过HTML解析后获取信息,然后在客户端显示出来。这里以图表的形式显示。如图13所示。
以上设计实现了基于Android平台的校园客户端的应用,该校园客户端面向在校师生,能够通过客户端的综合平台查询和修改相关信息。本程序的功能基本满足在校师生的相关需求,可以给做相关项目的人
图11. 密文和明文登录
图12. 一级和二级教务系统功能
图13. 学生个人课表
提供一些参考以增快其开发效率,但应用介面做得不是很美观,而且在安全性方面考虑得不够多,程序的健壮性还有待测式,细节方面还有待完善,用户体验考虑不足,这些都需要后期来不断改进和完善。
[
[
[
[
[
[