本文目录一览:
php考试系统
如果是我,我会将单选题,复选题,判断题分成三个文件或数据库中的三个表一个一" "分开识别,一个为记录设置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,题目,题目答案 然后在前台
$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;
}
这样我们就得到了一个保存着要读取的题目号的数组; 然后就可以连接数据库进行读取了
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" />
这是为了能够获得此次考试对应的答案 后台就可以通过这个数组来获取回答者的答案并且进行判断了
$answer=$_POST['answer'];
$fname=$_POST['fname'];
$fp1=fopen($fname,'r');
$content=fread($fp);
fclose($fp1);
$rightanswer=unserialize($content);
剩下得就是判断提交的答案是否与正确答案相同了,然后加分数,不用啰嗦了吧? 求采纳