葛苓童,陳超
(西交利物浦大學(xué),江蘇蘇州215123)
目前,高等院校的線上線下教育融合的趨勢愈發(fā)凸顯。高校計算機(jī)機(jī)房實(shí)驗(yàn)室的使用頻次也在逐年上升[1]。在這種背景下,實(shí)驗(yàn)室管理的移動化、智能化、便捷化是必然的發(fā)展趨勢[2]。Python從腳本解釋型語言發(fā)展而來,能避免傳統(tǒng)信息化網(wǎng)站UI繁雜、網(wǎng)站服務(wù)器不穩(wěn)定而導(dǎo)致用戶體驗(yàn)感差等問題?;赑ython語言可以快速開發(fā)在線實(shí)驗(yàn)室管理系統(tǒng),極大地縮短了開發(fā)時間,提升實(shí)驗(yàn)室管理效率[3]。
系統(tǒng)的使用角色分為四大類,有學(xué)生、教師、實(shí)驗(yàn)室管理員、系統(tǒng)管理員。實(shí)驗(yàn)室管理員的主要的職責(zé)是進(jìn)行失物招領(lǐng)管理、報修管理和通知管理。實(shí)驗(yàn)室可以通過Web端查看報修情況,實(shí)時地對實(shí)驗(yàn)室機(jī)房損壞的設(shè)施進(jìn)行管理,以便學(xué)生的使用;實(shí)驗(yàn)室管理員可以系統(tǒng)平臺發(fā)布一些失物招領(lǐng)的信息、查詢實(shí)驗(yàn)室地圖狀態(tài),并通過查詢各個實(shí)驗(yàn)室的狀態(tài)來對實(shí)驗(yàn)室進(jìn)行管理,狀態(tài)分為正在使用中、關(guān)閉、即將開放、即將關(guān)閉四種狀態(tài)。系統(tǒng)管理員的主要職責(zé)是進(jìn)行用戶管理、通知管理、實(shí)驗(yàn)室信息管理、失物招領(lǐng)管理、報修管理[4]。
實(shí)驗(yàn)室信息管理模塊是整體系統(tǒng)的基礎(chǔ),主要功能如下:首先,系統(tǒng)管理員可以對實(shí)驗(yàn)室信息、通知信息、報修信息、失物招領(lǐng)信息進(jìn)行批量導(dǎo)入、單條的增刪改查;其次,學(xué)生、教師、實(shí)驗(yàn)室管理員等用戶可以對實(shí)驗(yàn)室信息、地圖狀態(tài)信息進(jìn)行查詢,對報修信息和失物招領(lǐng)信息進(jìn)行發(fā)布,其用例模型如圖1所示。其具體實(shí)現(xiàn)邏輯如下:
圖1 實(shí)驗(yàn)室信息模塊用例模型圖
首先將上傳的Excel文件保存到服務(wù)器的file文件夾下,然后利用node-xlsx 包來解析Excel 表格,將解析后的實(shí)驗(yàn)室數(shù)據(jù)保存在obj 對象的data 數(shù)組中,之后將其傳輸給controller 層。controller 層接收到前端JS 傳輸?shù)膸в袑?shí)驗(yàn)室信息數(shù)據(jù)的數(shù)組后,通過for循環(huán),將每一條實(shí)驗(yàn)室信息數(shù)據(jù)保存在arr數(shù)組中,controller層向service層傳輸,再傳輸?shù)絛ao層,在dao層中,通過SQL語句,將實(shí)驗(yàn)室信息數(shù)據(jù)逐條插入到數(shù)據(jù)庫中去。算法設(shè)計如下:
第一步,根據(jù)目錄索引,遍歷file文件下的csv文件,獲得最新的csv,將其視為當(dāng)前版本的文件信息。第二步,將delimiter作為內(nèi)部約定的列之間的分割符,對Json字符串進(jìn)行分割。第三步,創(chuàng)建cursor對象,操作數(shù)據(jù)庫連接的conn接口。第四步,開啟數(shù)據(jù)庫事務(wù)。第五步,遍歷csv文件中的每一行,按照對應(yīng)的數(shù)據(jù)庫字段,進(jìn)行for each 循環(huán)迭代,將csv 中的內(nèi)容逐一插入到數(shù)據(jù)庫中,并進(jìn)行保存。第六步,關(guān)閉事務(wù)。第七步,關(guān)閉數(shù)據(jù)庫。最后一步,刷新當(dāng)前頁面,將最新的內(nèi)容呈現(xiàn)在Web頁面上。
通知模塊的主要功能需求包括系統(tǒng)管理員對于通知信息的導(dǎo)入、刪除等操作,以及學(xué)生、教師、實(shí)驗(yàn)室管理員等用戶對于通知信息的查詢的操作。通知信息包括失物招領(lǐng)信息、實(shí)驗(yàn)室上機(jī)地點(diǎn)變更信息、節(jié)假日信息的通知,其用例模型如圖2所示。其實(shí)現(xiàn)邏輯如下:通知主要涉及上課地點(diǎn)變更、放假等信息,學(xué)生、教師、實(shí)驗(yàn)室管理員可以通過Web 查詢各個通知、發(fā)布失物招領(lǐng)信息通知;系統(tǒng)管理員可以在Web端對各個通知進(jìn)行發(fā)布、刪除、修改、查詢的操作。
圖2 通知業(yè)務(wù)功能的用例模型圖
當(dāng)系統(tǒng)管理員對通知信息進(jìn)行管理操作的時候,前端js將相關(guān)的數(shù)據(jù)發(fā)送給后端,后端controller 接收之后,通過service層調(diào)用dao層的相對應(yīng)的方法,完成對數(shù)據(jù)庫的增加、刪除、修改、查詢的修改并且將修改后的數(shù)據(jù)展示在前端界面的通知列表中;當(dāng)學(xué)生查看通知時,只能查看到最近30 條的通知信息,點(diǎn)擊通知列表可以查看到詳情頁,使用前端page分頁技術(shù)實(shí)現(xiàn)每30條信息分一頁。
通知模塊中,最為核心的一個設(shè)計是使用了分頁技術(shù)。分頁的處理通常有兩種邏輯,一種是前端分頁技術(shù),其核心思想是從數(shù)據(jù)庫中將全部信息取出,然后在頁面中,根據(jù)數(shù)量要求分頁顯示,這樣做的好處是頁面顯示切換比較快,避免了頻繁讀取數(shù)據(jù)庫造成的開銷,但缺點(diǎn)是一次全部取出數(shù)據(jù)庫的全部內(nèi)容,應(yīng)用服務(wù)器的內(nèi)存空間可能不足。本系統(tǒng)采用了另一種邏輯,SQL 查詢并不是全部讀取數(shù)據(jù),而是采用order by 關(guān)鍵字,讓全部的通知信息按時間順序排序,每次選取頂部的30條。這樣,數(shù)據(jù)查詢量是有限的,從而避免了全部查詢帶來的服務(wù)器存儲開銷。
失物招領(lǐng)模塊的主要功能需求包括學(xué)生、教師、實(shí)驗(yàn)室管理員對于失物招領(lǐng)信息的發(fā)布和查詢,以及系統(tǒng)管理員對失物招領(lǐng)查詢信息的發(fā)布、查詢、刪除、修改的操作,其用例模型如圖3所示。其邏輯是為了方便對學(xué)生上機(jī)時丟失物品的管理,用戶可以通過Web 發(fā)布、查詢失物信息,系統(tǒng)管理員可以通過Web端進(jìn)行失物信息的查詢、增加、刪除、修改的操作。學(xué)生通過平臺進(jìn)行失物招領(lǐng)信息的發(fā)布,前端將相關(guān)數(shù)據(jù)傳送到后端,后端經(jīng)過邏輯處理,將該條失物招領(lǐng)信息插入到數(shù)據(jù)庫中。數(shù)據(jù)一旦更新就會觸發(fā)更新前臺頁面的失物招領(lǐng)列表頁面。
圖3 失物招領(lǐng)信息功能的用例模型圖
失物招領(lǐng)模塊的主要功能需求包括學(xué)生、教師、實(shí)驗(yàn)室管理員對于失物招領(lǐng)信息的發(fā)布和查詢,以及系統(tǒng)管理員對失物招領(lǐng)查詢信息的發(fā)布、查詢、刪除、修改的操作。其用例模型如圖4所示。系統(tǒng)管理員查看到報修信息后,通知相關(guān)的管理人員進(jìn)行設(shè)施的維修,并且可以對報修信息的查詢、修改、增加、刪除的操作。用戶在頁面發(fā)起報修操作請求,將請求發(fā)送到Python 模塊,Python 進(jìn)行邏輯處理,完成對數(shù)據(jù)庫的相應(yīng)的操作,并且將操作的結(jié)果響應(yīng)給前端頁面,前端頁面展示修改過后的報修列表。
圖4 失物招領(lǐng)信息業(yè)務(wù)功能的用例模型圖
基于Python 的實(shí)驗(yàn)室管理系統(tǒng)是有針對性地解決傳統(tǒng)機(jī)房實(shí)驗(yàn)室管理不便的需求,采用在線Web 訪問的形式,極大地提高了實(shí)驗(yàn)室的管理效率。本系統(tǒng)采用內(nèi)容差異性原則的設(shè)計方案[5],針對不同的用戶設(shè)計不同的功能應(yīng)用:學(xué)生、教師、實(shí)驗(yàn)室管理員更加關(guān)注實(shí)驗(yàn)室信息的查詢、通知信息查詢、報修和失物招領(lǐng)的發(fā)布的操作;系統(tǒng)管理員更加關(guān)注的是實(shí)驗(yàn)室信息、通知信息、報修信息、失物招領(lǐng)信息、用戶信息的各種管理操作,進(jìn)而提升了整體的實(shí)驗(yàn)室機(jī)房管理效率。