梁 民 蔡立慶
(1.中國人民大學實驗室管理與教學條件保障處 北京海淀 100872;2.中國人民大學明德物業公司 北京海淀 100872)
中國人民大學有各類學術活動和社團活動,經常有小型研討需求,因為沒有合適的場所,學生一般會選擇咖啡廳、校園草坪、宿舍等場所開展此類活動。同時,老師有時會跟學生有小型學術研討或者會議,由于老師辦公室面積小及辦公室沒有投影或者大屏等展示系統,討論效果不理想,有時師生會隨機選擇無課教室進行研討活動,影響了正常自習的同學。為解決師生迫切的研討場地需求,更好地為教學科研服務,中國人民大學新建成的圖書館專門建立了7間研討室,擬對師生開放,可通過適當的預約方式使用,開展各類活動。
綜合考慮手機等移動終端的廣泛使用,加之微信的高普及率以及微信小程序、無需安裝即可使用的便捷性,文章設計并實現了一套基于微信小程序的研討室預約系統。
微信小程序是騰訊公司于2017年1月19日發布的一種全新的連接用戶與服務的應用,依托微信平臺,用戶通過掃描二維碼或通過微信搜索就能打開應用,無需下載,實現了應用“觸手可及”的夢想,也體現了“用完即走”的理念,不用擔心安裝太多應用的問題[1]。
傳統應用軟件的運行速度很大程度上取決于設備的配置和性能,而微信小程序的運行速度主要依賴于微信軟件的運行,占用手機的內存較小,受手機性能的影響較小,運行速度比傳統應用軟件快。
為方便用戶操作、易于推廣和增強用戶使用粘度,要求系統基于微信小程序開發,系統界面要簡潔,交互操作需要簡單方便,核心功能要放在頁面主要位置。要求能夠隨著未來發展,平臺能靈活擴展[2]。
普通用戶和系統管理者分別有以下功能需求:用戶登錄系統后可以查詢研討室使用情況,支持按房間號、日期、時間段組合查詢,根據需要可填寫申請信息并提交申請。用戶提交申請后可以查看預約情況,并可對已預約申請進行修改或者取消操作;管理員登錄系統后可以查看已提交預約申請研討室的基本信息以及申請理由及申請狀態,可對已提交的申請進行通過或者駁回等審核操作。
此部分主要對系統進行了需求分析,在明確了需求的基礎上,對系統進行了模塊設計和數據庫設計,現分述如下。
根據系統需求分析,系統分為注冊/登錄模塊、查詢模塊、預約模塊、用戶信息修改模塊和管理員管理模塊等五個模塊。系統總體功能模塊圖見下圖。

圖1 預約系統總體模塊圖
各個模塊的功能描述如下:
(1)注冊/登錄模塊功能
此模塊主要實現用戶的注冊及登錄功能。其中用戶名建議使用學號或者職工號,密碼要求長度大于8位的強密碼。非法用戶將不能登錄系統。
(2)查詢模塊
用戶通過此模塊可以查詢一周內可預約的空閑時段研討室,用戶可以按研討室教室號或者時段或者日期等不同的關鍵字查詢。系統支持應該單一關鍵字或者組合關鍵詞查詢。
(3)預約模塊
可預約時段和學校排課時段一致,即從早上8點開始至晚上10點,每2個小時為一個可預約時段。用戶進入預約模塊后,可按日期或者房間號篩選可預約研討室,選中某個時段的教室號后,輸入相關信息后再按“確定預約”即可完成預約操作。
(4)用戶修改信息模塊
此模塊顯示個人用戶已預約的研討室基本信息,在此模塊可查看已預約教室和待審批教室詳細信息,還可對已預約的研討室進行取消或者更改時間、時段等操作。
(5)管理模塊
管理模塊主要完成用戶預約申請的審批以及管理員的權限管理等功能。
根據系統實際需求,系統采用MySQL數據庫,數據庫涉及6個表,主要有研討室預約表、用戶預約信息表、研討室信息表、預約審批表、管理員信息表、統計表等。為了突出預約系統的核心業務,本文選取2個核心數據表進行描述。
(1)研討室預約表
研討室預約表(RoomBooking)主要存放每個研討室各時段預約占用情況,該表主要有研討室號、已預約日期、時段、預約者、審批者等字段。該表的結構見表1。

表1 研討室狀態表 RoomBooking
(2)用戶預約情況表
用戶預約情況表(ApplicantInformation)存放每位用戶的研討室預約信息。該表包含了用戶學生號(職工號)、用戶類別(老師,學生)以及歷史預約信息等相關字段信息。該表的結構見表2。

表2 用戶預約情況表 ApplicantInformation
系統分為微信小程序端和服務器端兩部分。小程序端使用的技術主要有JSON,WXML,WXSS、,和JAVASCRIPT。預約系統小程序主體部分由App.js,App.json,App.wxss三個文件組成。小程序端開發環境為微信開發者工具。服務器端使用JAVA作為開發語言,數據庫使用MySQL,WEB,發布服務器使用tomcat,開發環境為ultraedit。
小程序前端和服務器的數據通信通過小程序的網絡API實現,具體是使用wx.request()方法,其工作原理是從小程序端向服務器發起HTTPS網絡請求、傳遞數據參數,并將服務器接口處理結果返回。在預約系統中,登錄系統、查詢功能、預約功能的實現,都會從小程序前端到服務器端傳遞數據,使用到wx.request()方法。
(1)查詢功能的實現
在查詢模塊中,用戶可以查詢一周內可預約的研討室,可以按研討室教室號或者時段等不同的關鍵字查詢,也可數個關鍵字組合查詢。
查詢功能實現具體流程如下:用戶在查詢界面(view視圖)輸入查詢關鍵字,提交后,參數值傳遞到.js頁,在此頁,會通過小程序的網絡API把參數傳遞到后臺,后臺通過數據庫查詢后,把結果返回前臺,在前臺展示出來。
①在view視圖中主要代碼如下:


設置“提交”按鈕的屬性值為"submit",用戶點擊“提交”按鈕時,會把在此頁面form中輸入的參數值傳遞到.JS頁,做進一步處理。
②JS頁中使用wx.request()方法,把房間號、時間、時間段三個參數傳遞給后臺處理,并通過success()獲得查詢結果。JS中主要代碼如下:

③后臺頁面使用request.getString()方法獲得前臺wx.request()方法傳遞過來的參數,主要代碼如下:

(2)預約功能實現
和查詢功能類似,預約功能使用wx.request()方法把要預約的教室號、日期、時段等參數從前臺傳遞給服務器,后臺對數據庫進行update。
JS主要代碼


因為無需從服務器反回數據,所以此段沒有調用success。
基于微信的廣泛應用和依托微信平臺開發小程序的易普及性和推廣性,本研究設計了一套基于微信小程序的研討室預約系統。系統前端采用JSON,WXML,WXSS、和JAVASCRIPT等技術,后端采用JAVA作為開發語言,數據庫使用MySQL,WEB發布服務器使用tomcat。在微信小程序客戶端實現了研討室查詢、預約、管理等功能。系統上線運行證明,基于微信小程序的研討室預約系統與基于WEB端和手機App研發的預約系統相比更易于推廣,給用戶更便捷的體驗。