java-结对编程:分数整数,运算符个数,运算范围,加减乘除四则运算出题器...

结对开发团队成员:赵子鸣、周宝辉

设计思想:

程序中涉及了简单的mvc框架中的jsp+javabean结构,将整数和分数式子的类写到src中entity的包中,将一些关于数据库的操作写到sql包中;jsp有三个,第一个是选择界面(选择一些简单的参数,例如整数或者分数,出题数据范围,算式运算符个数,式子个数等等),将这些参数传到第二个jsp中,在第二个jsp得到用户输入的参数,并且生成相应的算式题目,在第三个jsp中判断对错,在jsp中调用包中的类,直接使用.java中的分数整数类,在一些数据库操作中也是直接调用封装好的sql包中函数,来实现连接数据库,插入数据等操作。

其中,对于算式的计算是用递归实现的,比如3个数计算,可以先算一步,变成2个数的算式,由此可以递归来实现算式的结果。

源程序代码:

entity包

Fenshu.java

 

复制代码
package entity;

public class Fenshu {
    int a;
    int b;
    
    public static Fenshu jisuanjieguo(Fenshu a[],int b[],int n){
        Fenshu jie=new Fenshu();
        if(n==1){jie=jisuan(a[0],b[0],a[1]);}
        else {
            int ii=0;boolean z=false;
            for(int i=0;i=b){
            int q=a/b;
            int w=a-b*q;
            return p+q+"'"+w+"/"+b;
        }
        else {
            return p+a+"/"+b;
        }
    }
    public String fanhui(){
        String r="";
        r="("+a+"/"+b+")";
        return r;
    }
}
复制代码

 

 

 

Fenshude.java

 

复制代码
package entity;

public class Fenshude {
    Fenshu as[];
    int fu[];
    int fanwei;
    int shu;
    public void getshu(int n){
        shu=n;
        as=new Fenshu [n+1];
        fu=new int [n];
    }
    public void getfanwei(int a){
        fanwei=a;
    }
    public void shengcheng(int pp){
        for(int i=0;i 
    
复制代码

 

 

 

Panduan.java

 

复制代码
package entity;

public class Panduan{
    
    public static int panduan1(String b)
    {
        if(b.equals("2"))
            return 2;
        else if(b.equals("3"))
            return 3;
        else if(b.equals("4"))
            return 4;
        else if(b.equals("5"))
            return 5;
        else
            return 0;
    }
    public static int panduan2(String b)
    {
        if(b.equals("10"))
            return 10;
        else if(b.equals("50"))
            return 50;
        else if(b.equals("100"))
            return 100;
        else 
            return 0;
    }
    public static void main(String[]arg)
    {
        String a="2";
        int m=panduan1(a);
        System.out.println(m);
        int n=panduan2("10");
        System.out.println(n);
    }

}
复制代码

 

 

 

Suan.java

 

复制代码
package entity;

public class Suan {
    int fanwei;
    int shu;
    int zheng[];
    int fu[];
    public void getshu(int n){
        shu=n;
        zheng=new int [n+1];
        fu=new int [n];
    }
    public void getfanwei(int a){
        fanwei=a;
    }
    public void shengcheng(int pp){
        for(int i=0;i=zheng[i+1]){
                        aa=0;
                    }
                    else{
                        zheng[i]=(int)(Math.random()*(fanwei-1)+1);
                        zheng[i+1]=(int)(Math.random()*(fanwei-1)+1);
                    }
                }
                else if(fu[i]==4){
                    if(zheng[i] 
    
复制代码

 

 

 

sql包

Sql.java

 

复制代码
package sql;

import java.sql.*;

public class Sql {
    static Connection con=null;
    static Statement stmt=null;
    static PreparedStatement psmt=null;
    public static Statement get(){
        return stmt;
    }
    public static void lianjie(){
        try{
            Class.forName("com.mysql.jdbc.Driver");
            con=DriverManager.getConnection("jdbc:mysql://127.0.0.1/web_number","root","baohui");
            stmt=con.createStatement();
            System.out.print("数据库连接成功");
            //out.print("

"); } catch(Exception e) { System.out.print(e); } } public static void insert (int a,String b,String c)throws Exception{ try { String sql2="insert into web (number,shizi,jieguo) values (?,?,?)"; psmt=con.prepareStatement(sql2); psmt.setInt(1,a); psmt.setString(2,b); psmt.setString(3,c); psmt.executeUpdate(); //out.print("插入成功!"); } catch(Exception e) { //out.print(e); } } public static void delete()throws Exception{ String sql1="delete from web"; stmt.execute(sql1); } public static void guan()throws Exception{ psmt.close(); stmt.close(); con.close(); } public static void main(String arg[]){ lianjie(); } }

复制代码

 

 

 

jsp

index.jsp

 

复制代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@page import="entity.*"%>
<%@page import="sql.*"%>


  
    
    
    出题
    
    
        
    
    
    
  
  
  
    
<% request.setCharacterEncoding("utf-8"); String operator=request.getParameter("operator"); String operator1=request.getParameter("operator1"); String number1=request.getParameter("number1"); String number2=request.getParameter("number2"); int a=Panduan.panduan1(number1); int b=Panduan.panduan2(number2); int c=2; if(operator.equals("是")) { c=1; } if(operator1.equals("整数")) { Suan xx[]=new Suan[10]; int wei=b; int shu=a; String pp=""; String pp1=""; Sql.lianjie(); Sql.delete(); for(int i=0;i<10;i++){ xx[i]=new Suan(); xx[i].getfanwei(wei); xx[i].getshu(shu); xx[i].shengcheng(c); pp=xx[i].show(); pp1=xx[i].showjieguo().dai(); out.print(xx[i].showshizi()+"= "); //out.print(xx[i].showdaan()); out.print(""); out.print("

"); Sql.insert(i+1,xx[i].showshizi(),xx[i].showdaan()); } Sql.guan(); } else { request.setCharacterEncoding("utf-8"); Fenshude xx[]=new Fenshude[10]; int wei=b; int shu=a; String pp=""; String pp1=""; Sql.lianjie(); Sql.delete(); for(int i=0;i<10;i++){ xx[i]=new Fenshude(); xx[i].getfanwei(wei); xx[i].getshu(shu); xx[i].shengcheng(c); //pp=xx[i].show(); //pp1=xx[i].showjieguo().dai(); out.print(xx[i].showshizi()+"= "); //out.print(xx[i].showdaan()); out.print(""); out.print("

"); Sql.insert(i+1,xx[i].showshizi(),xx[i].showdaan()); } Sql.guan(); } //out.print(a+"

"); //out.print(b+"

"); %>

复制代码

 

 

 

judge.jsp

 

复制代码
<%@ page language="java" import="java.util.*" import ="java.sql.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@page import="entity.*"%>
<%@page import="sql.*"%>


  
    
    
    判断答案
    
    
    
        
    
    
    

  
  
  
    <%
    request.setCharacterEncoding("utf-8");
        Statement stmt=null;
        Connection con=null;
        try{
            Class.forName("com.mysql.jdbc.Driver");
            con=DriverManager.getConnection("jdbc:mysql://127.0.0.1/web_number","root","baohui");
            stmt=con.createStatement();
            //out.print("数据库连接成功");
            //out.print("

"); } catch(Exception e) { out.print(e); } //Sql.lianjie(); String sql="select * from web"; ResultSet rs=stmt.executeQuery(sql); for(int i=0;i<10;i++) { //sql语句执行 int number=0; String shizi=null; String jieguo=null; if(rs.next()) { number=rs.getInt("number"); shizi=rs.getString("shizi"); jieguo=rs.getString("jieguo"); } //进行比较,判断对错 out.print(shizi+"= "); String name=request.getParameter("name"+i); out.print(name); String name1=jieguo; if(name.equals(name1)) { out.print(" "); out.print("正确"); } else { out.print(" "); out.print("错误"); } out.print("

"); } stmt.close(); con.close(); %>

复制代码

 

 

 

select.jsp

 

复制代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



  
    
    
    选择参数
    
    
    
        
    
    
    

  
  
  
    
是否需要乘除:
选择整数还是分数: 整数 分数
运算符的个数:
请选择运算范围:
复制代码

 

 

 

运行结果截图:

java-结对编程:分数整数,运算符个数,运算范围,加减乘除四则运算出题器..._第1张图片java-结对编程:分数整数,运算符个数,运算范围,加减乘除四则运算出题器..._第2张图片java-结对编程:分数整数,运算符个数,运算范围,加减乘除四则运算出题器..._第3张图片java-结对编程:分数整数,运算符个数,运算范围,加减乘除四则运算出题器..._第4张图片java-结对编程:分数整数,运算符个数,运算范围,加减乘除四则运算出题器..._第5张图片java-结对编程:分数整数,运算符个数,运算范围,加减乘除四则运算出题器..._第6张图片java-结对编程:分数整数,运算符个数,运算范围,加减乘除四则运算出题器..._第7张图片java-结对编程:分数整数,运算符个数,运算范围,加减乘除四则运算出题器..._第8张图片

总结体会:

首先,由于题目要求比较多,所以在编程之前的设计思路是非常重要的,将需要封装的封装为类,相应的一些功能函数应当写成函数以便后面可以灵活的调用;计算结果的过程利用的是递归的方法,此处是把握了每次计算的规律,找到相似的地方,在递归函数的实现上,起初总是没结果,后来发现没有传递回来值,所以递归中返回值也是很重要的;在数据库的连接时,需要注意jdbc的.jar文件的配置,否则数据库会驱动失败(比较容易遗漏);在jsp中使用循环结构生成式子的时候,因为要留出答题的文本框,所以在循环需要注意每输出一个式子,相应的输出一个文本框,这里主要答题方便,使界面更具有美观性,操作性;在jsp传递参数过程中涉及到类型转换,需要注意;用javabean来封装类使得思路比较清晰,结构框架清楚,把java代码实现的语句大部分写到.java文件中,而在.jsp文件中主要写传参以及界面的设计,使得思路更具有逻辑性。

psp表

java-结对编程:分数整数,运算符个数,运算范围,加减乘除四则运算出题器..._第9张图片java-结对编程:分数整数,运算符个数,运算范围,加减乘除四则运算出题器..._第10张图片

转载于:https://www.cnblogs.com/suifengye/p/6679045.html

你可能感兴趣的:(java-结对编程:分数整数,运算符个数,运算范围,加减乘除四则运算出题器...)