王宏杰
(廣州華商學(xué)院,廣州511300)
近年來國家從多方面對高等教育提出了改革的意見和方案。目前高等教育在某些環(huán)節(jié)上存在一定的缺陷和不足,以考勤管理為例,作者通過觀察發(fā)現(xiàn)上課很少考勤或不考勤的情況在各高等院校中是很常見的。從我國學(xué)生的成長過程和實(shí)際情況來看,教師不考勤無疑滋生了學(xué)生逃課情況的發(fā)生、助長了消極的學(xué)習(xí)氛圍、打擊了學(xué)生的積極性(全勤的學(xué)生和零出勤的學(xué)生,最后平時(shí)成績的考勤得分都一樣)。
教師之所以消極對待考勤,原因主要有兩個(gè):一是沒有有效的管理制度;二是沒有便捷的工具。隨著國家相關(guān)意見、方案的出臺,各高校不斷完善自身的教學(xué)制度和章程,使得管理制度問題逐步得到解決。工具方面,有些高校引進(jìn)了互聯(lián)網(wǎng)產(chǎn)品,如“雨課堂”、各在線教學(xué)平臺等,這些產(chǎn)品都具有考勤管理功能;還有些高校引進(jìn)了打卡設(shè)備,如刷卡機(jī)、刷臉機(jī)、指紋機(jī)等。
然而,各高校的基礎(chǔ)設(shè)施是不一樣的,有些教室是沒有網(wǎng)絡(luò)或網(wǎng)絡(luò)不穩(wěn)定的。另外,各教師對課堂環(huán)境的要求也不盡相同,有些要求課堂不能有互聯(lián)網(wǎng)、有些要求課堂只能用內(nèi)網(wǎng)或?qū)S镁W(wǎng)絡(luò)等,一旦沒有外網(wǎng),傳統(tǒng)的互聯(lián)網(wǎng)考勤工具就無法工作了。打卡設(shè)備存在易代打、成本高等缺點(diǎn)[1],傳統(tǒng)的紙質(zhì)考勤存在難攜帶、難統(tǒng)計(jì)、易篡改、易丟失等問題。
對此,本文提出一種與課堂網(wǎng)絡(luò)無關(guān)的高校考勤系統(tǒng),以解決上述問題。該系統(tǒng)由兩個(gè)子系統(tǒng)組成,一個(gè)是利用VSTO實(shí)施的與課堂網(wǎng)絡(luò)無關(guān)的考勤采集子系統(tǒng),一個(gè)是利用SpringBoot和Vue實(shí)施的在線考勤信息系統(tǒng)。
VSTO(visual studio tools for office)是微軟公司在其.net平臺下的Office開發(fā)工具包,是升級版的Office產(chǎn)品擴(kuò)展解決方案。具有多語言支持、托管代碼擴(kuò)展、數(shù)據(jù)緩存、WPF支持、可視化的設(shè)計(jì)器、自定義用戶界面、安全改進(jìn)等特點(diǎn)[2]。
SpringBoot是Pivotal團(tuán)隊(duì)開發(fā)的能有效簡化Spring應(yīng)用程序初始搭建及開發(fā)過程的框架,具有簡化依賴、簡化配置、簡化部署、簡化監(jiān)控等特點(diǎn)。
Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式Java Script框架,具有輕量、數(shù)據(jù)雙向綁定、指令簡單、插件豐富等特點(diǎn)。
與課堂網(wǎng)絡(luò)無關(guān),意味著課堂上現(xiàn)場產(chǎn)生的考勤數(shù)據(jù)不能立即提交至遠(yuǎn)程服務(wù)器,需要先暫存在本地,待網(wǎng)絡(luò)良好時(shí)再上傳。服務(wù)器的數(shù)據(jù)庫中有了考勤數(shù)據(jù)后,就可以通過在線系統(tǒng)向?qū)W生、教師以及其他角色提供考勤信息服務(wù)。因此,本系統(tǒng)設(shè)計(jì)了兩個(gè)子系統(tǒng):考勤采集子系統(tǒng)和考勤信息子系統(tǒng),總體結(jié)構(gòu)如圖1所示。
圖1 總體結(jié)構(gòu)
(1)考勤采集子系統(tǒng)。利用VSTO實(shí)施,它以PPT為宿主程序(PPT打開后,該子系統(tǒng)以菜單的形式出現(xiàn)在PPT的菜單欄上),并將Excel作為考勤數(shù)據(jù)的本地暫存介質(zhì)[3]。本地保存成功后,自動(dòng)判斷網(wǎng)絡(luò)是否可用,如果可用則立即將本地?cái)?shù)據(jù)上傳至服務(wù)器;如果不可用則等到有網(wǎng)絡(luò)時(shí),用戶通過該子系統(tǒng)的上傳功能,將本地考勤表數(shù)據(jù)提交至服務(wù)器。
(2)考勤信息子系統(tǒng)。利用SpringBoot和Vue實(shí)施,它是在一個(gè)B/S結(jié)構(gòu)的在線WEB系統(tǒng),用戶通過瀏覽器實(shí)現(xiàn)對服務(wù)器數(shù)據(jù)庫中考勤數(shù)據(jù)的操作。
整個(gè)系統(tǒng)分為考勤采集子系統(tǒng)和考勤信息子系統(tǒng),各子系統(tǒng)又分別包含若干個(gè)功能模塊,如圖2所示。
圖2 系統(tǒng)功能模塊
考勤采集子系統(tǒng)包括文件讀取、考勤新增、考勤修改、考勤保存、考勤上傳等5個(gè)功能模塊,具體如下:
(1)文件讀取。文件是指考勤表,它是一個(gè)Excel文件,用于存放基礎(chǔ)信息以及考勤數(shù)據(jù)的本地暫存,這個(gè)文件需要提前按照一定規(guī)則初始化好(詳見3.1)。系統(tǒng)讀取該文件獲得教師、課程、班級、學(xué)生等信息為后續(xù)操作提供數(shù)據(jù)基礎(chǔ)。
(2)考勤新增。向用戶提供可視化接口,方便用戶選擇考勤表文件、班級工作表、考勤方式、學(xué)生以及考勤標(biāo)志等。其中,考勤方式分為全量考勤和隨機(jī)考勤兩種:全量考勤是指對班級的所有學(xué)生進(jìn)行點(diǎn)名;隨機(jī)考勤是指隨機(jī)抽取一定數(shù)量的學(xué)生進(jìn)行點(diǎn)名。
(3)考勤修改。以時(shí)間為索引,展現(xiàn)歷史考勤數(shù)據(jù),并支持對歷史考勤標(biāo)志的修改。
(4)考勤保存。用于將考勤結(jié)果保存至本地考勤表中,考勤結(jié)果包括考勤時(shí)間、考勤對象和考勤標(biāo)志。
(5)考勤上傳。以本地考勤表Excel的列為數(shù)據(jù)單元,將新增或修改過的數(shù)據(jù)上傳至服務(wù)器的數(shù)據(jù)庫中。
考勤信息子系統(tǒng)包括規(guī)則設(shè)置、考勤查看、數(shù)據(jù)統(tǒng)計(jì)、用戶管理、系統(tǒng)管理等5個(gè)功能模塊,具體如下:
(1)規(guī)則設(shè)置。每位教師可以對自己所授課程的考勤評分規(guī)則進(jìn)行設(shè)置。如考勤總分、遲到1次扣多少分、曠課1次扣多少分、曠課多少取消考試資格等。
(2)考勤查看。學(xué)生可以按課程查看自己的考勤情況、考勤得分等信息。
(3)數(shù)據(jù)統(tǒng)計(jì)。教師可以從班級、學(xué)生等維度進(jìn)行考勤數(shù)據(jù)統(tǒng)計(jì);管理者可以從課程、教師、班級、學(xué)生等維度進(jìn)行考勤數(shù)據(jù)統(tǒng)計(jì)。
(4)用戶管理。管理員對學(xué)生、教師、管理者等用戶進(jìn)行批量導(dǎo)入、權(quán)限分配以及單個(gè)用戶的增刪改查等操作。
(5)其他管理。包括班級、課程、上課時(shí)間、排課等基礎(chǔ)數(shù)據(jù)的管理維護(hù)以及其他相關(guān)工作等。
按照數(shù)據(jù)庫設(shè)計(jì)原則,在服務(wù)器的MySQL數(shù)據(jù)庫中設(shè)計(jì)課程信息表(課程id、名稱、學(xué)期、理論課教材、實(shí)驗(yàn)課教材等)、教師信息表(教師id、姓名、性別、電話、院系、專業(yè)等)、班級信息表(班級id、名稱、院系、專業(yè)等)、學(xué)生信息表(學(xué)生id、姓名、性別、電話、班級id等)、排課信息表(id,學(xué)期,班級id,課程id,教師id等)、上課時(shí)間表(id、季節(jié)、第1節(jié)課開始時(shí)間、第1節(jié)課結(jié)束時(shí)間、第2節(jié)課開始時(shí)間、第2節(jié)課結(jié)束時(shí)間等)和班級考勤表等多個(gè)數(shù)據(jù)表。
其中,班級考勤表的設(shè)計(jì)有些特殊。該表用于記錄班級信息、教師信息、課程信息、考勤時(shí)間以及各學(xué)生的考勤標(biāo)志等。為了將這些數(shù)據(jù)方便地插入表中,作者將其設(shè)計(jì)成表1所示形式(以20本計(jì)算機(jī)科學(xué)與技術(shù)1班為例)。該表的特殊在于將學(xué)號信息作為表的字段,由于字段不能是純數(shù)字,所以在學(xué)號前面加了一個(gè)s。
表1 20本計(jì)算機(jī)科學(xué)與技術(shù)1班考勤
考勤表Excel文件以模板方式提供給用戶,或者通過程序?qū)崿F(xiàn)相關(guān)數(shù)據(jù)的自動(dòng)填寫后,再提供給用戶下載。假設(shè)以模板方式提供給用戶時(shí),需要用戶做以下初始化工作:
(1)考勤表文件名。為了方便程序篩選出所需要的文件,要求文件名必須含有“考勤表”三個(gè)字,且直觀易懂。通常一門課程對應(yīng)一個(gè)考勤表,以“C語言程序設(shè)計(jì)”課程為例,其考勤表可以命名為“C語言程序設(shè)計(jì)-考勤表”。
(2)“設(shè)置”工作表??记诒砝镉幸粋€(gè)名為“設(shè)置”的工作表(Sheet),需要在其C列填寫相關(guān)基礎(chǔ)信息,如圖3所示。
圖3 考勤表基礎(chǔ)信息設(shè)置
(3)班級工作表。一個(gè)班級創(chuàng)建一個(gè)工作表(Sheet),并以班級名作為Sheet名,工作表內(nèi)有學(xué)生學(xué)號和姓名信息。如某教師本次帶20本計(jì)算機(jī)科學(xué)與技術(shù)1班與20本軟工程1班的C語言程序設(shè)計(jì)課程,則需要?jiǎng)?chuàng)建2個(gè)工作表,并將學(xué)生信息錄入到表中,如圖4所示。
圖4 班級工作表初始化
(4)安全規(guī)范。考勤表通常保存在教師U盤中,具有很大的丟失風(fēng)險(xiǎn),為了防止相關(guān)數(shù)據(jù)的泄露,要求考勤表利用Excel密碼加密的方式進(jìn)行安全保護(hù)。考勤采集子系統(tǒng)在讀取考勤表時(shí)會(huì)要求用戶輸入密碼。
(1)功能菜單。在Visual Studio中創(chuàng)建項(xiàng)目后,在RibbonMain中添加功能區(qū)選項(xiàng)卡,該選項(xiàng)卡就是將來顯示在PPT菜單欄上的菜單項(xiàng)。利用可視化工具箱,拖拽Group控件和Button控件創(chuàng)建如圖5所示的子菜單。
圖5 功能菜單
(2)網(wǎng)絡(luò)檢測。當(dāng)菜單加載后需要檢測到服務(wù)器的網(wǎng)絡(luò)情況,并將結(jié)果反映在菜單項(xiàng)的網(wǎng)絡(luò)狀態(tài)按鈕上。同時(shí),支持用戶點(diǎn)擊網(wǎng)絡(luò)狀態(tài)按鈕,觸發(fā)網(wǎng)絡(luò)檢測。由于通過Ping實(shí)施網(wǎng)絡(luò)檢測需要消耗一定時(shí)間才能獲得返回值,因此網(wǎng)絡(luò)檢測功能需要進(jìn)行異步處理。部分關(guān)鍵代碼如下:
(3)文件讀取。按照教學(xué)PPT與考勤表通常放在U盤同一目錄的習(xí)慣,考勤表位置默認(rèn)為當(dāng)前PPT路徑,也支持用戶通過瀏覽的方式自定義考勤表位置。當(dāng)路徑確定后,系統(tǒng)自動(dòng)讀取并展示所有文件名包含“考勤表”的Excel文件。當(dāng)用戶選擇某Excel文件后,彈出密碼框,要求用戶輸入Excel保護(hù)密碼,驗(yàn)證成功后,以列表方式展示除“設(shè)置”以外的所有班級工作表,并將班級人數(shù)統(tǒng)計(jì)出來,如圖6所示。
圖6 初始設(shè)置界面
(4)考勤新增。用戶選擇班級工作表后,系統(tǒng)默認(rèn)選擇“隨機(jī)考勤”,且數(shù)量默認(rèn)是班級總?cè)藬?shù)的四分之一,也支持用戶通過滑動(dòng)條在[1,班級人數(shù)]之間進(jìn)行調(diào)整。點(diǎn)擊“確定”后,出現(xiàn)“考勤-新增”選項(xiàng)卡,里面以列表方式展示系統(tǒng)抽取到的需要點(diǎn)名的學(xué)生信息,選中學(xué)生時(shí),考勤標(biāo)志默認(rèn)為到課,通過考勤標(biāo)志單選按鈕進(jìn)行修改,如圖7所示。
圖7 考勤新增界面
(5)考勤修改。用戶選擇班級工作表,選擇“更新考勤”后點(diǎn)擊“確定”,出現(xiàn)“考勤-修改”選項(xiàng)卡,系統(tǒng)從班級工作表的第3列開始讀取所有列的第一個(gè)單元格里的時(shí)間值并展示在列表中,用戶選擇時(shí)間點(diǎn)后點(diǎn)擊“確定”,歷史考勤信息被展示出來,通過考勤標(biāo)識單選按鈕進(jìn)行修改,如圖8所示。
圖8 考勤修改界面
(6)考勤保存。當(dāng)用戶點(diǎn)擊“提交考勤”(考勤新增的提交)或“提交修改”(考勤修改的提交)時(shí),都需要將數(shù)據(jù)保存至本地考勤表中。如果是考勤新增的保存,則考勤數(shù)據(jù)追加在班級工作表的最后一列,其第一個(gè)單元格為當(dāng)前時(shí)間值;如果是考勤修改的保存,則考勤數(shù)據(jù)保存在原始列,其第一個(gè)單元格里的時(shí)間值不變。兩種情況的保存,都需要在第一個(gè)單元格的時(shí)間值后面添加“#”,表示該列數(shù)據(jù)需要上傳。考勤數(shù)據(jù)保存完畢后,修改考勤表文件名,在原文件名后添加“#”,表示該Excel文件有需要上傳的數(shù)據(jù)。部分關(guān)鍵代碼如下:
(7)考勤上傳。當(dāng)考勤保存成功后,自動(dòng)進(jìn)行網(wǎng)絡(luò)檢測,若當(dāng)前網(wǎng)絡(luò)可用則自動(dòng)觸發(fā)考勤上傳,此時(shí)系統(tǒng)遍歷當(dāng)前班級工作表中的所有列,對第一個(gè)單元格含有“#”的列,將其數(shù)據(jù)插入到數(shù)據(jù)庫對應(yīng)的班級考勤表中。若當(dāng)前網(wǎng)絡(luò)不可用時(shí)則不進(jìn)行上傳,待有網(wǎng)絡(luò)時(shí),用戶通過“點(diǎn)擊上傳”手動(dòng)觸發(fā)考勤上傳,此時(shí)系統(tǒng)遍歷當(dāng)前考勤表里的所有班級工作表,對第一個(gè)單元格含有“#”的列,將其數(shù)據(jù)分別插入到數(shù)據(jù)庫對應(yīng)的班級考勤表中。列數(shù)據(jù)上傳成功后,自動(dòng)去掉該列第一個(gè)單元格里中的“#”,表示該列數(shù)據(jù)已上傳。所有數(shù)據(jù)上傳完畢后,自動(dòng)修改考勤表文件名,去掉其“#”,表示該文件的數(shù)據(jù)已上傳。
考勤信息子系統(tǒng)是利用SpringBoot和Vue實(shí)施的在線系統(tǒng),包括規(guī)則設(shè)置、考勤查看、數(shù)據(jù)統(tǒng)計(jì)、用戶管理、其他管理等功能,由于篇幅原因,其實(shí)施過程在此不展開論述。
利用VSTO實(shí)施的考勤采集子系統(tǒng),先將考勤數(shù)據(jù)保存至本地Excel中,再伺機(jī)上傳至服務(wù)器,實(shí)現(xiàn)了與課堂網(wǎng)絡(luò)無關(guān)的考勤數(shù)據(jù)采集,且該子系統(tǒng)以PPT為宿主,貼合課堂考勤場景。利用SpringBoot和Vue實(shí)施的在線考勤信息子系統(tǒng),能滿足不同角色對系統(tǒng)和數(shù)據(jù)的操作要求。兩個(gè)子系統(tǒng)結(jié)合能有效解決文章開篇提出的問題,實(shí)現(xiàn)與課堂網(wǎng)絡(luò)無關(guān)的考勤管理。