博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
四则运算三
阅读量:6126 次
发布时间:2019-06-21

本文共 7160 字,大约阅读时间需要 23 分钟。

 

 

一、程序设计思路

在详细的查看了观察《冀教版数学二年级上册口算练习》文档之后,可以发现:1.算式中每个数不能超过100,运算结果不能超过100。2.运算结果必须得是正整数,除法不能出现余数。3.乘法算式的范围在9 X 9乘法表内,除法算式同样。4.可以出现一部分混合运算,但仅限于加减法而且不带括号优先级。

根据上述规则,可以采用如下方式产生算式:

首先可以明确,在一定范围内,随机数的产生结果不会有大规模的重复现象,查重很耗费时间。

操作符通过1-4的随机数产生,一个数对应一个操作符。

对于加法算式,第一个操作数opre1直接在1-99内生成,第二个操作数在100-opre1到1之间生成。

对于减法算式,第一个操作数opre1直接在1-99内生成,第二个操作数在opre1到1之间生成。

对于乘法,两个操作数均在1-9内产生。

对于除法,先产生两个1-9之间的随机数opre1、opre2,然后让opre1 = opre1*opre2,opre2不变,opre1作为算式的答案。

对于三个操作数的混合运算,原理同上。

由于要改成网页版,所以按照MVC的框架模式来划分:

视图(View)有三个界面,首页获取小孩儿输入的题目数量(用JavaScript脚本检验输入数据的合法性),将这个题目数量发送到题目展示界面proshow.jsp,这个界面会使用GradeTwo中产生算式的静态方法,并产生答案。在这个界面上要输入计算结果,点击提交后将答案发送到Servlet中判断结果。Servlet处理后会将结果信息发送到result.jsp中显示。

模型(Model)就是GradeTwo这个类,这个类中有好几个静态变量的集合,分别储存算式、答案、结果。在每次重新产生算式时,三个集合清空。这个类中还有产生表达式的方法、判断答案对错的方法,供外界调用。

控制(Control)就是Servlet,主要就是把proshow.jsp传递过来的结果进行验证,并把结果集传递给result.jsp中显示,没有其他的流程了。

二、源代码

 

1 import java.util.ArrayList;  2 import java.util.List;  3 import java.util.Random;  4 import java.util.Set;  5 import java.util.Vector;  6   7 public class GradeTwo {  8     private static String opera = "+-*/";  9     public static Vector
pro = new Vector
(); 10 public static Vector
key = new Vector
(); 11 //public static Vector
key1 = new Vector
(); 12 public static String[]result1; 13 public static int[]end = new int[3]; 14 public static void solve(String[]list) { 15 result1 = new String[list.length]; 16 for(int i = 0;i
= 0 && result <= 100 && result1 == 0) 42 return result; 43 else 44 return -1; 45 } 46 47 public static String getPoly() { 48 String poly = ""; 49 // Random random = new Random(); 50 // 51 // int c1; 52 // int c2; 53 // int result; 54 // char operac; 55 // boolean flag = true; 56 // do { 57 // c1 = random.nextInt(100) + 1; 58 // c2 = random.nextInt(100) + 1; 59 // operac = opera.charAt(random.nextInt(4)); 60 // if (operac == '*') 61 // poly = c1 + " × " + c2 + " = "; 62 // if (operac == '/') 63 // poly = c1 + " ÷ " + c2 + " = "; 64 // if (operac == '+') 65 // poly = c1 + " + " + c2 + " = "; 66 // if (operac == '-') 67 // poly = c1 + " - " + c2 + " = "; 68 // /*for (int i = 0;i

 

1 import CC.GradeTwo; 2 import javax.servlet.http.HttpServlet; 3 import java.io.IOException; 4 import javax.servlet.ServletException; 5 import javax.servlet.http.HttpServletRequest; 6 import javax.servlet.http.HttpServletResponse; 7  8  9 10 public class GradeServlet extends HttpServlet{11     public void service(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{12         String method = req.getParameter("method");13         if(method.equals("end"))end(req,resp); 14     }15     public void end(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{16            String[]keys = req.getParameterValues("list");17            //req.setAttribute("result",GradeTwo.end(keys));18            GradeTwo.End(keys);19            for(int i = 0;i
1 import javax.servlet.http.HttpServlet; 2 import java.io.IOException; 3  4 import javax.servlet.Filter; 5 import javax.servlet.FilterChain; 6 import javax.servlet.FilterConfig; 7 import javax.servlet.ServletException; 8 import javax.servlet.ServletRequest; 9 import javax.servlet.ServletResponse;10 import javax.servlet.http.HttpServletRequest;11 import javax.servlet.http.HttpServletResponse;12 import javax.servlet.http.HttpSession;13 14 public class KeyFilter implements Filter{15     protected FilterConfig filterConfig;16     @Override17     public void destroy() {18         // TODO 自动生成的方法存根19         filterConfig = null;20     }21 22     @Override23     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)24             throws IOException, ServletException {25         // TODO 自动生成的方法存根26           HttpServletRequest req = (HttpServletRequest)request;27           HttpServletResponse resp = (HttpServletResponse)response;28           HttpSession session = req.getSession();29           String flag = (String)session.getAttribute("online");30           String reqURL = req.getServletPath();31           if(!reqURL.equals("/index.jsp")&&flag==null) {32               resp.sendRedirect("index.jsp");33               return;34           }35           chain.doFilter(request,response);36     }37 38     @Override39     public void init(FilterConfig filterConfig) throws ServletException {40         // TODO 自动生成的方法存根41          this.filterConfig = filterConfig;42     }43      44 }
1  2  3  4 <%@ page language="java" contentType="text/html; charset=UTF-8" 5     pageEncoding="UTF-8"%> 6 
7 小学二年级算式计算 8 43 44 45 66
<%@ include file="./music.jsp" %>
67 68
69
小学二年级算式计算
70
71

本页仅供二年级的小同学测试使用,100以内加减乘除算式计算题,每道题限时8秒钟。

72 <%session.setAttribute("online", "true"); %>73
74

75

76
77
78
79 80 81
1 <%@page import="CC.GradeTwo" %> 2  3  4  5 
6 7 8 9 10 11 12
13 <%@ page language="java" contentType="text/html; charset=UTF-8"14 pageEncoding="UTF-8"%>15
16 36 47 小学二年级算式计算48 49 <%50 String str = null;51 int num = Integer.parseInt(request.getParameter("num"));52 %>53 54 55 <%56 request.setCharacterEncoding("utf-8");57 %>58 59
60
61
62
63
64
65
66 <%@ include file="./music.jsp" %>67
68
69
70
71 <% GradeTwo.clear();72 for(int i = 1;i<=num;++i) { 73 str = GradeTwo.getPoly();74 75 %>76
77 <%78 }79 %>80
81
共<%=num %>题,注意用时
第<%=i %>题 <%=str %>
82
83
84
85 86 87
1  2  3  4 <%@page import="CC.GradeTwo" %> 5 <%@ page language="java" contentType="text/html; charset=UTF-8" 6     pageEncoding="UTF-8"%> 7 
8 9 10 11 12 13 14
15 答案16 17 18
19
20 <%@ include file="./music.jsp" %>21

答题结果

22 <%23 int[]end = GradeTwo.end;24 String str[] = GradeTwo.result1;25 %>26 27
28
29
30
31
答对: <%=end[0] %>
答错: <%=end[1] %>
未答: <%=end[2] %>

32

答题情况

33
41
34
35 <% 36 String color = "";37 int num = GradeTwo.key.size();38 for(int i = 0;i
42 <%}43 else{44 %>45
46 47 <%48 }49 }50 %>51
题目 提交答案 正确答案
<%=GradeTwo.pro.get(i) %> <%=str[i] %> <%=GradeTwo.key.get(i) %>
<%=GradeTwo.pro.get(i) %> <%=str[i] %> <%=GradeTwo.key.get(i) %>
52
53
54
55 56 57

三、验证截图

 

 

 

转载于:https://www.cnblogs.com/messi2017/p/8349726.html

你可能感兴趣的文章
Linux修改主机名【转】
查看>>
vue11 vue实例方法
查看>>
hdu-3401-Trade-单调队列优化的DP
查看>>
心理素质
查看>>
【machine translate】deep learning seq2seq
查看>>
数据结构-向量
查看>>
Java 7 可执行的 Nashorn,取代 Rhino
查看>>
Ubuntu 16.04中CPU轮流100%的问题解决
查看>>
【Python】内置函数
查看>>
TCGA学习1--下载level3 level4数据
查看>>
装修房水电验收标准,水电验收注意事项
查看>>
2014年8月25日,收藏家和杀手——面向对象的C++和C(一)
查看>>
iOS经常使用设计模式——单例模式
查看>>
activity生命周期
查看>>
bootstrap入门
查看>>
OpenStack二三事(1)
查看>>
Java 学习路线建议
查看>>
[自学AndroidStudio系列]第二篇章:高速上手AS小技巧其一
查看>>
Hibernate HQL的使用
查看>>
机器学习十大常用算法小结
查看>>