侯立端,鄺小飛
(杭州電子科技大學(xué),浙江 杭州 310018)
隨著科技的快速發(fā)展,人們對知識的需求更加熱切。但是由于人數(shù)眾多,閱覽室內(nèi)位置有限,不能保證每個人的閱覽需求得到滿足,同時,傳統(tǒng)的閱覽室管理規(guī)則也不能滿足現(xiàn)代高校的要求。因此,文中設(shè)計了包括Web端和微信(WeChat)端的多終端閱覽室桌位預(yù)約系統(tǒng),以提高閱覽室的桌位利用率。
Spring Boot是一個由Pivotal團隊開發(fā)的全新框架[1]。傳統(tǒng)的SSH框架在使用之前要進(jìn)行復(fù)雜的配置,如XML配置,Annotation配置,即使使用Spring MVC減少了部分配置,但使用中依舊要進(jìn)行大量配置,如果出現(xiàn)配置錯誤,則很難找出原因。Spring Boot框架可以解決配置繁瑣的問題,最大化地實現(xiàn)約定優(yōu)于配置(Convention over Configuration)。其特性包括創(chuàng)建獨立的Spring應(yīng)用程序、嵌入式Tomcat服務(wù)器、Jetty容器,無需部署WAR包、自動配置Spring等。
MVC[2]是一種軟件架構(gòu)模式,分為三個基本部分:模型層(Model)、視圖層(View)和控制層(Controller)。這種設(shè)計模式可簡化程序的復(fù)雜度,使程序結(jié)構(gòu)更加直觀,減少程序代碼之間的耦合,在使程序分離的同時賦予各部分不同的功能,層與層之間的訪問通過接口實現(xiàn),極大地提高了代碼靈活性。Controller層是應(yīng)用程序中處理用戶交互的部分,負(fù)責(zé)從視圖中讀取數(shù)據(jù)并向模型發(fā)送。View層是界面設(shè)計人員進(jìn)行圖形界面設(shè)計的部分,該部分視圖通常根據(jù)模型數(shù)據(jù)創(chuàng)建。Model層是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分,通常模型對象負(fù)責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù)。
隨著信息技術(shù)的發(fā)展,特別是20世紀(jì)90年代以后,數(shù)據(jù)庫[3]技術(shù)得到了飛速發(fā)展。數(shù)據(jù)庫不僅用于存儲和管理數(shù)據(jù),也是用戶所需各種數(shù)據(jù)的管理方式,通常分為層次式數(shù)據(jù)庫、網(wǎng)絡(luò)式數(shù)據(jù)庫和關(guān)系式數(shù)據(jù)庫三種,本設(shè)計使用關(guān)系式MySQL數(shù)據(jù)庫存儲數(shù)據(jù)。MySQL數(shù)據(jù)庫用于開放源代碼,可在General Public License的許可下下載并根據(jù)個性化的需要對其修改,MySQL數(shù)據(jù)解壓后即可使用[4,5]。此外,MySQL的平臺移植性能夠支持迄今出現(xiàn)的絕大多數(shù)操作系統(tǒng),因此,基于MySQL數(shù)據(jù)庫建立的應(yīng)用程序便可在各操作系統(tǒng)之間移植。
Java數(shù)據(jù)庫連接(Java DataBase Connectivity,JDBC)是數(shù)據(jù)庫與Java語言[6]程序之間的中間層,通過JDBC可為多種數(shù)據(jù)庫提供統(tǒng)一的數(shù)據(jù)訪問方式。連接池技術(shù)可有效提高軟件的穩(wěn)定性,減少每次建立數(shù)據(jù)庫連接和斷開操作時的時間消耗。
目前移動端APP開發(fā)發(fā)展迅速,相對于傳統(tǒng)的基于操作系統(tǒng)的APP對移動設(shè)備的要求較高,安裝大量軟件導(dǎo)致設(shè)備處理運行減緩。而基于WeChat端[7]的二次開發(fā)就可有效避免此類問題,其基本原理為:WeChat本身的服務(wù)相當(dāng)于轉(zhuǎn)發(fā)服務(wù)器[8],移動終端采用HTTP通信協(xié)議[9],首先將數(shù)據(jù)以XML格式發(fā)送到WeChat服務(wù)器,其次將請求轉(zhuǎn)發(fā)給自定義的服務(wù)器進(jìn)行數(shù)據(jù)業(yè)務(wù)處理,自定義服務(wù)器處理結(jié)束后再經(jīng)過微信服務(wù)器將最終結(jié)果發(fā)送到移動端顯示。
本文設(shè)計的多終端閱覽室桌位預(yù)約系統(tǒng)通過兩個終端完成對閱覽室的桌位預(yù)約,系統(tǒng)預(yù)約流程如圖1所示。系統(tǒng)各模塊功能如下。
(1)后臺監(jiān)控模塊:后臺系統(tǒng)可實現(xiàn)管理,同時監(jiān)控其他模塊的管理情況;更新數(shù)據(jù)并在前臺模塊顯示。
(2)前臺預(yù)約模塊:用于登錄進(jìn)行身份驗證后預(yù)約時間,選擇桌位號,完成最終預(yù)約。
(3)用戶管理模塊:主要對用戶角色進(jìn)行管理,包括管理員普通用戶權(quán)限的管理,用戶的增刪改查等。
(4)登錄模塊:主要通過Web端或WeChat端登錄后預(yù)約桌位。其中,通過Web端的登錄操作可使用RFID卡直接驗證身份,而通過WeChat端登錄需輸入賬號密碼進(jìn)行驗證。
圖1 預(yù)約系統(tǒng)流程圖
本系統(tǒng)是由Web端,WeChat端構(gòu)成的完整的多終端閱覽室桌位預(yù)約系統(tǒng)。系統(tǒng)整體邏輯結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)整體邏輯結(jié)構(gòu)示意圖
3.1.1 Web端功能架構(gòu)
Web端多終端閱覽室桌位預(yù)約系統(tǒng)主要包括登錄管理、用戶管理、數(shù)據(jù)統(tǒng)計管理三部分。登錄管理業(yè)務(wù)提供用戶的身份驗證,管理用戶注冊。用戶通過RFID卡刷卡登錄,首次登錄的用戶通過手機驗證完成注冊,并通過手機信息提醒其及時簽到。用戶管理業(yè)務(wù)提供管理員用戶和普通用戶的權(quán)限設(shè)置服務(wù),并分配不同的操作權(quán)限,只有管理員用戶有操作數(shù)據(jù)庫的全部權(quán)限。數(shù)據(jù)統(tǒng)計管理業(yè)務(wù)提供了對桌位信息數(shù)據(jù)的統(tǒng)計功能,包括現(xiàn)有桌位狀態(tài)統(tǒng)計和普通用戶狀態(tài)統(tǒng)計兩種:桌位狀態(tài)包括可選、已選、關(guān)閉、暫離狀態(tài);用戶狀態(tài)包括簽到、違約狀態(tài)。
3.1.2 WeChat端功能架構(gòu)
WeChat端的多終端閱覽室桌位預(yù)約系統(tǒng)的主要參與者是普通用戶。其主要功能是登錄管理、預(yù)約管理、涂鴉墻模塊等。登錄管理包括登錄、注銷、賬號管理;預(yù)約管理主要是對桌位進(jìn)行預(yù)約,包括查看桌位預(yù)約情況、發(fā)送信息、網(wǎng)上報修、取消預(yù)約、簽到功能等;涂鴉墻模塊主要包括學(xué)習(xí)心得、心情發(fā)布、意見反饋和備忘錄等。
本系統(tǒng)采用Java語言作為Web端與WeChat端的開發(fā)語言,采用MySQL數(shù)據(jù)庫對數(shù)據(jù)進(jìn)行持久性存儲。
3.2.1 Web端系統(tǒng)設(shè)計
Web端多終端閱覽室桌位預(yù)約系統(tǒng)主要包括登錄管理、用戶管理和數(shù)據(jù)統(tǒng)計管理三個模塊。Web端的前端頁面主要使用JSP頁面[10]實現(xiàn)與后臺頁面的交互,在JSP頁面中將用戶填寫的數(shù)據(jù)封裝成JavaBean對象后以Form表單的形式發(fā)送到后臺進(jìn)行業(yè)務(wù)處理。Web端使用MVC設(shè)計模式實現(xiàn),可有效降低代碼之間的耦合,提高代碼的可維護(hù)性。前端頁面對應(yīng)MVC設(shè)計模式中的視圖層(View),在后臺系統(tǒng)的設(shè)計中分為模型層(Model)和控制層(Controller)。為進(jìn)一步解耦,代碼實現(xiàn)中將模型層分為業(yè)務(wù)邏輯層(Service)、數(shù)據(jù)訪問層(DAO)和實體類(Entity)。Web端多終端閱覽室桌位預(yù)約系統(tǒng)的包結(jié)構(gòu)主要有:com.web.ylsyy.action,存放接受請求的類;com.web.ylsyy.entity,存放實體的類;com.web.ylsyy.service,存放業(yè)務(wù)邏輯相關(guān)的類;com.web.ylsyy.dao,存放訪問數(shù)據(jù)庫及交互相關(guān)的類;com.web.ylsyy.util,存放工具類代碼的冗余;com.web.ylsyy.exception,存放自定義的類。Web端系統(tǒng)時序圖如圖3所示。
3.2.2 WeChat端系統(tǒng)設(shè)計
WeChat端終端閱覽室桌位預(yù)約系統(tǒng)主要涵蓋了登錄管理、預(yù)約管理、涂鴉墻功能,WeChat端的開發(fā)是基于WeChat接口的二次開發(fā),主要獲取WeChat小程序的 APP ID,啟用WeChat公眾平臺開發(fā)模式。其他包結(jié)構(gòu)與Web端的開發(fā)相似,在此不再贅述。WeChat端系統(tǒng)工作流程如圖4所示。
圖4 WeChat端系統(tǒng)工作流程圖
3.2.3 數(shù)據(jù)庫設(shè)計
對于數(shù)據(jù)庫的設(shè)計,首先根據(jù)需求分析抽象出概念結(jié)構(gòu),并以此為核心對邏輯結(jié)構(gòu)和物理結(jié)構(gòu)進(jìn)行設(shè)計;然后對數(shù)據(jù)庫系統(tǒng)進(jìn)行性能考核;再依據(jù)考核結(jié)果對概念結(jié)構(gòu)、邏輯結(jié)構(gòu)及物理設(shè)計進(jìn)行反復(fù)修改探尋,直至滿意為止。本系統(tǒng)中的數(shù)據(jù)庫主要包括用戶表、桌位表和房間表,各表之間通過外鍵相關(guān)聯(lián)。為了更好地發(fā)揮數(shù)據(jù)庫的性能,在編寫SQL語句時先投影后連接,在多表查詢中字段少的表寫在查詢條件的最后,盡量減少不必要的索引的使用。在選擇字段后只返回需要的字段,從而提高性能。
本文設(shè)計了多終端閱覽室桌位預(yù)約系統(tǒng),該系統(tǒng)由Web端、WeChat端組成,使用Spring Boot框架實現(xiàn)Web端的設(shè)計,極大地精簡了開發(fā)前的配置工作,提高了開發(fā)效率。使用WeChat端系統(tǒng)極大地降低了系統(tǒng)對硬件的要求,無需下載專門的APP即可運行。
[1] HAN S L, BO H J, HUI J K, et al.Plossom : Web-based project management system using spring boot[J].2016,2(3):17-24.
[2] 朱三元.軟件工程技術(shù)概論[M].北京:科學(xué)出版社,2002.
[3] 王珊,陳紅.數(shù)據(jù)庫系統(tǒng)原理教程[M].北京:清華大學(xué)出版社,1998.
[4] WILLIAMS H E,LANE D.Web database applications with PHP and MySQL[M].USA:O’Reilly & Associates,2002.
[5] 哈林頓.SQL語言詳解[M].吳驊,王學(xué)昌,譯.北京:清華大學(xué)出版社,2011.
[6] ECKEL B.Thinking in Java (4th Edition)[M].USA:Prentice Hall PTR,2005.
[7] 柳峰.微信公眾平臺應(yīng)用開發(fā):方法、技巧與案例[M].北京:機械工業(yè)出版社,2014.
[8] 王千祥.應(yīng)用服務(wù)器原理與實現(xiàn)[M].北京:電子工業(yè)出版社,2003.
[9] COMER D E.Internetworking with TCP/IP[M].北京:人民郵電出版社,2002.
[10] 黃理.JSP高級編程[M].北京:北京希望電子出版社,2001.