zoukankan      html  css  js  c++  java
  • 四则运算升级版(网页)

    这次的四则运算,是基于上次的java基础上改的。

    1.思路:现有三个页面

                  页面一:index.jsp     输入总题数:count,输入出题每行的个数:rcount;

                       将action=“show.jsp”中

                  页面二:show.jsp     显示随机产生的式子

                       用request接受      将所填写的结果存入到result[],将正确答案存入到answer[],将随机产生的式子存入到posture[];

                 页面三:judge.jsp    判断答案

                              关键点: String results[]=request.getParameterValues("results");
                                             String answer[]=request.getParameterValues("answer");

          index.jsp源码:

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>四则运算自动出题界面</title>
    <style>
      .name{
      align:center;
      font-size:20px;
      font-color:black;
      }
    </style>
    </head>
    <body type="text" style="background:url(img/child.jpg);   background-size:100%">
    
       <form action="show.jsp" action="judge.jsp"  method="post"  onsubmit="return checkAll()"  aglin="center">
       <div  class="name">
        <h2>随机四则运算选题界面</h2>
        <table>
            <tr>
                <td>请输入你需要测试的题目数量:</td>
                <td><input type="text"  name="count" id="count" placeholder="题目总数量"  onchange="checkCount()"></td>
            </tr>
            <tr>
                 <td>请输入每行的出题数量(最多是4个):</td>
                 <td><input type="text" name="rcount" id="rcount" placeholder="每行的数量"  onchang="checkRcount()"></td>
            </tr>
            <tr>
                <td><input type="submit" value="确定"></td>
                <td> <input type="reset" value="重置" onclick="formReset()"></td>
            </tr>
        </table>
        </div>
    </body>
    
    <script type="text/javascript">
    
            function formReset() 
          {//重置按钮处添加onclick调用formReset %>
                  document.getElementById("form").reset();
           }
            function checkCount(){
                var count=document.getElementById("count");
                var count_print=count.value;
                if(count_print==""){
                    alert("出题的总数不能为空,请重新输入!")
                    count.focus();
                    return false;
                }
                else
                    return true;
            }
            function checkRcount(){
                var rcount=document.getElementById("rcount");
                var rcount_print=rcount.value;
                if(rcount==""){
                    alert("每行的出题数不能为空,请重新输入!");
                    rcount.focus();
                    return false;
                }
                else
                    return true;
            }
            function checkAll(){
                var count=document.getElementById("count");
                var count_print=count.value;
                var rcount=document.getElementById("rcount");
                var rcount_print=rcount.value;
                if(count_print==""){
                    alert("出题的总数不能为空,请重新输入!")
                    count.focus();
                    return false;
                }
                else
                    return true;
            }
            if(rcount==""){
                alert("每行的出题数不能为空,请重新输入!");
                rcount.focus();
                return false;
            }
            else
                {
                return true;
              }
           }
    </script>
    </html>

    show.jsp源码:

    <%@page import="org.omg.CORBA.portable.ValueBase"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <form action="judge.jsp" method="post">
    <body type="text" style="background:url(img/child.jpg);background-size:100%">
       <h2>题目如下:</h2>
       <%
           int count= Integer.parseInt(request.getParameter("count"));//得到前面index.jsp中输入的总题数
           int rcount = Integer.parseInt(request.getParameter("rcount"));//得到前面index.jso中输入的一行中的个数
           //request表示客户端向服务器发送的请求
           //response表示服务器端对客户端的响应
              String x = null;
              int stra[]=new int[100000];//产生符号前面的随机数组
              int strb[]=new int[100000];//产生符号后面的随机数组
              String[] posture=new String[1000000];//存放整个式子
               int answer[]=new int[10000];//用于存放每个式子的正确答案
               int result[]=new int[10000];//用于存放你输入的答案
               int flag=1;
              aa: for(int i=1;i<=count;i++)
               {
                   int a=(int)(1+Math.random()*99);//产生随机数
                   int b=(int)(1+Math.random()*99);
                   int c=(int)(1+Math.random()*4);
                   stra[i]=a;
                   strb[i]=b;
                   switch(c)//将c(随机数)表示为运算符号
                   {
                   case 1:x="+";break;
                   case 2:x="-";break;
                   case 3:x="*";break;
                   case 4:x="/";break;
                   }
                   for(int j=0;j<i;j++)
                   {
                       if(stra[j]==stra[i]&&strb[j]==strb[i])
                           flag=0;
                       else
                           flag=1;
                   }
                   if(flag==1)
                   {
                            if(a>=b&&(a%b)==0&&a*b<=100) 
                            {
                    
                            out.print(i+":"+a+x+b+"="+"      ");
                            posture[i]=i+":"+a+x+b+"="+"      ";//将得到的式子存放到posture中
                          if(x=="+") answer[i]=a+b;//得到正确答案
                          else if(x=="-") answer[i]=a-b;
                          else if(x=="*") answer[i]=a*b;
                          else if(x=="/") answer[i]=a/b;
                            //out.println(answer[i]);
                          %>
    
                             <input type="text" name="results" >
                             <input type="hidden" name="answer" value=<%=answer[i] %>>
                          <% 
                            //<input type="text" name="value[i] id=">
                            //posture[i]=i+":"+a+x+b+"="+"      ";
                            }
                              else 
                            {
                                i--;
                                continue;
                            }
                      if(i%rcount==0)
                      {
                          %>
                            <pre> 
                        <%   
                           out.println();//1.print换行表示,必须使用<pre>标签           2.或者直接使用<br>
                         %> 
                     </pre> 
                   
                          <% 
                      }
                   }
               }
               //session.setAttribute("answer1", answer);
               //session.setAttribute("count1", count);
    
             %>
        <input type="submit" value="提交(可查看结果)">
      </form>
    
    </body>
    </html>

    judge.jsp源码:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>做题结果</title>
    </head>
    <body  type="text" style="background:url(img/child.jpg);   background-size:100%">
     <form type="text" method="post">
         
         <%
         
             String results[]=request.getParameterValues("results");
             String answer[]=request.getParameterValues("answer");  
                int tr=0;
                int fa=0;
                for(int i=0;i<results.length;i++)
                {
                    if(results[i].equals(answer[i]))
                    {
                        tr++;%>
                        <p>第<%=i+1 %>题正确</p>
                        <% 
                    }
                        else{
                            fa++;%>
                            <p>第<%=i+1 %>题错误,输入为<%=results[i] %>,正确答案为<%=answer[i] %></p>
                            <%
                        }
                    }
                %>
            
         <h3>你答对了<%=tr %>题,答错了<%=fa %>题</h3>
     </form>
    </body>
    </html>

     代码测试截图:

    页面一:

    页面二:

     

     页面三:

     遇到的问题:

          页面er中所记录输入结果的数组result[]和记录正确答案的数组answer[],传不到页面三中的jsp中,始终显示500错误,

    但是解决方法,在judge中,将两者定义为字符串

    String results[]=request.getParameterValues("results");
    String answer[]=request.getParameterValues("answer");

  • 相关阅读:
    生信入门-爱课程上的华中农业大学
    PAT 1115 Counting Nodes in a BST[构建BST]
    PAT 1133 Splitting A Linked List[链表][简单]
    PAT 1037 Magic Coupon[dp]
    PAT 1033 To Fill or Not to Fill[dp]
    畅通工程续 HDU1874
    Free DIY Tour HDU1224
    六度分离 HDU1869
    Arbitrage HDU1217
    floyed算法
  • 原文地址:https://www.cnblogs.com/hhjing/p/11818173.html
Copyright © 2011-2022 走看看