顧亞文
(金肯職業技術學院 江蘇省南京市 211156)
傳統意義上的紙筆考試模式有出卷、分發、閱卷等諸多流程,而由人工來完成這一系列工作不僅頗為繁瑣,而且存在很多如泄題遺漏等人工導致的風險[1]。而隨著計算機的高速發展,這些相對固定的復雜流程可以由軟件來完成,不僅可以節省大量人力物力的成本[2],還可以有效的提高教師的工作效率。本篇論文提出一種基于B/S 架構的隨機組卷考試系統的設計方案,用以解決在考試中因人為因素可能導致的諸多問題。
根據設計的需求,考試系統需要完成在線考試與題庫管理兩大功能[3,4]。具體來說,教師需要能借助于此系統快速完成出卷和閱卷,出卷時應該能根據現有題庫快速的生成合理題型與適當難度的樣卷,閱卷時除了主觀題都應由系統完成批改。學生可以在系統中正常的完成考試,同時系統應該提供給學生諸如時間、未答題位置等輔助信息[5]。此外,應當有一個管理員模塊來負責管理教師與學生的個人信息、題庫的狀態等項目[6]。
與絕大多數B/S 架構系統相同,該系統可分為服務器端與用戶端[7,8]。服務器端:Web 應用服務器采用Apache 的tomcat,數據庫使用Mysql5.0 或以上版本。由于JSP 的需要,服務主機需要安裝有jdk6.0 或以上版本。服務器端可部署在學校機房性能較好的主機上。用戶端:用戶主要有使用其考試的學生、利用其出卷閱卷的老師和負責維護的管理員。用戶需要在自己的主機中安裝Chrome 或其它主流的瀏覽器,借助于校園局域網和自己的賬號密碼登錄到網站中來完成各自想要的功能。
通過上面的分析,不難看出系統涉及到教師、學生、管理員三方面的交互[9],其數據實體有教師實體、學生實體、管理員實體、題庫實體、試題實體、課程實體等內容,它們之間存在大量的關聯。我們給出部分主要的數據表設計如表1 所示。
不難看出,學生借助此系統只需完成考試與查成績等較為簡單的操作,而管理者更多負責系統的維護,所以本系統主體功能集中在教師客戶端上。因此,篇幅所限本節僅描述教師客戶端的交互邏輯。教師客戶端的頁面布局如圖1 所示。

表1:數據庫中部分關鍵表的主要設計

圖1:教師客戶端整體設計

圖2:自動組卷流程

圖3:教師使用自動組卷流程
2.2.1 教師信息管理與考試信息管理
教師信息管理頁面主要負責維護教師本人自身的信息,如工號、院系、密碼等個人信息,只涉及到與教師信息表的交互。而考試信息管理頁面中,教師可根據現有的考試科目,通過學生的學號等信息添加或刪除相應的考生。
2.2.2 題庫管理
本頁面負責管理自動組卷時需要的試題庫。以添加題目為例,教師首先根據課程號等信息選擇所需要管理的課程,然后選擇需要添加的題型,輸入試題的題目內容以及相應的答案,然后設置其分值和難易程度,這些信息都在自動組卷時起到重要作用。另外,查找、刪除及修改的功能也都類似于此。
2.2.3 成績查詢與試卷評估
成績查詢頁面中,教師可根據班級、學生學號或試卷號等方式來查詢對應的考試結果,此頁面可便于教師去評估班級的整體水平或試卷的難易程度。而試卷評估頁面中,教師可選擇查看某份具體的試卷,查看其知識點覆蓋程度,以及每道題的錯誤情況,便于教師進行查漏補缺。
至此,教師部分除核心的自動組卷頁面之外,其余頁面的功能都已大體描述清楚,下面以組卷算法為主體來描述試卷管理界面的操作。
文中所使用的是基于遺傳算法的自動組卷算法[10,11]。遺傳算法是一個啟發式方法,其主要包含選擇、交叉和變異三大基本操作,因此考慮整體屬性而不容易陷入局部最優,常被用于求解多約束優化問題[12],可以借助其方式,能夠生成較好的試卷,具體流程描述如下。
首先生成初始試卷[13]:遺傳算法求解問題,需要將問題的解空間映射成一組代碼串,即染色體的編碼問題。由于題庫數目可能極為龐大,我們考慮映射單張試卷。因此首先根據題型比例、總分、知識點不重復等要求隨機產生一張符合要求的試卷,然后采用實數編碼方案[14],將其映射為一個染色體,將組成試卷的每道題的題號作為基因,基因值用試題號表示。
然后設計適應度函數:適應度函數用以評估某試題的合理性,需要人為設置,其設置的好壞直接影響最終的效果。我們認為,在自動組卷時,最難以把控的便是整張試卷的難度和知識點的分布。一般來講,試卷的難度系數公式如公式(1)所示:

其中i 代表生成試卷中的題號,Di 與Si 分別是第i 題的難度系數和分數。知識點分布采用個體知識點的覆蓋率來衡量,例如期望本試卷包含N 單個知識點,而單張試卷中所有題目只是點的并集中包含M 個,則知識點的覆蓋率為M/N。記用戶期望的難度為EP,則EP 與P 越接近越好,知識點的覆蓋率越大越好,因此可簡單的設計適應度函數如公式(2)所示:

其中w1 為知識點分布的權重,w2 為難度系數的權重。需要注意的是,適應度函數可根據業務的需要進行更改,讀者可設計更復雜更合理的適應度函數以得到更好的效果。
最后設計遺傳算子[15]:如前所述,遺傳算子主要分為選擇算子、交叉算子、變異算子。在本論文中,選擇算子根據適應度依照輪盤賭的方式決定某個題目是否被淘汰;交叉算子即將隨機將某兩份試卷中隨機數量的試題進行交換,但保證仍符合各項約束;變異算子則是以一定概率從題庫中選擇一個符合條件的試題替換試卷中的某題。
因此,從算法的角度來講,其實現流程如圖2 所示。而從教師使用的角度來說,其操作流程如圖3 所示。
本篇論文描述了一個基于B/S 架構的隨機組卷考試系統,并對教師部分所涉及到的技術做了較為詳細的描述。B/S 架構對于考試之類的較復雜場景有著很大的便攜性優勢,另一方面,更多的諸如微信小程序之類的跨平臺應用可能會更為簡化校園事務[16],這值得我們去進一步研究實現。