码迷,mamicode.com
首页 > Web开发 > 详细

php实现网站四则运算。

时间:2016-04-10 20:57:18      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <form method = "post" action = "fourArithmeticOperation.php">
        简单四则运算 <input type = "submit" name = "continue" value = "简单四则运算"></form>
    <form method = "post" action = "multitermOperation.php">
        多项运算 <input type = "submit" name = "continue" value = "多项运算"></form>
     <?php
    if(isset($_REQUEST["continue"]))
    {
    }
    ?>
</html>
<!DOCTYPE html>
<html>
    <head>
        <meta charset = "UTF-8">
        <title></title>
    </head>
    <form method = "get" action = "fourArithmeticOperation.php">
        简单四则运算 <br>
        习题数量 <input type = "text" name = "test1" > <br>
        数值范围 <input type = "text" name = "test2" > <br>
        <input type = "submit"></form>
    <body>
    <?php
    if(isset($_REQUEST["test1"]) && (isset($_REQUEST["test2"])))
    {
        $open1 = fopen("config.txt","w+" );  //config.txt用于存放用户在表单输入的参数。
        fwrite($open1,$_REQUEST["test1"]."\r\n".$_REQUEST["test2"]);
        fclose($open1);
        $open2 = fopen("time.txt","w+" );   //time.txt用于更新用户当前答题数量。
        fwrite($open2,"0");
        fclose($open2);
        $open3 = fopen("exercise.txt","w+" );   //exercise.txt用于存放本次程序所出试题,同时用于判断是否有重复。
        fclose($open3);
        header("Refresh:0;url = main.php");    //配置完成后跳转到主程序页面。
    }
    ?>
</body>
</html>
<?PHP
    static $flag = true;    //用于标记是否出题,逻辑上的变量。
    $open0 = file("config.txt");
    $range = chop($open0[1]);    //读取随机数大小上限。
    if(!(isset($_REQUEST["answer"])) && $flag)    //出现回答后不再运行。
    {
        include("exercise.php");
        $object = new exercise();
        $object->randomNumber($range);
        $flag = false;
    }
    
    $open1 = fopen("exercise.txt",‘r‘);    //读取exercise.txt的最后一行数据,即当前试题。
    while($buf = fgets($open1))
    {
        $res = $buf;
    }
    fclose($open1);
    echo $res;
    
    if(isset($_REQUEST["answer"]))    //输出答案和输入结果。
    {
        echo  file_get_contents("result.txt")."<br>"."您的结果为:".$_REQUEST["answer"]."<br>";
    }
    else
    {
?>
<form method = "post">
<input type = "text" name = "answer"><br>
<input type = "submit"></form>    
<?PHP
    }
    if(isset($_REQUEST["answer"]))    //输入结果后进行判断。
    {
        judge($_REQUEST["answer"]);
        
    }
    function judge($answer)
    {
        $result = file_get_contents("result.txt");
        if($result == $answer)
        {
            echo "结果正确    ";
        }
        else
        {
            echo "结果错误    ";
           
        }
        $open2 = file("config.txt");
        $timeMax = chop($open2[0]);    //读取习题数量。
        $open3 = file("time.txt");
        $time = chop($open3[0]);     //读取当前为第几题。
        if($time < $timeMax - 1)    //习题未出完时,当前题数加一,更新time.txt,重新运行main.txt
        {
            echo "(第".($time + 1)."/".($timeMax)."题)";
            $time++;
            $open3 = fopen("time.txt","w+" );
            fwrite($open3,"$time");
            fclose($open3);
        ?>
        <form method = "post" action = "main.php">
        <input type = "submit" value = "下一题"></form>
        <?PHP
        }
        else    //否则跳转到退出界面。
        {
            echo "答题完毕。";
            header("Refresh:3;url = quit.php");
        }
    }
<?PHP
    class exercise
    {
        public $numberA;
        public $numberB;
        public $numberC;
        public $result;
        public function exercise()
        {
            $this->numberA = null;
            $this->numberB = null;
            $this->result = null;
        }
        public function randomFormula($a)
        {
            $symbolA = rand(0,3);
            $symbolB = rand(0,3);
            $this->numberA = rand(0,$a);
            $this->numberB = rand(0,$a);
            $this->numberC = rand(0,$a);
            $openA = fopen("exercise.txt","a" );
            $openB = fopen("result.txt","w+" );
            fwrite($openA,$this->numberA.symbol($symbolA).$this->numberB.symbol($symbolB).$this->numberC." = "."\r\n");
            $this->result = 0;
            fwrite($openB,$this->result);
            fclose($openA);
            fclose($openB);
            
        }
        public function randomNumber($a)
        {
            $case2 = "0";
            $symbol = rand(0,3);
            $this->numberA = rand(0,$a);
            $this->numberB = rand(0,$a);
            $openA = fopen("exercise.txt","a" );
            $openB = fopen("result.txt","w+" );
            if($symbol == 0)
            {
                $this->result = $this->numberA + $this->numberB;
                $case1 = $this->numberA." + ".$this->numberB." = "."\r\n";
                $case2 = $this->numberB." + ".$this->numberA." = "."\r\n";
                if(isRepeat($openA,$case1,$case2))
                {
                    fwrite($openA,$this->numberA." + ".$this->numberB." = "."\r\n");
                }
            }
            if($symbol == 1)
            {
                $this->numberB = rand(0,$this->numberA);
                $case1 = $this->numberA." - ".$this->numberB." = "."\r\n";
                $this->result = $this->numberA - $this->numberB;
                if(isRepeat($openA,$case1,$case2))
                {
                    fwrite($openA,$this->numberA." - ".$this->numberB." = "."\r\n");
                }
            }
            if($symbol == 2)
            {
                $case1 = $this->numberA." * ".$this->numberB." = "."\r\n";
                $case2 = $this->numberB." * ".$this->numberA." = "."\r\n";
                $this->result = $this->numberA * $this->numberB;
                if(isRepeat($openA,$case1,$case2))
                {
                    fwrite($openA,$this->numberA." * ".$this->numberB." = "."\r\n");
                }
            }
            if($symbol == 3)
            {
                $this->numberB = rand(1,$a);
                $this->numberA = rand(1,$this->numberB);
                $case1 = $this->numberA." / ".$this->numberB." = "."\r\n";
                $gcd = getGreatestCommonDivisor($this->numberA,$this->numberB);
                $this->result = ($this->numberA / $gcd)."/".($this->numberB / $gcd);
                if($this->result == "1/1")
                {
                    $this->result = "1";
                }
                if(isRepeat($openA,$case1,$case2))
                {
                    fwrite($openA,$this->numberA." / ".$this->numberB." = "."\r\n");
                }
            }
            fwrite($openB,$this->result);
            fclose($openA);
            fclose($openB);
        }
        
    }
    
    function symbol($a)
    {
        $symbol = "";
        switch($a)
        {
            case 0:
                $symbol = " + ";break;
            case 1:
                $symbol = " - ";break;
            case 2:
                $symbol = " * ";break;
            case 3:
                $symbol = " / ";break;
        }
        return $symbol;
    }
    
    function isRepeat($open1,$case1,$case2)
    {
        while($buf = fgets($open1))
        {
            if($buf == $case1 || $buf == $case2)
            {
                header("Refresh:0;url = main.php");
                return false;
            }
            else
            {
                continue;
            }
        }
        return true;
    }
    function getGreatestCommonDivisor($numberA,$numberB)
    {
        $n = 0;
        while($numberB > 0)
        {
            $n = $numberA % $numberB;
            $numberA = $numberB;
            $numberB = $n;
        }
        return $numberA;
    }

 

php实现网站四则运算。

标签:

原文地址:http://www.cnblogs.com/shenshenxin/p/5375184.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!