四则运算三
把程序变成一个网页程序,用户通过设定参数,就可以得到各种题目,并可实现在线答题并评判。
- 程序设计思想
用JAVA程序随机生成运算表达式的String类型的数组,并同时计算出每个运算表达式应得的正确结果,分别将其设置到arithmetic属性中,在jsp页面可以选择题目数量和做题时间。
答完题提交或时间到后会显示出答题结果,哪道题错误,答对题目数量,答错题目数量,多少题没有答。
2. 源程序代码
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>出题数目</title> 8 </head> 9 10 <h1 style="font-family:新蒂黑板报底字 ; font-size:5em">选择题目吧</h1> 11 12 <form action="Chuti.jsp" method="post"> 13 <table align="center" border="0" width="500" style="margin:00px 200px 00px 5px"> 14 <tr> 15 <td style="font-size:2em;width:500px" align="right">你想做几道题? </td> 16 <td> 17 <input style="width:100px;height:30px;" type="text" name="username" /> 18 </td> 19 </tr> 20 21 <tr> 22 <td style="font-size:2em;width:500px" align="right">设置时间: </td> 23 <td> 24 <input style="width:100px;height:30px;" type="text" name="usertime" /> 25 </td> 26 <td style="font-size:2em;width:500px" align="right">秒 </td> 27 </tr> 28 29 <tr><td style="width:150px;height:40px;"></td></tr> <!-- 加了一个自己设置的高度的空行 --> 30 <tr align="center"> 31 <td colspan="2"> 32 <input style="width:100px;height:30px; margin:00px 20px 00px 150px" type="submit" value="我选好了" /> 33 </body> 34 </html>
1 <%@page import="com.jaovo.msg.model.arithmetic"%> 2 <%@ page import="javax.swing.*" %> 3 <%@ page language="java" contentType="text/html; charset=UTF-8" 4 pageEncoding="UTF-8"%> 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 6 <html> 7 <head><title>出题页</title></head> 8 <body background="./images/tu2.jpg"> 9 <% 10 //接收客户端传递过来的参数 11 request.setCharacterEncoding("UTF-8"); 12 String time = request.getParameter("usertime");//接收时间 13 int time1=0; 14 int x=1; 15 for(int m=0;m<time.length();m++) 16 { 17 time1+=(time.charAt(time.length()-m-1)-'0')*x; 18 x*=10; 19 }//字符串类型的数字转换为整型 成为参数 20 %> 21 <script> 22 var c=1; 23 var t; 24 var num1=<%=time1%> 25 function timeCount() 26 { 27 document.getElementById("txt").innerHTML=num1-c; 28 c=c+1; 29 t=setTimeout("timeCount()",1000); 30 if(num1==c-1) 31 { 32 clearTimeout(t); 33 alert("时间到了!"); 34 load(); 35 } 36 } 37 function load(){ 38 document.getElementById("anniu").click(); 39 } 40 window.onload =function(){ 41 timeCount();//onload 事件会在页面或图像加载完成后立即发生。 42 } 43 44 </script> 45 <h2 align="center" style="font-family:新蒂黑板报底字 ; font-size:4em">开始答题</h2> 46 <td style="font-size:1em;width:500px" align="right">倒计时:</td> 47 <p id = "txt"></p> 48 <form action="Result.jsp" οnsubmit="return validate()==1" method="get"> 49 50 <% 51 //接收客户端传递过来的参数 52 request.setCharacterEncoding("UTF-8"); 53 String num = request.getParameter("username");//接收出题的数目 54 int num1=0; 55 x=1; 56 for(int m=0;m<num.length();m++) 57 { 58 num1+=(num.charAt(num.length()-m-1)-'0')*x; 59 x*=10; 60 }//字符串类型的数字转换为整型 成为参数 61 62 arithmetic demo=new arithmetic();//定义对象 63 String []biaodashi1=new String[num1]; 64 biaodashi1=demo.biaodashi(num1);//接收算式 65 demo.setsuanshi(biaodashi1);//调用函数 给数据成员算式赋值 以便用于传递 66 67 for(int i=0;i<num1;i++) 68 { 69 %> 70 <table align="center" border="0" width="600"> 71 <tr> 72 <td> 73 <% 74 out.println(biaodashi1[i]);//输出表达式 75 %> 76 </td> 77 <td> 78 <input type="text" name="result[<%=i%>]"/> 79 </td> 80 </tr> 81 <% 82 } 83 session.setAttribute("jieshou",demo); 84 %> 85 </table> 86 <input type="submit" value="交卷" /> 87 88 89 90 </body> 91 </html>
1 <%@page import="com.jaovo.msg.model.arithmetic"%> 2 <%@ page import="javax.swing.*" %> 3 <%@ page language="java" contentType="text/html; charset=UTF-8" 4 pageEncoding="UTF-8"%> 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 6 <html> 7 <head><title>出题</title></head> 8 9 <body background="./images/tu3.jpg"> 10 <h1 align="center" style="font-family:新蒂黑板报底字 ; font-size:5em">答题结果</h1> 11 <table align="center" border="0" width="600"> 12 <% 13 //接收客户端传递过来的参数 14 arithmetic newdemo=new arithmetic(); 15 newdemo=(arithmetic)session.getAttribute("jieshou");//用于接收CHUti界面传过来的数 (对象) 16 String []yoursolution=new String[newdemo.shumu];//接收传过来的文本框的答案 17 int sumright=0,sumerror=0,empty=0; 18 19 20 for(int i=0;i<newdemo.shumu;i++) 21 { 22 request.setCharacterEncoding("UTF-8"); 23 %> 24 <tr> 25 26 <% 27 out.print(newdemo.suanshi[i]);//算式 28 yoursolution[i] = request.getParameter("result["+i+"]");//你的答案 29 out.println(yoursolution[i]); 30 %> 31 32 33 34 <% 35 int num1=0; 36 int x=1; 37 for(int m=0;m<yoursolution[i].length();m++) 38 { 39 num1+=(yoursolution[i].charAt(yoursolution[i].length()-m-1)-'0')*x; 40 x*=10; 41 }//字符串类型的数字转换为整型 用于和正确答案比较 因为从出题界面接受的答案是字符串类型 42 if(yoursolution[i].equals("")) 43 { 44 out.println("你没有回答哦! "); 45 empty++; 46 out.println("正确答案是: "); 47 out.println(newdemo.answer[i]);//正确的答案 48 } 49 else if(num1==newdemo.answer[i]) 50 { 51 sumright++; 52 out.println("恭喜你!回答正确!"); 53 } 54 else 55 { 56 sumerror++; 57 out.println("回答错误,再接再厉! "); 58 out.println("正确答案是: "); 59 out.println(newdemo.answer[i]);//正确的答案 60 } 61 62 %> 63 </tr><br> 64 <% 65 } 66 %> 67 <tr> 68 <td> 69 <% 70 out.println("回答正确了"+sumright+"道题!"); 71 %> 72 </td> 73 </tr> 74 <tr> 75 <td> 76 <% 77 out.println("回答错误了"+sumerror+"道题!"); 78 %> 79 </td> 80 </tr> 81 <tr> 82 <td> 83 <% 84 out.println("有"+empty+"道题你没有回答哟!"); 85 %> 86 </td> 87 </tr> 88 </table> 89 <a href="chutishumu.jsp">退出</a> 90 </body> 91 </html>
3. 运行结果截图
4. 编程总结或体会
对于随机出题难度不大,但是在页面上填入结果往回传值,与正确答案相比较时,总是报空指针的错误,主要是这里的问题。
项目计划总结
周活动总结表
姓名:王金萱 日期:2017/12/6
| 听课 | 编写程序 | 阅读课本 | 准备考试 |
|
| 日总计 |
周日12.3 |
| 180 | 20 |
|
|
| 200 |
周一 |
| 120 | 20 |
|
|
| 140 |
周二 | 130 | 210 |
|
|
|
| 340 |
周三 |
| 150 |
|
|
|
|
|
周四 |
|
|
|
|
|
|
|
周五 |
|
|
|
|
|
|
|
周六 |
|
|
|
|
|
|
|
周总计 |
|
|
|
|
|
|
|
时间记录日志
姓名:王金萱 日期:2017/12/6
教师:王建民 课程:PSP
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 | C | U |
12.5 周二 | 8:00 | 8:50 |
| 50 | 听课 软件工程概论 |
|
|
|
| 9:30 | 9:50 |
| 20 | 编程序 两人结对 写子数组最大和代码 |
|
|
|
| 10:10 | 12:00 | 10 | 100 | 数据结构课 | 课间 写子数组最大和代码 |
|
|
| 14:00 | 15:30 |
| 90 | 改进程序大赛的参赛程序 |
|
|
|
| 16:00 | 17:20 |
| 80 | 程序大赛初赛 |
|
|
|
| 21:00 | 0:30 | 30 | 180 | 写四则运算三的网页程序 | 洗漱 |
|
|
12.6 周三 | 14:00 | 17:30 |
| 150 | 写四则运算三的网页程序 |
|
|
|
| 19:30 |
|
|
| 继续完善四则运算 |
|
|
|
缺陷记录日志
姓名:王金萱
日期:2017/12/6
程序:四则运算三
日期 | 编号 | 类型 | 引入阶段 | 排除阶段 | 修复时间 | 修复缺陷 |
12/6 | 1 | 空指针异常 |
|
|
| 重新写一个计算并返回正确结果的方法 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|