吳國(guó)華
?
基于微信小程序的圖書館座位預(yù)約選座系統(tǒng)的設(shè)計(jì)
吳國(guó)華
同濟(jì)大學(xué)軟件學(xué)院,上海 200000
微信小程序一經(jīng)問(wèn)世,就引起了各行各業(yè)的強(qiáng)烈關(guān)注,代表了移動(dòng)端應(yīng)用未來(lái)發(fā)展的趨勢(shì)。圖書館在移動(dòng)應(yīng)用方面存在的問(wèn)題,通過(guò)微信小程序可以迎刃而解。通過(guò)微信小程序開(kāi)發(fā)圖書館座位預(yù)約系統(tǒng)研究和設(shè)計(jì),初步實(shí)現(xiàn)了設(shè)計(jì)目標(biāo),展示了微信小程序在開(kāi)發(fā)、應(yīng)用上的便捷性。
微信小程序;座位預(yù)約系統(tǒng);圖書館
微信小程序(Wechat mini programs)由騰訊微信事業(yè)部開(kāi)發(fā),2017 年1 月9 日正式上線,是一種無(wú)需下載安裝即可使用的應(yīng)用,可與微信公眾號(hào)綁定,用戶通過(guò)搜索或掃描二維碼即可找到并打開(kāi)應(yīng)用,體現(xiàn)了“用完即走”理念[1]。微信小程序是根植于微信App這一個(gè)擴(kuò)展。截至2017年5月,微信擁有9.38億用戶,是眾多社交APP的領(lǐng)跑者[2]。微信小程序所代表的下一代移動(dòng)互聯(lián)網(wǎng)服務(wù)理念就是:無(wú)須安裝、觸手可及、用完即走、無(wú)須卸載,即縮短用戶操作路徑、減少安裝App的麻煩、釋放手機(jī)內(nèi)存、節(jié)省時(shí)間、提升體驗(yàn)[2]。由此可見(jiàn),微信小程序雖然命名為“小程序”,其實(shí)是一種比我們現(xiàn)有任何App都更加靈活、更加簡(jiǎn)便的一種新的App平臺(tái),運(yùn)行在微信小程序中的應(yīng)用,無(wú)需考慮移動(dòng)設(shè)備的操作系統(tǒng)是安卓還是iOS,無(wú)需考慮操作系統(tǒng)的版本,不占用獨(dú)立內(nèi)存和存儲(chǔ)空間。基于微信小程序的特性,我們有理由相信,在很多場(chǎng)景中,小程序?qū)⒋笠?guī)模替代傳統(tǒng)App。
高校的圖書館一般都是學(xué)校中最理想的學(xué)習(xí)、自習(xí)的場(chǎng)所。經(jīng)過(guò)近幾年的發(fā)展,高校圖書館不僅蘊(yùn)藏著豐富的文獻(xiàn)和學(xué)習(xí)資源,而且在閱讀環(huán)境上改善了很多,空調(diào)、Wi-Fi熱點(diǎn)、電源插座等設(shè)施基本都已配備。這些資源和設(shè)施都免費(fèi)提供給在校學(xué)生使用。不少高校圖書館新館建設(shè)得猶如酒店、百貨商場(chǎng)。隨著到圖書館學(xué)習(xí)、查閱文獻(xiàn)的學(xué)生越來(lái)越多,特別是在期末、重大考試前,圖書館經(jīng)常是早早地排起了“長(zhǎng)龍”,這時(shí)的“占座”現(xiàn)象也尤其突出。占座的工具層出不窮,有書、杯子以及寫上占座詞語(yǔ)的字條,甚至有些讀者使用鏈條鎖,給圖書館管理帶來(lái)了很多問(wèn)題。有些讀者占著座位,卻一天都不使用,造成了極大的資源浪費(fèi)。
圖書館自助選座預(yù)約系統(tǒng)在這種環(huán)境下應(yīng)運(yùn)而生。自助選座系統(tǒng)通過(guò)良好的可視化界面展示圖書館座位的狀態(tài),并能夠?qū)崿F(xiàn)用戶與系統(tǒng)的友好交互。通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)移動(dòng)端、PC端預(yù)約座位,解決了圖書館排隊(duì)的問(wèn)題,改善了圖書館座位資源的浪費(fèi)情況,提高了圖書館座位資源的利用率。系統(tǒng)產(chǎn)生的讀者選座、預(yù)約、暫離等行為數(shù)據(jù),可以剖析讀者在圖書館的使用規(guī)律,發(fā)掘和提煉出相關(guān)信息,以此進(jìn)一步改進(jìn)圖書館座位資源分配,為圖書館的管理提供決策依據(jù)[3]。
市場(chǎng)上現(xiàn)有的自助選座預(yù)約系統(tǒng)主要由設(shè)置在圖書館的觸屏電腦來(lái)實(shí)現(xiàn)預(yù)約選座和到館簽到,多個(gè)閱覽室(自習(xí)室)、多個(gè)樓層需要部署多個(gè)觸屏電腦,這會(huì)帶來(lái)排隊(duì)選座、簽到等方面的問(wèn)題,同時(shí)這些設(shè)備也需要投入大量資金和人力,效費(fèi)比不高。
有廠商意識(shí)到了移動(dòng)端將是選座預(yù)約系統(tǒng)的主要載體,選座App也就隨著出現(xiàn)。選座App基本可以解決觸屏電腦選座的尷尬,但是它也存在一些不足:需要針對(duì)不同的環(huán)境定制開(kāi)發(fā)App;后期維護(hù)App需要大量的人力和財(cái)力;App的推廣慢,用戶也容易出現(xiàn)流失,畢竟在手機(jī)上安裝大量的App,會(huì)影響手機(jī)的運(yùn)行速度。
微信小程序的出現(xiàn),給自助選座預(yù)約系統(tǒng)帶來(lái)了另一個(gè)不錯(cuò)的選擇。從前文中微信小程序的特點(diǎn)可以看出,微信小程序很好地契合了預(yù)約選座系統(tǒng)的需求。首先,微信平臺(tái)擁有龐大的用戶群體,讀者的手機(jī)中絕大部分都安裝了微信;其次,微信小程序不像傳統(tǒng)App那樣,不需要“下載”“安裝”,不需要占用存儲(chǔ)空間和運(yùn)行內(nèi)存,對(duì)用戶而言,大大降低了使用成本;最后,微信小程序可以多種方式啟用,可以通過(guò)搜索小程序名稱、掃描小程序二維碼或別人分享的鏈接和二維碼,推廣非常簡(jiǎn)便。
系統(tǒng)由服務(wù)器端、中間件層、微信小程序?qū)雍陀脩舳?層結(jié)構(gòu)組成。服務(wù)器端存儲(chǔ)用戶信息、統(tǒng)計(jì)信息、違規(guī)信息;中間件層負(fù)責(zé)獲取、交換服務(wù)器端和小程序數(shù)據(jù);微信小程序提供預(yù)約系統(tǒng)前臺(tái)界面和數(shù)據(jù)處理;用戶端允許用戶通過(guò)搜索或掃描小程序二維碼使用預(yù)約系統(tǒng)。
2.1.1 用戶界面
(1)用戶登錄
用戶登錄是指第一次使用預(yù)約選座小程序或退出賬號(hào)后重新進(jìn)入時(shí)需要使用的系統(tǒng)開(kāi)始模塊。用戶登錄模塊采用多種信息匹配的方式認(rèn)證用戶,用戶信息存儲(chǔ)在服務(wù)器端,包含以下信息:姓名、學(xué)號(hào)/工號(hào)、借閱證號(hào)。用戶登錄中需要輸入:姓名、學(xué)號(hào)/工號(hào)、手機(jī)號(hào)碼,讀者輸入的姓名和學(xué)號(hào)/工號(hào)匹配成功才允許登錄系統(tǒng),如圖1所示。
登錄成功后進(jìn)入預(yù)約系統(tǒng)主界面,如圖2所示。
(2)預(yù)約座位
該功能模塊,主要負(fù)責(zé)預(yù)約信息的顯示和輸入,如選擇場(chǎng)館、預(yù)約日期、預(yù)約起始時(shí)間和使用時(shí)長(zhǎng)等,如圖3所示。
系統(tǒng)為了方便讀者選座,預(yù)設(shè)預(yù)約日期范圍為當(dāng)天、明天和后天,也就是系統(tǒng)只接受3天內(nèi)的預(yù)約。這主要是出于防止出席盲目預(yù)約和時(shí)間過(guò)長(zhǎng)導(dǎo)致的不確定性而影響讀者違約的情況。預(yù)約時(shí)長(zhǎng)上規(guī)定為最長(zhǎng)3小時(shí),最短30分鐘。
(3)隨機(jī)選座
隨機(jī)選座模塊是為了方便讀者快速預(yù)約,系統(tǒng)隨機(jī)分配可用座位。
(4)自助選座
自助選座功能主要是為那些對(duì)座位有各種要求的讀者提供一個(gè)人性化的功能,如座位是否靠近窗戶、是否靠近書架,或者就喜歡某個(gè)座位的特殊要求。系統(tǒng)界面如圖4所示。
(5)撤銷預(yù)約
系統(tǒng)還提供撤銷預(yù)約的功能,方便讀者由于計(jì)劃有變而采取撤銷預(yù)約,釋放預(yù)約的座位提供給其他讀者使用。
(6)簽到
系統(tǒng)調(diào)用手機(jī)的攝像頭,掃描該閱覽室的簽到二維碼,系統(tǒng)自動(dòng)識(shí)別二維碼并為該讀者處理簽到。

圖1 用戶登錄

圖2 預(yù)約系統(tǒng)主界面

圖3 預(yù)約座位

圖4 自選座位
2.1.2 違規(guī)檢查
系統(tǒng)預(yù)約規(guī)則為:超出預(yù)約時(shí)間15分鐘還未簽到即為“違約”,違約次數(shù)超過(guò)3次,系統(tǒng)自動(dòng)凍結(jié)該用戶7天,期間不能使用座位預(yù)約功能。
2.1.3 后臺(tái)管理
后臺(tái)管理功能模塊主要實(shí)現(xiàn)用戶管理、閱覽室管理、閱覽室預(yù)約記錄和預(yù)約統(tǒng)計(jì)報(bào)表等功能。其中用戶管理中可以對(duì)某個(gè)用戶禁止預(yù)約、解除禁止預(yù)約、取消懲罰等操作。
3.1.1 .NET框架(.NET Framework)
.NET框架(.NET Framework)是由微軟開(kāi)發(fā),致力于敏捷軟件開(kāi)發(fā)(Agile software development)、快速應(yīng)用開(kāi)發(fā)(Rapid application development)、平臺(tái)無(wú)關(guān)性和網(wǎng)絡(luò)透明化的軟件開(kāi)發(fā)平臺(tái)。.NET是微軟為2000年代對(duì)服務(wù)器和桌面型軟件工程邁出的第一步。.NET包含許多有助于互聯(lián)網(wǎng)和內(nèi)部網(wǎng)應(yīng)用迅捷開(kāi)發(fā)的技術(shù)。
3.1.2 SQL Server 2008
SQL Server系列軟件是Microsoft 公司推出的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。SQL Server 2008 版本可以將結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化文檔的數(shù)據(jù)直接存儲(chǔ)到數(shù)據(jù)庫(kù)中,可以對(duì)數(shù)據(jù)進(jìn)行查詢、搜索、同步、報(bào)告和分析等操作。數(shù)據(jù)可以存儲(chǔ)在各種設(shè)備上,從數(shù)據(jù)中心最大的服務(wù)器一直到桌面計(jì)算機(jī)和移動(dòng)設(shè)備,它都可以控制數(shù)據(jù)而不用管數(shù)據(jù)存儲(chǔ)在哪里。此外,SQL Server 2008 允許使用 Microsoft .NET 和Visual Studio開(kāi)發(fā)的自定義應(yīng)用程序中使用數(shù)據(jù),在面向服務(wù)的架構(gòu)(SOA)和通過(guò) Microsoft BizTalk Server 進(jìn)行的業(yè)務(wù)流程中使用數(shù)據(jù)。信息工作人員可以通過(guò)日常使用的工具直接訪問(wèn)數(shù)據(jù)。
3.1.3 IIS
Internet Information Services 7.0 (IIS7) 不僅是一個(gè) Web 服務(wù)器,更是一個(gè)安全性增強(qiáng)、易于管理的平臺(tái),適用于開(kāi)發(fā)和可靠地寄存Web 應(yīng)用程序和服務(wù)。此外,IIS7 是 Windows Web 平臺(tái)的主要增強(qiáng),在統(tǒng)一的 Microsoft Web 平臺(tái)技術(shù)和ASP.NET、Windows Communication Foundation Web 服務(wù)以及Windows SharePoint Services 中扮演著中心角色。IIS7 是 Microsoft 發(fā)布的迄今為止為止最強(qiáng)大的 Web 服務(wù)器。它提供了一組新功能,極大地改進(jìn)了開(kāi)發(fā)、部署和管理 Web 解決方案的方式。IIS7 的模塊化設(shè)計(jì)使管理員擁有了前所未有的控制Web 服務(wù)器的能力。
3.2.1 用戶認(rèn)證模塊
系統(tǒng)根據(jù)用戶輸入的信息,自動(dòng)匹配用戶姓名和學(xué)號(hào)(工號(hào)),匹配成功即更新用戶手機(jī)號(hào)碼,允許進(jìn)入預(yù)約系統(tǒng)。主要實(shí)現(xiàn)代碼如下:
requestLoginLocalServer() {
var that = this;
//發(fā)起網(wǎng)絡(luò)請(qǐng)求
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 隨機(jī)選座模塊
系統(tǒng)自動(dòng)在可用座位中選取一個(gè)座位,主要實(shí)現(xiàn)代碼如下:
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 違規(guī)檢查模塊
系統(tǒng)規(guī)定超出預(yù)約時(shí)間15分鐘還未簽到即為“違約”,違約次數(shù)超過(guò)3次,系統(tǒng)自動(dòng)凍結(jié)該用戶7天,主要實(shí)現(xiàn)代碼如下:
主要實(shí)現(xiàn)代碼如下:
if@m_state=0 and@m_sm>15 begin--超出分鐘,標(biāo)為過(guò)期未簽到
updateS_LabOrdersetstate=2 whereID=@m_idandRoomID=@m_roomandUserID=@m_userid
if (selectbcfromS_UserwhereID=@m_userid)>=2 begin
--違約次數(shù)超過(guò)2次,則凍結(jié)使用7天
updateS_Usersetbc=0,bctime=DATEADD(d,7,@m_stime)whereID=@m_userid
endelsebegin
--違約次數(shù)+1
updateS_Usersetbc=bc+1,bctime=nullwhereID=@m_userid
end
insertintoS_LabOrderLog(OrderID,UserID,AddTime,Memo)values(@m_id,@m_userid,GETDATE(),'過(guò)期未簽到(自動(dòng))')
end
微信小程序通過(guò)微信龐大的用戶群及微信小程序本身的優(yōu)勢(shì),一問(wèn)世就受到強(qiáng)烈關(guān)注。小程序的特點(diǎn),可以很好地應(yīng)用于圖書館選座、入館教育、培訓(xùn)等方面。圖書館在數(shù)字化、移動(dòng)化、泛在化等多種社會(huì)發(fā)展趨勢(shì)中也需有所作為,應(yīng)與第三方合作,挖掘內(nèi)部資源,完善和優(yōu)化圖書館的移動(dòng)服務(wù)生態(tài),提升圖書館行業(yè)在“互聯(lián)網(wǎng)的下半場(chǎng)”中的價(jià)值。
[1]朱玉強(qiáng).微信小程序在圖書館移動(dòng)服務(wù)中的應(yīng)用實(shí)踐——以排架游戲?yàn)槔齕J].圖書館論壇,2017,37(7):132-138.
[2]王天泥.當(dāng)圖書館遇上微信小程序[J].圖書與情報(bào),2016(6):83-86.
[3]華澤,韓東旭,陸悠,張妮.學(xué)校圖書館自習(xí)室自動(dòng)選座系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),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
吳國(guó)華(1983—),男,在福建省龍巖學(xué)院圖書館工作,同濟(jì)大學(xué)軟件學(xué)院軟件工程碩士研究生在讀。