四则运算2(最终版)java+jps+sqlServer

 

 

 

1,设计思想

(1)java Resources里建立包和类

(2)在类里面写入方法,其中包括生成算式create()和删除算式delete()用来更新数据库中的题目

(3)Show()方法用来随机抽取数据库中的算式并显示

(4)Caculate()方法用来接收参数,验证计算的结果

(5)建立jsp文件,搭建网页的布局,调用java方法

2,源程序代码

 java代码

package com.jaovo.msg.model;

public class Equation {
   int firstNum;
   int secondNum;
   String symbol;
   String id;
   int result;
   public String s[]={"+","-","*","/"};
   
public String getSymbol() {
    return symbol;
}
public void setSymbol(String symbol) {
    this.symbol = symbol;
}
public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}

public int getFirstNum() {
    return firstNum;
}
public void setFirstNum(int firstNum) {
    this.firstNum = firstNum;
}
public int getSecondNum() {
    return secondNum;
}
public void setSecondNum(int secondNum) {
    this.secondNum = secondNum;
}
public int getResult() {
    return result;
}
public void setResult(int result) {
    this.result = result;
}
    
}

 

package com.jaovo.msg.dao;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import com.jaovo.msg.Util.DBUtil;
import com.jaovo.msg.Util.UserException;
import com.jaovo.msg.model.Equation;
import java.io.*;

public class EquationDaoImpl  {

    public void create() {
        // TODO Auto-generated method stub
        Equation equ=new Equation();
        Random ran=new Random();
        for(int i=1;i<=1000;i++){
            Connection con=DBUtil.getConnection();
            equ.setFirstNum(ran.nextInt(0+100));
            equ.setSecondNum(ran.nextInt(0+100));
            equ.setSymbol(equ.s[ran.nextInt(4)]);
            if(i<10)
            equ.setId("000"+i);
            if(i>=10&&i<100)
                equ.setId("00"+i);
            if(i>=100&&i<1000)
                equ.setId("0"+i);
            if(i==1000)
                equ.setId("1000");
            if(equ.getSymbol()=="+")
                equ.setResult(equ.getFirstNum()+equ.getSecondNum());
            if(equ.getSymbol()=="-")
                equ.setResult(equ.getFirstNum()-equ.getSecondNum());
            if(equ.getSymbol()=="*")
                equ.setResult(equ.getFirstNum()*equ.getSecondNum());
            if(equ.getSymbol()=="/"&&equ.getSecondNum()!=0&&(equ.getFirstNum()%equ.getSecondNum()==0)&&equ.getFirstNum()>=equ.getSecondNum())
                equ.setResult(equ.getFirstNum()/equ.getSecondNum());
            {
                if(equ.getResult()<100&&equ.getResult()>=0){
                try{
                    String sql="insert into equation(id,firstNum,symbol,secondNum,result)values('"+equ.getId()+"','"+equ.getFirstNum()+"','"+equ.getSymbol()+"','"+equ.getSecondNum()+"','"+equ.getResult()+"')";
                    Statement stmt=con.createStatement();
                    stmt.executeUpdate(sql);//更新
                }catch(SQLException e){
                    e.printStackTrace();
                }finally {
                    DBUtil.close(con);
                }
            }
            else i--;
                } 
        }
    }
    public void delete(){
        Equation equ=new Equation();
        Connection con = DBUtil.getConnection();
        for(int i=0;i<1000;i++){
            equ.setId(i+1+"");
            try {
                Statement stmt=con.createStatement();
                String sql = "delete from equation where id = "+Integer.parseInt(equ.getId());
                stmt.executeUpdate(sql);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    public String show(){
        Equation equ=new Equation();
        Connection con=DBUtil.getConnection();
        String str ="";
        Random ran=new Random();
        Statement stmt;
        try {
            stmt = con.createStatement();
            int id1=ran.nextInt(999)+1;
            ResultSet rs=stmt.executeQuery("SELECT * FROM equation where id="+id1);
            while(rs.next()){
                str=rs.getString("id")+" "+rs.getString("firstNum")+rs.getString("symbol")+rs.getString("secondNum")+"=";
            }
        } catch (SQLException e) {
            
            e.printStackTrace();
        }
        
        return str;
    }
    public String show1(String id1){
        Equation equ=new Equation();
        Connection con=DBUtil.getConnection();
        String str ="";
        Statement stmt;
        try {
            stmt = con.createStatement();
            ResultSet rs=stmt.executeQuery("SELECT * FROM equation where id="+id1);
            while(rs.next()){
                str=rs.getString("firstNum")+rs.getString("symbol").trim()+rs.getString("secondNum")+"="+rs.getString("result");
            }
        } catch (SQLException e) {
            
            e.printStackTrace();
        }
//        BufferedWriter bw;
//        try {
//            bw = new BufferedWriter(new FileWriter("wrong.txt",true));
//            bw.write("nlc");
//            bw.close();
//        } catch (IOException e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        }
        return str;
    }
    public String caculate(String result,String id){
        Equation equ=new Equation();
        Connection con=DBUtil.getConnection();
        String str = "";
        int result1=Integer.parseInt(result);
        int id1=Integer.parseInt(id);
        Statement stmt;
        try {
            stmt = con.createStatement();
            ResultSet rs=stmt.executeQuery("SELECT * FROM equation where id = "+id1);
            while(rs.next()){
                if((rs.getInt("result"))==result1)
                    {str="正确";}
                if((rs.getInt("result"))!=result1)
                    str="错误";
            }
            
        } catch (SQLException e) {
            
            e.printStackTrace();
        }
        return str;
    }
}

jsp代码

<%@ 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=ISO-8859-1">
<title>四则运算</title>
</head>
<center>
<body background="D:\图片\动漫\20150422H2607_fKHLB.jpeg">
    <%if(request.getAttribute("error1")!=null){
        out.print("<script language='javaScript'>alert('题数和时间不能为空'); </script>)");
        }
        %>
    <%if(request.getAttribute("error2")!=null){ 
        out.print("<script language='javaScript'>alert('请正确输入'); </script>)");
    }
    %>
    <center>
        <font color="red" size="4" face="楷体">欢迎来到四则运算</font>
    </center>
    <form action="caculateInput.jsp" method="post">
        <table align="center" >
        <tr>
            <td>
                <font face="楷体">请输入出题数目</font>
            </td>
            <td>
            <input type="text" name="number" placeholder="请输入……">
            </td>
        </tr>
         <tr>
            <td>
                <font face="楷体">请设置做题时间(秒)</font>
            </td>
            <td>
            <input type="text" name="time" placeholder="请输入……">
            </td>
        </tr>
        <tr align="center">
                <td colspan="2">
                <input type="submit" value="开始答题"/>
                <input type="reset" value="重置题目数目"/>
                </td>
            </tr>
        </table>
    </form>
</body>
</center>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%@page import="com.jaovo.msg.Util.showAnswer"%>
 <%@page import="com.jaovo.msg.dao.EquationDaoImpl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%    
      String url = "http://localhost:8080/四则运算2/equation/start.jsp";   //设置跳转的地址  
      int time=Integer.parseInt(request.getParameter("time"));
      int number=Integer.parseInt(request.getParameter("number"));
      EquationDaoImpl equ=new EquationDaoImpl();
      String time1=request.getParameter("time");
      String number1=request.getParameter("number");
%> 
    <%if("".equals(time1.trim())||"".equals(number1.trim())){
        request.setAttribute("error1", "题数和时间不能为空");
    %>
        <jsp:forward page="start.jsp"></jsp:forward>
    <%
    }
    %>
    
    <%
    if(time<0||number<0){
        request.setAttribute("error2", "请正确输入");
    
    %>
    <jsp:forward page="start.jsp"></jsp:forward>
   <%
    }
   %>
<html>
<head >
<title>四则运算</title>
<meta http-equiv=refresh content=<%=time %>;url=<%=url %>>  
</head>
<body background="D:\图片\新建文件夹\9252150_130954294310_2.jpg" background-size:cover>
<form action="caculate.jsp" method="post">
    <table align="center" >
            <%
            for(int i=0;i<number;i++){
                String str=equ.show();
            %>
            <tr>
                <td><%=str.substring(6, str.length()) %></td>
                <td>
                    <input type="text" name="result" placeholder="请输入……" >
                </td>
            </tr>
            <tr>
                <td>
                    <input type="hidden" name="id" value="<%=str.substring(0,4) %>" >
                </td>
            </tr>
            <%
            }
            %>
        <div align="center">  
            <h3 style=color:red>答题剩余时间:<span id=jump ></span></h3>  
            <h4><a href="start.jsp" onclick="jumpToIndex()">重新设题</a></h4>  
        </div> 
            <tr align="center">
                <td colspan="2">
                <input type="submit" value="提交"/>
                <input type="reset" value="重置"/>
                </td>
            </tr>
    </table>
</form>
</body>
        <script>  
             function countDown(secs){  
                       jump.innerText=secs;  
                       if(--secs>0)  
                                setTimeout("countDown("+secs+" )",1000);
                       if(secs==0)
                           document.forms[0].submit();
             }
             countDown(<%=time%>);        
            function jumpToIndex(){  
                window.location.href='<%="http://localhost:8080/四则运算2/equation/start.jsp" %>';  
            }  
       </script>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@page import="java.util.*" %>
    <%@page import="com.jaovo.msg.dao.EquationDaoImpl" %>
<!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=ISO-8859-1">
<title>计算结果</title>
</head>
<body background="D:\图片\新建文件夹\9252150_130954294310_2.jpg">
    <%
       String[] result=request.getParameterValues("result");
       String[] id=request.getParameterValues("id");
       String[] idNum=new String[100];
       int I=0;
       for(String i:id){
           idNum[I]=i;
           I++;
       }
       String[] RCaculate=new String[100];
       int x=0;
       String[] WCaculate=new String[100];
       int y=0;
       String[] KCaculate=new String[100];
       int z=0;
       I=0;
       EquationDaoImpl equDao=new EquationDaoImpl();
       for(String str:result){
           if(str == null || "".equals(str.trim())){
               KCaculate[z]=equDao.show1(idNum[I]);z++;continue;
               }
           if(equDao.caculate(str,idNum[I]).equals("正确")){
               RCaculate[x]=equDao.show1(idNum[I]);x++;
            }
           if(equDao.caculate(str,idNum[I]).equals("错误")){
               WCaculate[y]=equDao.show1(idNum[I]);y++;
           }
           I++;
       }
      out.println("正确的数量:"+x);
    %>
    <br/>
    <%
    out.print("错误的题目数量:"+y);
    %>
<!--     <a href="wrong.jsp">查看错题</a> -->
    <br/>
    <%
    out.print("未答的题目数量:"+z);
    %>
<!--     <a href="">查看未答的题目</a> -->
    <br/>
    <a href="create.jsp">更新题目</a><br/>
    <a href="start.jsp">重新计算</a><br/>
    <form action="wrong.jsp" method="post">
        <table align="center">
            <%
                for(int i=0;i<y;i++){
            %>
            <tr>
                <td>
                    <input type="hidden" name="wrong" value="<%=WCaculate[i]%>" >
                </td>
            </tr>
            <%} %>
            <%
            for(int i=0;i<z;i++){ 
            %>
            <tr>
                <td>
                    <input type="hidden" name="kong" value="<%=KCaculate[i]%>" >
                </td>
            </tr>
            <%} %>
            <tr>
                <input type="submit" value="查看错题和未做的题"/>
            </tr>
        </table>
    </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>错题</title>
</head>
<body background="D:\图片\新建文件夹\9252150_130954294310_2.jpg">
    <%
        String[] wrong=request.getParameterValues("wrong");
        String[] kong=request.getParameterValues("kong");
        out.println("错题");
    %>
    <br/>
    <%
        for(String w:wrong){
            out.println(w);
    %>
    <br/>
    <%
        }
        out.print("未做的题");
    %>
    <br/>
    <%
        for(String k:kong){
            out.print(k);
    %>
    <br/>
    <%
        }
    out.print("那你是很棒棒");
    %>
    <a href="start.jsp">再来一次 </a>
</body>
</html>
  <%@page import="com.jaovo.msg.dao.EquationDaoImpl" %>
<%@ 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=ISO-8859-1">
<title>创建题目</title>
</head>
<body>
    <h4 align="center">更新题目库成功</h4>
    <%
    EquationDaoImpl equDao=new EquationDaoImpl();
    equDao.delete();
    equDao.create();
    %>
    <div align="center">
    <a href="start.jsp">继续做题</a>
    </div>
</body>
</html>

 

3,运行结果截图

 

 

4,编程总结分析

在jsp页面中尽量少使用java代码,养成良好习惯,应该在java中写入方法,然后调用即可

在定义变量和方法时,应该根据具体情况来起名,增减参数,定义返回值类型

5,时间记录日志

日期开始时间结束时间中断时间净时活动备注CU
12/19:0015:402个小时4小时40分钟编程序四则运算,休息  
12/29:0017:004个小时4小时编程序四则运算,休息  
12/39:0011:0002小时编程序四则运算  
12/416:0017:0002小时编程序四则运算  
12/58:0012:0004小时上课软件工程概论,数据结构  

 

Personal Software Process Stages  time
计划 
估计这个任务需要的时间3天
开发 
需求分析(包括学习新技术)传参数(结果集)
生成设计文档
设计复审(和同事审核设计文档)
代码规范(为目前的开发制定合适的规范)首行缩进,大括号另起一行
具体设计在jsp中调用java方法,将结果在页面上显示
具体编码参考上面(两天)
代码复审每次修改后都会检查
测试(自我测试,修改代码,提交修改)半天
报告 
测试报告1个小时
计算工作量3天
事后总结,并提出过程改进计划无法记录错题,改进计划:将错题保存在数据库中
合计3天

10个测试用例

1,能出题   2,能倒计时 3,能判断错对 4,能将错题显示出来 5,能判断是否有空题 6,能更新题目(数据库)7,能重新出题 8,能判断不能输入负数 

9,能出多道题目10,能重新计算错题

进过验证以上功能都能实现

学到了要灵活运用各种自定义的方法,学会给jsp页面布局,能灵活运用数据库

转载于:https://www.cnblogs.com/news1997/p/7994302.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值