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>

浙公网安备 33010602011771号