首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP与模板与代码加密/优化 » 站长:PHP开发在线考试系统的简单实现  


  作者:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

  nqp@nqp.me
  4304410
  www.nqp.me

 

 发表:2005-06-23 22:40:43 阅读 2256 次 回复 3 次 得分1  |   字号 字色
站长:PHP开发在线考试系统的简单实现
***********************************************************
*[声明]本站所有原创文章,均为站长或用户独立创作,版权归本站所有.*
*  本站为非盈利兴网站,主张源代码开放和免费.本站所有原创文 *
*  章欢迎任何形式的转载,但是,为尊重作者本人的著作权,书面  *
*  转载请联系站长,网络转载请注明出处,谢谢合作.   *
***********************************************************

    用PHP开发一个在线考试(答题、多项目投票调查)系统,是经常遇到的一个话题。早就想针对这个话题做一点研究,但是一直在工作生活中没有遇到这样的项目,因此没有实际动手去做。今天有位朋友提起这个问题,经过考虑,形成了一点思路,做了一个简单的例子测试了一下,发现基本可行,现在将实现方法贴出来,大家一起研究。
    
    这个例子我们只关心选择题部分。因为主观题一般不通过在线的方式考查,我们只关心单项选择题的实现。

    比如有30道选择题,每道题有4个选项A B C D。这样,题目可以出在下面的questions.html里面。代码这样写:
 questions.html
----------------------------------------------
   <form action=test.php method=post>
   1、中国第一位皇帝是:()<br>
   A、<input type=radio name="q1" value="A">汉武帝
   B、<input type=radio name="q1" value="B">秦始皇
   .....
   D、<input type=radio name="q1" value="D">那破论<br>
   2、铁器最早出现在()<br>
   A、<input type=radio name="q2" value="A">宋代
   .....
   30、。。。
   A、<input type=radio name="q30" value="A">..
   ..... 
    <input type=submit value="提交">
    </form>
   通过以上纯HTML代码可以看出,比如一共30道题,那么用30组单选框来做。每一组的名字分别是q1,q2...q30。

  然后用户作完题目,点击“提交”之后,提交到test.php。我们下面写test.php的代码:
test.php
-----------------------------------------
 <?php
  //把题目的答案从数据库中查询出来
  //本例子中我们假设答案存放在字符串$anwser中
  $anwser="ACDDABCBDDBCCDCCDACBBDBCDACDAB";
  
  //判断用户一共答对多少题
  $right=0;
  for($i=0;$i<30;$i++}{
   $anw=substr($anwser,$i,1);
   $user_anw=$_POST["q".$i];
   if($anw==$user_anw){
    $count++;
   }
   }
   //我们假设每道题目3分
   $fenshu=$count*3;
   echo "你的分数是:".$fenshu."<br>";
   echo "共30题,答对".$count.",答错".(30-$count)."。<br>";
 ?>

这样即可实现。
 
 1#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 1#楼 发表于2005-06-24 01:57:38  评分:× 

上面test.php 有点错误,刚才写的时候没有注意。

$right和$count是同一变量。名字打错了。

  //判断用户一共答对多少题
  $right=0;

把这个$right=0 改成 $count=0即可
 2#楼  
 
  回复人:cykk
  注册时间:2004-12-30
  主题/回复:41/99
  积分:688
  等级:★★★(六级)
  称号:声名鹊起

   
 2#楼 发表于2005-06-24 21:05:03  评分:1 

questions.php页
----------------------------------------------------------------
<form action=test.php method=post>
   1、中国第一位皇帝是:()<br>
   A、<input type=radio name="q1" value="A">汉武帝
   B、<input type=radio name="q1" value="B">秦始皇
   C、<input type=radio name="q1" value="C">李世民
   D、<input type=radio name="q1" value="D">那破论<br>
   2、铁器最早出现在()<br>
   A、<input type=radio name="q2" value="A">宋代
   B、<input type=radio name="q2" value="B">明代
   C、<input type=radio name="q2" value="C">清代
   D、<input type=radio name="q2" value="D">明清
    <input type=submit value="提交">
    </form>
-----------------------------------------------
test.php页
----------------------------------------------
<?php
  //把题目的答案从数据库中查询出来
  //本例子中我们假设答案存放在字符串$anwser中
  $anwser="AC";
  
  //判断用户一共答对多少题
  $count=0;
  for($i=1;$i<3;$i++){
   $anw=substr($anwser,$i,1);
   $user_anw=$_POST["q".$i];
   if($anw==$user_anw){
    $count++;
   }
   }
   //我们假设每道题目3分
   $fenshu=$count*3;
   echo "你的分数是:".$fenshu."<br>";
   echo "共2题,答对".$count.",答错".(2-$count)."。<br>";
 ?>
----------------------------------------------------------
提交之后统计不出来的!!!
 3#楼  
 
  回复人:cykk
  注册时间:2004-12-30
  主题/回复:41/99
  积分:688
  等级:★★★(六级)
  称号:声名鹊起

   
 3#楼 发表于2005-06-24 21:20:07  评分: 

聂老师,还有一处错,把$anw=substr($anwser,$i,1);改成$anw=substr($anwser,$i-1,1);就行了!
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.009sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版