李昆倫,劉志豪,周英洪,黃錚
(武漢理工大學(xué)信息工程學(xué)院,武漢430070)
圖書館是搜集、整理、收藏圖書資料以供人閱覽、參考的場(chǎng)所。而高校圖書館作為大學(xué)生的第二課堂,是以在校學(xué)生和教職員工為服務(wù)對(duì)象的學(xué)術(shù)性機(jī)構(gòu)[1]。雖然高校圖書館是頗受學(xué)生歡迎的學(xué)習(xí)場(chǎng)所,但座位資源有限,在某些特定時(shí)期(如考研季、考試周等)會(huì)出現(xiàn)座位供不應(yīng)求的現(xiàn)象,再加之部分學(xué)生不良的占座習(xí)慣,高校圖書館的座位資源往往不能得到充分的利用。為了給廣大讀者提供一個(gè)文明有序的學(xué)習(xí)環(huán)境,保證座位被充分且公平地使用,各個(gè)圖書館均制定了相應(yīng)的座位管理規(guī)則。這些規(guī)則一般由圖書館管理員來協(xié)調(diào)實(shí)施,但是實(shí)際的效果并不理想。因此,為了提高座位的管理效率,減少人力、物力資源的浪費(fèi),引進(jìn)合適的座位管理系統(tǒng)成為眾多高校圖書館的不二之選。
目前,已有一些掃碼占座系統(tǒng)在某些高校圖書館投入使用,但讀者接受程度較低。分析其原因,主要在于:第一,這些系統(tǒng)不能向讀者預(yù)先提供空閑座位的具體位置,用戶體驗(yàn)差;第二,這些系統(tǒng)缺乏信息采集和識(shí)別功能,不能確定座位是否正在被他人使用。此外,一些高校圖書館還引入了支持刷卡選座的觸摸屏一體機(jī),以可視化圖像的方式為讀者提供所有座位的信息,但當(dāng)讀者流量增大時(shí)容易造成“排隊(duì)選座”的現(xiàn)象,造成極大的不便。
為了解決這一系列問題,本文設(shè)計(jì)并實(shí)現(xiàn)了一種新型的圖書館座位智能服務(wù)系統(tǒng)。經(jīng)過硬件測(cè)試和實(shí)地使用,該系統(tǒng)體現(xiàn)出了較高的實(shí)用價(jià)值。
本文的圖書館座位智能服務(wù)系統(tǒng)一共分為三個(gè)部分:信息采集與識(shí)別系統(tǒng)、服務(wù)器系統(tǒng)和移動(dòng)客戶端。系統(tǒng)整體結(jié)構(gòu)如圖1 所示。
圖1 系統(tǒng)整體結(jié)構(gòu)框圖
移動(dòng)客戶端提供給讀者一個(gè)能夠使用本系統(tǒng)的平臺(tái),它可以接收來自服務(wù)器系統(tǒng)的座位預(yù)約狀態(tài)信息并展示給讀者,同時(shí)也可以幫助讀者發(fā)送一系列指令來完成相應(yīng)的功能,例如預(yù)約座位、暫時(shí)離座等。
服務(wù)器系統(tǒng)是一個(gè)包含了服務(wù)器和數(shù)據(jù)庫的整體,它在接收來自信息采集與識(shí)別系統(tǒng)、移動(dòng)客戶端的數(shù)據(jù)之后,修改數(shù)據(jù)庫內(nèi)的數(shù)據(jù),并把座位的狀態(tài)信息發(fā)送給移動(dòng)客戶端、預(yù)約座位的讀者信息發(fā)送給信息采集與識(shí)別系統(tǒng)。因此,服務(wù)器系統(tǒng)是整個(gè)系統(tǒng)的大腦,控制各個(gè)子系統(tǒng)的信息通信。
信息采集與識(shí)別系統(tǒng)負(fù)責(zé)接收來自服務(wù)器的數(shù)據(jù)及指令,在讀者使用座位時(shí)會(huì)對(duì)讀者身份進(jìn)行識(shí)別。當(dāng)讀者使用校園卡成功入座后,系統(tǒng)會(huì)把相應(yīng)的信息返回給服務(wù)器系統(tǒng)。
為了適應(yīng)高校圖書館各種復(fù)雜多變的情況,并給讀者良好的使用體驗(yàn),本文設(shè)計(jì)的系統(tǒng)功能模塊如圖2所示。
圖2 系統(tǒng)的各功能模塊
信息管理服務(wù)器面向圖書館管理員和系統(tǒng)維護(hù)人員。他們擁有后臺(tái)操作權(quán)限,可以對(duì)讀者的信用積分進(jìn)行管理,同時(shí)還可對(duì)座位的使用情況進(jìn)行查詢和統(tǒng)計(jì)等操作[2]。
本系統(tǒng)的信息管理服務(wù)使用Eclipse 平臺(tái)進(jìn)行編寫,提高了系統(tǒng)的可擴(kuò)展能力[3],同時(shí)降低了網(wǎng)絡(luò)延時(shí),增強(qiáng)了用戶體驗(yàn)。JavaWeb 服務(wù)器運(yùn)行在Tomcat 環(huán)境中,它和移動(dòng)客戶端使用統(tǒng)一的命令格式“request01&&request02”,其中“request01”代表方法類型,“request02”代表二者之間交互的數(shù)據(jù)。服務(wù)器初始化完畢后,Tomcat 開始監(jiān)聽服務(wù)器相應(yīng)的端口,解析移動(dòng)客戶端的請(qǐng)求,同時(shí)根據(jù)收到的URL 等信息,把客戶端的請(qǐng)求發(fā)送給相應(yīng)的Servlet 組件。而Servlet 會(huì)調(diào)用service 方法來處理這些請(qǐng)求,并把響應(yīng)的結(jié)果返回給移動(dòng)客戶端。命令解析的關(guān)鍵代碼如下:switch(request02){
case"01":Message=database01.Registration_01(request01);break;
case"02":Message=database01.LogIn_02(request01);break;
case"03":Message=database01.ChooseSeat_03(request01);break;
case"04":Message=database01.CancelSeat_04(request01);break;
case"05":Message=database01.GetSeatInfo_05(request01);break;
default:database01.HardwareInfo_06(request01);}
(1)數(shù)據(jù)庫
為了記錄讀者和座位的信息,系統(tǒng)需要使用數(shù)據(jù)庫完成信息的錄入與查詢。本系統(tǒng)采用的是MySQL數(shù)據(jù)庫,具有使用方式靈活、非過程化的優(yōu)點(diǎn)[4]。數(shù)據(jù)庫所能夠容納的讀者人數(shù)值設(shè)置為5000,該人數(shù)值可根據(jù)各高校圖書館的實(shí)際情況進(jìn)行調(diào)整。此外,JDBC(Java DataBase Connectivity,Java 數(shù)據(jù)庫連接)可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,通過數(shù)據(jù)庫驅(qū)動(dòng)程序mysql-connector-java-5.1.47.jar 和JDBC 封裝的Connection、PreparedStatement、ResultSet 類和接口來實(shí)現(xiàn)與數(shù)據(jù)庫的連接、數(shù)據(jù)庫語句的執(zhí)行以及執(zhí)行結(jié)果的反饋等操作,該方法的關(guān)鍵代碼如下:
Connection con=null;
PreparedStatement prepStmt=null;
ResultSet rs=null;
try{
con=getConnection();
String queryStatement="update seatInfo set studentID='empty',預(yù)約時(shí)間='empty',預(yù)約截止時(shí)間='empty'where table-Num='"+tableNum+"'";
prepStmt=con.prepareStatement(queryStatement);
rs=prepStmt.executeQuery();
}finally{
closeResultSet(rs);
closePrepStmt(prepStmt);
closeConnection(con);
}
(2)信用管理
為了促使讀者合理有效地利用圖書館的座位資源,系統(tǒng)設(shè)計(jì)了信用獎(jiǎng)懲機(jī)制。當(dāng)讀者在一周內(nèi),沒有違約的不良行為(例如未能按預(yù)約時(shí)間到館、超出暫離規(guī)定的時(shí)間等),將給予信用積分的獎(jiǎng)勵(lì)。當(dāng)信用積分達(dá)到一定的級(jí)別時(shí),系統(tǒng)將增加讀者額外的離座時(shí)間。相反,在讀者違約的情況下,系統(tǒng)會(huì)對(duì)其積分進(jìn)行扣除。當(dāng)積分扣減到規(guī)定的閾值時(shí),讀者將在一周的時(shí)間內(nèi)不能使用本系統(tǒng)的預(yù)約服務(wù)。根據(jù)讀者的信用情況來調(diào)整他們使用座位的權(quán)限,這是本系統(tǒng)的創(chuàng)新點(diǎn)之一。
(3)臨時(shí)卡功能
當(dāng)讀者因?yàn)橥泿@卡而想進(jìn)入圖書館學(xué)習(xí)時(shí),可以在服務(wù)前臺(tái)進(jìn)行登記,領(lǐng)取與刷卡器配套的臨時(shí)卡,具有和校園卡相同的功能,當(dāng)讀者離開圖書館時(shí)應(yīng)歸還該臨時(shí)卡。
本文的移動(dòng)客戶端適用于Android 操作系統(tǒng),采用基于IntelliJ IDEA 平臺(tái)的Android Studio 集成開發(fā)工具來完成相應(yīng)的界面設(shè)計(jì)。在Android 應(yīng)用中,提供了Activity、Service、BroadcastReciver 和ContentProvider 四大組件,可以完成復(fù)雜的程序設(shè)計(jì)。移動(dòng)客戶端使用基于TCP 協(xié)議的Socket 通信來實(shí)現(xiàn)和服務(wù)器系統(tǒng)的數(shù)據(jù)交互,進(jìn)而通過異步消息處理機(jī)制完成對(duì)移動(dòng)客戶端界面的更新。下面即以移動(dòng)客戶端和服務(wù)器系統(tǒng)的Socket 通信為例,來設(shè)計(jì)研發(fā)如下關(guān)鍵代碼。其中,IpAddress、Port 分別是服務(wù)器系統(tǒng)的相應(yīng)的IP 地址和端口號(hào),in 和out 分別是輸入字符流和輸出字節(jié)流。
Socket socket=new Socket();
socket.connect(new InetSocketAddress(IpAddress, Port),5000);
OutputStream out=socket.getOutputStream();
BufferedReader in=new BufferedReader(new InputStream-
Reader(socket.getInputStream()));
out.write(txt1.getBytes("gbk"));
out.flush();
socket.shutdownOutput();
移動(dòng)客戶端的功能主要包括讀者賬戶綁定、座位預(yù)約、暫時(shí)離座、久坐提醒四個(gè)模塊。讀者可以在自己的手機(jī)上安裝該客戶端,并通過互聯(lián)網(wǎng)訪問本系統(tǒng)的服務(wù)器[5]。
(1)賬戶綁定
讀者可以將移動(dòng)客戶端和自己的校園卡進(jìn)行綁定,通過讀者卡號(hào)進(jìn)行移動(dòng)客戶端的登陸,同時(shí)方便讀者進(jìn)行座位的查詢和預(yù)約。
(2)座位預(yù)約
讀者登陸客戶端后,可以查詢圖書館當(dāng)前的座位狀況,并根據(jù)自身的需求選擇適合的座位進(jìn)行預(yù)約。預(yù)約完成后,讀者需在1 個(gè)小時(shí)內(nèi)到達(dá)圖書館就座。否則,預(yù)約的座位將會(huì)自動(dòng)釋放,系統(tǒng)還會(huì)扣除讀者的信用積分并發(fā)送警告通知至客戶端。如果讀者確定自己無法在規(guī)定時(shí)間到達(dá)圖書館時(shí),可以通過移動(dòng)客戶端取消預(yù)約,以免造成失信。
(3)暫時(shí)離座
當(dāng)讀者因就餐、打電話、上洗手間等情況需要暫時(shí)離座時(shí),就可以使用此功能。按下移動(dòng)客戶端上對(duì)應(yīng)的按鍵后,讀者對(duì)應(yīng)的座位信息會(huì)發(fā)給服務(wù)器,服務(wù)器控制數(shù)據(jù)庫使得當(dāng)前座位重新處于預(yù)約狀態(tài)。待讀者返回時(shí),座位將被再次占用。
通過大量調(diào)查,讀者暫離的時(shí)長(zhǎng)通常受到離座時(shí)段的影響。因此,本系統(tǒng)規(guī)定:在11:00~13:00、17:00~19:00 兩個(gè)時(shí)段,系統(tǒng)可以為暫離的讀者保留座位1.5個(gè)小時(shí);而其他時(shí)段則只允許保留0.5 個(gè)小時(shí)。此外,當(dāng)實(shí)際的座位保留時(shí)長(zhǎng)剩余15 分鐘時(shí),系統(tǒng)會(huì)發(fā)送通知來提醒讀者,引起他們的注意。
(4)久坐提醒
眾所周知,連續(xù)久坐的時(shí)間過長(zhǎng)會(huì)對(duì)身體健康造成不好的影響。為了讓讀者在享受學(xué)習(xí)的同時(shí)又能保持一個(gè)良好的作息規(guī)律,系統(tǒng)每隔2 小時(shí)就會(huì)向讀者發(fā)送健康關(guān)愛的提示,提醒讀者適當(dāng)休息。這是本系統(tǒng)的又一個(gè)創(chuàng)新點(diǎn)。
信息采集與識(shí)別系統(tǒng)的硬件主要由STM32 主控制器、RFID 射頻識(shí)別模塊(采用MFRC522 芯片)和Wi-Fi 數(shù)據(jù)收發(fā)模塊等部分組成[6],其總體結(jié)構(gòu)如圖3所示。該部分實(shí)現(xiàn)的功能主要包括信息的采集與核對(duì)、座位LED 指示燈的顯示等。
圖3 信息采集與識(shí)別系統(tǒng)的硬件框圖
當(dāng)讀者通過移動(dòng)客戶端預(yù)約座位后,服務(wù)器將把讀者的信息發(fā)送給對(duì)應(yīng)座位的硬件系統(tǒng),該座位的LED 指示燈會(huì)產(chǎn)生相應(yīng)的顏色變化,表示座位處于被預(yù)約狀態(tài)。讀者到達(dá)預(yù)約的座位時(shí),使用校園卡在刷卡器上進(jìn)行身份的識(shí)別。射頻模塊將讀者的信息傳輸給STM32 主控制器,最后通過Wi-Fi 模塊把座位信息和讀者信息發(fā)給服務(wù)器,若刷卡器識(shí)別的讀者信息與預(yù)約信息相匹配,則座位的LED 指示燈顏色會(huì)再次變化,表示讀者入座成功。
圖4 是實(shí)物測(cè)試的場(chǎng)景,此時(shí)將已經(jīng)完成的硬件系統(tǒng)通電并接入無線局域網(wǎng)中。測(cè)試時(shí),本文使用了若干張RFID 卡,同時(shí)使用移動(dòng)客戶端進(jìn)行座位預(yù)約。
圖4 硬件實(shí)物圖
(1)座位預(yù)約測(cè)試
在實(shí)際的硬件中,座位LED 指示燈有三種顏色,分別代表座位的三種不同狀態(tài),其中紅色表示座位處于預(yù)約狀態(tài);黃色表示讀者入座成功狀態(tài);綠色表示該座位處于空閑可用狀態(tài)。
測(cè)試時(shí),首先在移動(dòng)客戶端進(jìn)行座位預(yù)約。預(yù)約選定的座位后,座位LED 指示燈變成紅色,表示有讀者預(yù)約此座位。若該讀者在預(yù)約后的1 小時(shí)內(nèi)去刷卡就座,座位LED 指示燈顯示黃色,此時(shí)座位被鎖定。若并非該讀者就座即入座信息與預(yù)約信息不一致時(shí),座位LED 指示燈、服務(wù)器的座位狀態(tài)不會(huì)發(fā)生改變。
在本系統(tǒng)中,座位的預(yù)約僅限當(dāng)日有效,讀者可以一直使用座位至閉館。當(dāng)讀者離開圖書館時(shí)需按下刷卡器旁的離座按鈕,將該座位釋放,否則就會(huì)扣除相應(yīng)的積分。在移動(dòng)客戶端上,座位預(yù)約界面如圖5 所示,其中黑色表示該座位已被預(yù)約,淺灰色表示該座位處于無人使用的空閑狀態(tài),讀者可點(diǎn)擊它們進(jìn)行預(yù)約。
圖5 移動(dòng)客戶端座位預(yù)約界面
(2)暫時(shí)離座功能測(cè)試
測(cè)試時(shí)間取14:23,測(cè)試者在移動(dòng)客戶端上使用暫時(shí)離座功能之后,此時(shí)所使用的座位硬件LED 指示燈變成紅色,移動(dòng)客戶端上顯示剩余的允許離座時(shí)間。當(dāng)剩余的允許離座時(shí)間還剩15 分鐘時(shí),移動(dòng)客戶端發(fā)送一個(gè)如圖6 所示的提醒。當(dāng)測(cè)試者按時(shí)返回座位后,座位LED 指示燈變成黃色,反之指示燈變成綠色,座位被釋放。
圖6 歸座提醒通知
(3)久坐提醒功能測(cè)試
在測(cè)試者成功入座的前提下,移動(dòng)客戶端每隔2小時(shí)會(huì)有一個(gè)如圖7 所示的提醒通知。
圖7 休息提醒通知
(4)臨時(shí)卡測(cè)試
假定測(cè)試者忘帶校園卡,可以使用圖書館管理人員發(fā)放的臨時(shí)卡,如果測(cè)試者存在有效的預(yù)約記錄,管理人員可以將該測(cè)試者預(yù)約的卡號(hào)更改為臨時(shí)卡號(hào),測(cè)試者可以使用臨時(shí)卡到預(yù)約座位上刷卡入座;當(dāng)測(cè)試者無預(yù)約記錄時(shí),手持臨時(shí)卡后可以在空閑的座位上刷卡入座。
本文設(shè)計(jì)的高校圖書館座位智能服務(wù)系統(tǒng)成功地搭建了服務(wù)器與數(shù)據(jù)庫,借助主流的嵌入式技術(shù)完成了相關(guān)的硬件設(shè)計(jì),并開發(fā)了配套的移動(dòng)客戶端。通過本文的系統(tǒng),讀者可以享受到線上座位預(yù)約、實(shí)時(shí)空位查詢、限時(shí)離座保護(hù)和久坐健康提醒等智能服務(wù)。實(shí)測(cè)結(jié)果表明,本文設(shè)計(jì)的系統(tǒng)可以有效地提高圖書館的座位利用效率,改善讀者的用戶體驗(yàn),具有較高的實(shí)用價(jià)值。