针对移动图书馆检索管理平台的功能和需求等问题进行研究,设计基于iOS系统的个人图书管理系统客户端,满足读者自主管理移动数字图书馆的需求,并且实现轻量级图书馆Web系统,能够以便捷的检索方式保证读者更高效地访问图书馆信息资源,提高整体检索效率。
This paper researches the mobile library management platform in functionality, requirement, and other aspects, then designs the books management client for Apple iOS system, to ensure the independent readers manage the mobile digital library, and also designs a lightweight library Web system, that readers can search the library information resources effectively, to improve the retrieval efficiency of the readers.
移动图书馆检索管理平台已经成为现代化图书馆必不可缺的一项重要服务内容,国内外基于安卓(Android)移动终端系统、Apple iOS移动终端系统的自制第三方应用程序(Application,简称APP)开发大致可分为两类:一类是以无线应用协议(Wireless Application Protocol, WAP)平台为主的基于B/S检索模式的APP,应用最为广泛,例如:美国威斯康星大学麦迪逊图书馆移动检索平台[ 1],主要功能为图书馆新闻发布、馆藏目录检索、读者借阅信息查询、图书馆服务时间查询功能等;另一类是完全依托于移动终端设备系统开发的自制终端APP,例如:厦门大学移动图书馆平台[ 2],它利用终端应用程序接口(Application Programming Interface, API)来完成终端和图书馆服务器的数据交换,并利用APP的可扩展标记语言(Extensible Markup Language, XML)解析功能分析、提取、存储图书馆检索Web的结果数据并进行输出。 这两类检索管理平台各有优缺点, 前者的优点是开发简便、 技术成熟稳定,缺点是现在各个图书馆所使用的管理信息系统(Management Information System, MIS)不尽相同,移动设备的浏览器内核也不尽相同,造成了Web检索的兼容性差,并且不能让读者自主地管理本人感兴趣的图书和信息资源,只能被动地检索。后者的优点是技术先进、功能强大、界面和输出结果显示直观,缺点是当图书馆Web变化和更新时,利用XML解析来对图书馆检索Web结果进行数据分析输出,会造成数据不准确,需要重新调整APP程序,同时利用DOM的获取方式进行XML解析时比较占用内存[ 3],特别是在分析大的XML文档时,终端设备内存压力会更大。本文在分析这两种成熟系统的基础上,开发了一套B/S模式和C/S模式相结合的轻量级检索管理平台,其中,B/S模式部分开发利用规范的JSP代码编写解决了现有WAP型检索平台兼容性不强的缺点,并且为了突出轻量级、效率化的特点,对现有图书馆MIS数据库系统表进行数据挖掘,建立轻量化的检索视图,同时通过JavaBean循环嵌套技术实现在一个Web页面中显示书籍和读者的所有关键信息功能,平台还提供特色的电子书库地图指引功能,最大化减少了读者的检索时间。另外,C/S模式开发意在突破一种对读者的束缚,在终端APP上引入SQLite数据库建立读者的小型图书馆,让读者自主地管理自己最感兴趣的书籍和信息。两种模式通过终端APP跳转链接,同时能够让读者共享数据信息。
Apple移动终端产品在销售量和工业技术方面均已走在世界前列,因此在iPhone、iPad终端开发基于iOS系统[ 4]的APP应用程序能给读者带来更完美的体验,读者通过iTunes下载客户端APP软件安装启动,并通过客户端网页跳转功能激活Safari浏览器直接进入轻量级图书馆Web,连接图书馆数据库服务器,如图1所示:
依托现有的图书馆MIS数据库系统实现相关的移动OPAC检索功能,其优点是不需要单独开发数据库系统,不需要与现有图书馆MIS数据库系统同步数据,大大降低人工维护成本和设备成本。另外通过客户端的小型图书馆让读者充分感受到本平台自主管理书籍信息的特点,并让两个子系统无缝链接。
数据流的走向是整个系统运行的线索,如图2所示:
轻量级Web是APP客户端数据域,是用户和业务数据交换域的中介,即读者从图书馆业务数据库检索的信息可以复制到终端的SQLite轻量级数据库进行保存,同时可以从SQLite数据库中调出之前线下存储的图书、作者等信息在图书馆业务数据库中检索是否有相应的资源以便使用。APP客户端数据交换域(即移动终端个人图书管理系统)和轻量级Web检索系统是本文开发的两个核心子系统。
(1)移动终端个人图书管理系统。读者通过此系统在移动终端上建立自己的小型图书馆,记录其感兴趣的相关书籍信息,并随时在终端的小型数据库中进行检索、修改、收藏,实现启动Safari浏览器并自动链接轻量级图书馆Web等功能。
(2)轻量级图书馆Web检索系统。即轻型移动联机公共目录查询系统(Online Public Access Catalogue,OPAC)[ 5],本文设计意在突出轻量级和高兼容性的特点,能够完全兼容Mac Safari浏览器、安卓浏览器、IE浏览器,实现在一页内显示所有图书重要信息和读者信息等快捷功能,提供特色的电子书库地图指引功能。
本系统是基于Apple iOS移动终端系统设计的,开发环境为:Xcode 3.2.5及iOS SDK 4.2软件环境,其核心为轻量级SQLite数据库设计和标准的iOS界面设计,程序为iOS标准的层结构,如图3所示:
![]() | 图3 应用程序层次结构[ 6] |
程序开发的框架主要用到了Cocoa开发框架[ 7](Cocoa Framework),它是Mac OS X上的快速应用程序开发(Rapid Application Development, RAD)框架[ 8],一个高度面向对象的开发框架,是构建Mac OS X应用程序最强大、最高效的工具。程序设计中数据库设计和数据控制类大量利用函数框架Foundation Kit[ 8](Cocoa两个子框架之一),如NSString(字符串)类、NSArray(数组)类等都属于Foundation Kit,基本界面的设计则大量利用应用框架Application Kit[ 8](Cocoa另一个子框架),如大量的接口、视图、窗口和高级类都属于Application Kit。
应用程序服务层包含对打印和图形呈现的支持,包括SQLite数据库程序、Quartz程序、OpenGL程序、Quicktime程序等,其中SQLite数据库是遵守ACID的关联式数据库管理系统[ 9],它具有轻量化、代码开源、运行速度快等特点,特别适合本移动终端轻型APP软件设计,这也是本文程序设计的核心。
核心服务提供对集合、网络、调试、文件管理、文件夹、内存管理、线程、时间和电源的管理,在核心服务的程序设计时着重注意内存的管理,及时引用Release方法进行内存的释放,以避免程序运行时因内存溢出而崩溃。
Mac OS X内核以设备驱动程序的形式提供与硬件的底层通信。它负责管理内存和电源,以及执行基本的I/O操作。
(1)SQLite数据库设计及核心算法
手动创建SQLite数据库,代码:#import "/usr/include/sqlite3.h",然后加入SQLite开发库libsqlite3.dylib模型[ 10],Object-C程序中Book.m文件主要功能是建立对Book数据库的各种操作方法,以方便后续的程序调用,主要包含数据库打开、查询、修改、删除、创建和数据库关闭方法,这些都是进行数据库操作的核心方法,在对每个方法进行调用后都进行了有效的内存回收,保持系统的稳定运行。
以查找所有书籍的数据库(findAll方法)操作为例,核心算法是若要获取表中的全部数据,根据数据信息进行分类并分别存储在不同的动态数据集rs中,然后将所用动态数据遍历到一个动态数组books中用于返回数据载体,方便调用和显示,关键代码如下:
+ (NSArray *) findAll{
PLSqliteDatabase *dataBase = [DataBase setup];
id
rs = [dataBase executeQuery:@"SELECT * FROM Book"];
//将SQL查询结果赋值给rs
//定义一个数组存放所有书籍的信息
NSMutableArray *books = [[NSMutableArray alloc] init];
//把rs查询数据库信息结果遍历到books数组
while ([rs next]) {
NSString *ID = [rs objectForColumn:@"ID"];
NSString *name = [rs objectForColumn:@"Name"];
…]; //略去部分代码
[book release]; } //有效地释放内存,保证系统稳定运行
(2)界面设计及核心控件示例
界面设计是iOS应用APP设计的一个重要环节,界面的易用性、通用性和亲和性成为APP软件是否能让读者快速上手使用的关键,本系统设计时运用适合iOS用户界面使用习惯的设计原则,主要用到UITextView/UITextField、UIButton、UIWebView、UITableView、UILabel等核心控件,运用其中各自控件的属性和方法,如UITextField控件的文本框输入完毕之后要加入软键盘自动关闭的代码,示例:
(IBAction)closeDoneEdit:(id)sender;//点击软键盘上done时,关闭键盘
界面中还包括按钮以及label标签信息等关键因素,下面将举例说明。
①编辑按钮主要用到UIButton控件的一些方法,是用户直观控制APP软件操作的核心,关键代码:
- (void) doEdit{
[booksTableView setEditing:!booksTableView.editing animated:YES];
if(booksTableView.editing)
self.navigationItem.rightBarButtonItem.title = @"完成";
else
self.navigationItem.rightBarButtonItem.title = @"删除";}
②界面标签控制用到UILabel控件,它是控制各个界面因素位置大小的核心,关键代码[ 11]:
UILabel *authorLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 35, 200, 20)];
//用数值规范著者标签在界面中的X像素值、Y像素值及宽度高度
③轻量级Web界面跳转主要用到UIApplication控件,实现了终端APP和轻量级检索Web的结合,关键代码[ 12]:
- (void) doGo{ [[UIApplication sharedApplication] openURL:
[NSURL URLWithString:@"http://222.31.70.84/Lib_Web/index.html"]];}
//一键跳转到Safari浏览器,并指定到图书馆轻量级Web网站
系统考虑到各个系统平台浏览器的兼容性,选择jdk1.6.0_23+MyEclipse6.5+Tomcat6.0的开发环境,主要目的是对现有图书馆管理检索系统进行二次开发。
(1)建立优化的数据库视图结构,在视图建立阶段进行必要的数据库表提炼,只关联最关键的数据表以提升检索效率;
(2)在网页编程方面选择标准的JSP语言进行编写,内嵌JavaBean技术[ 13],有效隐藏服务器的重要信息,提升安全性,实现了代码的复用,提高代码编译效率,并且对于轻量级Web在一页内显示所有图书重要信息和读者信息的功能需求,利用JavaBean循环嵌套查询技术[ 13],核心算法为:把查询数据库的全部压力均匀地分配到各层JavaBean中进行运算,达到最佳的查询压力和查询层数比,在各层输出最重要的查询信息点,最大限度地减少检索时间并减轻服务器的查询压力,使得检索读者、书籍等关键信息的页面跳转时间为0,通过特色的电子书库地图导引功能指引读者最快速地找到所需的图书;
(3)为了解决JavaBean嵌套技术带来的数据库交互过多、链接次数增加问题,引入开源的C3P0 JDBC数据库连接池[ 14]技术,有效地管理数据库链接,对于各层空闲的数据库链接进行复用,保证在多并发查询时数据库运行的稳定。
①Web服务器端search_book.jsp页面JavaBean嵌套核心算法关键代码如下:
//第一层检索:输出图书题名等信息
connectsybase2 BaseConnecttion=new connectsybase2();
// 利用JavaBean新建数据库连接
ResultSet rs=BaseConnecttion.executeQuery(sql1);
// 执行SQL语句并取得结果
strID=rs.getString(2).substring(0,1);
// 将索书号的首字母赋值给strID
if("A".equals(strID))
// 进行字符串比较即进行索书号类目(A类图书)比较取得相应的书库地图连接
//第二层JavaBean嵌套查询,传递的是图书信息主键记录控制号,功能:输出图书可借册数
String strID1=new String(); //新建strID1字符串
strID1=rs.getString(3);
connectsybase3 BaseConnecttion1=new connectsybase3();
ResultSet rs1=BaseConnecttion1.executeQuery(sql2);
//三层JavaBean嵌套查询,主要功能是:输出图书著者信息,代码省略
②关键代码对于C3P0数据库连接池设置如下:
ds.setMaxPoolSize(1000); // 设置连接池的最大连接数为1000
ds.setMinPoolSize(1); // 设置连接池的最小连接数为1
ds.setMaxIdleTime(30); // 设置连接最大空闲时间
轻量级图书馆Web系统运行在Unix服务器环境下,利用Tomcat6.0软件进行发布,读者可以在App Store下载客户端软件安装,文件大小6MB,建议使用iOS4.0以上系统,通过iPad、iPhone模拟器及真机运行网站效果如图4所示:
通过轻量级Web检索系统,读者一键登录入口成功后,即可直接显示所有读者重要信息,界面如图5所示:
从页面中也可看到读者已借图书、应还日期、可借册数等关键信息,不需要多次界面跳转查询,读者通过点击预借图书的索书号系统会自动判断该图书的所在位置并弹出所在楼层的电子地图,指引读者在最快的时间内找到书籍,如图6所示:
对轻量级检索Web系统和图书馆现有Web检索系统进行比较,发现通过移动终端的移动OPAC检索效率显著提升,结果如表1所示:
表1其他移动图书馆Web和轻量级Web的读者信息检索时间开销比较
网站类型查询借阅图书时间开销/s查询借阅册数时间开销/s
其他移动图书馆Web74
轻量级图书馆Web11
读者可以自主建立图书档案,或者将从轻量级检索Web检索的数据复制到个人管理终端系统中,如图7所示:
存储在本机的小型数据库中,方便日后可以随时调用书籍信息,如图8所示:
读者可以推送给图书馆采访部采书,分享给其他读者或者去书店直接购买纸质图书,同时,读者还可以记录感兴趣的图书中的关键知识点,到图书馆Web直接检索电子资源并下载使用,如图9所示:
读者可以不必激活Safari浏览器输入相应的网址浏览轻量级检索Web,直接通过终端APP的自动跳转功能便可激活Safari浏览器并自动进入轻量级检索Web,方便快捷。
轻量级Web图书馆系统是一套经过提炼简化的B/S模式图书检索系统,个人图书管理系统设计是针对读者信息管理素养所设计的一套C/S系统,两者的结合组成了一套B/S模式与C/S模式相结合的现代化移动图书馆检索管理平台,为读者带来一种现代图书馆新型的现代化服务模式体验。
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|
[6] |
|
[7] |
|
[8] |
|
[9] |
|
[10] |
|
[11] |
|
[12] |
|
[13] |
|
[14] |
|