随堂小测冲刺第20天

今天佟老师给我们开会,在开会之前我们实现了三个随堂小测的附加功能:

1.选择题可以给出不同的答案模块

解决方法:用PHP做后台,在云端将人为设置的四个选项存入,并将A选项存入正确答案,在PHP中,将正确答案存入一个节点变量,将数组存入shuffle函数,通过shuffle函数,去随机打乱数组的排列顺序,再通过search函数,将节点变量的位置找出来,从而找到打乱顺序后的正确选项。

2.填空题自助生成模块

最初的设计思路(李泽宇同志)

first(标记文本):

上传之前,要求上传的txt文本里,用两个*标记答案,用。标记结束,例如:填空题自助生成模块程序设计*思路与算法*。  中,思路与算法就是答案,以句号结尾,表示这是一个题

second(试题入库):

题目:上传并读取之后,以_______代替*____*打印入题目库中,例如:填空题自助生成模块程序设计*思路与算法*。     读取打印出来是:填空题自助生成模块程序设计______。

答案:把答案放入答案库中,把题目编号与答案编号对应起来;

在找到老师后,老师给出的建议:

(1)不能用*作为程序标识符,因为*在计算中也会出现,因此导致程序出错,这和转义字符的原理类似

(2)当遇到多个挖空的位置时,要用字符串,而不是数组,因为数据库的表单属性是固定的,而我们填空题的个数和定义的数组的长度是固定的,非常容易出错;

3.给出随机点名模块程序设计思路与算法

这个随机点名算法:我们一开始是打算用Math.random实现,但是后来,非常佩服老师的经验,他就建议我们用之前我们提到的shuffle函数,从而简化程序运行过程。

***********************************************************

总之,姜还是老的辣,虽然说我们大学生在年龄上比较占优势,但是,和老师比起来,我们真的是差远了。

下面是我们的初级代码:

 随机点名:

 1 <script type="text/javascript">
 2     var startID = null;
 3 
 4     function btnName() {
 5         var btnID = document.getElementById("startName");
 6         var textVaule = btnID.firstChild.nodeValue;
 7         if(textVaule == "开始点名") {
 8             btnID.innerHTML = "停止点名";
 9             startName();
10         } else if(textVaule == "停止点名") {
11             btnID.innerHTML = "开始点名";
12             clearTimeout(startID);
13         }
14     }
15     function startName() {
16         var arr = [
17             "隔壁老王",
18             "东方不败",
19             "西门吹雪",
20             "欧阳无敌",
21             "司马不平",
22             "上官雪儿",
23             "纳兰容若"
24         ]
25         var randomNum = Math.floor(Math.random() * 7);
26         var showID = document.getElementById("showName");
27         var showName = arr[randomNum];
28         showID.innerHTML = showName;
29         startID = setTimeout("startName();", 50);
30     }
31 </script>
32 </head>
33 
34 <body>
35 <center>
36     <div id="showName" style="margin-top: 100px; color: red; font-size: 30px;">请 点击开始 </div>
37     <hr />
38     <button οnclick="btnName();" id="startName" style="font-size: 20px; color: darkmagenta;">开始点名</button>&nbsp;&nbsp;&nbsp;&nbsp;
39 
40 </center>
41 </body>

 选择题可以给出不同的答案模块

 1 <?php
 2 
 3 header("Content-Type:text/html;charset=utf-8");
 4 
 5 //定义一组数组,作为备选项
 6 include_once("conn.php");
 7 $sqlstr = "select * from answer";//定义查询语句
 8 $result = mysqli_query($conn,$sqlstr);//执行查询语句
 9 $rows = mysqli_fetch_row($result);//将查询结果返回为数组
10 echo $rows[0];
11 echo ".";
12 echo $rows[1];
13 $select = array("$rows[2]", "$rows[3]", "$rows[4]", "$rows[5]" );
14 
15 //定义第一个是正确答案
16 
17 $true_no = 1;
18 //正确答案
19 $true = $select[$true_no-1];
20 //打乱顺序,用PHP自带的shuffle函数
21 shuffle($select);
22 //找到正确答案在数组的位置
23 
24 echo "<br/>";
25 echo "A:",$select[0],"<br/>";
26 echo "B:",$select[1],"<br/>";
27 echo "C:",$select[2],"<br/>";
28 echo "D:",$select[3],"<br/>";
29 $locationNum = array_search($true,$select);
30 //检查正确答案
31 if(!empty($_POST))
32 {
33     if($_POST['choice']==$_POST['locationNum']) {
34         echo "回答正确";
35     }
36     else
37     {
38         echo "回答错误";
39     }
40 
41 }
42 ?>
43 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
45 <head>
46     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
47     <title>答案判断</title>
48 </head>
49 <body>
50 <form action="" method="post">
51     请选择:<!--计算器-->
52     <input type="radio" value=0 name="choice">A
53     <input type="radio" value=1 name="choice">B
54     <input type="radio" value=2 name="choice">C
55     <input type="radio" value=3 name="choice">D
56     <input type="hidden" value="<?php echo $locationNum?>" name="locationNum">
57     <input type="submit"  value="submit" name="submit">
58 </form>
59 </body>
60 </html>
61 <?php
62 
63 ?>

 

转载于:https://www.cnblogs.com/daisy99lijing/p/11023549.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值