王宏杰,許麗娟
(廣東財經(jīng)大學華商學院,廣州 511300)
考勤是教師管理課堂、督促學生學習的一個重要手段,也是評定學生平時成績的一個重要因素。盡管信息化教學已發(fā)展多年,各課室都配備了多媒體設(shè)備,幾乎所有教師都使用電子課件,但考勤工作卻沒能跟上信息化的步伐。目前市面上有很多具有考勤功能的軟件,但往往需要聯(lián)網(wǎng)、安裝第三方軟件等,這與很多學校的設(shè)施或管理是相沖突的,導致很多教師只能采用傳統(tǒng)的紙質(zhì)考勤。但傳統(tǒng)紙質(zhì)考勤,存在攜帶、篡改、丟失、統(tǒng)計等問題,使得部分教師對考勤比較消極,不打或很少打考勤,進而導致對學生平時成績的評定無法公開、公平。
對此,本文提出基于VBA 的PPT 考勤管理系統(tǒng),通過VBA 技術(shù)實現(xiàn)在Microsoft PowerPoint 課件上點名,在Microsoft Excel 中存儲考勤數(shù)據(jù),使得考勤工作完全電子化。系統(tǒng)完全集成在PPT 課件上,無需安裝任何軟件,無需網(wǎng)絡(luò)連接,只要能播放PPT 的環(huán)境就能運行。Microsoft Excel 中的考勤數(shù)據(jù),教師可以直接打開進行查看、統(tǒng)計等。
VBA(Visual Basic For Application)是美國微軟公司在Visual Basic 基礎(chǔ)上開發(fā)出來,應用于其桌面應用程序的一種自動化任務編程語言。1993 年,VBA 開始出現(xiàn)在 Microsoft Excel 和 Microsoft Project 中[1],以滿足用戶在特定領(lǐng)域?qū)ffice 基本功能擴展的需求。目前,VBA 已集成于Microsoft Office 的大多數(shù)產(chǎn)品中,包括 Word、Excel、PowerPoint、Outlook 等。
本系統(tǒng)使用的VBA 是基于Microsoft PowerPoint 2016 的 Microsoft Visual Basic for Application 7.1。
ActiveX 是微軟公司對一系列策略性面向?qū)ο蟪绦蚣夹g(shù)和工具的稱呼,其中主要的技術(shù)是組件對象模型(COM)。ActiveX 控件,是可以在應用程序中重復使用的程序?qū)ο?,它的主要技術(shù)是ActiveX。VBA 編輯器提供的ActiveX 控件比較豐富,本系統(tǒng)使用到的有:命令按鈕控件、標簽控件、文本框控件、List Box 控件、單選按鈕控件等。
系統(tǒng)以PPT 為宿主對象,以Excel 為數(shù)據(jù)文件對象,以班級為基本操作對象,設(shè)置新增考勤、再次考勤、更新考勤三大功能模塊(圖1)。
(1)新增考勤。用于一天中第一次對某班級點名,考勤數(shù)據(jù)將以當前時間為索引單獨保存在Excel 的一列中。
(2)再次考勤。用于對前一次考勤進行補充,新考勤數(shù)據(jù)將之前的進行合并。根據(jù)再次點名的學生是否能與之前已點名的學生重復,分為兩種情況:一是“全量隨機”,此時可以重復,被重復點名的學生,考勤數(shù)據(jù)以最后一次為準;二是“剩余隨機”,此時再次點名的學生不會與已經(jīng)點過名的學生重復。
(3)更新考勤。用于對歷史考勤數(shù)據(jù)的修改,系統(tǒng)先列出當前班級所有的歷史考勤時間索引;然后,根據(jù)用戶指定的時間索引將歷史考勤數(shù)據(jù)呈現(xiàn)出來;最后,用戶對歷史數(shù)據(jù)進行修改,提交保存。
(4)點名方式。點名方式分兩種:一是全量點名,對選定班級的所有學生進行點名;二是隨機點名,在選定班級中隨機抽取一定數(shù)量的學生進行點名。兩種點名方式,最后都將點名結(jié)果以時間為索引保存在Excel 中。
VBA 技術(shù)支持對 MySQL、SQL Server、Access 等數(shù)據(jù)庫的訪問[2]。但考慮系統(tǒng)的簡單、實用性,本設(shè)計以Microsoft Excel 作為考勤數(shù)據(jù)的“數(shù)據(jù)庫”,以方便非專業(yè)的用戶對考勤數(shù)據(jù)的查看、統(tǒng)計等操作。
(1)Excel 文件。考勤數(shù)據(jù)的存儲以課程為單位,一門課程一個考勤表(Excel 文件),以“xxx 考勤表”為文件命名,并和PPT 放在同一目錄下。
(2)Excel 工作表。一個Excel 文件里面可以有多個工作表(sheet)。一個班級設(shè)置為一個工作表,工作表表名為班級名稱。工作表里第一行為標題行,初始設(shè)置 2 列(第 1 列標題為“學號”,第 2 列標題“姓名”),將班級學生信息填充到表中,學號順序沒有要求。
(3)考勤信息。從工作表的第3 列開始,系統(tǒng)自動寫入考勤信息。其中,第一行為時間索引表示點名時間,格式為“年/月/日/小時:分鐘”(如 2020/01/28/11:07);其余行用字母作為考勤標識:C-遲到,D-到課,K-曠課,Q-請假,Z-早退,沒有任何標識的表示該學生沒被點名。
根據(jù)上述數(shù)據(jù)存儲設(shè)計規(guī)則,新建一個Excel 文件,并將學生信息按班級寫入表格中。Excel 文件的存放路徑與PPT 保持一致。
(1)系統(tǒng)觸發(fā)。設(shè)置一個命令按鈕控件作為用戶調(diào)用系統(tǒng)的觸發(fā)器,由于點名時PPT 可能在任意頁面,所以將命令按鈕設(shè)置在幻燈片母版中[3],這樣由母版創(chuàng)建的每一張PPT 頁面都有這個按鈕,而我們只需對母版命令按鈕的點擊事件進行編程即可。
系統(tǒng)觸發(fā)后先讀取考勤表里的班級、人數(shù)信息,然后加載到初始化窗口中。但以PPT 為宿主的VBA 不能直接使用Excel 相關(guān)對象和函數(shù),需要先加載Excel對象庫,即通過VBA 編輯器的“工具”,引用“Microsoft Excel 16.0 Object Library”,之后就可以通過程序來操作Excel 了,部分代碼如下:
(2)初始化窗口。將上一步讀到班級、人數(shù)信息,加載到初始化窗口(圖2)的ListBox 控件中,并設(shè)置單選按鈕作為用戶選擇點名方式的控件。如果是隨機點名,則將班級人數(shù)四分之一的整數(shù)值作為文本框控件的默認值。同時,根據(jù)班級的不同,動態(tài)給出輸入值范圍,并對用戶輸入的合法性進行校驗處理,部分代碼如下:
圖2 初始化窗口
(1)生成要點名的學生ID 數(shù)組。一個班級里可能有學生退學、重修等情況,導致一個班級里學號可能不連續(xù),所以不能用學號作為序號。本系統(tǒng)將Excel 的行號作為學生ID,由于第一行是標題,因此ID 數(shù)組的取值范圍為[2,PUB_studentsnum+1],其中 PUB_students?num 為全局變量,用于保存當前班級的學生人數(shù)。
全量點名時,ID 數(shù)組的數(shù)據(jù)元素就是{2,3,4,…,PUB_studentsnum+1}。隨機點名時,利用Rnd 函數(shù)產(chǎn)生一系列不重復的隨機數(shù)并保存到ID 數(shù)組中,代碼如下:
(2)讀取班級表格中需要點名的ID 對應的學生信息。上述得到的ID 數(shù)組,實際就是Excel 的行號,根據(jù)行號讀取對應班級表里的學生信息:第一列的學號和第二列的姓名,組合成字符串“學號-姓名“,保存到數(shù)組中。部分代碼如下:
(3)點名。點名窗口(圖3)的ListBox 控件設(shè)置為2 列,第1 列用于加載上一步的學生信息,第2 列表示考勤信息。考勤信息用字符標識:C-遲到,D-到課,K-曠課,Q-請假,Z-早退。同時,為每個考勤標識設(shè)置單選按鈕控件并對其點擊事件編程,達到通過點擊單選按鈕動態(tài)改變考勤標識的作用。以“請假”單選按鈕為例的代碼如下:
圖3 點名窗口
(4)保存考勤數(shù)據(jù)。遍歷圖3 的ListBox 控件,得到考勤標識,如果考勤標識為空則默認為“D”(到課)。然后,在班級表里新增一列,將這些考勤標識逐一寫到ID 數(shù)組所記錄的行里。部分代碼如下:
設(shè)置“全量隨機”和“剩余隨機”兩個單選按鈕,系統(tǒng)動態(tài)給出取值范圍。同時,以最大值的1/3 作為“剩余隨機”的默認輸入值,1/4 作為“全量隨機”的默認輸入值供用戶參考,如圖4。
再次考勤窗口的參數(shù)由用戶設(shè)定后,點擊“確定”,系統(tǒng)將生成新的需要點名的ID 數(shù)組,之后的操作與前面類似。再次考勤的數(shù)據(jù)將與之前的數(shù)據(jù)進行合并,時間索引更新為最后一次點名時間。
圖4 再次考勤界面
遍歷班級表的第一行,取出所有的歷史時間索引(圖5),加載到考勤時間選擇窗口的ListBox 控件中(圖6)。待用戶確定時間點后,系統(tǒng)讀取表里該時間點所在列的相關(guān)信息:行ID,學號-姓名,考勤標識??记跇俗R不為空的,就是之前點過名的學生,之后的操作與前面類似。新考勤數(shù)據(jù)覆蓋到原考勤時間所在的列中,實現(xiàn)歷史考勤的更新。
圖5 班級考勤表
圖6 考勤時間選擇窗口
本系統(tǒng)以PPT 為宿主對象,以Excel 為數(shù)據(jù)文件對象,以班級為基本操作對象,利用VBA 技術(shù)實現(xiàn)了考勤管理的自動化、電子化,能滿足部分教師的日常考勤需要。VBA 簡單易學,教師們可以開發(fā)更多特色功能,豐富自己的教學工具,提升教學工作的“科技含量”。