1.程序设计思想
⑴ 设计登陆界面,提示用户输入想要生成的题目数量。
⑵ 编写代码实现传递用户输入题目数量的参数,异常判断输入是否异常。
⑶ 实现随机生成算式的功能,并按照用户输入的题目数量生成相应数量的题目。
⑷ 将生成的算式写入数据库中,并将用户做对的题目与做错的题目分开存放。
⑸ 实现计时的功能。
2.程序源代码
登录界面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>在线答题系统</title> <style type="text/css"> body {background-image:url(3.jpg);} </style> </head> <body > <form id="form2" name="form2" method="post" action="ZhengShu.jsp"> <div style="text-align:center;color:#F09"> <br> <br> <br> <br> <br> <br> 请输入出题的个数:<input name="amount" type="text" value=""/> </br></br> <input type="submit" value="提交" /> <input type="reset" value="重置" /> </div> </form> </body> </html>
判断输入是否异常
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% try { int amount=Integer.parseInt(request.getParameter("amount")); session.setAttribute("amount",amount); response.setHeader("refresh","0;url = ZhengShu.jsp"); } catch(Exception e){ %> <script type="text/javascript"> alert("输入错误,点击确定返回重新输入!!!") </script> <% response.setHeader("refresh","0;url = WelcomeInput.jsp"); } %> </body> </html>
随机生成题目
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.Random" import="java.sql.Connection" import="java.sql.DriverManager" import="java.util.Scanner" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <style type="text/css"> body { background-image: url(3.jpg); } </style> </head> <body> <% String suanshi[]=new String [10000]; String result1[]=new String[10000]; int num=Integer.parseInt(request.getParameter("amount")); Scanner in = new Scanner(System.in); Random random = new Random(); int count = 0; int result = 0; int a=0,b=0; String fuhao="***"; for(int i=0;i<num;i++) { count=random.nextInt(4)+1;//随机产生乘除法 if(count==1) { //乘法 fuhao="*"; a = random.nextInt(9)+1; b = random.nextInt(9)+1; result = a*b; } else if(count==2) { //除法 fuhao="/"; a = random.nextInt(9)+1; b = random.nextInt(9)+1; a = a*b; result = a/b; } else if(count==3) { //减法 fuhao="-"; a = random.nextInt(99)+1; b = random.nextInt(a); result = a-b; } else{ //加法 fuhao="+"; a = random.nextInt(99); b = random.nextInt(100-a)+1; result = a+b; } suanshi[i]=String.valueOf(a)+fuhao+String.valueOf(b); result1[i]=String.valueOf(result); request.setAttribute("suanshi", suanshi[i]); request.setAttribute("result1",result1[i]); request.setAttribute("i",i); if((i+1)==num) { %> <form id="form2" name="form2" method="post" action="toDatebase.jsp"> <div style="text-align:center"> <br> <% out.print(suanshi[i]+"="); %> <br> 请输入答案:<input name="result" type="text" value=""/><br /><br/> <input name="" type="submit" value="提交" /> </div> </form> <% } else { %> <form id="form2" name="form2" method="post" action="toDatebase.jsp"> <div style="text-align:center"> <br> <% out.print(suanshi[i]+"="); %> <br> 请输入答案:<input name="result" type="text" value=""/><br /><br/> </div> </form> <% } } %> </body> </html>
将算式写入数据库
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.sql.Connection" import="java.sql.DriverManager"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <style type="text/css"> body { background-image: url(3.jpg); } </style> </head> <body> <% int tishu1; String zhengque="",error=""; int dui=0,cuo=0; try { Connection con = null; //定义一个MYSQL链接对象 Class.forName("com.mysql.jdbc.Driver").newInstance(); //MYSQL驱动 con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false","root","chen123"); //链接本地MYSQL java.sql.Statement stmt; //创建声明 stmt = con.createStatement(); System.out.println("***"); String suanshi=String.valueOf(request.getAttribute("suanshi")); System.out.println(suanshi); String result1=String.valueOf(request.getAttribute("result1")); int i=Integer.parseInt(String.valueOf(request.getAttribute("i"))); tishu1=Integer.parseInt((String.valueOf(request.getAttribute("amount")))); String result=request.getParameter("result"); String sql="INSERT INTO 整数的四则计算 (shizi,result,userresult) VALUES ('"+suanshi+" = "+"','"+result1+"','"+result+"')"; stmt.executeUpdate(sql); if(result.equals(result1)) { zhengque=zhengque+String.valueOf(i+1)+","; dui++; sql="INSERT INTO Grade (zhengque) VALUES ('"+zhengque+"')"; } else { error=error+String.valueOf(i+1)+","; cuo++; sql="INSERT INTO Grade (cuowu) VALUES ('"+error+"')"; } if(i+1==tishu1) { stmt.executeUpdate(sql); %> <form id="form2" name="form2" method="post" action="Welcome.html"> <div style="text-align:center;color:#F00"> <strong> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <% out.print("正确的题目是:"+zhengque+"<br>"+"正确的题目数为:"+dui+"<br>"); out.print("错误的题目是:"+error+"<br>"+"错误的题目数为"+cuo+"<br>"+"点击确定返回主界面"); zhengque=""; error=""; %> <input name="" type="submit" value="确定" /> </strong> </div> </form> <% } else { response.setHeader("refresh","0;url = ZhengShu.jsp"); } } catch (Exception e) { System.out.print("MYSQL ERROR:" + e.getMessage()); } %> </body> </html>
3.运行结果截图
4.编程总结分析
在此程序中,我们对随机生成算式的方法做了一点改动,根据不同的运算生成不同范围的整数,例如:随机为乘法运算,则生成0-9范围内的整数。难点有计时功能的实现,以及将算式写入数据库中,后者因为对数据库操作的不熟练导致。在此程序中,我学会了不用界面中参数的传递使用session或 request的get/set方法。
5.PSP0
时间记录日志
姓名:陈美琪 日期:2017/12/6
任务
时间 |
上课 |
编写代码 |
查找资料 |
日总结 |
|
周二 | 2h | 3h | 2h | 7h |
|
周三 |
| 3h | 1h | 4h |
|
时间记录日志
学生:陈美琪 日期:2017/12/6
教师:王建民 课程:软件工程概论
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 |
12/5 | 8:00 | 9:50 | 10 | 100 | 上课 |
| 14:00 | 18:00 | 10 | 230 | 编写代码 |
12/6 | 16:00 | 18:00 |
| 120 | 编写代码 |
|
|
|
|
|
|
缺陷记录日志
学生:陈美琪
日期:2017/12/6
教师:王建民
程序号:03
日期 | 编号 | 引入阶段 | 排除阶段 | 修复时间 |
2017/12/6 | 1 | 设计 | 运行 | 1min |
描述:欢迎界面设计成为了表格形式。 | ||||
| 2 | 编码 | 运行 | 30min |
描述:生成的算式不符合要求的范围 |