php学习 (四)

2.1:小学二年级四则运算试卷生成及评分系统(注意:是针对小学二年级的学生)
做一个页面,上面有两个按钮,一个是生成考试题目,一个是对答案进行评分。考试题目的要求是,一共15道算术题,1至5题是只加减法,每题4分,6至10 题是乘除法,每题6分,11至15题是加减乘除综合计算题,每题10分。填完答案后,点击评分按钮进行评分,将考试及评分结果显示在页面上,考生能清楚地 知道哪个题做对了,哪个题做错了,最后得多少分。

代码实现如下

Test1.4.php

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
    <?php
        echo "2.1:小学二年级四则运算试卷生成及评分系统(注意:是针对小学二年级的学生)";
        echo "<br>";
        echo " 做一个页面,上面有两个按钮,一个是生成考试题目,一个是对答案进行评分。考试题目的要求是,一共15道算术题,1至5题是只加减法,每题4分,6至10题是乘除法,每题6分,11至15题是加减乘除综合计算题,每题10分。填完答案后,点击评分按钮进行评分,将考试及评分结果显示在页面上,考生能清楚地知道哪个题做对了,哪个题做错了,最后得多少分。";
        echo "<br>";
    ?>
    <form action = "<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method = "post">
        请点击按钮进行操作:<br>
        <input type = "submit" value = "生成试卷" name = "btn">
        <input type = "button" value = "对试卷评分" name = "btn1" onclick = "calculateScore()"><br>
    </form>
    
    <?php
         $a = array();
//          $a = "";
        for($i = 0;$i < 15;$i++){                                                                       //生成十五个数组存放题目的参数以及运算符
            $a[$i] = array();
        }
        $num = '0123456789';
        $num1 = '123456789';                                                                          //解决除数不能为0的问题
        $ad = '+-';
        $d = '*/';
        $ab = '+-*/';
        for($i = 0;$i < 5;$i++)                                                                          //随机生成一到五题(加减法)
        {
            //rand(0, 9);
            $a[$i][0] = substr($num,(mt_rand()%strlen($num)),1);
            $a[$i][1] = substr($num,(mt_rand()%strlen($num)),1);
            $a[$i][2] = substr($ad,(mt_rand()%strlen($ad)),1);
            $a[$i][3] = calculate($a[$i][0],$a[$i][1],$a[$i][2]);
            if($a[$i][2] == '-'){                                                        
                if($a[$i][0] - $a[$i][1] < 0)                                                        //保证得数不为负数
                {
                    $a[$i][2] = '+';
                }
            }
        }
        
        for($i = 5;$i < 10;$i++)                                                                    //随机生成六到十题(乘除法)
        {
            $a[$i][2] = substr($d,(mt_rand()%strlen($d)),1);
            $a[$i][0] = substr($num,(mt_rand()%strlen($num)),1);
            if($a[$i][2] == '/'){
                $a[$i][1] = substr($num1,(mt_rand()%strlen($num1)),1);
                while ($a[$i][0] % $a[$i][1]){                                                    //保证生成的除法运算是整除的
                    $a[$i][1] = substr($num1,(mt_rand()%strlen($num1)),1);
                }
            }else{
                $a[$i][1] = substr($num,(mt_rand()%strlen($num)),1);
            }
            $a[$i][3] = calculate($a[$i][0],$a[$i][1],$a[$i][2]);
        }
        
        for($i = 10;$i < 15;$i++)                                                                    //随机生成十一到十五题(加减乘除法)
        {
            $a[$i][0] = substr($num,(mt_rand()%strlen($num)),1);
            $a[$i][1] = substr($num,(mt_rand()%strlen($num)),1);
            $a[$i][3] = substr($ad,(mt_rand()%strlen($ad)),1);
            $a[$i][4] = substr($d,(mt_rand()%strlen($d)),1);
            if($a[$i][4] == '/'){
                $a[$i][2] = substr($num1,(mt_rand()%strlen($num1)),1);
                while ($a[$i][1] % $a[$i][2] !=0 ){                                                    //保证生成的除法运算是整除的
                    $a[$i][2] = substr($num1,(mt_rand()%strlen($num1)),1);
                }
            }else{
                $a[$i][2] = substr($num,(mt_rand()%strlen($num)),1);
            }
            if($a[$i][3] == '-' && $a[$i][0]-calculate($a[$i][1],$a[$i][2],$a[$i][4]) < 0){            //保证结果不会为负数
                $a[$i][3] = '+';
            }
            $a[$i][5] = calculate($a[$i][0], calculate($a[$i][1],$a[$i][2],$a[$i][4]), $a[$i][3]);
        }
        

        if ($_SERVER["REQUEST_METHOD"] == "POST"){
                for($i = 0;$i < 10;$i++){                                                            //打印1到10题
                    $questionNumber = $i+1;
                    echo "第".$questionNumber."题:".$a[$i][0].$a[$i][2].$a[$i][1]."=";
                    echo "<input type='text' id='txt".$i."'><br>";
                    echo "<div style='display:none'>正确答案:<input type='text' value='".$a[$i][3]."' id='h".$i."'></div>";
                    echo "<div name='hide' style='display:none'>正确答案:<h>".$a[$i][3]."</h></div>";
                }
                for($i = 10;$i < 15;$i++){                                                            //打印11到15题
                    $questionNumber = $i+1;
                    echo "第".$questionNumber."题:".$a[$i][0].$a[$i][3].$a[$i][1].$a[$i][4].$a[$i][2]."=";
                    echo "<input type='text' id='txt".$i."'><br>";
                    echo "<div style='display:none'>正确答案:<input type='text' value='".$a[$i][5]."' id='h".$i."'></div>";
                    echo "<div name='hide' style='display:none'>正确答案:<h >".$a[$i][5]."</h></div>";
                }
        }
        
        function calculate($a,$b,$c){
            $a = (int)$a;
            $b = (int)$b;
            if($c == "+"){
                return $a + $b;
            }else if($c == "-"){
                return $a - $b;
            }else if($c == "*"){
                return $a * $b;
            }else {
                return $a / $b;
            }
        }
    ?>
    
    <script>
    function calculateScore(){
        var a = new Array();
        var c = new Array();
        var s = 0;
        for(var i = 0;i < 15;i++){                                                                //获取正确答案和提交的答案
            c[i] = document.getElementById("h"+i).value;
            a[i] = document.getElementById("txt"+i).value;
        }
        for(var i = 0;i < 5;i++)
        {                                                                                        //计算前五题得分
            if(c[i] ==  a[i]){
                s += 4;
            }
        }
        for(var i = 5;i < 10;i++)
        {                                                                                        //计算中间五题得分
            if(c[i] == a[i]){
                s += 6;
            }        
        }
        for(var i = 10;i < 15;i++)
        {                                                                                        //计算后五题得分
            if(c[i] == a[i]){
                s += 10;
            }
        }    
        alert("你的得分:"+s);
        var h = new Array();
        h = document.getElementsByName("hide");
        for(i = 0;i < 15;i++){
            h[i].style.display = "block";                                                      //显示隐藏的答案
        }
    }
    </script>
</body>
</html>

posted @ 2016-10-19 14:30  zzl_javaer  阅读(85)  评论(0)    收藏  举报