软件工程作业1——简单小学题库

来源:互联网 发布:sql group by distinct 编辑:程序博客网 时间:2024/04/30 07:48

本题库包括适用于小学二年级和小学三年级,二年级的范围是五十以内的加减运算,不包含负数;三年级的范围是一百以内加减,十以内的乘除,除法没有余数。

使用语言:jsp+servlet

IDE:myeclipse




首先是进入选择的界面:


choose.jsp代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>choose</title>    <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>    <form action="homeworkServlet">    你所在的年级:    <select name="grade">    <option value="0">所在年级</option>    <option value="1">二年级</option>    <option value="2">三年级</option>    </select><br><br>    选择你要做的题目的数量:    <select name="number">    <option value="0">题目数量</option>    <option value="10">10</option>    <option value="20">20</option>    <option value="30">30</option>    </select><br><br>        <input type="submit" value="开始做题">    <input type="reset" value="重新选择">    </form>  </body></html>
下面我就选择年级是三年级,题目数量是10


此界面代码如下:

<%@page import="com.zpl.model.Exercise_three"%><%@page import="com.zpl.model.Exercise_two"%><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'homework.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>    开始做题吧:<br>    <form action="result_three">  <table>  <%  List<Exercise_three> list3 = (List<Exercise_three>)request.getAttribute("list3");  session.setAttribute("list_result_three", list3);  for(int i=0;i<list3.size();i++)  {  %>    <tr>  <td><%=list3.get(i).getNumber1() %></td>  <td><%=list3.get(i).getOption() %></td>  <td><%=list3.get(i).getNumber2() %></td>  <td>=</td>  <td><input type="text" name="result_three"></td>  </tr>    <%  }     %>  </table>  <br>  <input type="submit" value="我做完了">  </form>    </body></html>



当我做完后的界面


此界面代码如下:

<%@page import="com.zpl.model.Exercise_three"%><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>My JSP 'result_three.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body>你的答题结果如下,请根据提示进行批改:<br><br><table><%List<Exercise_three> list3 = (List<Exercise_three>) session.getAttribute("list_result_three");List<Integer> listRight = (List<Integer>) request.getAttribute("listRight");String[] result = (String[]) request.getAttribute("result");for (int i = 0; i < result.length; i++){%><tr><td><%=list3.get(i).getNumber1()%></td><td><%=list3.get(i).getOption()%></td><td><%=list3.get(i).getNumber2()%></td><td>=</td><td><%=result[i] %></td><%//判断题目正确与否if(1==listRight.get(i)){%><td><font color="blue">    right</font></td><%}else{%><td><font color="red">    wrong</font></td><%} %></tr><%}%></table><%float f = (Float)request.getAttribute("right"); %><h1>正确率:<font color="red"><%=f*100%>%</font></h1></body></html>




处理choose.jsp的servlet代码

package com.zpl.servlet;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.zpl.biz.Calculate;import com.zpl.biz.Calculate3;import com.zpl.model.Exercise_three;import com.zpl.model.Exercise_two;public class HomeworkServlet extends HttpServlet{Calculate c = null;Calculate3 c3 = null;Exercise_two et = null;List<Exercise_two> list = null;List<Exercise_three> list3 = null;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{String grade = req.getParameter("grade");int number = Integer.parseInt(req.getParameter("number"));if(grade.equals("1")){c = new Calculate();list = c.getExercise(number);req.setAttribute("list", list);req.getRequestDispatcher("homework.jsp").forward(req, resp);}if(grade.equals("2")){c3 = new Calculate3();list3 = c3.getExercise(number);req.setAttribute("list3", list3);req.getRequestDispatcher("homework3.jsp").forward(req, resp);}}}

处理做完题目后提交的servlet代码

package com.zpl.servlet;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.zpl.biz.Check;import com.zpl.biz.Check3;import com.zpl.model.Exercise_three;import com.zpl.model.Exercise_two;public class Result_three extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{HttpSession session = req.getSession();//做对的题目数量int count=0;//做对题目的数量float right;//接收做题的结果String[] result = req.getParameterValues("result_three");//答案List<Exercise_three> list = (List<Exercise_three>)session.getAttribute("list_result_three");Check3 c3 = new Check3();List<Integer> answer = c3.getResult(list);//记录做对的题号List<Integer> listRight = new ArrayList<Integer>();//遍历求出做对的题目数量for(int i=0;i<answer.size();i++){if(Integer.parseInt(result[i])==answer.get(i)){count++;listRight.add(1);//1代表正确}else{listRight.add(0);//0代表错误}}right = (float)count/answer.size();req.setAttribute("right", right);req.setAttribute("listRight", listRight);req.setAttribute("result", result);req.getRequestDispatcher("result_three.jsp").forward(req, resp);}}

此项目的模型:

package com.zpl.model;//三年级的运算,100以内加减,个位数的乘除public class Exercise_three{private int number1;private int number2;private String option;private double result;public Exercise_three(int number1, int number2, String option, double result2){super();this.number1 = number1;this.number2 = number2;this.option = option;this.result = result2;}public int getNumber1(){return number1;}public void setNumber1(int number1){this.number1 = number1;}public int getNumber2(){return number2;}public void setNumber2(int number2){this.number2 = number2;}public String getOption(){return option;}public void setOption(String option){this.option = option;}public double getResult(){return result;}public void setResult(double result){this.result = result;}}


用于生成题目的代码
package com.zpl.biz;import java.util.ArrayList;import java.util.List;import java.util.Random;import com.zpl.model.Exercise_two;/* * 用于生成题目 */public class Calculate{List<Exercise_two> list = null;int number1,number2,result;String option;int temp;//如果number1小于number2,交换他们public List<Exercise_two> getExercise(int amount)//amount为题目数量{list = new ArrayList<Exercise_two>();Random random = new Random();for(int i = 0;i<amount;i++){number1 = random.nextInt(51);number2 = random.nextInt(51);if(number1<number2){temp = number1;number1 = number2;number2 = temp;}if(number1%2==0){option = "+";result = number1 + number2;}else{option = "-";result = number1 - number2;}list.add(new Exercise_two(number1, number2, option, result));}return list;}}

用于校验题目的正确性的方法:

package com.zpl.biz;import java.util.ArrayList;import java.util.List;import sun.applet.Main;import com.zpl.model.Exercise_three;import com.zpl.model.Exercise_two;/* * 用于校验 */public class Check3{List<Integer> result = null;public List<Integer> getResult(List<Exercise_three> list){result = new ArrayList<Integer>();for (int i = 0; i < list.size(); i++){if (list.get(i).getOption().equals("+")){result.add(list.get(i).getNumber1() + list.get(i).getNumber2());}if (list.get(i).getOption().equals("-")){result.add(list.get(i).getNumber1() - list.get(i).getNumber2());}if (list.get(i).getOption().equals("*")){result.add(list.get(i).getNumber1() * list.get(i).getNumber2());}if (list.get(i).getOption().equals("/")){result.add(list.get(i).getNumber1() / list.get(i).getNumber2());}}return result;}}


0 0