孫雨軒,于瀟瀟,劉 萱,楊舒雯
(北京工業大學北京-都柏林國際學院,北京 100084)
在經歷過2020—2021年的這段特殊時期,發覺學校缺乏完整的信息管理系統,導致了諸多錯誤,如學生信息重復提交、信息錯誤、難以確定密切接觸者和疫苗接種情況等。由于這些錯誤大量消耗了管理人員和學生的時間,因此決定在這一基礎上嘗試建立一套針對管理學生信息以及狀態的系統,并嘗試解決以上問題。在學生信息管理系統中,根據觀察到的實際問題,構建了三個模塊和兩個功能。
系統共分為基本信息管理、疫苗信息管理和位置管理三個模塊。基本信息管理模塊涉及班級信息表和學生信息表,分別記錄班級負責人信息以及學生信息。本模塊變化將會涉及疫苗信息管理和位置管理的變化。疫苗信息管理模塊包含三類信息,分別是疫苗品牌、疫苗編號以及學生疫苗接種情況。本模塊的信息可以自動導出為Excel表,以便在離線狀態下進行查看或修改,提高了添加以及修改信息時的效率,同時也解
決了接種信息重復提交、信息提交錯誤和接種信息統計不完整等問題。位置管理模塊由三個表格組成,分別記錄所有學生的當前位置,經過城市以及其城市風險指數,并以流水分類帳的形式記錄學生位置的變化軌跡。在此模塊中,可以實時掌握學生的各種位置信息。當城市風險指數發生變化時,可以快速查找到去過該城市的學生并進行統計。整個過程將是實時和動態的,可以有效解決尋找密切接觸者的問題。
疫苗信息管理功能包括三種形式:疫苗信息、學生接種情況以及學生接種時間。疫苗信息提供有關疫苗廠家及其疫苗編號信息;學生接種情況指學生是否接種疫苗及具體次數;學生接種時間記錄了接種每針的具體時間。當一個新學生被添加到數據庫時,系統將會自動在學生接種情況里新建這位學生的內容,此時接種狀態為“無信息”。當接種狀態變為“已接種第一針”或“已接種兩針”時,學生接種時間內會出現這位同學的信息表中以便添加具體接種日期。同時,系統還自動計算兩次接種之間的時間是否滿足時間間隔要求。
學生接種情況表的實現主要基于vaccinsituation表和學生信息表。它們使用INNER JOIN和GROUP BY語句組合在一起,搜索功能顯示在頁面的頂部,可以根據自己的需求定制搜索。通過修改功能可以編輯疫苗接種狀態和備注,并在備注處可輸入未接種疫苗的理由。學生接種時間表的實現主要基于學生接種情況表和學生信息表。它們使用INNER JOIN和GROUP BY語句組合在一起。在頁面的頂部有搜索功能,您可以根據自己的需求定制搜索。我們的搜索欄實現了模糊搜索功能,您可以使用搜索欄和按鈕的組合來實現個性化搜索。通過修改功能,可以編輯第一次和第二次接種的時間。
位置管理模塊包括當前位置以及行程信息。當一個新學生被添加到信息庫時,會在當前位置里添加他的信息并將位置設置為“無信息”。每次修改他的所在地時會自動復制信息到行程信息內,以流水分類賬形式儲存。當某些城市的風險等級改變時,可以通過分類搜索以準確找出應被標注的學生。學生所在地風險指數界面包含了所有處于高風險和中風險地區的學生名單。以中風險為例,獲取當前時間下處于中風險地區的學生名單,使用CREATE VIEW語句。然后通過使用JOIN IN和CREATE VIEW兩個函數記錄所有的學生當前位置以及歷史行程,最終通過GROUP_CONcat語句將相同學生的記錄與符號“——>”組合在一起。
首先一個基礎信息表是必不可少的,每個學生的學號、姓名、性別以及聯系方式都包括在內;其次應有一個班長信息表以便聯系到班級負責人。為及時統計學生目前狀況,每位學生還應提交自己的所在地,這項統計不僅包括學生的位置還包含了每座城市實時風險等級。同時還應記錄每位學生的疫苗接種情況。如圖1所示。

圖1 E-R圖
利用MySQL的功能,添加觸發器來帶動表格之間的內容(除登錄外)同步信息。
(1)autoMonitorI & autoMonitorU:新建級信息時班長的信息也同步到studetnInformation,無須再次添加。當更改班長信息時,autoMonitorI會同時更新studetnInformation里的相應內容。見表1。

表1 自動同步班長信息的觸發器
(2)autoStudent。當新建學生信息時,current-Location中會生成對應的內容。見表2。

表2 自動同步學生信息的觸發器
(3)autoRecorderI & autoRecorderU。無論在currentLocation新建還是更新的歷史信息都保存在tripRecorder中。見表3。

表3 自動同步學生歷史行程的觸發器
(4)autoRisk。當修改epidemicRiskLevel中位置對應的風險級別時,信息會同步更新到currentLocation。見表4。

表4 自動同步風險等級的觸發器
(5)autoStatus。當學生的接種信息發生變化時,應在studentToVaccine中進行相應的操作。當至少接種了一劑疫苗,但studentToVaccine不包含該學生的疫苗接種信息,將添加相應的行,并將vaccineSum更改為相應的疫苗接種次數。當已接種至少一劑疫苗,且studentToVaccine中包含該學生的疫苗接種信息,只需將vaccineSum更改為相應的疫苗接種次數。沒有接種疫苗,應該在studentToVaccine中刪除學生的疫苗接種信息。見表5。

表5 自動同步學生疫苗接種情況的觸發器
數據庫服務器與JDBC連接,允許用戶訪問任何形式的表格數據。功能包括連接數據源,向數據庫傳遞查詢和更新指令、數據庫響應和返回ResultSet。
信息修改主要以班級信息修改功能為例,需要修改的信息通過表主鍵查詢,查詢成功后,將顯示已有的信息,同時可以進行修改。在MODIFY的情況下,避免了信息不完整(代碼類似于插入、刪除函數),輸入的查詢信息不存在。當輸入的主鍵studentNumber不存在時,將提示驗證信息是否正確。在某些情況下,應該顯示無權限修改學號,班號等。當修改班級信息中的班長時,需要直接更新其余的信息。
考慮到信息系統查詢信息的特點,根據不同表參數的具體要求,構造了個性化查詢。設計了精確查詢、模糊搜索、復選框和多選項搜索。準確的查詢需要輸入所有的信息才能得到信息,在相應的實現在類號的查詢中,即使用原來的SELECT來查詢輸入的內容。模糊搜索只需搜索部分關鍵信息,即可顯示整個內容。相應的實現搜索復雜的信息,如學生姓名。模糊搜索使用LIKE操作符。復選框和多選項搜索:Checkbox選項用于檢查一些特殊信息,例如顯示未接種疫苗的人和顯示信息缺失的人等。多選擇菜單用于輸入框的方向選擇,有多個選項,例如選擇城市、性別等。
考慮到在實際操作統計情況,設計了將表格信息直接導出為Excel文件的功能。例如在vaccinsituation和studentToVaccine的表中,首先使用查詢函數來獲取確切信息,查詢完成后,點擊“導出”按鈕,即可直接導出查詢的表。
在前端設計中使用HTML代碼來構建web結構,并且使用CSS來添加效果。信息系統分為三個模塊和兩項功能。這兩項功能基于疫苗信息管理和地方管理。這些功能涉及8個SQL表,24個HTML接口,數百行CSS美化。此外還添加了一些效果,菜單欄下拉和圖標顏色的改變、設置基本布局、簡單的組件實現等。
HTML部分使用<div></div>來劃分HTML結構。div標簽是一個塊級元素,可以作為一個容器來組合其他HTML元素。同時使用<h1> </h1>突出顯示網站名稱,以及<p></p>標記定義段落。在HTML文件中添加<style></style>,從而可以在HTML中運行CSS代碼。CSS代碼部分是background:url("login_image.jpg")無重復中心固定;Url提供網頁上的資源地址。
網頁基本布局結構運用HTML部分<div>塊將主頁分成6個部分,在<div class="wrap">中,可以進行細分以獲得二級結構。為實現在塊中設置可以轉跳到相應子頁面的菜單欄,設計并使用按鈕。在<div class="photo"></div>中使用了<img src= " />,使其從網頁鏈接圖片播放。在6個主要單元格中,前兩個單元格是兩個按鈕,可以跳轉到相應的頁面。當單擊菜單欄旁邊的三角形時,使用transform讓它們旋轉。用border來設置框的屬性,可以得到了一個藍色背景的菜單欄,且具有自動旋轉的功能。
除與主頁相同的設計,單擊菜單中的任何一列,可以跳轉到相應的子頁面,本項功能也在每個子頁面中運用。系統共計有六個主要的子頁面,分別是發布、班級信息、學生信息、疫苗類型、疫苗管理和當前位置。
本次系統設計中定義了HTML基本div塊及其相關內部元素,設置跳轉連接等函數、CSS美化,頁面布局定位、div塊大小等,還嘗試不同的軟件版本和適配。在工作的中間階段也對數據庫表的內容進行了緊急更改:刪除了缺乏連接性的表格,使系統看起來更完整。在未來工作中,可以進行一下改進:一是建立一個雙系統,管理員端分發的文件可以發送到學生端,實現數據庫之間的通信;二是在位置管理中添加一個時間系統。本文最終通過小組合作,成功制作了一個實時病情傳染系統,且達到了預設要求的85%。■