四则运算1

设计思想:在.java文件中创建随机数,组成一个运算式,计算答案为String类型,方便分数的判断。传递到jsp页面中进行判断,判断输入结果与正确结果是否相匹配,提交以后显示题目的正确结果。

源代码:

Add.java

package com.jaovo.msg.dao;

import com.jaovo.msg.model.Math_Message;

public interface Add {
    public void add(Math_Message math);

}

ChangeType.java

package com.jaovo.msg.dao;
import com.jaovo.msg.dao.Count;
import  com.jaovo.msg.dao.Mathimpl;
import com.jaovo.msg.model.Math_Message;
public class ChangeType {
    public String [] changetype()
    {
        String []change=new String[30];
        for(int i=0;i<30;i++)
        {
            Math_Message math=new Math_Message();
            Count count=new Count();
            math=count.count();
            Mathimpl add=new Mathimpl();
            if(math.getResult().length()>2)
            {
                if(math.getNumber1()<math.getNumber2())
                {
                    if(math.getOperator().equals("÷"))
                    {
                    change[i]=Integer.toString(math.getNumber1())+math.getOperator()+Integer.toString(math.getNumber2())+"=";    
                    add.add(math);//将一个正确的算术式添加到数据库
                    }
                    else
                    {
                        i=i-1;
                    }        
                }
                else
                {
                    i=i-1;
                }    
            }
            else if(Integer.parseInt(math.getResult())<0)
            {
                i=i-1;
                
            }
            else 
            {
            change[i]=Integer.toString(math.getNumber1())+math.getOperator()+Integer.toString(math.getNumber2())+"=";    
            add.add(math);//将一个正确的算术式添加到数据库
            }
            
        }
        return change;
        
    }

}

Count .java

package com.jaovo.msg.dao;
import com.jaovo.msg.model.Math_Message;
public class Count {
    //计算最大公约数函数方法
     public static int maxCommonDivisor2(int m, int n) {  
         if (m < n) {// 保证m>n,若m<n,则进行数据交换  
             int temp = m;  
             m = n;  
             n = temp;  
         }  
         while (m % n != 0) {// 在余数不能为0时,进行循环  
             int temp = m % n;  
             m = n;  
             n = temp;  
         }  
         return n;// 返回最大公约数  
     }  
    //生成随机数并计算出结果
    public     Math_Message count()
    {
        int number1,number2=0;//暂时存放产生的两个随机数,以便于计算正确结果
        int operator;//产生0-3的随机数代表四个运算符
        String result;//计算出正确结果
        number1=(int) (Math.random()*100);
        while(number2==0)
        {
        number2=(int) (Math.random()*100);
        }
        Math_Message math=new Math_Message() ;
        math.setNumber1(number1);
        math.setNumber2(number2);
        operator=(int) (Math.random()*4);
        if(operator==0)
        {
            math.setOperator("+");
            result=Integer.toString(number1+number2);
            math.setResult(result);
                    
        }
        else if(operator==1)
        {
            math.setOperator("-");
            result=Integer.toString(number1-number2);
            math.setResult(result);
        }
        else if(operator==2)
        {
            math.setOperator("*");
            result=Integer.toString(number1*number2);
            math.setResult(result);
        }
        else if(operator==3)
        {
            if(number1%number2==0)//可以除尽
            {
                math.setOperator("÷");
                result=Integer.toString(number1/number2);
                math.setResult(result);
            }
            else //无法除尽的结果
            {
                int pubnumber;
                math.setOperator("÷");
                //求最大公约数
                pubnumber= maxCommonDivisor2(number1,number2);
                number1=number1/pubnumber;
                number2=number2/pubnumber;
                result=Integer.toString(number1)+"/"+Integer.toString(number2);
                math.setResult(result);
                
            }
            
            
            
        }
        
        return math;
        
        
    }
    

}

Mathimpl.java

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.model.Math_Message;
import com.jaovo.msg.Util.DBUtil;

public class Mathimpl implements Add{

    @Override
    public void add(Math_Message math) {
        //获得链接对象
                Connection connection = DBUtil.getConnection();
                //准备sql语句
                String sql = "select count(*) from math_user where number1 = ?";
                //创建语句传输对象
                PreparedStatement preparedStatement = null;
                ResultSet resultSet = null;
                try {
                    
                    
                    sql = "insert into math_user(number1,number2,operator,result) value (?,?,?,?)";
                    preparedStatement = connection.prepareStatement(sql);
                    preparedStatement.setInt(1, math.getNumber1());
                    preparedStatement.setInt(2, math.getNumber2());
                    preparedStatement.setString(3,math.getOperator());
                    preparedStatement.setString(4, math.getResult());
                    preparedStatement.executeUpdate();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally {
                    //关闭资源
                    DBUtil.close(resultSet);
                    DBUtil.close(preparedStatement);
                    DBUtil.close(connection);
                }
                
        
    }
    

}

Read.java

package com.jaovo.msg.dao;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.PreparedStatement;

public class Read {

    public  String[] YunSuanResult() {
        java.sql.Connection connection=null;
        String user = "root";
        String password="root";
        int i=0;
        String[] a=new String[30];
        String url="jdbc:mysql://localhost:3306/jaovo_msg";
        String qingchu="truncate table math_user";
            try {
                 Class.forName("com.mysql.jdbc.Driver").newInstance();
                 
            } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                 connection = DriverManager.getConnection(url,user,password);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            PreparedStatement preparedStatement=null;
            ResultSet resultSet=null;
        
            
            String operation="select * from  math_user order by id";
            try {
                preparedStatement=connection.prepareStatement(operation);
                resultSet=preparedStatement.executeQuery();
                while(resultSet.next()) {
                    a[i]=resultSet.getString("result");
                    i++;
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
    }    
             try {
                    preparedStatement=connection.prepareStatement(qingchu);
                    preparedStatement.executeUpdate();
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
        finally {try {
        resultSet.close();
        preparedStatement.close();
        connection.close();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }    
            
        return a;

}
}

Math_Message.java

package com.jaovo.msg.model;

public class Math_Message {
    private int number1;
    private int number2;
    private String operator;
    private String result;
    public String getResult() {
        return result;
    }
    public void setResult(String result) {
        this.result = result;
    }
    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 getOperator() {
        return operator;
    }
    public void setOperator(String operator) {
        this.operator = operator;
    }


}

DBUtil.java

package com.jaovo.msg.Util;
import java.sql.*;
public class DBUtil {
    
    public  static  Connection getConnection() {
        try {
            //1 ��������
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String user = "root";
        String password = "root";
        String url = "jdbc:mysql://localhost:3306/jaovo_msg";
        Connection connection = null;
        try {
            //2 �������Ӷ���connection
             connection = DriverManager.getConnection(url,user,password);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return connection;
    }
    
    //�ر���Դ�ķ���
    public static void close(Connection connection ) {
        try {
            if (connection != null) {
                connection.close();
            }
            
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static void close(PreparedStatement preparedStatement ) {
        try {
            if (preparedStatement != null) {
                preparedStatement.close();
            }
            
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static void close(ResultSet resultSet ) {
        try {
            if (resultSet != null) {
                resultSet.close();
            }
            
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

UserException.java

package com.jaovo.msg.Util;

public class UserException extends RuntimeException{

    public UserException() {
        super();
        // TODO Auto-generated constructor stub
    }

    public UserException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
        // TODO Auto-generated constructor stub
    }

    public UserException(String message, Throwable cause) {
        super(message, cause);
        // TODO Auto-generated constructor stub
    }

    public UserException(String message) {
        super(message);
        // TODO Auto-generated constructor stub
    }

    public UserException(Throwable cause) {
        super(cause);
        // TODO Auto-generated constructor stub
    }
    
}

show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="com.jaovo.msg.dao.ChangeType" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>小学100以内四则运算界面</title>
</head>
<body>
<%--     <%Map<String,String> errorMsg = (Map<String,String>)request.getAttribute("errormsg"); --%>
<%--     %> --%>
<%
    ChangeType change=new ChangeType();
    String []math=new String[30];
    math=change.changetype(); 
%>
    <form action="showInput.jsp" method="get">
        <table align="center" border="1" width="500">
<% 
        String []result=new String[30];
           for(int i=0;i<30;i++)    
           {
%>   
              <tr>
                <td><% out.println(math[i]);%></td>
                <td>
                    <input type="text" name="result">
                </td>
            </tr>
<%   
           }
                
%>
            <tr align="center">
                <td>
                    <input type="submit" value="提交" />
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

showInput.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@page import="com.jaovo.msg.Util.DBUtil" import=" java.sql.*" import="com.jaovo.msg.Util.UserException" import="com.jaovo.msg.dao.Read"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<% 
    //接收客户端传递过来的参数
    String []result1=new String[30];
    result1 = request.getParameterValues("result");
    String string=" ";
    String []kresult=new String[30];
    Read read=new Read();
    kresult=read.YunSuanResult();
    for(int i=0;i<30;i++)
    {
        if(result1[i].equals(kresult[i]))
        {
            string="√";
        }
        else
        {
            string="×";
        }
    %>
        <h2> 答案是:<% out.print(kresult[i]); out.print("你的结果:"+result1[i]+"是"+string+"的");%></h2>
    <% 
    }
    
%>
</html>

 

posted on 2017-12-06 18:44  孟庆淋  阅读(192)  评论(0编辑  收藏  举报

导航