<!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; }
时间: 2024-10-23 01:16:09