设计思想:
先在数据库中存好1000道题,编号序号,题的出法用随机数,出题时判断答案是否符合要求,如果符合则添加到数据库中。然后用户在jsp界面中输入出题的数量,然后随机生成改数量的随机数作为编号,从数据库中调题,分别把数据赋给number对象,显示到jsp界面中。
源代码:

package com.jaovo.msg.Dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.jaovo.msg.Util.DBUtil;
import com.jaovo.msg.model.Allnumber;
public class NumberDao extends Allnumber {
public Allnumber load(int id) {
Connection connection = DBUtil.getConnection();
//准备sql语句
String sql = "select * from table_data where id = ?";
//创建语句传输对象
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
Allnumber allnumber = null;
try {
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, id);
resultSet = preparedStatement.executeQuery();
while(resultSet.next()) {
allnumber = new Allnumber();
allnumber.setFirstnumber(resultSet.getInt("firstnumber"));
char fuhao=resultSet.getString("fuhao").charAt(0);
allnumber.setFuhao(fuhao);
allnumber.setSecondnumber(resultSet.getInt("secondnumber"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
DBUtil.close(resultSet);
DBUtil.close(preparedStatement);
DBUtil.close(connection);
}
return allnumber;
}
public int loadAnswer(int id) {
Connection connection = DBUtil.getConnection();
//准备sql语句
String sql = "select * from table_data where id = ?";
//创建语句传输对象
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
Allnumber allnumber = null;int answer = 0;
try {
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, id);
resultSet = preparedStatement.executeQuery();
while(resultSet.next()) {
allnumber = new Allnumber();
allnumber.setFirstnumber(resultSet.getInt("firstnumber"));
char fuhao=resultSet.getString("fuhao").charAt(0);
allnumber.setFuhao(fuhao);
allnumber.setSecondnumber(resultSet.getInt("secondnumber"));
answer=allnumber.Get_answer(allnumber.getFirstnumber(),allnumber.getSecondnumber(),allnumber.getFuhao());
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
DBUtil.close(resultSet);
DBUtil.close(preparedStatement);
DBUtil.close(connection);
}
return answer;
}
public void add(Allnumber allnumber)
{
//获得连接对象
Connection connection = DBUtil.getConnection();
//创建语句传输对象
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
String sql="insert into table_user(firstnumber,fuhao,secondnumber,answer,state) values (?,?,?,?,?)";
String fuhao=""+allnumber.getFuhao();
try {
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setInt(1, allnumber.getFirstnumber());
preparedStatement.setString(2, fuhao);
preparedStatement.setInt(3, allnumber.getSecondnumber());
preparedStatement.setInt(4, allnumber.Get_answer(allnumber.getFirstnumber(), allnumber.getSecondnumber(), allnumber.getFuhao()));
preparedStatement.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//关闭资源
DBUtil.close(resultSet);
DBUtil.close(preparedStatement);
DBUtil.close(connection);
}
}
}

package com.jaovo.msg.model;
import java.util.Random;
public class Allnumber {
private int firstnumber;
private int secondnumber;
private char fuhao;
public void Set_data()
{
Random ran= new Random();
int number1=ran.nextInt(100);setFirstnumber(number1);
int number2=ran.nextInt(100);
while(number2==0)number2=ran.nextInt(100);
setSecondnumber(number2);
int fuhao=ran.nextInt(4);
switch(fuhao){
case(0):setFuhao('+');break;
case(1):setFuhao('-');break;
case(2):setFuhao('*');break;
case(3):setFuhao('/');break;
}
}
public int Get_answer(int firstnumber,int secondnumber,char fuhao)
{
int answer=0;
switch(fuhao){
case('+'):answer=firstnumber+secondnumber;break;
case('-'):answer=firstnumber-secondnumber;break;
case('*'):answer=firstnumber*secondnumber;break;
case('/'):answer=firstnumber/secondnumber;break;
}
return answer;
}
public int getFirstnumber() {
return firstnumber;
}
public void setFirstnumber(int firstnumber) {
this.firstnumber = firstnumber;
}
public int getSecondnumber() {
return secondnumber;
}
public void setSecondnumber(int secondnumber) {
this.secondnumber = secondnumber;
}
public char getFuhao() {
return fuhao;
}
public void setFuhao(char fuhao) {
this.fuhao = fuhao;
}
}

<%@page import="com.jaovo.msg.Util.EmptyUtil"%>
<%@ 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>选题界面</title>
</head>
<body background="C:\Users\张强\Pictures\Saved Pictures/1505615532655.jpg">
<form action="chuti.jsp" method="get">
<table align="center" border="1" width="500">
<tr>
<div align="center"color="red" >
<h3>哒哒哒哒四则运算</h3>
</div>
</tr>
<tr>
<td>请输入要做的题数 : </td>
<td>
<input type="text" name="sum" />
<%=EmptyUtil.showError(request,"sum") %>
</td>
</tr>
<tr>
<td>请输入需要几分钟 : </td>
<td>
<input type="text" name="time" />
<%=EmptyUtil.showError(request,"time") %>
</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="提交" />
</td>
</tr>
</table>
</form>
</body>
</html>

<%@page import="com.jaovo.msg.Dao.NumberDao"%>
<%@page import="com.jaovo.msg.Util.EmptyUtil"%>
<%@page import="java.util.List"%>
<%@page import="java.util.LinkedList"%>
<%@page import="java.util.Random"%>
<%@page import="com.jaovo.msg.model.Allnumber"%>
<%@ 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>出题界面</title>
</head>
<body background="C:\Users\张强\Pictures\Saved Pictures/1505615532655.jpg">
<div align="center"color="red" id="timer"align="center">
<%
//接收客户端传递过来的参数
String sum = request.getParameter("sum");
String time = request.getParameter("time");
boolean validate =EmptyUtil.validateNull(request, new String[]{"sum","time"});
if(!validate){
%>
<jsp:forward page="jiemain.jsp"></jsp:forward>
<%
}
%>
<form action="pnaduan.jsp" method="get">
<table align="center" border="1" width="500">
<%
//设置出题数目,并从数据库中抽出题目,赋值给AllNumber
int newsum=Integer.parseInt(sum);
int time2=Integer.parseInt(time);
int t=time2*60000;
List<Allnumber> AllNumber=new LinkedList<Allnumber>();
int question=0;
for(int i=0;i<newsum;i++)
{
NumberDao numberdao=new NumberDao();
Random ran=new Random();
question=ran.nextInt(1020);
AllNumber.add(numberdao.load(question));
session.setAttribute("sum",sum);
}
session.setAttribute("allnumber",AllNumber);
%>
<center>剩余时间:<span id=id2>0</span>秒;</center>
<script language="javascript">
var i=<%=time2*60%>;
function showtime(){
i=i-1;
id2.innerHTML=i;
setTimeout("showtime()",1000);
if(i==<%=0%>)
document.forms[0].submit();
}
showtime();
</script>
<%
for(int i=0;i<AllNumber.size();i++)
{
Allnumber number=new Allnumber();
number=AllNumber.get(i);
out.print(number.getFirstnumber());
out.print(number.getFuhao());
out.print(number.getSecondnumber()+"=");
%>
<input name="answer"/><br></br>
<%
}
%>
<tr align="center">
<td colspan="2">
<input type="submit" value="提交" />
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
结果截图:


时间记录日志:
|
Personal Software Process Stages |
Time |
|
计划 |
|
|
· 估计这个任务需要多少时间 |
4个小时 |
|
开发 |
|
|
· 需求分析 (包括学习新技术) |
25分钟 |
|
· 生成设计文档 |
10分钟 |
|
· 设计复审 (和同事审核设计文档) |
无 |
|
· 代码规范 (为目前的开发制定合适的规范) |
10分钟 |
|
· 具体设计 |
20分钟 |
|
· 具体编码 |
1小时 |
|
· 代码复审 |
30分钟 |
|
· 测试(自我测试,修改代码,提交修改) |
3小时 |
|
报告 |
|
|
· 测试报告 |
无 |
|
· 计算工作量 |
无 |
|
· 事后总结, 并提出过程改进计划 |
1小时 |
|
合计 |
5小时35分钟 |
测试用例
(1)测试100个题目
(2)测试1000个题目
(3)测试10000个题目
(4)测试100000个题目
为的是测试出题上限是多少。
(5)不输入直接点提交测试
(6)输入负数测试
(7)输入字符串
(8)输入特殊字符
正确性
用户输入任何都不会导致报错,有足够健壮性
来源:https://www.cnblogs.com/zhangliqiangvictory/p/7994051.html
