本文目錄一覽:
- 1、php考試系統
- 2、php考試系統怎麼去做
- 3、php考試系統怎麼去做?
php考試系統
如果是我,我會將單選題,複選題,判斷題分成三個文件或資料庫中的三個表一個一”\r\n”分開識別,一個為記錄設置id。然後獲取數據,針對文本的做法:file()獲得記錄。然後使用mt_rand(1,文本中記錄條數)獲得要取出的隨機題目,然後就是輸出咯。針對資料庫:首先獲取資料庫中記錄的條數,mysql_num_rows(),然後mt_rand(1,獲得的條數);然後從資料庫中取出生成的隨機數行,然後也是輸出。對於你的這個問題不是太困難。
然後就是輸出對吧,其實只要你將題目寫入記錄保存到文本或者資料庫的時候加入html標籤就可以了(記住替換換行,空格,然後把括弧什麼的換成字元實體。),然後再外面加上form標籤就可以形成一個表單。理論上來說,這個演算法是可行的,如果要多個題目也簡單,建立三個數組,分別存儲已經取得的題目的編號,如果題目取出就加入這個題目的編號,再取出其他題目,如果已經取出就在取其他的。我的只有方法,沒有代碼,只提供思路。如果有興趣,加我qq1305167657.不過這一段時間沒法上網——————高考啊。。。。。。高考之後交流。其次。。流量啊
php考試系統怎麼去做
一般在線考試系統,會事先將題庫和題型都設置好,並設置考試時間。在沒有到達考試時間時,考生登錄系統進入等待頁面,到達考試時間後用戶進入考場,顯示考試試題,考生作答完成提交自動閱卷生成成績。
試題只在考試時生成試卷,提交答案時操作資料庫,這個應當不存在什麼壓力不壓力的。但是考慮將試題輸出到客戶端緩存,這個是有必要的。假若為每個用戶生成的試卷都不相同時,則可以試卷存儲到cookie(Cookie是保存在客戶端的,而且可以設置過期時間,考試結束提交試卷後清空),進入考場後從Cookie讀取試卷而無需再次從資料庫生成下載,即使中途斷電,試題也無需再次生成。
至於有的朋友說將試題輸出到JS,這個是不可行的,因為JS只能在當前頁面保存,刷新操作或者跳轉頁面都會丟失,處理起來也麻煩,而且還很有可能沒考試考題都泄露乾淨了。
php考試系統怎麼去做?
我只說簡單的吧 首先設計數據表questions,questions表包括三個欄位,id,question,answer 分別是,題目ID,題目,題目答案 然後在前台 ?php $num=array(); //保存題目數的數組 for($i=0;$i$question_num;$i++) //$question_num是要讀取的題目數量 { $b=mt_rand(0,$max_questionID); //這裡$max_questionID是說你的數據表中一共幾道題。 while(in_array($b,$num)) { $b=mt_rand(0,$max_questionID); //這個循環是為了防止生成重複的題目號 } $num[]=$b; } ? 這樣我們就得到了一個保存著要讀取的題目號的數組; 然後就可以連接資料庫進行讀取了 ?php mysql_connect(“”,””,””); mysql_select_db(‘db’); mysql_query(‘SET NAMES gb2312′); foreach($num as $value) { $string.=$value.’,’; } $string=substr($string,0,-1); $sql=”select question,answer from questions where id in ($string)”; $r=mysql_query($sql); $answer=array(); $i=0; while($row=mysql_fetch_array($r)) { echo $row[‘question’].’br’; $answer[$i][]=$row[‘answer’]; //把答案保存進一個二維數組 $i++; } $fname=mt_rand(0,1000); $fp=fopen($fname,’w’); fwrite($fp,serialize($answer)); //把序列化後的答案寫入一個隨機生成的文件中; fclose($fp); ? 添加題目就不用我說了吧?插入數據唄。。。很簡單,不啰嗦了 然後是得分是么? 前台設計的時候要注意,單選框的名字要是一個數組才行,input type=”radio” name=”answer[]” value=”a”/類似這樣的,並且創建一個隱藏域input type=”hidden” value=”? echo $fname ?” name=”fname” /這是為了能夠獲得此次考試對應的答案 後台就可以通過這個數組來獲取回答者的答案並且進行判斷了 ?php $answer=$_POST[‘answer’]; $fname=$_POST[‘fname’]; $fp1=fopen($fname,’r’); $content=fread($fp); fclose($fp1); $rightanswer=unserialize($content); 剩下得就是判斷提交的答案是否與正確答案相同了,然後加分數,不用啰嗦了吧? ?
求採納
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/294106.html