基于Android平台的图书馆服务系统设计与实现
夏帮贵
西华大学继续教育学院 成都 610039
摘要

针对现有图书馆手机服务系统的成本高、数据流量大、响应速度慢等缺点,提出基于Android平台的图书馆服务系统的体系结构设计和解决方案。阐述基于Android平台的图书馆服务系统的设计思想、开发模型、主要功能模块以及关键技术的设计与实现。

关键词: 图书馆服务; 手机图书馆; Java; Android
中图分类号:G250
Design and Implementation of Library Service System Based on Android
Xia Banggui
School of Continuation Education, Xihua University, Chengdu 610039, China
Abstract

Current mobile phone library service systems have the defects of high cost,large data flow,slow response and so on. Aiming at this,a solution of system structure about library service system is proposed,which is based on Android. The design thoughts,development framework,design and implementation of main function modules and key technology of the library system are expatiated in this paper.

Keyword: Library service; Mobile phone library; Java; Android
1 引 言

图书馆的数字化,是为了将各种资源、工具和服务集成到用户系统,为用户提供桌面或浏览器服务[ 1, 2]。手机服务已成为图书馆主要的远程服务方式。针对现有图书馆手机服务系统成本高、数据流量大、响应速度慢等缺点,本文采用Java和Socket技术,设计实现了基于Android平台的图书馆服务系统。该系统可解决以上问题,并可轻松实现集成与扩展。

2 需求分析及技术思路
2.1 手机图书馆服务系统现状分析

图书馆手机服务主要包括图书信息查询、借阅记录查询、图书续借、图书预约、电子图书下载、读者证件挂失、图书馆服务公告等,系统主要采用短信或WAP技术实现[ 3]

采用短信技术,需要图书馆建立短信服务器,并与服务提供商(Service Provider, SP)协商,其建设、运行和维护成本高;手机用户以短信方式访问服务,交互性差。采用WAP技术,服务系统实现为WAP网站,建设成本较低;内置WAP浏览器的手机用户登录网站访问各种服务,数据流量大、响应缓慢、用户体验差。

2.2 技术思路

Android平台是Google推出的基于Linux内核的嵌入式操作系统平台,不仅应用于智能手机,还广泛应用于平板电脑以及其他便携式设备[ 4]

基于Android平台的图书馆服务系统由服务器端接口和客户端系统组成。服务器端接口封装服务请求处理和后台数据库访问操作。客户端系统提供系统服务功能,运行于Android平台。表1对短信、WAP和Android技术进行了对比分析。

表1 短信、WAP和Android技术对比分析
2.3 系统特点

基于Android平台的图书馆服务系统有以下主要特点:

(1)建设成本低:系统服务器接口直接部署到Web服务器,对软、硬件平台无特殊要求。

(2)数据流量小,响应速度快:客户端运行于Android设备,与服务器的通信采用Socket HTTP协议,通信数据以文本或XML格式封装,通信量通常为几个字节(查询时不超过1KB)。

(3)集成方便:系统直接访问图书馆系统后台数据库,与现有图书馆管理系统无关。

(4)系统便于扩展、移植和集成[ 5]:客户端和服务器端接口均封装为Java类,可直接在Java应用程序中复用,具有跨平台、开源等特点。

3 系统设计
3.1 系统体系架构设计

根据用户需求,系统采用客户/服务器体系架构,如图1所示:

图1 图书馆服务系统架构

客户端服务接口程序负责将服务请求提交给服务器,接收到服务器响应时, 解析响应数据包, 将处理结果呈现给用户。服务器端的服务接口负责接收客户端服务请求,将数据库操作请求提交给后台数据库,并将数据库处理结果封装为数据包返回客户端。

3.2 系统开发框架

根据系统体系架构,系统开发框架如图2所示:

图2 系统开发框架

数据访问接口类,使用JDBC实现数据库的更新(添加、删除和修改)和查询操作。请求处理类为Java Servlet,接收客户端服务请求,返回处理结果。

客户端接口请求处理类调用HttpURLConnection类,访问服务器端请求处理类的URL[ 6],在URL参数中提供服务识别码和相关参数。服务识别代码和参数如表2所示。结果解析类调用SAX API解析从服务器返回的XML结果[ 6]。用户界面使用Android Activity和视图组件实现。

表2 服务识别代码
3.3 系统功能模块分析

根据系统需求,系统功能模块如图3所示。

图3 图书馆服务系统功能模块

系统功能模块运行于客户端,为用户提供各种图书馆服务。其中系统设置功能用于设置访问图书馆服务使用的个人账号和服务器IP地址。系统通过数据访问类直接访问现有图书馆系统的各种数据库,数据库的管理由现有图书馆系统(如本校使用的汇文系统)完成,因而系统不需要设置数据库管理功能。

4 系统实现

基于系统设计,使用SQL Server数据库模拟图书馆数据库,实现系统的服务器端接口、客户端接口和图3中的部分功能。

4.1 服务器端接口实现

服务器端接口开发工具包括:Eclipse、JDK、Tomcat和SQL Server。

(1)数据访问类实现

数据访问类doSqlDb成员如表3所示:

表3 数据访问类doSqlDb成员

数据访问类doSqlDb的关键代码如下:

public String doUpdate(String sql) throws Exception {

//执行SQL Insert、Update命令实现图书预约、续借和证件挂失等操作

String qr=toXml(St.executeUpdate(sql));//执行SQL命令,将结果转换为XML文本

return qr;//返回结果 }

public String doQuery(String sql) throws Exception {

//执行SQL Select完成馆藏书目、新书信息和借阅记录查询操作

ResultSet rs=this.St.executeQuery(sql);

String qr=toXml(rs);//将结果转换为XML文本

return qr;//返回结果 }

数据访问类doSqlDb可部署到JRE的Lib\ext目录,供服务器的所有Java应用程序(包括Web应用程序)访问;或者部署到Web应用程序的web-inf\classes目录,供Web应用程序独立访问。

(2)服务器端请求处理类实现

服务器端请求处理类doServlet扩展自HttpServlet类,其processRequest()方法处理客户端请求。首先从客户端请求信息中获得服务识别代码和服务操作相关参数,然后生成相应的数据库操作SQL命令,再调用doSqlDb对象执行SQL命令完成数据库操作,最后将处理结果返回客户端。

服务器端请求处理类doServlet关键代码如下:

String sid = request.getParameter("sid");//获取服务器识别代码

String readerid = request.getParameter("readerid");//获取读者证件号

String bookid = request.getParameter("bookid");//获取图书号

String key = request.getParameter("key");//获取查询关键字

String sql = getSQL(sid,readerid,bookid,key);//生成服务操作对应的SQL命令

doSqlDb db = new doSqlDb();//创建数据库操作对象

if (sid.equals("1") sid.equals("5")) {

result = db.doUpdate(sql);}

out.print(result); //向客户端返回服务请求处理结果

服务器端请求处理类在图书馆Web服务器中配置为Web应用程序,客户端通过其URL进行访问。

4.2 客户端接口实现

客户端开发工具包括Eclipse、JDK、ADT和Android SDK。

(1)客户端服务接口实现

客户端接口定义为Java类,用户界面模块调用该类完成与服务器的通信。客户端服务接口由ClientRequest(请求处理类)和myHandler(结果解析类)两个类组成。

ClientRequest类主要成员如表4所示。

表4 ClientRequest类主要成员

ClientRequest类关键代码如下:

public void getDataAt(String urlString) throws Exception {

URL url = new URL(urlString);//生成标准URL

URLConnection conn = url.openConnection();//请求URL连接

BufferedReader buffer = new BufferedReader(new InputStreamReader(conn.getInputStream()));//获得URL连接返回的数据流

String line = null;

StringBuffer document = new StringBuffer();

while ((line = buffer.readLine()) != null)//将返回的数据流转换为字符串缓存对象

document.append(line + "\n");

buffer.close();

queryResultXML=document.toString();//获得返回结果的XML文本字符串

SAXParserFactory factory=SAXParserFactory.newInstance();

XMLReader reader=factory.newSAXParser().getXMLReader();

myHandler handler=new myHandler();

reader.setContentHandler(handler);//设置SAX解析器对象

reader.parse(new InputSource(new StringReader(queryResultXML)));//解析XML

queryRecordColNames=handler.getQueryRecordColNames();//获得结果中的所有字段名

queryRecordValues=handler.getQueryRecordValues();//获得结果中的所有记录值

queryRecordCount=handler.getQueryRecordCount();//获得结果中的记录数 }

myHandler类调用SAX API对查询结果进行解析,其主要成员如表5所示:

表5 myHandler类主要成员

myHandler类关键代码如下:

public void startElement(String uri, String localName, String qName, Attributes attributes){

tagName=localName;//保存当前元素名称

if(tagName.equals("record")) queryRecordCount++;//统计记录条数 }

public void characters (char[] ch, int start, int length) {

tagValue=new String(ch,start,length);

queryRecordValues.add(tagValue);//保存当前元素值

if(!queryRecordColNames.contains(tagName))

queryRecordColNames.add(tagName);//保存当前元素名称 }

4.3 系统功能模块实现

在Android平台中,每个用户操作界面为一个Activity,在Activity中使用各种UI组件来构建界面[ 7]。Activity调用ClientRequest和myHandler对象向服务器提交服务请求,获得请求结果。

设计时,应注意两个问题:

(1)每个Activity都应在配置文件AndroidManifest.xml中进行注册。

(2)必须在AndroidManifest.xml文件的元素之后加入下面的代码,使客户端程序获得网络访问权限:

5 系统测试运行

服务器端采用SQL Server和Tomcat模拟图书馆服务器,客户端使用Android模拟器。

客户端系统启动后,首先显示主界面如图4所示:

图4 客户端系统主界面

系统菜单提供修改服务器IP、修改个人账号、书目查询、借阅记录查询以及新书信息查询等功能。首次运行系统时,应首先修改服务器IP和个人账号。

选择书目查询功能可打开图书信息查询界面,如图5所示:

图5 图书信息查询

在搜索关键字框中输入要查询的书名关键字,再选择“搜索”按钮,下方显示搜索结果。选中图书后,可从菜单选择查看图书详细信息或预约该书。

选择借阅记录功能打开借阅记录及图书续借界面,如图6所示:

图6 借阅记录及图书续借

图6显示了用户借阅的图书信息。选中图书后,可在菜单中选择续借该书。系统其他功能测试不再赘述。

6 结 语

基于手机、平板电脑或其他便携式设备的图书馆服务系统,是图书馆信息化发展的趋势。基于Android平台的图书馆服务系统具有建设成本低、响应速度快、使用方便等特点,可与更多的现有图书馆系统集成,为用户提供更多、更加方便快捷的图书馆服务。

The authors have declared that no competing interests exist.

作者已声明无竞争性利益关系。

参考文献
[1] 张晓林. 数字图书馆机制的范式演变及其挑战[J]. 中国图书馆学报, 2001, 27(6): 3-8, 17. [本文引用:1]
[2] 乐小虬, 李宇, 张晓林, . 嵌入式桌面信息服务及其系统实现[J]. 现代图书情报技术, 2008(3): 7-11. [本文引用:1]
[3] 吴政. 通用手机图书馆系统的设计与实现[J]. 现代图书情报技术, 2009(1): 98-104. [本文引用:1]
[4] Android[EB/OL]. [2011-03-01]. http://baike.baidu.com/view/1241829.htm. [本文引用:1]
[5] 沈正华, 孙辨华. Java将给图书馆现代化带来的影响[J]. 现代图书情报技术, 1998(6): 43-47. [本文引用:1]
[6] Horstmann C S, Cornell G. Java核心技术卷Ⅱ: 高级特性[M]. 北京: 机械工业出版社, 2006. [本文引用:2]
[7] 勒岩, 姚尚郎. Google Android开发入门与实战[M]. 北京: 人民邮电出版社, 2009: 57-135. [本文引用:1]