摘 要 本文講述基于PHP的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。首先將題目從題庫中抽取出來保存在數(shù)組中,然后再對(duì)題目數(shù)組進(jìn)行隨機(jī)抽題,將抽取的題目保存在每個(gè)考生的信息中。在做題的過程中還要將考生的答題情況也保存在考生信息表中。該在線考試系統(tǒng)支持隨機(jī)抽題、機(jī)器出故障重新?lián)Q機(jī)考試考生的答題信息仍然保留在系統(tǒng)中。
【關(guān)鍵詞】PHP 在線考試 隨機(jī)抽題
隨著互聯(lián)網(wǎng)+時(shí)代的到來,教育信息化是大勢(shì)所趨。本文講述的在線考試系統(tǒng)支持單選題、多選題、判斷題。能夠隨機(jī)抽題,將考試抽取的題目,答題信息保存在考生信息表中。
1 數(shù)據(jù)庫設(shè)計(jì)
數(shù)據(jù)庫名為db_test,其中包含至少7張表,保存單選題的表、保存多選題的表、保存判斷題的表,保存管理員信息的表,保存考生表信息的表(多張表),保存綜合設(shè)置信息的表以及班級(jí)與表名對(duì)應(yīng)表。關(guān)鍵表結(jié)構(gòu)如下:
單選題表用于存放考試題目中的單選題。多選題表用于存放考試題目中的多選題。判斷題表用于存放考試題目中的判斷題。多選題、判斷題表結(jié)構(gòu)與單選題表結(jié)構(gòu)類似。下面僅介紹單選題表結(jié)構(gòu)。單選題表的關(guān)鍵字段為:“Id”、“題目”、“標(biāo)答”、“分值”、“A選項(xiàng)”、“B選項(xiàng)”、“C選項(xiàng)”、“D選項(xiàng)”、“E選項(xiàng)”。
單選題表字段字段意義為:其中“ID”設(shè)置為主鍵;“題目”表示考試題目的題干;“A選項(xiàng)”、“B選項(xiàng)”、“C選項(xiàng)”、“D選項(xiàng)”、“E選項(xiàng)”分別是多個(gè)單選項(xiàng),“標(biāo)答”保存著該題目的標(biāo)準(zhǔn)答案,“分值”保存本題的分值。這些字段均設(shè)置為varchar類型。數(shù)據(jù)庫編碼設(shè)置為UTF-8。
考生表是可以新建的,多個(gè)班級(jí)考試則可以對(duì)應(yīng)多個(gè)表??忌砬熬Y是bj_,用于區(qū)分其他表??忌黻P(guān)鍵字段:“考號(hào)”、“姓名”、“密碼”、“交卷時(shí)間”、“總分”、“單選題題目”、“單選題答案”、“多選題題目”、“多選題答案”、“判斷題題目”、“判斷題答案”等字段。全部設(shè)置為varchar數(shù)據(jù)類型,考號(hào)設(shè)置為主鍵。全部編碼設(shè)置為utf-8類型。
考生表關(guān)鍵字段意義為:“考號(hào)”是主鍵,唯一?!靶彰笔强忌男彰?。“密碼”是考生登錄用的密碼,考生通過輸入班級(jí)、輸入考號(hào)、輸入密碼進(jìn)行登錄考試系統(tǒng)?!敖痪頃r(shí)間”是指考生應(yīng)該交卷的時(shí)間,不是實(shí)際交卷時(shí)間,每個(gè)考生從登錄開始(每個(gè)考生登錄時(shí)間會(huì)有少許差異)再加上考試規(guī)定時(shí)長就可以得到應(yīng)該交卷的時(shí)間。因?yàn)槊總€(gè)考生登錄時(shí)間不相同,中途也可能出現(xiàn)差錯(cuò)需要補(bǔ)時(shí),因此交卷時(shí)間也不一樣。此外“交卷時(shí)間”還可以收到二次登錄補(bǔ)時(shí)的影響?!皢芜x題題目”只保存該考生抽取的單選題的題號(hào),若保存全部抽取的題目信息,則不利于保存,再顯示考題信息的時(shí)候再根據(jù)每個(gè)考生“單選題題目”中的序號(hào)顯示實(shí)際單選題?!皢芜x題答案”保存著該考生單選題答題情況。
注意事項(xiàng):考生在答題過程中是每做一道題都要保存一下的,確保在機(jī)器出故障后,考生的答題信息不會(huì)受到影響。因此考生表的這些字段這樣設(shè)置是必須的。
綜合設(shè)置表結(jié)構(gòu)為:“網(wǎng)站名稱”、“總分”、“單選題數(shù)量”、“單選題描述”、“單選題分值”、“多選題數(shù)量”、“多選題描述”、“多選題分值”、“判斷題數(shù)量”、“判斷題描述”、“判斷題分值”、“二次登錄密碼”。全部字段設(shè)置為varchar類型,編碼設(shè)置為utf-8。
綜合設(shè)置表字段意義為:“網(wǎng)站名稱”是指在線考試系統(tǒng)網(wǎng)站的名稱,即顯示的網(wǎng)站標(biāo)題信息?!翱偡帧笔侵刚麄€(gè)考試題目的分?jǐn)?shù),一般可以設(shè)置為100分?!皢芜x題數(shù)量”表示考試題目中有多少道單選題?!皢芜x題描述”一般設(shè)置為“本題有五個(gè)選項(xiàng),正確答案只有一個(gè),請(qǐng)選擇正確答案”?!皢芜x題分值”表示每個(gè)單選題分?jǐn)?shù)。多選題和判斷題類似,不再表述?!岸蔚卿浢艽a”是考生在考生過程中機(jī)器出現(xiàn)故障,換一臺(tái)機(jī)器重新考試需要輸入的密碼,若沒有二次密碼則考生可以惡意多次重新啟動(dòng)機(jī)器。
2 隨機(jī)抽題方法(以單選題為例)
先判斷考生表中字段“單選題題目”是否為空(算法為:if (trim($單選題題目)=='')),若為空則表示該考生第一次登錄,還沒有抽取題目,則進(jìn)行隨機(jī)抽題。先得到全部單選題:關(guān)鍵代碼為:$result =$mysqli->query("select * from tx_danxuan"); while($r=$result->fetch_row()) $rowradio[] = $r;。然后進(jìn)行抽題:$radio_key = array_rand($rowradio,$radio_num); $radio_key保存著抽題的序號(hào)。再把抽題保存到考生表中,關(guān)鍵代碼為:$radio_st = serialize($radio_key)。至此,系統(tǒng)已將單選題全部隨機(jī)抽取并放置在該考生的信息表中。
說明:抽題抽取的是題目的序號(hào),保存的也是題目的序號(hào),在考生題目顯示的時(shí)候才會(huì)根據(jù)序號(hào)找試題。因?yàn)槿绻麑⑷砍槿〉目碱}放置在考生信息表中,會(huì)出現(xiàn)兩大問題:格式問題和容量問題。試題格式不利于保存,試題容量太大不利于保存,只保存抽取題目的序號(hào)才是科學(xué)的和可行的。
2.1 答題過程
考生答題信息保存在該考生的考生信息表的對(duì)應(yīng)記錄中。以A考生(每個(gè)考生的考號(hào)是唯一的)做單選題為例,若考生第m題選擇了B選項(xiàng),則設(shè)置數(shù)組$answer[$m-1]=B,再將整個(gè)數(shù)組$answer變成字符串類型后寫入到A考生記錄的“單選題答案”字段。這樣確保每做一道題都保存到數(shù)據(jù)表。
2.2 評(píng)分過程
考生在交卷時(shí),系統(tǒng)進(jìn)行評(píng)分。還是以單選題為例講述評(píng)分辦法。具體方法是,系統(tǒng)首先從對(duì)應(yīng)考生記錄中取出“單選題答案”字符串,再使用函數(shù)un serialize()轉(zhuǎn)化為數(shù)組,該數(shù)組就是該考生單選題的答題情況,可以所抽單選題的標(biāo)準(zhǔn)答案字段進(jìn)行比對(duì)。若單選題答題信息與標(biāo)答相同則記分。通過循環(huán)將全部單選題答題情況進(jìn)行比對(duì)即可統(tǒng)計(jì)出單選題分?jǐn)?shù)。多選題和判斷題評(píng)分方法與單選題評(píng)分方法完全相同。再將三個(gè)分?jǐn)?shù)加在一起,并保持到該考生記錄表之總分字段中。
2.3 容錯(cuò)處理
若電腦在考試過程中出現(xiàn)故障,換電腦進(jìn)行第二次考試時(shí)??荚囅到y(tǒng)首先比對(duì)考生的抽題情況“單選題題目”和答題情況“單選題答案”。若不為空,則可以判斷考生是換機(jī)考試,此時(shí)無需重新抽題,只需要從該考生的記錄中讀出抽題情況“單選題題目”和答題情況“單選題答案”,并顯示在考試頁面中即可。
3 結(jié)語
在考試系統(tǒng)的開發(fā)過程中,數(shù)據(jù)庫的設(shè)置以及容錯(cuò)的考慮是必須的。限于篇幅問題,其他功能的實(shí)現(xiàn)在此不再贅述。本在線考試系統(tǒng)在某高校思政課考試中使用五年,效果非常好。
參考文獻(xiàn)
[1]王偉平,賀春雷.PHP+MySQL網(wǎng)站開發(fā)入門與提高[M].清華大學(xué)出版社,2014(07).
[2]PHP開發(fā)實(shí)例大全[M].東軟開發(fā)聯(lián)盟.清華大學(xué)出版社,2016(01).
作者簡介
劉超(1982-),男,武漢職業(yè)技術(shù)學(xué)院學(xué)院講師。研究方向?yàn)檐浖夹g(shù)。
作者單位
武漢職業(yè)技術(shù)學(xué)院計(jì)算機(jī)技術(shù)與軟件工程學(xué)院 湖北省武漢市 430074endprint