陳 瑜
考試系統是可以在線進行試卷生成、作答、評分的系統,可以開發獨立的考試系統,也可以嵌入其他應用系統中作為一個功能模塊使用,相比傳統的紙質考試,線上的考試系統具有節約紙張資源,可進一步進行統計匯總、大數據分析等優點。
考試系統一般用于培訓考核用途,在線教育、培訓機構等行業都會建立自己的考試系統,用于檢驗學員學習成果,另外一些企業也會在信息化建設的過程中,引入考試系統,用于員工培訓考核,督促學習、鞏固業務知識和檢驗業務水平。
除了培訓考核用途外,考試系統也可用于知識推廣、信息普及等用途,例如由中宣部指導開發的學習強國App 中,就有內置在線答題模塊;此外,2019 年7 月1 日起,上海市正式實施生活垃圾管理條例,成為網絡熱點,許多微信公眾號、網站也適時推出了垃圾分類考試功能,普及垃圾分類知識。
圖1 宿遷廣電話務員培訓考試系統
圖2 上海林業植物檢疫云平臺在線考試
根據與服務器交互的主體不同,可分為B/S 和C/S 結構模式,兩種模式各有優缺點,應根據實際應用場景和需要進行選擇。
B/S 即客戶端瀏覽器/服務器模式,是Web 出現后興起的一種網絡結構模式,這種模式統一了客戶端,無需在客戶端另外安裝部署軟件,開發時也無需自行實現底層通信和協議,C/S 即客戶端/服務器結構,這種結構是將需要處理的業務合理地分配到客戶端和服務器端,這樣可以大大降低通信成本,但是升級維護相對困難。
一般遠程教育、內部培訓等應用場景下,因有用戶使用地點、系統環境不確定的因素,選擇B/S結構更為合適,而類似計算機等級考試等使用場所固定,對計算機本地資源需要有較高操作權限或者在已有客戶端程序中嵌入考試模塊的場景下,應選擇C/S 結構。
數據庫設計是軟件開發過程中的關鍵環節,數據庫設計的好與壞,直接影響著軟件開發的質量,甚至于決定軟件產品的成敗,數據庫的設計應在一個給定的應用環境下,構造最優的數據庫模式,建立數據庫及其應用系統,使之能夠有效地存儲數據,滿足各種用戶的應用需求。
所以根據系統使用場景的不同,數據庫的設計也不盡相同,但是同一種類型的系統還是有很多共通的理念,下面就簡單介紹下實現一個考試系統一般必須要有的基本數據元素。
1)題庫。題庫即題目倉庫,可以對試題進行分類歸納和集中管理,題庫的表結構設計應只需包含題庫名稱、是否使用、創建和使用時間等基本信息即可。
2)題目。每一道題目應歸屬一個或多個題庫,題目表中應存放題目的詳細信息,包括題型(單選、多選、填空、簡答等)、問題、參考答案等,根據需要,可以增加默認分值、題目難度、抽取權重等字段。
3)試卷。題庫是試題的容器,但是一場考試不可能要求回答全部問題,好比學校中的考試,也是從題庫中抽取題目,并且可以進行修改,制作成試卷,因此需要一張試卷表,和題庫表類似,試卷表也只需包含試卷信息等基本信息即可,具體試卷題目應新建一張數據表存儲。
4)試卷題目。試卷題目的總體結構和題目表相同,但不能直接使用題庫的題目表,因為每張試卷可以根據需要重新編輯題目以及題目分值。
3)答題卡。答題卡信息包括所屬試卷、答題人、總得分、開始答題時間、交卷時間等。
6)答題明細。用來記錄答題人具體的作答,包括所屬試卷問題、回答、得分等,根據需要可以增加批改人、批注等字段。
1)使用方便:無論是單獨的考試系統,還是嵌入其他系統的考試模塊,不應在前端操作上設計過于復雜,要避免因操作原因導致對答案的判斷不正確。
2)可回顧:考試的目的是為了鞏固知識點和檢驗學習情況,因此需要給參加考試的用戶能夠回顧自己作答的題目,檢查錯誤原因。
3)準確性:系統應能自動評判回答正確與否,對于主觀題,可人工干預評分。
4)可維護性:管理員可以方便的導入題庫,生成和調整試卷,能夠對考試結果進行統計分析。
圖3 宿遷廣電話務員考試系統試卷生成
試卷生成可以先要求設置抽取參數,包括抽取題庫、各題型數量、分值、難度分配、總分等。
設置參數校驗無誤后,可以進行題目抽取,因題庫題目都在一張表中,因此,只需要按照設置逐項獲取符合條件的記錄即可。
1)選擇題。對于選擇題的自動批改,最簡單的即完全匹配,即使是多選題,也可以對答案進行排序后比較。
但是在實際的使用中,很多系統都要求打亂選項順序的需求,以達到防作弊或者防止只記答案的情況,對于這類需求,也不難實現,可以在試卷生成的時候打亂選項順序,但是選項的選中值為實際值,顯示值為順序值。
2)填空及主觀題。相對于答案固定的選擇題,填空及主觀題的自動批改實現較為復雜,一般采用自動批改與人工驗證結合的方式,因為這類題目需要參加考試的用戶手動輸入信息,如果是和選擇題自動批改一樣完全匹配的方式,哪怕是標點符號錯誤或者多一個空格,都會判定為錯誤,筆者就曾經遇到過,因為逗號的中英文區別,導致系統誤判的情況。
一般可以通過模糊匹配,關鍵字判斷的方式來實現對填空和主觀題的自動批改,對填空題而言,因為字數一般較少,在進行答案比較前,可以將答案與回答中的特殊字符用正則表達式去除后再比較,對于主觀題,可以設置關鍵字,判斷回答中是否出現了全部或部分關鍵字進行給分。
但是以上兩種方法,也不能很好的解決誤判的問題,也許隨著機器學習等技術的發展,日后可以通過大數據分析的方式提高準確率。
數據導入的功能,不單單是考試系統,在各種類型的系統開發中是很常見的需求,可能需要從原有系統導入,也有可能需要從統一收集的材料中導入,需要實現數據導入功能,首先需要制定數據格式和規范,對于要從現有系統導入的,需要進行數據分析和適配,對于需要收集導入的,需要制作導入模板。
從中間庫導入數據,可以根據使用的開發語言和環境不同,使用ADO.NET 或JDBC 等技術連接雙方數據庫,獲取數據后,進行數據適配導入。
從Excel 導入也是很常見的方式,可以使用POI 等中間件讀取Excel 文件進行導入操作。
也有需要從文本文檔中或者二進制文件中讀取的情況,則需要使用IO 技術,讀取文件,然后對數據進行處理。