考試系統案例之 -- 隨機生成考題
問題背景
應用 IT 技術建成題庫,並基於題庫隨機抽取試題組卷,現在已經是實現考試規範化和科學化的重要手段了。實際應用中,隨機抽題也能避免多人串題等作弊行為,有效督促考生主動學習,真正達到考試的原本目的。
目前,隨機抽題考試主要用在線上考試,而且是隨抽隨考。比如常見的駕照考試,理論考試都是上機從題庫中隨機抽題考試,彰顯了考試的公平、公正、公開。再如,企事業單位內部階段性或針對某些重要檔案的考試考核,也經常會用到隨機抽題考試。
問題分析
針對“隨機生成一套線上考試試題”這個問題,有兩個核心需求:
要能考,也就是能讓考生填答案,體現可填報可提交的功能(又不能靠意念提交入庫,哈哈);
要能隨機抽,不同人不同考題;同時也要能按要求隨機抽,不能一套題只有判斷、一套只有選擇,必須難易均衡,不能讓考生碰運氣。
另外,對於客觀題,其實還應該有能自動評分的功能。
那麼,這些需求怎麼還和報表工具發生關係了呢?這是因為:
1、線上考試的試題,其實就是可填報的報表,俗稱填報表;
2、隨機按需抽題,能不能抽出來就看你報表資料集的處理能力了。
解決方案
對多數報表工具來說,支援填報不是問題,關鍵的是實現隨機抽題的能力如何。很多工具或許能搞,但基本也都很麻煩,幾乎清一色需要自定義類。
那麼潤乾報表呢?
當然可以輕鬆搞定!
下面,我們就以一套由單選、多選、判斷題組成的試卷為例看看潤乾報表是如何輕鬆解決的:
要求:從題庫中隨機抽取 7 道單選、7 道多選、6 道判斷題,每題後提供由考生錄入答案的入口。效果如下(橙色底色的格子用於錄入答案)
題庫結構如下
包括所屬考試類別、考題上傳人、考試時間、考題型別、題目、分值、選項等等。
具體做法:
設計表樣
這裡我們選取行式填報表,按考題型別依次呈現。
根據行式填報表規則,將第 5/6 行所有單元格設定為數值格。
將 A5:H6 多有單元格設定不可編輯(僅 I 列允許編輯以便錄入答案)避免改題
設定資料處理(來源)
重點!!!涉及到隨機抽題,所以我們採用集算器指令碼。如果不用,那就像前面說的會很麻煩,需要藉助複雜的自定義或儲存過程各種臨時表實現。集算器指令碼實現就簡單很多,如下圖所示:
其中:
B1:根據考試題目,查詢出所有的(從模擬角度出發,不考慮海量題庫,假設可以全部讀入記憶體)考題;
C1:單獨查下考題和時間;
A3:過濾出所有的判斷題;
B3:過濾出所有的單選題;
C3:過濾出所有的多選題;
A4:獲取考題型別的總題數,用於確定抽取考題的位置。比如判斷類總題數是 100,要求抽取 7 題,我們在 1-100 內隨機產生 7 個隨機數,對應到 100 條記錄按位置取出即可,其他型別以此類推。
A5-C7:隨機獲取 7 個數值(即考題記錄位置)存放在 B4 序列;
A8:判斷只抽 6 題,所以我們從 B4 去掉一個位置;
A9:按位置分別抽取判斷、單選及多選題記錄,並賦值給 exam_from 物件(即隨機抽取的所有考題);
定義單元格表示式 (欄位名稱)
B3:tit.EXAM_TIME
E3:tit.EXAM_NAME
A5:exam_from.EXAM_TYPE
B5:EXAM_CONTENT
C5:EXAM_SCORE
D5:EXAM_A
E5:EXAM_B
F5:EXAM_C
G5:EXAM_D
H5:EXAM_E
I5:可不設定,按照“答案”為欄位名採集資料
設定資料處理(回填考生提交的答案)
其中:
B1:給採集的 tit[平 1] 物件增加考試人資料;
A2:tit 物件和採集的答案 exam 物件做關聯;
B2:new 出包含考題資訊、答案及考試人的資料物件;
C2:為提交物件增加是否已答卷和是否已評卷的狀態;
D2:執行提交,將採集答案資訊提交到答題庫表存放;
預覽效果
當考試人為 monkey1,考試為“產品測試 2”的 url:
考題內容如下:
切換其他考試人,考試人為 monkey2,考試題同樣為“產品測試 2”的 url:
考試內容已經與前面的考試人不同。
錄入答案並提交後,表示整個過程考試完成。
實際的線上考試需要搭建完整的考試系統,其中還包括使用者登入、根據許可權檢視考試列表、檢視考試成績、考過的不允許立即再考、考試提醒、超時自動提交、試卷評閱等等功能和流程。填報表可以嵌入在涉及到資料採集的任何環節,只需要根據需求選擇合適的嵌入位置,其他的就是細節的做法問題了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2667153/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JAVA Struts2 考試功能 —— 自動產生隨機試題Java隨機
- 考試系統維護總結
- 線上試題答題考試系統專案開發搭建原始碼原始碼
- 2020年A證(安全員)考試題庫及A證(安全員)模擬考試系統
- asp線上考試系統,遇到一個問題,請指教
- java 考試系統 模組架構方案Java架構
- JAVA 考試系統模組設計方案Java
- 10G-OCM考試簡介--考試環境-考試大綱-考試安排
- 公考筆試之整理筆試
- 2020年低壓電工模擬考試題庫及低壓電工模擬考試系統
- 微機系統與介面實驗考試題目(2014級題目-04)
- java PC 和 手機 線上考試系統 模組設計方案Java
- 軟體工程考試題軟體工程
- 智慧閱卷考試系統解決方案
- 浙江省公務員考試錄用系統
- 計算機組成原理期末考試題計算機
- GRE計算機專項考試題(96) (轉)計算機
- GRE計算機專項考試題(98) (轉)計算機
- OCP考試題庫-185題
- oracle ocp 19c考題,科目082考試題-temporary undoOracle
- oracle ocp 19c考題,科目082考試題-Oracle NetOracle
- oracle ocp 19c考題,科目082考試題-INTERSECT operatorOracle
- ocp 19c考題,科目082考試題(28) - oracle profilesOracle
- 變數提升的考試題變數
- 考試系統時間自動控制程式
- 中國計算機軟體水平考試測試系統2.0演算法分析計算機演算法
- DBA筆試試題-考試認證(zt)筆試
- oracle ocp 19c考題,科目082考試題(18)-unused columnOracle
- oracle ocp 19c考題7,科目082考試題-listener tnsnamesOracle
- oracle ocp 19c考題,科目082考試題-date/time functionsOracleFunction
- ocp 19c考題,科目082考試題(31) - resource_limitMIT
- ocp 19c考題,科目082考試題(25)- instance situations
- 開學考試
- xyz計算機等級考試系統(二級c) vb編寫計算機
- 計算機等級考試簡介、考試形式與等級要求 (轉)計算機
- 全國計算機等級考試2008最新考試大綱計算機
- 模擬考試參考程式碼
- 2020年高壓電工考試題及高壓電工考試題庫