四则运算2

1.程序设计思想

⑴   设计登陆界面,提示用户输入想要生成的题目数量。

⑵   编写代码实现传递用户输入题目数量的参数,异常判断输入是否异常。

⑶   实现随机生成算式的功能,并按照用户输入的题目数量生成相应数量的题目。

⑷   将生成的算式写入数据库中,并将用户做对的题目与做错的题目分开存放。

⑸   实现计时的功能。

2.程序源代码

登录界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>在线答题系统</title>
<style type="text/css">
    body {background-image:url(3.jpg);}
</style>
</head>
<body >
    <form id="form2" name="form2" method="post" action="ZhengShu.jsp">
    <div style="text-align:center;color:#F09">
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    请输入出题的个数:<input name="amount" type="text" value=""/>    </br></br>
    <input type="submit" value="提交" />
    <input type="reset" value="重置" /> 
    </div>
    </form>
</body>
</html>

判断输入是否异常

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<%
try
{
    int amount=Integer.parseInt(request.getParameter("amount"));
    session.setAttribute("amount",amount);
    response.setHeader("refresh","0;url = ZhengShu.jsp");
}
catch(Exception e){
    %>
    <script type="text/javascript">
    alert("输入错误,点击确定返回重新输入!!!")
    </script>
    <%
    response.setHeader("refresh","0;url = WelcomeInput.jsp");
}
%>
</body>
</html>

随机生成题目

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.Random" import="java.sql.Connection" 
    import="java.sql.DriverManager" import="java.util.Scanner"
    %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
body 
{
    background-image: url(3.jpg);
}
</style>
</head>
<body>

<%
String suanshi[]=new String [10000];
        String result1[]=new String[10000];
        int num=Integer.parseInt(request.getParameter("amount"));
        Scanner  in = new Scanner(System.in);
        Random random = new Random();
        int count = 0;
        int result = 0;
        int a=0,b=0;
        String fuhao="***";
        for(int i=0;i<num;i++) {
            count=random.nextInt(4)+1;//随机产生乘除法
            if(count==1) {
                //乘法
                fuhao="*";
                a = random.nextInt(9)+1;
                b = random.nextInt(9)+1;
                result = a*b;
            }
            else if(count==2) {
                //除法
                fuhao="/";
                a = random.nextInt(9)+1;
                b = random.nextInt(9)+1;
                a = a*b;
                result = a/b;
            }
            else if(count==3) {
                //减法
                fuhao="-";
                a = random.nextInt(99)+1;
                b = random.nextInt(a);
                result = a-b;
            }
            else{
                //加法
                fuhao="+";
                a = random.nextInt(99);
                b = random.nextInt(100-a)+1;
                result = a+b;
            }
            suanshi[i]=String.valueOf(a)+fuhao+String.valueOf(b);
            result1[i]=String.valueOf(result);
            request.setAttribute("suanshi", suanshi[i]);
            request.setAttribute("result1",result1[i]);
            request.setAttribute("i",i);
            if((i+1)==num)
            {    
    %>
    <form id="form2" name="form2" method="post" action="toDatebase.jsp">
    <div style="text-align:center">
    <br>
    <%
    out.print(suanshi[i]+"=");
    %>
    <br>
    请输入答案:<input name="result" type="text" value=""/><br /><br/>
    <input name="" type="submit" value="提交" />
    </div>
    </form>
<%
        }
        else
        {
%>
    <form id="form2" name="form2" method="post" action="toDatebase.jsp">
    <div style="text-align:center">
    <br>
    <%
    out.print(suanshi[i]+"=");
    %>
    <br>
    请输入答案:<input name="result" type="text" value=""/><br /><br/>
    </div>
    </form>
    <%
    }
        }
    %>
</body>
</html>

将算式写入数据库

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.sql.Connection" import="java.sql.DriverManager"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
body 
{
    background-image: url(3.jpg);
}
</style>
</head>
<body>
<%
int tishu1;
String zhengque="",error=""; 
int dui=0,cuo=0;
try
{
Connection con = null; //定义一个MYSQL链接对象
Class.forName("com.mysql.jdbc.Driver").newInstance(); //MYSQL驱动
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false","root","chen123"); //链接本地MYSQL
java.sql.Statement stmt; //创建声明
stmt = con.createStatement();
System.out.println("***");
String suanshi=String.valueOf(request.getAttribute("suanshi"));
System.out.println(suanshi);
String result1=String.valueOf(request.getAttribute("result1"));
int i=Integer.parseInt(String.valueOf(request.getAttribute("i")));
tishu1=Integer.parseInt((String.valueOf(request.getAttribute("amount"))));
String result=request.getParameter("result");
String sql="INSERT INTO 整数的四则计算 (shizi,result,userresult) VALUES ('"+suanshi+" = "+"','"+result1+"','"+result+"')";
stmt.executeUpdate(sql);
if(result.equals(result1))
{
    zhengque=zhengque+String.valueOf(i+1)+",";
    dui++;
    sql="INSERT INTO Grade (zhengque) VALUES ('"+zhengque+"')";
}
else
{
     error=error+String.valueOf(i+1)+",";
     cuo++;
     sql="INSERT INTO Grade (cuowu) VALUES ('"+error+"')";
}

if(i+1==tishu1)
{
    
    stmt.executeUpdate(sql);             
    %>
    <form id="form2" name="form2" method="post" action="Welcome.html">
       <div style="text-align:center;color:#F00">
       <strong>
       <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
   
    <%
     out.print("正确的题目是:"+zhengque+"<br>"+"正确的题目数为:"+dui+"<br>");
    out.print("错误的题目是:"+error+"<br>"+"错误的题目数为"+cuo+"<br>"+"点击确定返回主界面");
    zhengque="";
    error="";
    %>
    <input name="" type="submit" value="确定" />
    </strong>
    </div>
    </form>
    <%
}
else
{
response.setHeader("refresh","0;url = ZhengShu.jsp");
}
}
catch (Exception e) 
{
    System.out.print("MYSQL ERROR:" + e.getMessage());
} 
%>
</body>
</html>

3.运行结果截图

4.编程总结分析

  在此程序中,我们对随机生成算式的方法做了一点改动,根据不同的运算生成不同范围的整数,例如:随机为乘法运算,则生成0-9范围内的整数。难点有计时功能的实现,以及将算式写入数据库中,后者因为对数据库操作的不熟练导致。在此程序中,我学会了不用界面中参数的传递使用session或 request的get/set方法。

5.PSP0

时间记录日志

 姓名:陈美琪        日期:2017/12/6

 

      任务

时间

 

 

上课

编写代码

查找资料

日总结

周二

2h

3h

2h

7h

周三

3h

1h

4h

 时间记录日志

学生:陈美琪    日期:2017/12/6

教师:王建民    课程:软件工程概论

日期

开始时间

结束时间

中断时间

净时间

活动

12/5

8:00

9:50

10

100

上课

14:00

18:00

10

230

编写代码

12/6

16:00

18:00

120

编写代码

缺陷记录日志

学生:陈美琪

日期:2017/12/6

教师:王建民

程序号:03

日期

编号

引入阶段

排除阶段

修复时间

2017/12/6

1

设计

运行

1min

描述:欢迎界面设计成为了表格形式。

2

编码

运行

30min

描述:生成的算式不符合要求的范围

原文地址:https://www.cnblogs.com/qilin20/p/7994345.html