葛苓童,陳超
(西交利物浦大學,江蘇蘇州215123)
目前,高等院校的線上線下教育融合的趨勢愈發(fā)凸顯。高校計算機機房實驗室的使用頻次也在逐年上升[1]。在這種背景下,實驗室管理的移動化、智能化、便捷化是必然的發(fā)展趨勢[2]。Python從腳本解釋型語言發(fā)展而來,能避免傳統(tǒng)信息化網(wǎng)站UI繁雜、網(wǎng)站服務(wù)器不穩(wěn)定而導致用戶體驗感差等問題。基于Python語言可以快速開發(fā)在線實驗室管理系統(tǒng),極大地縮短了開發(fā)時間,提升實驗室管理效率[3]。
系統(tǒng)的使用角色分為四大類,有學生、教師、實驗室管理員、系統(tǒng)管理員。實驗室管理員的主要的職責是進行失物招領(lǐng)管理、報修管理和通知管理。實驗室可以通過Web端查看報修情況,實時地對實驗室機房損壞的設(shè)施進行管理,以便學生的使用;實驗室管理員可以系統(tǒng)平臺發(fā)布一些失物招領(lǐng)的信息、查詢實驗室地圖狀態(tài),并通過查詢各個實驗室的狀態(tài)來對實驗室進行管理,狀態(tài)分為正在使用中、關(guān)閉、即將開放、即將關(guān)閉四種狀態(tài)。系統(tǒng)管理員的主要職責是進行用戶管理、通知管理、實驗室信息管理、失物招領(lǐng)管理、報修管理[4]。
實驗室信息管理模塊是整體系統(tǒng)的基礎(chǔ),主要功能如下:首先,系統(tǒng)管理員可以對實驗室信息、通知信息、報修信息、失物招領(lǐng)信息進行批量導入、單條的增刪改查;其次,學生、教師、實驗室管理員等用戶可以對實驗室信息、地圖狀態(tài)信息進行查詢,對報修信息和失物招領(lǐng)信息進行發(fā)布,其用例模型如圖1所示。其具體實現(xiàn)邏輯如下:

圖1 實驗室信息模塊用例模型圖
首先將上傳的Excel文件保存到服務(wù)器的file文件夾下,然后利用node-xlsx 包來解析Excel 表格,將解析后的實驗室數(shù)據(jù)保存在obj 對象的data 數(shù)組中,之后將其傳輸給controller 層。controller 層接收到前端JS 傳輸?shù)膸в袑嶒炇倚畔?shù)據(jù)的數(shù)組后,通過for循環(huán),將每一條實驗室信息數(shù)據(jù)保存在arr數(shù)組中,controller層向service層傳輸,再傳輸?shù)絛ao層,在dao層中,通過SQL語句,將實驗室信息數(shù)據(jù)逐條插入到數(shù)據(jù)庫中去。算法設(shè)計如下:
第一步,根據(jù)目錄索引,遍歷file文件下的csv文件,獲得最新的csv,將其視為當前版本的文件信息。第二步,將delimiter作為內(nèi)部約定的列之間的分割符,對Json字符串進行分割。第三步,創(chuàng)建cursor對象,操作數(shù)據(jù)庫連接的conn接口。第四步,開啟數(shù)據(jù)庫事務(wù)。第五步,遍歷csv文件中的每一行,按照對應(yīng)的數(shù)據(jù)庫字段,進行for each 循環(huán)迭代,將csv 中的內(nèi)容逐一插入到數(shù)據(jù)庫中,并進行保存。第六步,關(guān)閉事務(wù)。第七步,關(guān)閉數(shù)據(jù)庫。最后一步,刷新當前頁面,將最新的內(nèi)容呈現(xiàn)在Web頁面上。
通知模塊的主要功能需求包括系統(tǒng)管理員對于通知信息的導入、刪除等操作,以及學生、教師、實驗室管理員等用戶對于通知信息的查詢的操作。通知信息包括失物招領(lǐng)信息、實驗室上機地點變更信息、節(jié)假日信息的通知,其用例模型如圖2所示。其實現(xiàn)邏輯如下:通知主要涉及上課地點變更、放假等信息,學生、教師、實驗室管理員可以通過Web 查詢各個通知、發(fā)布失物招領(lǐng)信息通知;系統(tǒng)管理員可以在Web端對各個通知進行發(fā)布、刪除、修改、查詢的操作。

圖2 通知業(yè)務(wù)功能的用例模型圖
當系統(tǒng)管理員對通知信息進行管理操作的時候,前端js將相關(guān)的數(shù)據(jù)發(fā)送給后端,后端controller 接收之后,通過service層調(diào)用dao層的相對應(yīng)的方法,完成對數(shù)據(jù)庫的增加、刪除、修改、查詢的修改并且將修改后的數(shù)據(jù)展示在前端界面的通知列表中;當學生查看通知時,只能查看到最近30 條的通知信息,點擊通知列表可以查看到詳情頁,使用前端page分頁技術(shù)實現(xiàn)每30條信息分一頁。
通知模塊中,最為核心的一個設(shè)計是使用了分頁技術(shù)。分頁的處理通常有兩種邏輯,一種是前端分頁技術(shù),其核心思想是從數(shù)據(jù)庫中將全部信息取出,然后在頁面中,根據(jù)數(shù)量要求分頁顯示,這樣做的好處是頁面顯示切換比較快,避免了頻繁讀取數(shù)據(jù)庫造成的開銷,但缺點是一次全部取出數(shù)據(jù)庫的全部內(nèi)容,應(yīng)用服務(wù)器的內(nèi)存空間可能不足。本系統(tǒng)采用了另一種邏輯,SQL 查詢并不是全部讀取數(shù)據(jù),而是采用order by 關(guān)鍵字,讓全部的通知信息按時間順序排序,每次選取頂部的30條。這樣,數(shù)據(jù)查詢量是有限的,從而避免了全部查詢帶來的服務(wù)器存儲開銷。
失物招領(lǐng)模塊的主要功能需求包括學生、教師、實驗室管理員對于失物招領(lǐng)信息的發(fā)布和查詢,以及系統(tǒng)管理員對失物招領(lǐng)查詢信息的發(fā)布、查詢、刪除、修改的操作,其用例模型如圖3所示。其邏輯是為了方便對學生上機時丟失物品的管理,用戶可以通過Web 發(fā)布、查詢失物信息,系統(tǒng)管理員可以通過Web端進行失物信息的查詢、增加、刪除、修改的操作。學生通過平臺進行失物招領(lǐng)信息的發(fā)布,前端將相關(guān)數(shù)據(jù)傳送到后端,后端經(jīng)過邏輯處理,將該條失物招領(lǐng)信息插入到數(shù)據(jù)庫中。數(shù)據(jù)一旦更新就會觸發(fā)更新前臺頁面的失物招領(lǐng)列表頁面。

圖3 失物招領(lǐng)信息功能的用例模型圖
失物招領(lǐng)模塊的主要功能需求包括學生、教師、實驗室管理員對于失物招領(lǐng)信息的發(fā)布和查詢,以及系統(tǒng)管理員對失物招領(lǐng)查詢信息的發(fā)布、查詢、刪除、修改的操作。其用例模型如圖4所示。系統(tǒng)管理員查看到報修信息后,通知相關(guān)的管理人員進行設(shè)施的維修,并且可以對報修信息的查詢、修改、增加、刪除的操作。用戶在頁面發(fā)起報修操作請求,將請求發(fā)送到Python 模塊,Python 進行邏輯處理,完成對數(shù)據(jù)庫的相應(yīng)的操作,并且將操作的結(jié)果響應(yīng)給前端頁面,前端頁面展示修改過后的報修列表。

圖4 失物招領(lǐng)信息業(yè)務(wù)功能的用例模型圖
基于Python 的實驗室管理系統(tǒng)是有針對性地解決傳統(tǒng)機房實驗室管理不便的需求,采用在線Web 訪問的形式,極大地提高了實驗室的管理效率。本系統(tǒng)采用內(nèi)容差異性原則的設(shè)計方案[5],針對不同的用戶設(shè)計不同的功能應(yīng)用:學生、教師、實驗室管理員更加關(guān)注實驗室信息的查詢、通知信息查詢、報修和失物招領(lǐng)的發(fā)布的操作;系統(tǒng)管理員更加關(guān)注的是實驗室信息、通知信息、報修信息、失物招領(lǐng)信息、用戶信息的各種管理操作,進而提升了整體的實驗室機房管理效率。