謝飛宏 羅文輝 黃 田 何 磊
(重慶郵電大學通信與信息工程學院 重慶 400065)
我校勤工助學系統中現在的值班安排是采用人工操作的方式來實現的。這種方法造成了人力資源與時間上的浪費。針對此問題,如何實現自動排班,這就是一個值得研究的問題。目前的排班方式需要每個同學先把自己的課表以截圖的方式發給負責人,再讓負責人通過手工的方式整理各個同學的課表進行排班。這不僅需要浪費負責人大量的時間和精力,而且很容易排漏或排錯某個同學而導致全部重排,因此需要一種更快捷、準確的方式來進行排班。
網絡爬蟲技術就是通過一段程序模仿瀏覽器上網自動地從網上獲取特定信息的技術,是非人工獲取網絡信息的重要手段。經過幾年的發展,目前出現了許多成熟的開發爬蟲框架,最為流行的網絡爬蟲常用框架基本都是基于java或python語言的。因此,基于Java的爬蟲技術完全可以自動獲取學生課表信息,進而更便捷地進行排班,完全符合該文的技術需求。
(一)用戶登錄功能。用戶需要在登錄后才可以使用該系統進行排班,不能通過該系統進行用戶注冊,因為該系統只是為了減輕負責人的工作負擔,受眾比較小。為了減輕服務器的壓力,該系統不提供注冊功能。負責人可以聯系系統管理獲取登錄所需的用戶名和密碼。
(二)學號輸入功能。此功能為本系統的重要組成部分。用戶通過該功能可以對數據獲取和最后的排班做出一定的要求和限制。比如,輸入待值班學生的學號,這是獲取學生課表的必須前提條件。獲取學生課表后,為了方便下次查詢,該系統需要將學生課表信息保存到數據中。因此,系統需要建立一張學生課表信息數據表,并定時更新和維護該表,以保證數據的一致性。
(三)表格下載功能。此功能為本系統的核心功能,需要根據學生的空閑時間形成值班表,然后將結果寫入excel表格中。在利用Java操作excel表格時,需要用到POI或者JXL組件。最后為用戶提供下載excel的功能,通過瀏覽的文件下載功能將值班表下載到用戶電腦里。
SpringBoot框架是基于Java的一個成熟的微服務框架。Jsoup是Java提供的一個用于解析HTML頁面的解析器組件,也已經十分成熟,完全可以承擔該文的后端技術支撐。自動排班系統需要的數據通過Jsoup提供的API來實現數據爬取,使用Jsoup解析html獲取到系統需要的數據,通過對學生課表數據的獲取、篩選,得到一個學生周一到周五的空閑時間情況。該系統將每個待排班同學的空閑時間信息保存下來,得到在一個時間點內,可值班的所有同學信息,再利用計算機的快速計算能力進行排班,得到最佳的值班表。
(一)系統流程。首先,遵循MVC設計模式對自動排班系統進行搭建,系統獲取用戶輸入的待排班的學生學號,以此來獲取指定學生的課表。其次,系統將學生課表存入數據庫,同時把值班表寫入excel表格,并記錄excel表格的路徑,以便下次查詢,減少系統響應時延。最后,該系統通過網絡下載的形式將結果發送到負責人的電腦里。流程圖如圖1所示:

圖1 系統流程圖
(二)數據庫設計。本系統數據將涉及兩張表,一張表為用戶表,記錄有權限訪問本系統的用戶。具體屬性包含主鍵id、用戶名、用戶密碼、創建時間、更新時間;另一張表為學生課程表,記錄學生行課時間。具體屬性包含主鍵id、學生學號、學生姓名、行課時間點、創建時間、更新時間。
(三)系統模塊設計。頁面模塊,主要是html文件,用于向用戶進行頁面展示。該頁面有兩個html文件:index.html為登錄頁面,用戶通過這個頁面輸入用戶和密碼;成功登錄后進入downExcel.html頁面,該頁面主要提供學生學號的輸入框,以及“下載excel”的下載按鈕。
數據自動獲取模塊,該模塊主要是根據用戶輸入學生學號獲取學生課表和學生姓名,會先去查找數據已經保存指定學生的課表。如果沒有通過爬蟲技術去教務在線獲取學生課表,存入數據庫后,會返回學生課表。
排班計算模塊,數據獲取模塊能夠獲取每個學生的課表,計算每個值班時間點空閑學生人員及人員相關信息。它根據人數多少對值班時間點進行優先級排序,優先滿足空閑學生人員少的時間點。該模塊完成值班表后,將寫入服務器固定路徑的excel中,并將excel的下載路徑返回給瀏覽器。
我們打開瀏覽器輸入地址后出現登陸界面,能夠成功進入該系統。同時頁面的成功顯示證明,該系統的登錄頁面部分在實現邏輯和代碼編寫上沒有問題。
輸入學號并點擊獲取excel后,出現設計所對應的頁面。表明系統后端已經完成值班確定,并將excel發到前端頁面供用戶下載。表明學號輸入功能在邏輯和代碼實現上沒有問題,該功能已經實現。其通過學號獲取了學生課表,進行了排班,即自動獲取數據模塊和數據庫相應的設計成功實現。Excel下載功能可以得到一個可用的excel表格,表明基于Java爬蟲的勤工助學值班自動安排已經成功實現,排班負責人可以通過線上的方式,方便、快捷地進行排班。
在線自動排班,我們利用爬蟲技術可以自動獲取網絡信息的特點,應用到系統設計中。該系統劃分為3個子模塊,一是使用JAVA爬蟲技術,通過對網上課表信息的抓取,獲取學生行課時間和空閑時間;二是得出每個時間點的空閑人員,根據空閑人員數最少最先安排的規則進行值班人員的確定,最后形成一張excel表格;三是用戶通過瀏覽器的形式下載、觀看。這就讓用戶可以快速、便捷地完成排班工作,節省了大量時間。