吳國華
?
基于微信小程序的圖書館座位預約選座系統(tǒng)的設計
吳國華
同濟大學軟件學院,上海 200000
微信小程序一經問世,就引起了各行各業(yè)的強烈關注,代表了移動端應用未來發(fā)展的趨勢。圖書館在移動應用方面存在的問題,通過微信小程序可以迎刃而解。通過微信小程序開發(fā)圖書館座位預約系統(tǒng)研究和設計,初步實現了設計目標,展示了微信小程序在開發(fā)、應用上的便捷性。
微信小程序;座位預約系統(tǒng);圖書館
微信小程序(Wechat mini programs)由騰訊微信事業(yè)部開發(fā),2017 年1 月9 日正式上線,是一種無需下載安裝即可使用的應用,可與微信公眾號綁定,用戶通過搜索或掃描二維碼即可找到并打開應用,體現了“用完即走”理念[1]。微信小程序是根植于微信App這一個擴展。截至2017年5月,微信擁有9.38億用戶,是眾多社交APP的領跑者[2]。微信小程序所代表的下一代移動互聯網服務理念就是:無須安裝、觸手可及、用完即走、無須卸載,即縮短用戶操作路徑、減少安裝App的麻煩、釋放手機內存、節(jié)省時間、提升體驗[2]。由此可見,微信小程序雖然命名為“小程序”,其實是一種比我們現有任何App都更加靈活、更加簡便的一種新的App平臺,運行在微信小程序中的應用,無需考慮移動設備的操作系統(tǒng)是安卓還是iOS,無需考慮操作系統(tǒng)的版本,不占用獨立內存和存儲空間?;谖⑿判〕绦虻奶匦?,我們有理由相信,在很多場景中,小程序將大規(guī)模替代傳統(tǒng)App。
高校的圖書館一般都是學校中最理想的學習、自習的場所。經過近幾年的發(fā)展,高校圖書館不僅蘊藏著豐富的文獻和學習資源,而且在閱讀環(huán)境上改善了很多,空調、Wi-Fi熱點、電源插座等設施基本都已配備。這些資源和設施都免費提供給在校學生使用。不少高校圖書館新館建設得猶如酒店、百貨商場。隨著到圖書館學習、查閱文獻的學生越來越多,特別是在期末、重大考試前,圖書館經常是早早地排起了“長龍”,這時的“占座”現象也尤其突出。占座的工具層出不窮,有書、杯子以及寫上占座詞語的字條,甚至有些讀者使用鏈條鎖,給圖書館管理帶來了很多問題。有些讀者占著座位,卻一天都不使用,造成了極大的資源浪費。
圖書館自助選座預約系統(tǒng)在這種環(huán)境下應運而生。自助選座系統(tǒng)通過良好的可視化界面展示圖書館座位的狀態(tài),并能夠實現用戶與系統(tǒng)的友好交互。通過網絡實現移動端、PC端預約座位,解決了圖書館排隊的問題,改善了圖書館座位資源的浪費情況,提高了圖書館座位資源的利用率。系統(tǒng)產生的讀者選座、預約、暫離等行為數據,可以剖析讀者在圖書館的使用規(guī)律,發(fā)掘和提煉出相關信息,以此進一步改進圖書館座位資源分配,為圖書館的管理提供決策依據[3]。
市場上現有的自助選座預約系統(tǒng)主要由設置在圖書館的觸屏電腦來實現預約選座和到館簽到,多個閱覽室(自習室)、多個樓層需要部署多個觸屏電腦,這會帶來排隊選座、簽到等方面的問題,同時這些設備也需要投入大量資金和人力,效費比不高。
有廠商意識到了移動端將是選座預約系統(tǒng)的主要載體,選座App也就隨著出現。選座App基本可以解決觸屏電腦選座的尷尬,但是它也存在一些不足:需要針對不同的環(huán)境定制開發(fā)App;后期維護App需要大量的人力和財力;App的推廣慢,用戶也容易出現流失,畢竟在手機上安裝大量的App,會影響手機的運行速度。
微信小程序的出現,給自助選座預約系統(tǒng)帶來了另一個不錯的選擇。從前文中微信小程序的特點可以看出,微信小程序很好地契合了預約選座系統(tǒng)的需求。首先,微信平臺擁有龐大的用戶群體,讀者的手機中絕大部分都安裝了微信;其次,微信小程序不像傳統(tǒng)App那樣,不需要“下載”“安裝”,不需要占用存儲空間和運行內存,對用戶而言,大大降低了使用成本;最后,微信小程序可以多種方式啟用,可以通過搜索小程序名稱、掃描小程序二維碼或別人分享的鏈接和二維碼,推廣非常簡便。
系統(tǒng)由服務器端、中間件層、微信小程序層和用戶端4層結構組成。服務器端存儲用戶信息、統(tǒng)計信息、違規(guī)信息;中間件層負責獲取、交換服務器端和小程序數據;微信小程序提供預約系統(tǒng)前臺界面和數據處理;用戶端允許用戶通過搜索或掃描小程序二維碼使用預約系統(tǒng)。
2.1.1 用戶界面
(1)用戶登錄
用戶登錄是指第一次使用預約選座小程序或退出賬號后重新進入時需要使用的系統(tǒng)開始模塊。用戶登錄模塊采用多種信息匹配的方式認證用戶,用戶信息存儲在服務器端,包含以下信息:姓名、學號/工號、借閱證號。用戶登錄中需要輸入:姓名、學號/工號、手機號碼,讀者輸入的姓名和學號/工號匹配成功才允許登錄系統(tǒng),如圖1所示。
登錄成功后進入預約系統(tǒng)主界面,如圖2所示。
(2)預約座位
該功能模塊,主要負責預約信息的顯示和輸入,如選擇場館、預約日期、預約起始時間和使用時長等,如圖3所示。
系統(tǒng)為了方便讀者選座,預設預約日期范圍為當天、明天和后天,也就是系統(tǒng)只接受3天內的預約。這主要是出于防止出席盲目預約和時間過長導致的不確定性而影響讀者違約的情況。預約時長上規(guī)定為最長3小時,最短30分鐘。
(3)隨機選座
隨機選座模塊是為了方便讀者快速預約,系統(tǒng)隨機分配可用座位。
(4)自助選座
自助選座功能主要是為那些對座位有各種要求的讀者提供一個人性化的功能,如座位是否靠近窗戶、是否靠近書架,或者就喜歡某個座位的特殊要求。系統(tǒng)界面如圖4所示。
(5)撤銷預約
系統(tǒng)還提供撤銷預約的功能,方便讀者由于計劃有變而采取撤銷預約,釋放預約的座位提供給其他讀者使用。
(6)簽到
系統(tǒng)調用手機的攝像頭,掃描該閱覽室的簽到二維碼,系統(tǒng)自動識別二維碼并為該讀者處理簽到。
圖1 用戶登錄
圖2 預約系統(tǒng)主界面
圖3 預約座位
圖4 自選座位
2.1.2 違規(guī)檢查
系統(tǒng)預約規(guī)則為:超出預約時間15分鐘還未簽到即為“違約”,違約次數超過3次,系統(tǒng)自動凍結該用戶7天,期間不能使用座位預約功能。
2.1.3 后臺管理
后臺管理功能模塊主要實現用戶管理、閱覽室管理、閱覽室預約記錄和預約統(tǒng)計報表等功能。其中用戶管理中可以對某個用戶禁止預約、解除禁止預約、取消懲罰等操作。
3.1.1 .NET框架(.NET Framework)
.NET框架(.NET Framework)是由微軟開發(fā),致力于敏捷軟件開發(fā)(Agile software development)、快速應用開發(fā)(Rapid application development)、平臺無關性和網絡透明化的軟件開發(fā)平臺。.NET是微軟為2000年代對服務器和桌面型軟件工程邁出的第一步。.NET包含許多有助于互聯網和內部網應用迅捷開發(fā)的技術。
3.1.2 SQL Server 2008
SQL Server系列軟件是Microsoft 公司推出的關系型數據庫管理系統(tǒng)。SQL Server 2008 版本可以將結構化、半結構化和非結構化文檔的數據直接存儲到數據庫中,可以對數據進行查詢、搜索、同步、報告和分析等操作。數據可以存儲在各種設備上,從數據中心最大的服務器一直到桌面計算機和移動設備,它都可以控制數據而不用管數據存儲在哪里。此外,SQL Server 2008 允許使用 Microsoft .NET 和Visual Studio開發(fā)的自定義應用程序中使用數據,在面向服務的架構(SOA)和通過 Microsoft BizTalk Server 進行的業(yè)務流程中使用數據。信息工作人員可以通過日常使用的工具直接訪問數據。
3.1.3 IIS
Internet Information Services 7.0 (IIS7) 不僅是一個 Web 服務器,更是一個安全性增強、易于管理的平臺,適用于開發(fā)和可靠地寄存Web 應用程序和服務。此外,IIS7 是 Windows Web 平臺的主要增強,在統(tǒng)一的 Microsoft Web 平臺技術和ASP.NET、Windows Communication Foundation Web 服務以及Windows SharePoint Services 中扮演著中心角色。IIS7 是 Microsoft 發(fā)布的迄今為止為止最強大的 Web 服務器。它提供了一組新功能,極大地改進了開發(fā)、部署和管理 Web 解決方案的方式。IIS7 的模塊化設計使管理員擁有了前所未有的控制Web 服務器的能力。
3.2.1 用戶認證模塊
系統(tǒng)根據用戶輸入的信息,自動匹配用戶姓名和學號(工號),匹配成功即更新用戶手機號碼,允許進入預約系統(tǒng)。主要實現代碼如下:
requestLoginLocalServer() {
var that = this;
//發(fā)起網絡請求
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 隨機選座模塊
系統(tǒng)自動在可用座位中選取一個座位,主要實現代碼如下:
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ī)定超出預約時間15分鐘還未簽到即為“違約”,違約次數超過3次,系統(tǒng)自動凍結該用戶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
微信小程序通過微信龐大的用戶群及微信小程序本身的優(yōu)勢,一問世就受到強烈關注。小程序的特點,可以很好地應用于圖書館選座、入館教育、培訓等方面。圖書館在數字化、移動化、泛在化等多種社會發(fā)展趨勢中也需有所作為,應與第三方合作,挖掘內部資源,完善和優(yōu)化圖書館的移動服務生態(tài),提升圖書館行業(yè)在“互聯網的下半場”中的價值。
[1]朱玉強.微信小程序在圖書館移動服務中的應用實踐——以排架游戲為例[J].圖書館論壇,2017,37(7):132-138.
[2]王天泥.當圖書館遇上微信小程序[J].圖書與情報,2016(6):83-86.
[3]華澤,韓東旭,陸悠,張妮.學校圖書館自習室自動選座系統(tǒng)的設計與實現[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
吳國華(1983—),男,在福建省龍巖學院圖書館工作,同濟大學軟件學院軟件工程碩士研究生在讀。