劉輝 胡瀟瀟



關鍵詞:在線考試;隨機組卷;Office操作題自動評閱;POI
0 引言
目前各類高校均開設了大學計算機基礎課程,教育部高等學校大學計算機課程教學指導委員會在大學計算機基礎課程教學基本要求中根據該門課程的特點和學生的層次提出了“寬專融”三類課程體系[1],不同的課程體系中有不同的知識點和課程的核心點,其中有兩類課程體系中都對文檔操作和數據表格操作有要求。故對于多數高校而言,Microsoft Office軟件的操作與使用是該課程的主要教學與考核內容之一。
目前,利用計算機系統考試,并進行客觀題(如選擇題、判斷題、填空題)的評閱已經較為常見,但是對于Office文檔操作題的自動評閱還存在一定的難度,尤其是因為Microsoft Office 2007 or Later版本的Office 文檔格式由二進制格式轉變為Office Open XML 格式[2],導致早期開發的舊系統對新版本的Office文檔評閱解析的支持存在問題。
Apache POI是Apache軟件基金會的開放源碼函數庫[3],其提供API用于Java程序對Office文件進行讀和寫。因此利用POI通過對Office文件解析,即可實現自動評閱Office文件的操作題,對于降低教師的工作強度、提高工作效率具有實際的意義。
1 系統需求
本系統的總體目標是搭建一個B/S架構的Web應用程序,該程序不僅可以進行選擇題、判斷題、填空題等客觀題的自動評閱,還可以進行Office 2010及以上版本的操作結果進行自動評閱,同時做到界面美觀、交互良好、使用便捷、人性化和自動化的要求。
本系統主要需求分為三部分,分別是在線測試、考試管理和系統管理。
本系統根據實際情況需要三種角色,分別是:學生(Student) 、教師(Teacher) 、管理員(SA) 。
學生以班級(選課號)為單位,提供查詢考試列表、查詢考試詳情、創建試卷、答題、交卷、查看考試結果等功能。學生的在線測試又分為在線實驗、在線模擬考試練習、在線考試。其中的核心需求是學生考試時,試卷答題結果的存儲和判分(尤其是Office操作題的判分)、考試倒計時自動交卷、試卷查看、查看操作題得分點等功能。
教師可以管理多個班級,查看所屬學生的考試成績和試卷、批量導入用戶、批量導出試卷、批量導出成績、在線監考、創建考試(組卷)等功能。
管理員在包含教師身份所有功能的同時,還具有題庫管理、試題管理、考試管理、用戶管理、角色權限管理、菜單管理等功能。
2 系統設計
根據需求,參考了張巍的基于VBA技術的Office 上機考試系統的設計與實現[4]、高上雄的Office操作題生成與自動判分的C#語言實現[5]、職曉曉等人的全國計算機等級考試二級MS Office高級應用考試系統[6],彌補了這些系統在組卷方式、試題管理、系統功能等方面存在的局限性和不足,提出了本系統的設計方案。
2.1 系統功能設計
設計的系統總體功能如圖1所示。
2.2 系統架構設計
本系統后端采用SpringBoot框架,基于MVC設計模式,前端采用Vue框架,系統架構如圖2所示。
SpringBoot 是對Spring 框架的擴展,內部集成了其他框架,提供了許多便捷的開發方式,減少系統搭建的開發工作,并能夠了解決各框架依賴包的沖突問題[7]。其中的Spring MVC 提供了基于MVC(Model-View-Controller) 設計模式,結合基于Java 注解的配置,能夠使開發出的代碼具有低侵入性。在后端框架中,還加入了Apache POI,利用其為Java程序提供的API實現對符合Office Open XML(OOXML) 標準的Of?fice文件和微軟的OLE 2復合文檔格式進行讀和寫。
Vue是一個用于創建用戶界面的開源的前端Ja?vaScript框架,本系統利用Vue-Element-Admin開源項目,基于Vue和Element UI開發前端功能,從而使系統具有輕量級、雙向數據綁定、運行速度快等優勢。
2.3 系統數據庫設計
根據需求分析,本系統一共包含題庫、題目、選擇題選項、操作題得分點、考試、試卷、試卷選擇題選項、班級(課程)、用戶、身份、權限(菜單)、日志等共12個實體,系統設計的E-R圖如圖3所示。
為了滿足多種形式的組卷方式,本系統把題庫與題目之間的關系設計為多對多的關系,即一個題庫可能包含了多個題目、一個題目可能在多個題庫當中。考試與題庫也設計為多對多關系,即一個考試可以選擇多個題庫進行出題,一個題庫可供多個考試選擇題目。
2.4 關鍵技術設計
1) 組卷設計
本系統通過實現題庫、題目與考試之間的關聯關系,實現了隨機試題組卷和特定試題組卷兩種組卷方式靈活結合使用的功能,并且同時支持了實驗、練習和正式考試。
本系統為了實現隨機試題組卷和特定試題組卷的功能,設計如下:
首先根據需求創建對應的題庫,如果需要隨機組卷,則需要把所有隨機出題的題目放在同一個題庫當中。如果需要某個考試指定出現某些題目,則需要把該題目放在一個單獨的題庫中。
在創建考試時,能選擇多個題庫,根據題庫中包含的題目數量選擇并設置每道題的分數。同時,通過選擇多個題庫或者設置單個題庫的某個題型全部出現,來實現隨機試題組卷和特定試題組卷兩種組卷方式同時使用。
實現組卷的界面如圖4所示。
2) 卷面顯示設計
本系統在顯示卷面時,采用題目順序隨機顯示,選項順序隨機顯示,從而實現即使是同一份試卷,當前頁面顯示的考卷也不完全一樣。
3) Office操作題判分設計
本系統使用POI結合Java的語言特性設計了操作題的判分方法與流程。
對應Office操作中最常用的Word、Excel和PPT三類文件,分別利用POI 中的XWPFDocument、XSSF?Workbook和XMLSlideShow三個類開發自定義的判分工具類WordUtils、ExcelUtils和PPTUtils。通過獲取目標Office文件的xml解析文件[8],進一步獲取所需數據在xml文件中的位置,在對應的判分工具類中提供對應的格式獲取方法和判分方法,從而實現Office操作的判分;提供所有判分方法的接口,從而可通過Java反射方式獲取到對應判分工具類中所有的判分方法;提供反射工具類的invokeMethod方法,從而實現前端向后端接口傳遞參數,進而調用對應的判分方法并獲得返回值;提供文件的“內容和段落”解析接口,以便于前端選擇對應的文字、段落、單元格、占位符;提供前端選擇頁面,通過攜帶操作對象、方法名、題目id等數據,請求后端接口,從而獲取到對應格式(答案)并設置每個判分點的得分。
操作題判分過程如下:①下載答題模板(原始未操作的Office文件);②根據題目要求修改答題模板,完成后保存修改并上傳已完成的文件;③后端查詢當前試題的所有判分點,其中包含方法名、位置、正確答案、分數等信息;④根據獲取到的判分點中的信息,依次執行對應的方法并將獲取到的內容與判分點中的正確答案進行比對,比對結果一致則操作正確,反之則錯誤;⑤根據考試中該題型設置的分數與學生得分比例(回答正確的判分點分數綜合/ 所有判分點的分數綜合)相乘得到學生該題目的得分并保存。
4) 實驗、練習與考試功能集成設計
本系統通過設定系統權限、考試配置等信息,實現了集實驗、練習與正式考試為一體。不同類型的考試設置如表1所示,模擬練習的考試配置界面如圖5所示。
5) 精確到按鈕的權限控制設計
本系統提供了學生、教師、管理員三種身份的用戶,不同的身份具有不同的權限。系統實現了前后端一致的,精確到按鈕級別的權限控制功能,能夠動態更改各個身份的權限,同時前端會根據用戶身份所擁有的權限,來提供不同的菜單、按鈕和功能。系統前后端權限控制示意圖如圖6所示。
6) Redis緩存設計
本系統采用Redis 實現緩存,用旁路緩存模式(Cache Aside Pattern) 作為緩存的讀寫策略,完成了如下數據接口的緩存:①不同身份的權限標識列表查詢接口;②系統配置查詢接口;③部門詳情與部門樹查詢接口;④考試列表分頁查詢接口;⑤考試詳情查詢接口;⑥試題內容詳情查詢接口;⑦選擇題選項查詢接口;⑧操作題判分點查詢接口;⑨用戶登錄后生成的token。
本系統集成Redis后,極大地提高了系統性能,降低了數據庫的壓力。
3 結束語
相比于傳統的紙質試卷考試來說,在線考試有諸多優勢,包括實現無紙化、無須人工閱卷、可以隨機組卷等,在學校的教學環節中有效地提高了工作效率,減輕了教師的改卷工作量,實現了即考即出成績。