zoukankan      html  css  js  c++  java
  • 简单的四则运算网页版

    四、源代码

    欢迎界面

     1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     2 <html>
     3 <head>
     4 <%@ page language="java" contentType="text/html; charset=UTF-8"
     5     pageEncoding="UTF-8"%>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>小学二年级算式计算</title>
     8 </head>
     9 <body>
    10 <h2 align="center" style="color:red">小学二年级算式计算</h2>
    11 <p align="center">本页仅供二年级的小同学测试使用,共60道100以内加减乘除算式计算题,计时8分钟。</p>
    12 <div align="center">
    13     <a href="proshow.jsp">按下此键开始</a>
    14 </div>
    15 </body>
    16 </html>

    题目展示界面

     1 <%@page import="CC.GradeTwo" %>
     2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     3 <html>
     4 <head>
     5 <%@ page language="java" contentType="text/html; charset=UTF-8"
     6     pageEncoding="UTF-8"%>
     7 <meta http-equiv="refresh" content="text/html; charset=UTF-8">
     8 <script type="text/javascript">
     9       var maxtime = 8*60;
    10       function CountDowm(){
    11           if(maxtime>=0){
    12               minutes = Math.floor(maxtime/60);
    13               seconds = Math.floor(maxtime%60);
    14               if(seconds>=10)
    15                   msg = "剩余时间:"+minutes+":"+seconds;
    16               else
    17                   msg = "剩余时间:"+minutes+":0"+seconds;
    18               document.all["timer"].innerHTML = msg;
    19               --maxtime;
    20           }
    21           else{
    22               document.forms("form1").submit();
    23           }
    24       }
    25       timer = setInterval("CountDowm()",1000);
    26 </script>
    27 <title>小学二年级算式计算</title>
    28 </head>
    29 <%
    30      String str = null;
    31 %>
    32 <body>
    33 
    34 <%
    35     request.setCharacterEncoding("utf-8");
    36 %>
    37 <jsp:include flush="true" page="inc.jsp">
    38    <jsp:param name="color" value="blue" />
    39    <jsp:param name="title" value="小学二年级" />
    40    <jsp:param name="body" value="数学口算题" />
    41 </jsp:include>
    42 <div id="timer"></div>
    43 <form name="form1" action="${pageContext.request.contextPath}/Servlet/GradeServlet?method=end" target="_self" method="post">
    44       <table align="center" border = "1">
    45       <tr><th colspan="3">共60题,注意用时</th></tr>
    46           <%    GradeTwo.clear();
    47                 for(int i = 1;i<=60;++i)      {    
    48                     str = GradeTwo.getPoly();
    49 
    50       %>
    51       <tr><td><%=i %></td><td><%=str %></td><td><input type="text" name="list"></td></tr>
    52       <%
    53                 }
    54       %>
    55       <tr><td colspan="3" align="center"><input type="submit" value="提交"></td></tr>
    56       </table>
    57 </form>
    58 </body>
    59 </html>

    结果展示界面

     1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     2 <html>
     3 <head>
     4 <%@page import="CC.GradeTwo" %>
     5 <%@ page language="java" contentType="text/html; charset=UTF-8"
     6     pageEncoding="UTF-8"%>
     7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     8 <title>答案</title>
     9 </head>
    10 <body>
    11 <h3 align="center" style="color:red">答题结果</h3>
    12 <%
    13    int[]end = (int[])(request.getAttribute("result"));
    14    String str[] = (String[])request.getAttribute("result1");
    15 %>
    16 <table align="center" border="1">
    17     <tr><th>答对:</th><td><%=end[0] %></td></tr>
    18     <tr><th>答错:</th><td><%=end[1] %></td></tr>
    19     <tr><th>未答:</th><td><%=end[2] %></td></tr>
    20 </table><p>
    21 <p align="center" style="color:red">答题情况</p>
    22 <table align="center" border="1">
    23    <tr><td>题目</td><td>提交答案</td><td>正确答案</td></tr>
    24    <%   
    25        String color = "";
    26        for(int i = 0;i<60;++i){
    27           if(GradeTwo.key.get(i).equals(str[i])){
    28    %>
    29        <tr><td><%=GradeTwo.pro.get(i) %></td><td style="color:green"><%=str[i] %></td><td><%=GradeTwo.key.get(i) %></td></tr>
    30    <%}
    31           else{
    32    %>
    33    <tr><td><%=GradeTwo.pro.get(i) %></td><td style="color:red"><%=str[i] %></td><td><%=GradeTwo.key.get(i) %></td></tr>
    34    
    35    <%
    36    }
    37        }
    38    %>
    39 </table>
    40 <div align="center"><input type="button" value="再来一次" onclick="window.location.href='<%=request.getContextPath()%>/proshow.jsp'" /></div>
    41 </body>
    42 </html>

    标头:

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     4 <table width="320" bordercolor="<%=request.getParameter("color") %>" border="1" cellpadding="4" cellspacing="0">
     5 
     6 <tr bgcolor="<%=request.getParameter("color") %>" color="#ffffff">
     7 <td><%=request.getParameter("title") %></td>
     8 </tr>
     9 <tr><td valign="top"><%=request.getParameter("body") %></td></tr>
    10 </table>

    产生表达式的Java文件:

      1 package CC;
      2 
      3 import java.util.ArrayList;
      4 import java.util.List;
      5 import java.util.Random;
      6 import java.util.Set;
      7 import java.util.Vector;
      8 
      9 public class GradeTwo {
     10     private static String opera = "+-*/";
     11     public static Vector<String> pro = new Vector<String>();
     12     public static Vector<String> key = new Vector<String>();
     13     public static void clear() {
     14         pro.clear();
     15         key.clear();
     16     }
     17     public static int isInteger(int c1, int c2, char opera) {
     18         int result = 0;
     19         int result1 = 0;
     20         switch (opera) {
     21         case '+':
     22             result = c1 + c2;
     23             break;
     24         case '-':
     25             result = c1 - c2;
     26             break;
     27         case '*':
     28             result = c1 * c2;
     29             break;
     30         case '/':
     31             result = c1 / c2;
     32             result1 = c1 % c2;
     33             break;
     34         }
     35         if (result >= 0 && result <= 100 && result1 == 0)
     36             return result;
     37         else
     38             return -1;
     39     }
     40 
     41     public static String getPoly() {
     42         String poly = "";
     43 //        Random random = new Random();
     44 //        
     45 //        int c1;
     46 //        int c2;
     47 //        int result;
     48 //        char operac;
     49 //        boolean flag = true;
     50 //        do {
     51 //            c1 = random.nextInt(100) + 1;
     52 //            c2 = random.nextInt(100) + 1;
     53 //            operac = opera.charAt(random.nextInt(4));
     54 //            if (operac == '*')
     55 //                poly = c1 + " × " + c2 + " = ";
     56 //            if (operac == '/')
     57 //                poly = c1 + " ÷ " + c2 + " = ";
     58 //            if (operac == '+')
     59 //                poly = c1 + " + " + c2 + " = ";
     60 //            if (operac == '-')
     61 //                poly = c1 + " - " + c2 + " = ";
     62 //            /*for (int i = 0;i<pro.size();++i) {
     63 //                if (poly.equals(pro.get(i))) {
     64 //                    flag = false;
     65 //                    break;
     66 //                }
     67 //            }*/
     68 //        } while (!flag || (result = isInteger(c1, c2, operac)) < 0);
     69 //        pro.add(poly);
     70 //        key.add(String.valueOf(result));
     71         Random random = new Random();
     72         //产生0.9的两位运算,0.1的三位运算
     73         char operate;
     74         char operate1;
     75         int operand1 = 0;
     76         int operand2 = 0;
     77         int operand3 = 0;
     78         int result;
     79         int percent = random.nextInt(100)+1;
     80         if(percent<=90) {
     81             operate = opera.charAt(random.nextInt(4));
     82             switch(operate) {
     83                case '+':
     84                    operand1 = random.nextInt(100);
     85                    operand2 = random.nextInt(100-operand1);
     86                    poly = operand1+" + "+operand2+" = ";
     87                    break;
     88                case '-':
     89                    operand1 = random.nextInt(100);
     90                    operand2 = random.nextInt(operand1+1);
     91                    poly = operand1+" - "+operand2+ " = ";
     92                    break;
     93                case '*':
     94                    operand1 = random.nextInt(9)+1;
     95                    operand2 = random.nextInt(9)+1;
     96                    poly = operand1+" × "+operand2+ " = ";
     97                    break;
     98                case '/':
     99                    operand1 = random.nextInt(9)+1;
    100                    operand2 = random.nextInt(9)+1;
    101                    operand1 = operand1*operand2;
    102                    poly = operand1+" ÷ "+operand2+ " = ";
    103                    break;
    104             }
    105             result = isInteger(operand1, operand2, operate);
    106             key.add(String.valueOf(result));
    107         }else {
    108             operate = opera.charAt(random.nextInt(2));
    109             operate1 = opera.charAt(random.nextInt(2));
    110             if(operate=='+') {
    111                 operand1 = random.nextInt(100);
    112                 operand2 = random.nextInt(100-operand1);
    113                 if(operate1=='+') {
    114                     operand3 = random.nextInt(100-operand1-operand2);
    115                     poly = operand1+" + "+operand2+" + "+operand3+" = ";
    116                 }else {
    117                     operand3 = random.nextInt(operand1+operand2);
    118                     poly = operand1+" + "+operand2+" - "+operand3+" = ";
    119                 }
    120             }else {
    121                 operand1 = random.nextInt(100)+1;
    122                 operand2 = random.nextInt(operand1);
    123                 if(operate1=='+') {
    124                     operand3 = random.nextInt(100-operand1+operand2);
    125                     poly = operand1+" - "+operand2+" + "+operand3+" = ";
    126                 }else {
    127                     operand3 = random.nextInt(operand1-operand2);
    128                     poly = operand1+" - "+operand2+" - "+operand3+" = ";
    129                 }
    130             }
    131             result = isInteger(operand1, operand2, operate);
    132             result = isInteger(result, operand3, operate1);
    133             key.add(String.valueOf(result));
    134         }
    135         pro.add(poly);
    136         return poly;
    137     }
    138     public static int[]end(String[]list){
    139         int[]result = new int[3];
    140         result[0] = 0;
    141         result[1] = 0;
    142         result[2] = 0;
    143         int len = list.length;
    144         for(int i = 0;i<len;++i) {
    145             if(key.get(i).equals(list[i]))result[0]++;
    146             else {
    147                 if(list[i].equals(""))result[2]++;
    148                 else result[1]++;
    149             }
    150         }
    151         return result;
    152     }
    153     public static void main(String[]args) {
    154         int result = isInteger(55,13,'-');
    155         result = isInteger(result,19,'-');
    156         System.out.println(result);
    157     }
    158 }

    Servlet:

     1 package Servlet;
     2 
     3 import CC.GradeTwo;
     4 import javax.servlet.http.HttpServlet;
     5 import java.io.IOException;
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 
    10 
    11 
    12 public class GradeServlet extends HttpServlet{
    13     public void service(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
    14         String method = req.getParameter("method");
    15         if(method.equals("end"))end(req,resp); 
    16     }
    17     public void end(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
    18            String[]keys = req.getParameterValues("list");
    19            req.setAttribute("result",GradeTwo.end(keys));
    20            for(int i = 0;i<keys.length;++i)
    21                if(keys[i].equals(""))keys[i] = "未答";
    22            req.setAttribute("result1",keys);
    23            req.getRequestDispatcher("../result.jsp").forward(req, resp);
    24            return;
    25     }
    26 }

    Filter:防止直接进入结果界面:

     1 package Servlet;
     2 
     3 import javax.servlet.http.HttpServlet;
     4 import java.io.IOException;
     5 
     6 import javax.servlet.Filter;
     7 import javax.servlet.FilterChain;
     8 import javax.servlet.FilterConfig;
     9 import javax.servlet.ServletException;
    10 import javax.servlet.ServletRequest;
    11 import javax.servlet.ServletResponse;
    12 import javax.servlet.http.HttpServletRequest;
    13 import javax.servlet.http.HttpServletResponse;
    14 
    15 public class KeyFilter implements Filter{
    16     protected FilterConfig filterConfig;
    17     @Override
    18     public void destroy() {
    19         // TODO 自动生成的方法存根
    20         filterConfig = null;
    21     }
    22 
    23     @Override
    24     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
    25             throws IOException, ServletException {
    26         // TODO 自动生成的方法存根
    27           HttpServletRequest req = (HttpServletRequest)request;
    28           HttpServletResponse resp = (HttpServletResponse)response;
    29           String reqURL = req.getServletPath();
    30           if(reqURL.equals("/result.jsp")) {
    31               resp.sendRedirect("index.jsp");
    32               return;
    33           }
    34           chain.doFilter(request,response);
    35     }
    36 
    37     @Override
    38     public void init(FilterConfig filterConfig) throws ServletException {
    39         // TODO 自动生成的方法存根
    40          this.filterConfig = filterConfig;
    41     }
    42      
    43 }

    xml文件:(需要添加)

     1   <display-name>GradeCal</display-name>
     2   <servlet>
     3       <servlet-name>GradeServlet</servlet-name>
     4       <servlet-class>Servlet.GradeServlet</servlet-class>
     5   </servlet>
     6   <servlet-mapping>
     7       <servlet-name>GradeServlet</servlet-name>
     8       <url-pattern>/Servlet/GradeServlet</url-pattern>
     9   </servlet-mapping>
    10   <filter>
    11   <filter-name>KeyFilter</filter-name>
    12   <filter-class>Servlet.KeyFilter</filter-class>
    13   </filter>
    14   <filter-mapping>
    15   <filter-name>KeyFilter</filter-name>
    16   <url-pattern>/*</url-pattern>
    17   </filter-mapping>

    ------------------------------------------------------------------------

    END

  • 相关阅读:
    MD5 加密 以及 加盐加密
    github--新手使用错误分析
    iOS开发UI篇—UITabBarController简单介绍
    Xcode 那些简单实用的插件推荐
    app 转caf 音频 代码
    关于block 用法
    iOS 之播放系统声音
    ios如何实现推送通知
    Centos7安装Redis
    SpringCloud-Zuul网关
  • 原文地址:https://www.cnblogs.com/messi2017/p/7994304.html
Copyright © 2011-2022 走看看