今天佟老师给我们开会,在开会之前我们实现了三个随堂小测的附加功能:
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> 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 ?>