熊 輝,陳家豪,劉永樂,王晨陽,陳蘭麗,,孫建冬
(1.重慶工業職業技術學院,重慶 401120;2.湖北理工學院,湖北 黃石 435003;3.湖北師范大學,湖北 黃石 435000)
大學圖書館良好的學習環境是學生喜愛到圖書館自習的主要原因之一。隨著大學的擴招,圖書館自習室座位資源與學生的供需矛盾越來越突出,占座的現象越來越嚴重[1]。圖書館占座就是在別人去之前一個人占用一個或者多個座位,并且在所占的桌子或者椅子上放著一個物件以表示該座位已經被占用。尤其是各種考試前夕,圖書館自習室便成為了學生密度最高的地方之一。大多數國內高校目前的解決方案是周期性清理圖書館座位。這樣的方案表面上可以解決使用座位的矛盾,但是自習室座位的使用率仍然很低。學生占座后,由于上課與作息時間的需要,座位還是長期處于空座,這樣也會使沒有占到座位的同學覺得不夠公平。
因此,圖書館如何合理地分配座位,如何高效地使用座位資源,如何建立一個公平合理的自習室管理制度,成為各大高校亟需解決的問題。
我國對圖書館自習室管理系統已經有了較多的研究[2]。當前,在圖書館自習室管理系統的研究,主要分為以下3個方面:(1)基于人工的圖書館自習室管理系統。這種的管理方式容易導致自習室座位使用效率較低,而大多數學生得不到自習室座位。(2)基于C/S構架或B/S的圖書館自習室管理系統。這種結構使用廣泛,但是要求有較好的系統分析基礎,開發成本較高。(3)基于物聯網技術的圖書館自習室管理系統[3]。嵌入式技術以及物聯網技術與校園信息化技術相結合,是未來圖書館自習室管理系統的研究發展方向。但是現在技術不夠成熟,軟硬件開發難度大,成本高。
Python是一個結合了編譯性、互動性、解釋性和面向對象的腳本語言。Python具有很強的可讀性,相比其他高級程序語言,其語法結構更有特色[4]。基于Python的圖書館自習室管理系統,方案簡潔實用,成本低廉,運行維護方便。Django是一個Python的網站開發基本框架[5],具有豐富的應用庫支持,可以將公共工具包轉換為個人開發包,這使得Django具有很大的擴展性。
Vue.js是Python用于構建用戶界面的輕量級響應式JavaScript(JS)框架[6]。與其他大型框架不同,Vue可以自底向上逐層應用。Vue的核心庫設計只關注視圖層,不僅易于上手開發,還便于與第三方支持庫或既有項目整合。另一方面,當與現代化的工具鏈以及各種支持庫相結合使用時,Vue也完全能夠為復雜的單頁應用提供驅動。
使用前后端分離方式時,所有的靜態文件將放在靜態文件服務器中,向后臺獲取數據需要通過各個應用程序接口(API)進行。前端在每一個頁面需要通過特殊的API對后端的數據實現特定的增、刪、改、查等操作,保證數據和操作執行的可靠性和安全性。
為了保證圖書館自習室管理系統的順利開發,要對系統的使用者進行角色的劃分,從技術的可行性分析出不同角色的流程,并分析不同角色不同功能。
圖書館自習室管理系統的使用者可以劃分為2類:圖書館管理員與使用自習室的學生。在圖書館自習室管理系統中,管理員充當系統維護角色,負責維護系統的正常運轉與環境管理。管理員的主要權限有以下幾點:(1)圖書館自習室的座位信息查詢。可以直接看到各個自習室的使用情況,對應的座位號是否被使用等。(2)學生的狀態查詢。通過學號可以看到每個學生的使用狀態,學生是否在學;學生使用的自習室與座位號;學生的賬號是否被禁止學習等。(3)查看學生的信息。可以看到學生的基本信息、借閱情況等。(4)監督與處罰。管理員對座位使用情況進行監督。如座位被使用而座位上沒人,可以對其使用者進行禁止學習操作。(5)恢復學生使用。如果學生反省自己錯誤,可以通過學號恢復學生對系統的使用權。
學生的服務與權限如下:(1)系統登錄。通過學號與密碼登錄圖書館自習室管理系統。(2)個人信息查詢。只能看到自己的基本信息、學習狀態與座位是否被禁用。(3)座位查詢。可以看到每一個自習室的使用情況、座位使用情況。(4)座位辦理。通過手機App或者電腦網頁,辦理正常的入座與退座。
圖書館自習室的管理核心是可以保證自習室座位的高效使用,以免浪費座位資源。另外,還要維護良好的學習環境,保證自習室的安靜、座位的整潔以及公共衛生安全。
本系統從學生與管理員的登錄開始,實現系統的各種功能。基本流程如圖1所示。

圖1 圖書館自習室管理系統基本流程圖
(1)學生使用圖書館自習室管理系統,先使用自己的學號與密碼登錄管理系統,隨之可以查看各個自習室的座位使用情況。如果是空座,那么學生可以通過點擊座位來選擇入座,如果不是空座則無法點擊。退座的過程也需要學生確認是否退座。使用座位的過程中,所占的座位會從空座變成被選用。所以各個座位就不會引起使用的沖突。
(2)管理員從登錄頁面開始進入系統,需要維護圖書館自習室的學習環境,不能允許被使用的座位上沒有學生在學習。所有每個管理員有著監督與懲罰的權限,可以禁止學生使用座位,同時也可以恢復學生對座位的使用權。
數據庫是一個系統的核心部分,數據庫的安全是最重要的,必須能保證用戶的信息安全和隱私安全。本系統選擇MySQL數據庫來儲存用戶的使用數據,采用目前最穩定、高效、安全的MySQL 5.7版本。
數據庫需要系統角色的劃分,根據角色特點編寫合適的字段,以便使用時查找與調用。本系統數據庫設計較簡潔,學生和管理員相同,有學號(工號)、名字、密碼等字段。為查詢學生是否被禁止學習,給出1個can_study布爾值字段;為顯示學生是否在學習中,給出1個in_study的布爾值,如果正常入座、退座則會改變這個字段;為記錄學生所用的座位號,給出1個字符串的字段seat_info。自習室的座位是1個model,需要多次實例化才能得到多個座位。它包含2個字段,1個是讓前端知道座位是否被占用的布爾值字段is_user,還有1個字符字段顯示當座位被使用時同學的學號。
本系統采用基于Vue.js前端框架和Django后端框架結合的前后端分離架構設計。前后端分離的開發,是指前后端工程師約定好數據交互接口,并行地進行開發和測試。前端通過HTTP請求獲取數據并負責將數據渲染到頁面上;后端只提供數據,不負責將數據渲染到頁面上。主要優點包括以下幾點。
(1)提升開發效率。前后端分離以后,可以實現前后端代碼的解耦,只要前后端溝通約定應用所需接口以及接口參數,便可以開始并行開發,無需等待對方的開發工作結束。(2)增強代碼的可維護性。前后端分離后,應用的代碼不再是前后端混合,只有在運行期才會有調用依賴關系。(3)支持多終端和服務化架構。前后端分離后,同一套數據接口可以為不同的終端提供服務,更有助于打造多終端應用。
3.2.1 前端設計
圖書館自習室管理系統的使用者只有圖書館管理員和使用自習室的學生,因此系統前端設計簡單清晰。當使用者訪問系統時,直接出現登錄界面,如果不進行登錄則無法訪問首頁,也無法看到圖書館的基本信息、自習室座位等信息。系統設置了一個攔截器程序,攔截沒有登錄的用戶,避免無關人員進入系統。登陸后,頁面會依次展示圖書館的簡介、圖書館的開館時間等信息。通過點擊登錄界面的選擇欄可以跳轉到個人中心,或者查看各個圖書館自習室。學生有自己的個人中心,而管理員可以登錄管理學生中心頁面。當用戶注銷后,網頁自動跳轉到需要登錄的頁面,同時清空使用者的使用信息。
3.2.2 后端設計
為了方便開發,使用Django自帶的后臺管理程序。在Django項目中的admin.py文件中注冊需要被管理的Model。屬性設置如下:

使用超級賬號訪問“http://127.0.0.1:8000/admin/”網站管理后臺數據,后臺管理包括學生管理、座位管理和管理員身份創建。
登錄模塊用來識別用戶,對用戶的權限進行判定。因管理員和學生登錄身份不同,模塊提供了2個登錄按鈕。為了讓前端區分出是學生身份還是管理身份,本系統使用了Vue框架中的Vuex組件,它可以將關鍵數據存在內存中,后面開發模塊使用不同功能,系統可以從內存中調出身份來區分。登錄成功后頁面會跳轉至首頁,如果學號(工號)或者密碼錯誤則會回饋給前端相應的信息。
在座位分配的問題中,系統使用分頁的功能來實現不同自習室座位的管理。學生選擇不同的自習室去訪問不同的座位號碼,就可以得到屬于相應自習室的座位。入座前需要判斷該學生是否可以使用該系統、操作者是否是學生、是否已經使用了1個座位等。經過一系列的判斷后,則可以通過AJAX(Asynchronous JavaScript And XML)向后臺請求入座操作。Vue前端將入座者信息、座位信息傳遞給Django框架后臺,經過2個AJAX的“PATCH”請求則完成入座,將學號信息賦予所選座位,同時把座位信息賦予“個人信息”的“座位號”,學生的學習狀態改為“學習中”,被使用的座位狀態也被改為“使用中”。入座成功后,程序中相應的字段會改變,而系統應用界面也會隨之跳轉到學生“個人中心”頁面。
如果學生學習完畢,從“個人中心”點擊“退出學習”,需要2個AJAX的“PATCH”請求來改變學生與座位的字段信息,即座位信息復原。點擊頁面右上角的“注銷”便可以退出系統,內存中清除使用者的信息,頁面也會隨著跳轉到登錄頁面。
管理員維護自習室的學習環境,提高座位的使用率。對于占著座位卻發現座位上沒人的情況,管理員有權限去禁止這個學生再次使用該座位。若管理員發現某座位被使用而座位上卻沒有學生,可以點擊這個學號進入管理頁面。為了保護學生的個人隱私,系統設定學生之間不能查看彼此的“個人中心”。因此,前端設定為只有管理員才可以點擊學號跳轉到特定的學生管理頁面,可以清楚看到該學生的基本信息。頁面上設置搜索框,管理員可以通過學號來搜索特定學生。頁面底部設置了“禁止學習”按鈕,點擊可以直接禁止這個學生使用該座位。點擊后這名學生的“能否學習”字段已被改變,該學生依然可以登錄這個系統查看每個座位的使用情況,但是無法入座。學生若反省自己的行為,可以向管理員申請恢復自己賬號使用。管理員恢復某個學生的賬號使用,需要用學生學號通過搜索框查找這個學生。
該查詢操作通過Vue前端AJAX的“POST”請求向后臺發送學號,后臺以這段字符串為索引,在數據庫中查詢,成功后返回該學生的信息。Django框架后臺代碼如下:


高校圖書館自習室反映了一所大學的學習氛圍,也是學校圖書館管理水平的體現。基于Python開發的圖書館座位自習管理系統,界面簡潔,穩定性好,開發維護成本低。該系統為學生提供必要的座位資源服務和圖書館管理功能。應用程序采用先進的管理員權限管理功能,可以較好解決圖書館“占座”現象,提高座位資源利用效率,提升圖書館服務質量。