APP下载

基于微信小程序的图书馆座位预约选座系统的设计

2017-02-05吴国华

移动信息 2017年9期
关键词:座位程序图书馆

吴国华



基于微信小程序的图书馆座位预约选座系统的设计

吴国华

同济大学软件学院,上海 200000

微信小程序一经问世,就引起了各行各业的强烈关注,代表了移动端应用未来发展的趋势。图书馆在移动应用方面存在的问题,通过微信小程序可以迎刃而解。通过微信小程序开发图书馆座位预约系统研究和设计,初步实现了设计目标,展示了微信小程序在开发、应用上的便捷性。

微信小程序;座位预约系统;图书馆

引言

微信小程序(Wechat mini programs)由腾讯微信事业部开发,2017 年1 月9 日正式上线,是一种无需下载安装即可使用的应用,可与微信公众号绑定,用户通过搜索或扫描二维码即可找到并打开应用,体现了“用完即走”理念[1]。微信小程序是根植于微信App这一个扩展。截至2017年5月,微信拥有9.38亿用户,是众多社交APP的领跑者[2]。微信小程序所代表的下一代移动互联网服务理念就是:无须安装、触手可及、用完即走、无须卸载,即缩短用户操作路径、减少安装App的麻烦、释放手机内存、节省时间、提升体验[2]。由此可见,微信小程序虽然命名为“小程序”,其实是一种比我们现有任何App都更加灵活、更加简便的一种新的App平台,运行在微信小程序中的应用,无需考虑移动设备的操作系统是安卓还是iOS,无需考虑操作系统的版本,不占用独立内存和存储空间。基于微信小程序的特性,我们有理由相信,在很多场景中,小程序将大规模替代传统App。

高校的图书馆一般都是学校中最理想的学习、自习的场所。经过近几年的发展,高校图书馆不仅蕴藏着丰富的文献和学习资源,而且在阅读环境上改善了很多,空调、Wi-Fi热点、电源插座等设施基本都已配备。这些资源和设施都免费提供给在校学生使用。不少高校图书馆新馆建设得犹如酒店、百货商场。随着到图书馆学习、查阅文献的学生越来越多,特别是在期末、重大考试前,图书馆经常是早早地排起了“长龙”,这时的“占座”现象也尤其突出。占座的工具层出不穷,有书、杯子以及写上占座词语的字条,甚至有些读者使用链条锁,给图书馆管理带来了很多问题。有些读者占着座位,却一天都不使用,造成了极大的资源浪费。

图书馆自助选座预约系统在这种环境下应运而生。自助选座系统通过良好的可视化界面展示图书馆座位的状态,并能够实现用户与系统的友好交互。通过网络实现移动端、PC端预约座位,解决了图书馆排队的问题,改善了图书馆座位资源的浪费情况,提高了图书馆座位资源的利用率。系统产生的读者选座、预约、暂离等行为数据,可以剖析读者在图书馆的使用规律,发掘和提炼出相关信息,以此进一步改进图书馆座位资源分配,为图书馆的管理提供决策依据[3]。

1 现状分析

市场上现有的自助选座预约系统主要由设置在图书馆的触屏电脑来实现预约选座和到馆签到,多个阅览室(自习室)、多个楼层需要部署多个触屏电脑,这会带来排队选座、签到等方面的问题,同时这些设备也需要投入大量资金和人力,效费比不高。

有厂商意识到了移动端将是选座预约系统的主要载体,选座App也就随着出现。选座App基本可以解决触屏电脑选座的尴尬,但是它也存在一些不足:需要针对不同的环境定制开发App;后期维护App需要大量的人力和财力;App的推广慢,用户也容易出现流失,毕竟在手机上安装大量的App,会影响手机的运行速度。

微信小程序的出现,给自助选座预约系统带来了另一个不错的选择。从前文中微信小程序的特点可以看出,微信小程序很好地契合了预约选座系统的需求。首先,微信平台拥有庞大的用户群体,读者的手机中绝大部分都安装了微信;其次,微信小程序不像传统App那样,不需要“下载”“安装”,不需要占用存储空间和运行内存,对用户而言,大大降低了使用成本;最后,微信小程序可以多种方式启用,可以通过搜索小程序名称、扫描小程序二维码或别人分享的链接和二维码,推广非常简便。

2 系统设计

2.1 系统模块

系统由服务器端、中间件层、微信小程序层和用户端4层结构组成。服务器端存储用户信息、统计信息、违规信息;中间件层负责获取、交换服务器端和小程序数据;微信小程序提供预约系统前台界面和数据处理;用户端允许用户通过搜索或扫描小程序二维码使用预约系统。

2.1.1 用户界面

(1)用户登录

用户登录是指第一次使用预约选座小程序或退出账号后重新进入时需要使用的系统开始模块。用户登录模块采用多种信息匹配的方式认证用户,用户信息存储在服务器端,包含以下信息:姓名、学号/工号、借阅证号。用户登录中需要输入:姓名、学号/工号、手机号码,读者输入的姓名和学号/工号匹配成功才允许登录系统,如图1所示。

登录成功后进入预约系统主界面,如图2所示。

(2)预约座位

该功能模块,主要负责预约信息的显示和输入,如选择场馆、预约日期、预约起始时间和使用时长等,如图3所示。

系统为了方便读者选座,预设预约日期范围为当天、明天和后天,也就是系统只接受3天内的预约。这主要是出于防止出席盲目预约和时间过长导致的不确定性而影响读者违约的情况。预约时长上规定为最长3小时,最短30分钟。

(3)随机选座

随机选座模块是为了方便读者快速预约,系统随机分配可用座位。

(4)自助选座

自助选座功能主要是为那些对座位有各种要求的读者提供一个人性化的功能,如座位是否靠近窗户、是否靠近书架,或者就喜欢某个座位的特殊要求。系统界面如图4所示。

(5)撤销预约

系统还提供撤销预约的功能,方便读者由于计划有变而采取撤销预约,释放预约的座位提供给其他读者使用。

(6)签到

系统调用手机的摄像头,扫描该阅览室的签到二维码,系统自动识别二维码并为该读者处理签到。

图1 用户登录

图2 预约系统主界面

图3 预约座位

图4 自选座位

2.1.2 违规检查

系统预约规则为:超出预约时间15分钟还未签到即为“违约”,违约次数超过3次,系统自动冻结该用户7天,期间不能使用座位预约功能。

2.1.3 后台管理

后台管理功能模块主要实现用户管理、阅览室管理、阅览室预约记录和预约统计报表等功能。其中用户管理中可以对某个用户禁止预约、解除禁止预约、取消惩罚等操作。

3 关键方法和实现技术

3.1 开发环境

3.1.1 .NET框架(.NET Framework)

.NET框架(.NET Framework)是由微软开发,致力于敏捷软件开发(Agile software development)、快速应用开发(Rapid application development)、平台无关性和网络透明化的软件开发平台。.NET是微软为2000年代对服务器和桌面型软件工程迈出的第一步。.NET包含许多有助于互联网和内部网应用迅捷开发的技术。

3.1.2 SQL Server 2008

SQL Server系列软件是Microsoft 公司推出的关系型数据库管理系统。SQL Server 2008 版本可以将结构化、半结构化和非结构化文档的数据直接存储到数据库中,可以对数据进行查询、搜索、同步、报告和分析等操作。数据可以存储在各种设备上,从数据中心最大的服务器一直到桌面计算机和移动设备,它都可以控制数据而不用管数据存储在哪里。此外,SQL Server 2008 允许使用 Microsoft .NET 和Visual Studio开发的自定义应用程序中使用数据,在面向服务的架构(SOA)和通过 Microsoft BizTalk Server 进行的业务流程中使用数据。信息工作人员可以通过日常使用的工具直接访问数据。

3.1.3 IIS

Internet Information Services 7.0 (IIS7) 不仅是一个 Web 服务器,更是一个安全性增强、易于管理的平台,适用于开发和可靠地寄存Web 应用程序和服务。此外,IIS7 是 Windows Web 平台的主要增强,在统一的 Microsoft Web 平台技术和ASP.NET、Windows Communication Foundation Web 服务以及Windows SharePoint Services 中扮演着中心角色。IIS7 是 Microsoft 发布的迄今为止为止最强大的 Web 服务器。它提供了一组新功能,极大地改进了开发、部署和管理 Web 解决方案的方式。IIS7 的模块化设计使管理员拥有了前所未有的控制Web 服务器的能力。

3.2 主要功能模块实现

3.2.1 用户认证模块

系统根据用户输入的信息,自动匹配用户姓名和学号(工号),匹配成功即更新用户手机号码,允许进入预约系统。主要实现代码如下:

requestLoginLocalServer() {

var that = this;

//发起网络请求

wx.request({

url: app.globalData.baseUrl + "wx_minilogin",

data: {

openid: app.globalData.OPEN_ID,

data: that.data.ENCRYPTED_DATA,

iv: that.data.IV,

skey: app.globalData.SESSION_KEY,

studentno: that.data.studentid,

mobile: that.data.mobile,

uname: that.data.name,

},

method: "POST",

header: {

'content-type': 'application/x-www-form-urlencoded'

},

success: function (res) {

if (res.data.res == 1) {

app.globalData.IS_REGISTER = true;

vardataInfo = res.data.ext;

varidx;

for (idxindataInfo) {

app.globalData.UID = dataInfo[idx].uid;

app.globalData.userPic = app.globalData.avatardUrl + dataInfo[idx].userpic;

app.globalData.siteUserInfo = dataInfo[idx];

try {

wx.setStorageSync("siteUserinfo", app.globalData.siteUserInfo);

} catch (e) {

}

}

wx.redirectTo({

url: '../index',

})

}

else {

wx.showModal({

title: '提示',

content: res.data.msg,

showCancel:false

})

}

},

fail: function (res) {

wx.showToast({

title: res.data.msg,

})

}

})

}

3.2.2 随机选座模块

系统自动在可用座位中选取一个座位,主要实现代码如下:

getRandPos: function (currentStatu) {

varcurrentStatu = currentStatu;

varroomId = this.data.roomArray[this.data.roomIdx].id;

var date = this.data.selectDate;

varstarttime = this.data.selectDate + ' ' + this.data.startTimeArray[this.data.startIdx] + ":00";

var duration = this.data.durationSendArray[this.data.durationIdx];

var that = this;

wx.request({

url: that.data.baseUrl + "get_random_desk",

data: {

uid: app.globalData.UID,

rid: roomId,

ctime: date,

stime: date + ' ' + that.data.allowSelectArray[that.data.startIdx] + ":00",

dur: duration

},

method: "POST",

header: {

'content-type': 'application/x-www-form-urlencoded'

},

success: function (res) {

console.log(res)

if (res.data.res == 1) {

varvData = res.data.ext[0];

console.log(vData);

selectPosId = vData.pid;

that.showRndWin(vData.pid, vData.r + "排" + vData.c + "桌" + vData.name, vData.rname, date, that.data.allowSelectArray[that.data.startIdx] + ":00", vData.etime, currentStatu);

}

else {

console.log("orderPos res not 1")

wx.showModal({

content: res.data.msg,

showCancel: false

});

}

},

fail: function (res) {

console.log(res.msg)

wx.showToast({

title: res.msg,

})

}

})

}

3.2.3 违规检查模块

系统规定超出预约时间15分钟还未签到即为“违约”,违约次数超过3次,系统自动冻结该用户7天,主要实现代码如下:

主要实现代码如下:

if@m_state=0 and@m_sm>15 begin--超出分钟,标为过期未签到

updateS_LabOrdersetstate=2 whereID=@m_idandRoomID=@m_roomandUserID=@m_userid

if (selectbcfromS_UserwhereID=@m_userid)>=2 begin

--违约次数超过2次,则冻结使用7天

updateS_Usersetbc=0,bctime=DATEADD(d,7,@m_stime)whereID=@m_userid

endelsebegin

--违约次数+1

updateS_Usersetbc=bc+1,bctime=nullwhereID=@m_userid

end

insertintoS_LabOrderLog(OrderID,UserID,AddTime,Memo)values(@m_id,@m_userid,GETDATE(),'过期未签到(自动)')

end

4 结语

微信小程序通过微信庞大的用户群及微信小程序本身的优势,一问世就受到强烈关注。小程序的特点,可以很好地应用于图书馆选座、入馆教育、培训等方面。图书馆在数字化、移动化、泛在化等多种社会发展趋势中也需有所作为,应与第三方合作,挖掘内部资源,完善和优化图书馆的移动服务生态,提升图书馆行业在“互联网的下半场”中的价值。

[1]朱玉强.微信小程序在图书馆移动服务中的应用实践——以排架游戏为例[J].图书馆论坛,2017,37(7):132-138.

[2]王天泥.当图书馆遇上微信小程序[J].图书与情报,2016(6):83-86.

[3]华泽,韩东旭,陆悠,张妮.学校图书馆自习室自动选座系统的设计与实现[J].现代计算机(专业版),2017(30):56-60.

Design of Library Seat Reservation and Selection System Based on WeChat Small Program

Wu Guohua

School of Software Engineering Tongji University, Shanghai 200000

Once the WeChat small program comes out, it has aroused the strong concern of all walks of life, and represents the trend of the future development of mobile terminal application. The problems existing in the mobile application of the library can be solved through the WeChat small program. The research and design of Library seat reservation system is carried out through WeChat small program. The design goal is initially achieved, showing the convenience of WeChat small program in development and application.

WeChat small program; seat reservation system; library

G250.7;G252

A

1009-6434(2017)9-0044-05

吴国华(1983—),男,在福建省龙岩学院图书馆工作,同济大学软件学院软件工程硕士研究生在读。

猜你喜欢

座位程序图书馆
换座位
给Windows添加程序快速切换栏
试论我国未决羁押程序的立法完善
巴士上的座位
图书馆
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
换座位
那个没抢到座位的孩子
去图书馆