考試系統案例之 -- 隨機生成考題
問題背景
應用 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 考試題
- 2020年A證(安全員)考試題庫及A證(安全員)模擬考試系統
- 2020年低壓電工模擬考試題庫及低壓電工模擬考試系統
- 作業系統之面試常考作業系統面試
- 2020年流動式起重機司機模擬考試及流動式起重機司機模擬考試系統
- ocp 19c考題,科目082考試題-bigfile
- ocp 19c考題,科目082考試題(32) -
- ocp 19c考題,科目082考試題(34)
- ocp 19c考題,科目082考試題(33)
- 線上試題答題考試系統專案開發搭建原始碼原始碼
- 考試試題A卷第一題
- 考試試題A卷第二題
- 2020年煤氣考試題及煤氣證考試
- 2020年起重機械指揮考試試題及起重機械指揮考試軟體
- TIDB 考試 參考TiDB
- 2020磺化工藝證考試及磺化工藝考試試題
- 公考筆試之整理筆試
- 【Java 開發面試】Mysql 面試考點/考題彙總Java面試MySql
- 考試試題B卷第一題
- 考試試題B卷第二題
- ocp 19c考題,科目082考試題(30) - default profile
- ocp 19c考題,科目082考試題(29) - about profiles
- ocp 19c考題,科目082考試題(28) - oracle profilesOracle
- ocp 19c考題,科目082考試題(26) - order by clause
- oracle ocp 19c考題,科目082考試題-INTERSECT operatorOracle
- ocp 19c考題,科目082考試題(15)-move datafile to
- ocp 19c考題,科目082考試題(13)-variable prompt
- ocp 19c考題,科目082考試題(27) - order by clause
- ocp 19c考題,科目082考試題(24)-about sequence
- oracle ocp 19c考題,科目082考試題-temporary undoOracle
- oracle ocp 19c考題,科目082考試題-Oracle NetOracle
- ocp 19c考題,科目082考試題(22)- drop columns
- ocp 19c考題,科目082考試題(25)- instance situations
- 系統設計面試參考-設計Spotify系統面試
- 智慧閱卷考試系統解決方案
- java 考試系統 模組架構方案Java架構
- JAVA 考試系統模組設計方案Java
- 2020年氧化工藝考試題及氧化工藝模擬考試題