• 四则运算三结对开发


    博客要求:

    要求两人合作分析,上传结对开发的工作照片。

    撰写一篇博客要求讲述四则运算3的设计思想,源程序代码、运行结果截图、编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志。

     四则运算要求:

    1、定义参数控制生成题目的个数。 例如,参数n=10;则将生成10个题目。

    2、定义参数控制题目中数值(自然数、真分数和真分数分母)的范围。 例如参数r= 10,将生成10以内(不包括10)的四则运算题目。该参数可以设置为1或其他自然数。 该参数必须给定,否则程序报错并给出帮助信息。

    3、生成的题目中计算过程不能产生负数,也就是说算术表达式中如果存在形如e1 − e2的子表达式,那么e1 ≥ e2。

    4、生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数。

    5. 每道题目中出现的运算符个数不超过3个。

    6.程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目 例如,23 + 45 = 和45 + 23 = 是重复的题目,6 × 8 = 和8 × 6 = 也是重复的题目。3+(2+1)和1+2+3这两个题目是重复的,由于+是左结合的,1+2+3等价于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重复的两道题,因为1+2+3等价于(1+2)+3,而3+2+1等价于(3+2)+1,它们之间不能通过有限次交换变成同一个题目。

    7.生成的题目存储到数据库中, 格式如下: 1. 四则运算题目1 2. 四则运算题目2 …… 其中真分数在输入输出时采用如下格式,真分数五分之三表示为3/5,真分数二又八分之三表示为2’3/8。

    8. 在生成题目的同时,计算出所有题目的答案,并存入数据库文件。 格式如下: 1. 答案1 2. 答案2  特别的,真分数的运算如下例所示:1/6 + 1/8 = 7/24。

    9. 程序应能支持一万道题目的生成。

    10. 程序支持对给定的题目文件和答案文件,判定答案中的对错并进行数量统计, 统计结果输出到数据表文件Grade,格式如下: Correct: 5 (1, 3, 5, 7, 9) Wrong: 5 (2, 4, 6, 8, 10) 其中“:”后面的数字5表示对/错的题目的数量,括号内的是对/错题目的编号。为简单起见,假设输入的题目都是按照顺序编号的符合规范的题目。

     代码:

    package 四则运算;
    import java.util.Random;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.util.Scanner;
    
    class Suan1//生成整数计算的类
    {
        public int x,y,c;//定义两个变量,还有一个符号变量
        public Random random=new Random();//定义随机数
        String m;//生成的计算式储存咋m里面
        int wide;
        public String shengcheng(int wide1)//自动生成数的函数
        {
             wide=wide1;
             c=random.nextInt(4);//生成符号
             String fuhao;
             x=random.nextInt(wide);//生成100以内的自然数
             y=random.nextInt(wide);
             if(c==0)//0是加法
             {
                 fuhao="+";
                 m=String.valueOf(x)+fuhao+String.valueOf(y);
                 
             }
             else if(c==1)//1是减法
             {
                 fuhao="-";
                 if(x>=y)
                 {
                     m=String.valueOf(x)+fuhao+String.valueOf(y);
                 }
                 else
                 {
                     m=String.valueOf(y)+fuhao+String.valueOf(x);
                 }
             }
             else if(c==2)
             {
                 fuhao="*";
                 m=String.valueOf(x)+fuhao+String.valueOf(y);
             }
             else
             {
                 fuhao="/";
                 for(int i=0;;i++)
                 {
                     if(y==0)
                     {
                         y=random.nextInt(wide);
                     }
                     else
                     {
                         break;
                     }
                 }
                 m=String.valueOf(x)+fuhao+String.valueOf(y);
             }
             return m;
             
        }
        public String shuchu()//定义输出函数
        {
            if(c==0)
            {
                System.out.print(m+"=");
                return (String.valueOf(x+y));//并且返回计算的结果
            }
            else if(c==1)
            {
                if(x>=y)//将较大的数放在前面,不能出现负数
                {
                System.out.print(m+"=");
                return (String.valueOf(x-y));
                }
                else
                {
                System.out.print(m+"=");
                return (String.valueOf(y-x));
                }
            }
            else if(c==2)
            {
                System.out.print(m+"=");
                return (String.valueOf(x*y));
            }
            else
            {
                System.out.print(m+"=");
                if(x%y==0)
                {
                    return (String.valueOf(x/y));
                }
                else
                {
                    if(x>y)
                    {
                    int shang=x/y;
                    int yushu=x-y*shang;
                    return (String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y));
                    }
                    else
                    {
                    return (String.valueOf(x)+"/"+String.valueOf(y));
                    }
                }
            }
        }
        public int fanhuic()
        {
            return c;
        }
        public String jisuan()
        {
            if(c==0)
            {
                return (String.valueOf(x+y));//并且返回计算的结果
            }
            else if(c==1)
            {
                if(x>=y)//将较大的数放在前面,不能出现负数
                {
                return (String.valueOf(x-y));
                }
                else
                {
                return (String.valueOf(y-x));
                }
            }
            else if(c==2)
            {
                return (String.valueOf(x*y));
            }
            else
            {
                if(x%y==0)
                {
                    return (String.valueOf(x/y));
                }
                else
                {
                return (String.valueOf(x)+"/"+String.valueOf(y));
                }
            }
        }
        public int jianyan(String a[],int s)//检验是否有重复的式子,如果有返回0,没有就返回1
        {
           int flag=1;
           for(int i=0;i<s;i++)
           {
               if(m.equals(a[i]))//数组a里面是生成的式子
               {
                  flag=0;
                  break;
               }
           }
           return flag;
        }
    }
    class Suan2//真分数的运算类
    {
        public int m,n,x,y,c;//定义4个变量,还有一个符号变量
        public Random random=new Random();
        String s;//生成的计算式储存咋m里面
        int wide;
        public String shengcheng(int wide1)
        {
            wide=wide1;
            c=random.nextInt(4);
            x=random.nextInt(wide);
            y=random.nextInt(wide);
            m=random.nextInt(wide);
            n=random.nextInt(wide);//生成4个随机数在50以内,赋给x,y,m,n
            String fuhao;
            for(int i=0;;i++)
            {
                if(x==0)//不能生成0
                {
                x=random.nextInt(wide);
                }
                else
                {
                    break;
                }
            }
            for(int i=0;;i++)
            {
                if(y==0||y==x)//不能生成0
                {
                y=random.nextInt(wide);
                }
                else
                {
                    break;
                }
            }
            for(int i=0;;i++)
            {
                if(m==0)//不能生成0
                {
                m=random.nextInt(wide);
                }
                else
                {
                    break;
                }
            }
            for(int i=0;;i++)
            {
                if(n==0||m==n)//不能生成0
                {
                n=random.nextInt(wide);
                }
                else
                {
                    break;
                }
            }
            if(c==0)//通整数一样,0是加法,1减法,2乘法,3除法
             {
                 fuhao="+";
             }
             else if(c==1)
             {
                 fuhao="-";
             }
             else if(c==2)
             {
                 fuhao="*";
             }
             else
             {
                 fuhao="/";
             }
            int gongyue=Gongyue(x,y);
            x=x/gongyue;
            y=y/gongyue;
            gongyue=Gongyue(m,n);
            m=m/gongyue;
            n=n/gongyue;
            s=String.valueOf(x)+fuhao+String.valueOf(y);//储存计算式
            return s;
        }
        public String shuchu()//定义输出函数
        {
            if(c==0)
            {
                if(x>y&&m>n)//生成的分母必须大于分子,输出不同的结果
                {
                System.out.print(y+"/"+x+"  +  "+n+"/"+m+"=");
                return jisuan(x,y,m,n,c);//返回计算结果
                }
                else if(x>y&&m<n)//生成的分母必须大于分子,输出不同的结果
                {
                    System.out.print(y+"/"+x+"  +  "+m+"/"+n+"=");
                    return jisuan(x,y,n,m,c);//返回计算结果
                }
                else if(x<y&&m>n)//生成的分母必须大于分子,输出不同的结果
                {
                    System.out.print(x+"/"+y+"  +  "+n+"/"+m+"=");
                    return jisuan(y,x,m,n,c);//返回计算结果
                }
                else//生成的分母必须大于分子,输出不同的结果
                {
                    System.out.print(x+"/"+y+"  +  "+m+"/"+n+"=");
                    return jisuan(y,x,n,m,c);//返回计算结果
                }
            }
            else if(c==1)
            {
                double x1=Double.parseDouble(String.valueOf(x));
                double y1=Double.parseDouble(String.valueOf(y));
                double m1=Double.parseDouble(String.valueOf(m));
                double n1=Double.parseDouble(String.valueOf(n));    
                if(x>y&&m>n)//生成的分母必须大于分子,输出不同的结果
                {    
                    if((y1/x1)>(n1/m1))
                    {
                        System.out.print(y+"/"+x+"  -  "+n+"/"+m+"=");
                        return jisuan(x,y,m,n,c);//返回计算结果
                    }
                    else
                    {
                        System.out.print(n+"/"+m+"  -  "+y+"/"+x+"=");
                        return jisuan(m,n,x,y,c);//返回计算结果
                    }
                }
                else if(x>y&&m<n)//生成的分母必须大于分子,输出不同的结果
                {
                    if((y1/x1)>(m1/n1))//减数必须大于被减数
                    {
                        System.out.print(y+"/"+x+"  -  "+m+"/"+n+"=");
                        return jisuan(x,y,n,m,c);//返回计算结果
                    }
                    else//减数必须大于被减数
                    {
                        System.out.print(m+"/"+n+"  -  "+y+"/"+x+"=");
                        return jisuan(n,m,x,y,c);//返回计算结果
                    }
                }
                else if(x<y&&m>n)//生成的分母必须大于分子,输出不同的结果
                {
                    if((x1/y1)>(n1/m1))//减数必须大于被减数
                    {
                        System.out.print(x+"/"+y+"  -  "+n+"/"+m+"=");
                        return jisuan(y,x,m,n,c);
                    }
                    else//减数必须大于被减数
                    {
                        System.out.print(n+"/"+m+"  -  "+x+"/"+y+"=");
                        return jisuan(m,n,y,x,c);//返回计算结果
                    }
                }
                else
                {
                    if((x1/y1)>(m1/n1))//生成的分母必须大于分子,输出不同的结果//减数必须大于被减数
                    {
                        System.out.print(x+"/"+y+"  -  "+m+"/"+n+"=");
                        return jisuan(y,x,n,m,c);//返回计算结果
                    }
                    else//减数必须大于被减数
                    {
                        System.out.print(m+"/"+n+"  -  "+x+"/"+y+"=");
                        return jisuan(n,m,y,x,c);//返回计算结果
                    }
                }
            }
            else if(c==2)
            {
                if(x>y&&m>n)//生成的分母必须大于分子,输出不同的结果
                {
                System.out.print(y+"/"+x+"  *  "+n+"/"+m+"=");
                return jisuan(x,y,m,n,c);//返回计算结果
                }
                else if(x>y&&m<n)//生成的分母必须大于分子,输出不同的结果
                {
                    System.out.print(y+"/"+x+"  *  "+m+"/"+n+"=");
                    return jisuan(x,y,n,m,c);//返回计算结果
                }
                else if(x<y&&m>n)//生成的分母必须大于分子,输出不同的结果
                {
                    System.out.print(x+"/"+y+"  *  "+n+"/"+m+"=");
                    return jisuan(y,x,m,n,c);
                }
                else//生成的分母必须大于分子,输出不同的结果
                {
                    System.out.print(x+"/"+y+"  *  "+m+"/"+n+"=");
                    return jisuan(y,x,n,m,c);//返回计算结果
                }
            }
            else
            {
                if(x>y&&m>n)//生成的分母必须大于分子,输出不同的结果
                {
                System.out.print(y+"/"+x+"  /  "+n+"/"+m+"=");
                return jisuan(x,y,m,n,c);//返回计算结果
                }
                else if(x>y&&m<n)//生成的分母必须大于分子,输出不同的结果
                {
                    System.out.print(y+"/"+x+"  /  "+m+"/"+n+"=");
                    return jisuan(x,y,n,m,c);//返回计算结果
                }
                else if(x<y&&m>n)//生成的分母必须大于分子,输出不同的结果
                {
                    System.out.print(x+"/"+y+"  /  "+n+"/"+m+"=");
                    return jisuan(y,x,m,n,c);//返回计算结果
                }
                else//生成的分母必须大于分子,输出不同的结果
                {
                    System.out.print(x+"/"+y+"  /  "+m+"/"+n+"=");
                    return jisuan(y,x,n,m,c);//返回计算结果
                }
            }
        }
        public String jisuan(int a,int b,int c,int d,int m)//计算结果的函数
        {
            String daan;
            int gongyue,gongbei;
            if(m==0)//加法计算的结果算法
            {
                gongbei=Gongbei(a,c);//求两个分母的最小公倍数
                int s1,s2,s3;
                s1=gongbei/a;
                s2=gongbei/c;
                s3=b*s1+d*s2;
                if(s3==gongbei)
                {
                    return("1");
                }
                else
                {
                    gongyue=Gongyue(s3,gongbei);
                    int fenzi=s3/gongyue,fenmu=gongbei/gongyue;
                    if(fenzi<fenmu)
                    {
                        daan=String.valueOf(fenzi)+"/"+String.valueOf(fenmu);//通分
                        return daan;
                    }
                    else
                    {
                        int zhi=fenzi/fenmu;
                        daan=String.valueOf(zhi)+"‘"+String.valueOf(fenzi-fenmu*zhi)+"/"+String.valueOf(fenmu);//通分
                        return daan;
                    }
                }
            }
            else if(m==1)//减法计算的结果算法
            {
                gongbei=Gongbei(a,c);
                int s1,s2,s3;
                s1=gongbei/a;
                s2=gongbei/c;
                s3=b*s1-d*s2;
                if(s3==gongbei)
                {
                    return("1");
                }
                else
                {
                    if(s3==0)
                    {
                        daan=String.valueOf("0");
                        return daan;
                    }
                    else
                    {
                    gongyue=Gongyue(s3,gongbei);
                    int fenzi=s3/gongyue,fenmu=gongbei/gongyue;
                    if(fenzi<fenmu)
                    {
                        daan=String.valueOf(fenzi)+"/"+String.valueOf(fenmu);//通分
                        return daan;
                    }
                    else
                    {
                        int zhi=fenzi/fenmu;
                        daan=String.valueOf(zhi)+"‘"+String.valueOf(fenzi-fenmu*zhi)+"/"+String.valueOf(fenmu);//通分
                        return daan;
                    }
                    }
                }
            }
            else if(m==2)//乘法计算的结果算法
            {
                int s1,s2;
                s1=a*c;
                s2=b*d;
                if(s1==s2)
                {
                    return("1");
                }
                else
                {
                    gongyue=Gongyue(s1,s2);
                    int fenzi=s2/gongyue,fenmu=s1/gongyue;
                    if(fenzi<fenmu)
                    {
                        daan=String.valueOf(fenzi)+"/"+String.valueOf(fenmu);//通分
                        return daan;
                    }
                    else
                    {
                        int zhi=fenzi/fenmu;
                        daan=String.valueOf(zhi)+"‘"+String.valueOf(fenzi-fenmu*zhi)+"/"+String.valueOf(fenmu);//通分
                        return daan;
                    }
                }
            }
            else//除法计算的结果算法
            {
                int s1,s2;
                s1=a*d;
                s2=b*c;
                if(s1==s2)
                {
                    return("1");
                }
                else
                {
                    gongyue=Gongyue(s1,s2);
                    int fenzi=s2/gongyue,fenmu=s1/gongyue;
                    if(fenzi<fenmu)
                    {
                        daan=String.valueOf(fenzi)+"/"+String.valueOf(fenmu);//通分
                        return daan;
                    }
                    else
                    {
                        int zhi=fenzi/fenmu;
                        daan=String.valueOf(zhi)+"‘"+String.valueOf(fenzi-fenmu*zhi)+"/"+String.valueOf(fenmu);//通分
                        return daan;
                    }
                }
            }
        }
        public int Gongbei(int a,int c)//求最小公倍数的函数
        {
            int gongbei;
            if(a>c)
            {
                gongbei=a;//公倍数从大的开始
                while(gongbei<=a*c)
                {
                    if(gongbei%a==0&&gongbei%c==0)
                    {
                        break;
                    }
                    gongbei++;
                }
            }
            else
            {
                gongbei=c;//公倍数从大的开始
                while(gongbei<=a*c)
                {
                    if(gongbei%a==0&&gongbei%c==0)
                    {
                        break;
                    }
                    gongbei++;
                }
            }
            return gongbei;
        }
        public int Gongyue(int gongbei,int s3)//求最大公约数的函数
        {
            int i=1,gongyue=0;
            if(gongbei>s3)//公约数从1到最小的数
            {
                while(i<=s3)
                {
                    if(gongbei%i==0&&s3%i==0)
                    {
                        gongyue=i;
                    }
                    i++;
                }
                return gongyue;
            }
            else
            {
                while(i<=gongbei)
                {
                    if(gongbei%i==0&&s3%i==0)
                    {
                        gongyue=i;
                    }
                    i++;
                }
                return gongyue;
            }
        }
        public int jianyan(String a[],int l)//检验是否生成重复计算式的函数
        {
             int flag=1;
               for(int i=0;i<l;i++)
               {
                   if(s.equals(a[i]))
                   {
                      flag=0;
                      break;
                   }
               }
               return flag;
        }
    }
    class Suan3//有余数的类
    {
        public int x,y;//定义两个变量
        public String m;
        public Random random=new Random();
        int wide;
        public String shengcheng(int wide1)//定义生成函数
        {
            wide=wide1;
            x=random.nextInt(wide);
            y=random.nextInt(wide);
            for(int i=0;;i++)
            {
                if(y==0)
                {
                    y=random.nextInt(wide);
                }
                else
                {
                    break;
                }
            }
            m=String.valueOf(x)+"/"+String.valueOf(y);//返回计算式
            return m;
        }
        public String shuchu()//生成输出函数
        {
            String daan;
            int shang,yushu;
            System.out.println(m+"=");
            shang=x/y;
            yushu=x-shang*y;
            daan=String.valueOf(shang)+"/"+String.valueOf(yushu);//返回计算结果
            return daan;
        }
        public int jianyan(String a[],int l)//检验是否重复的函数
        {
             int flag=1;
               for(int i=0;i<l;i++)
               {
                   if(m.equals(a[i]))
                   {
                      flag=0;
                      break;
                   }
               }
               return flag;
        }
    }
    class Suan4
    {
        public String m;
        public Random random=new Random();
        public Suan1 suan=new Suan1();
        public String a;
        public int b,z;
        public int c;
        public String a1;
        public int panduan;
        public int x,y;
        public String daan;
        public int weizhi;
        public Scanner in=new Scanner(System.in);
        public double kuohao()
        {
            panduan=suan.fanhuic();
            if(panduan==3)
            {
                weizhi=a.indexOf("/");
                if(weizhi==-1)
                {
                    z=Integer.parseInt(a);
                    return z;
                }
                else
                {
                x=Integer.parseInt(a.substring(0, weizhi));
                y=Integer.parseInt(a.substring(weizhi+1));    
                return (Double.parseDouble(a.substring(0, weizhi))/Double.parseDouble(a.substring(weizhi+1)));
                }
            }
            else
            {
                z=Integer.parseInt(a);
                return z;
            }
        }
        public String shengcheng(int wide)
        {
            a1=suan.shengcheng(wide);
            a=suan.jisuan();
            b=random.nextInt(wide);
            int c=random.nextInt(4);
            int daan1;
            String fuhao;
            int kuohao=random.nextInt(2);
            if(c==0)//0是加法
             {
                 fuhao="+";
             }
             else if(c==1)//1是减法
             {
                 fuhao="-";
             }
             else
             {
                 fuhao="*";
             }
            double daxiao=kuohao();
            if(kuohao==0)
            {
                if(c==1&&daxiao<b)
                {
                    m=String.valueOf(b)+fuhao+"("+a1+")";
                    if(weizhi!=-1&&panduan==3)
                    {
                        if(c==0)
                        {
                            int x1=b*y;
                            int x2=x+x1;
                            if(x2%y==0)
                            {
                                daan=String.valueOf(x2/y);
                            }
                            else
                            {
                                if(x2>y)
                                {
                                int shang=x2/y;
                                int yushu=x2-y*shang;
                                daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y);
                                }
                                else
                                {
                                daan=String.valueOf(x2)+"/"+String.valueOf(y);
                                }
                            }
                        }
                        else if(c==1)
                        {
                            int x1=b*y;
                            int x2=x1-x;
                            if(x2%y==0)
                            {
                                daan=String.valueOf(x2/y);
                            }
                            else
                            {
                                if(x2>y)
                                {
                                int shang=x2/y;
                                int yushu=x2-y*shang;
                                daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y);
                                }
                                else
                                {
                                daan=String.valueOf(x2)+"/"+String.valueOf(y);
                                }
                            }
                        }
                        else if(c==2)
                        {
                            int x2=x*b;
                            if(x2%y==0)
                            {
                                daan=String.valueOf(x2/y);
                            }
                            else
                            {
                                if(x2>y)
                                {
                                int shang=x2/y;
                                int yushu=x2-y*shang;
                                daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y);
                                }
                                else
                                {
                                daan=String.valueOf(x2)+"/"+String.valueOf(y);
                                }
                            }
                        }
                    }
                    else
                    {
                        if(c==0)
                        {
                            daan=String.valueOf(b+z);
                        }
                        else if(c==1)
                        {
                            daan=String.valueOf(b-z);
                        }
                        else
                        {
                            daan=String.valueOf(b*z);
                        }
                    }
                }
                else
                {
                    m="("+a1+")"+fuhao+String.valueOf(b);
                    if(weizhi!=-1&&panduan==3)
                    {
                        if(c==0)
                        {
                            int x1=b*y;
                            int x2=x+x1;
                            if(x2%y==0)
                            {
                                daan=String.valueOf(x2/y);
                            }
                            else
                            {
                                if(x2>y)
                                {
                                int shang=x2/y;
                                int yushu=x2-y*shang;
                                daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y);
                                }
                                else
                                {
                                daan=String.valueOf(x2)+"/"+String.valueOf(y);
                                }
                            }
                        }
                        else if(c==1)
                        {
                            int x1=b*y;
                            int x2=x-x1;
                            if(x2%y==0)
                            {
                                daan=String.valueOf(x2/y);
                            }
                            else
                            {
                                if(x2>y)
                                {
                                int shang=x2/y;
                                int yushu=x2-y*shang;
                                daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y);
                                }
                                else
                                {
                                daan=String.valueOf(x2)+"/"+String.valueOf(y);
                                }
                            }
                        }
                        else if(c==2)
                        {
                            int x2=x*b;
                            if(x2%y==0)
                            {
                                daan=String.valueOf(x2/y);
                            }
                            else
                            {
                                if(x2>y)
                                {
                                int shang=x2/y;
                                int yushu=x2-y*shang;
                                daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y);
                                }
                                else
                                {
                                daan=String.valueOf(x2)+"/"+String.valueOf(y);
                                }
                            }
                        }
                    }
                    else
                    {
                        if(c==0)
                        {
                            daan=String.valueOf(z+b);
                        }
                        else if(c==1)
                        {
                            daan=String.valueOf(z-b);
                        }
                        else
                        {
                            daan=String.valueOf(z*b);
                        }
                    }
                }
            }
            else
            {
                if(c==1&&daxiao>b)
                {
                    m="("+a1+")"+fuhao+String.valueOf(b);
                    if(weizhi!=-1&&panduan==3)
                    {
                        if(c==0)
                        {
                            int x1=b*y;
                            int x2=x+x1;
                            if(x2%y==0)
                            {
                                daan=String.valueOf(x2/y);
                            }
                            else
                            {
                                if(x2>y)
                                {
                                int shang=x2/y;
                                int yushu=x2-y*shang;
                                daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y);
                                }
                                else
                                {
                                daan=String.valueOf(x2)+"/"+String.valueOf(y);
                                }
                            }
                        }
                        else if(c==1)
                        {
                            int x1=b*y;
                            int x2=x-x1;
                            if(x2%y==0)
                            {
                                daan=String.valueOf(x2/y);
                            }
                            else
                            {
                                if(x2>y)
                                {
                                int shang=x2/y;
                                int yushu=x2-y*shang;
                                daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y);
                                }
                                else
                                {
                                daan=String.valueOf(x2)+"/"+String.valueOf(y);
                                }
                            }
                        }
                        else if(c==2)
                        {
                            int x2=x*b;
                            if(x2%y==0)
                            {
                                daan=String.valueOf(x2/y);
                            }
                            else
                            {
                                if(x2>y)
                                {
                                int shang=x2/y;
                                int yushu=x2-y*shang;
                                daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y);
                                }
                                else
                                {
                                daan=String.valueOf(x2)+"/"+String.valueOf(y);
                                }
                            }
                        }
                    }
                    else
                    {
                        if(c==0)
                        {
                            daan=String.valueOf(z+b);
                        }
                        else if(c==1)
                        {
                            daan=String.valueOf(z-b);
                        }
                        else
                        {
                            daan=String.valueOf(z*b);
                        }
                    }
                }
                else
                {
                    m=String.valueOf(b)+fuhao+"("+a1+")";
                    if(weizhi!=-1&&panduan==3)
                    {
                        if(c==0)
                        {
                            int x1=b*y;
                            int x2=x+x1;
                            if(x2%y==0)
                            {
                                daan=String.valueOf(x2/y);
                            }
                            else
                            {
                                if(x2>y)
                                {
                                int shang=x2/y;
                                int yushu=x2-y*shang;
                                daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y);
                                }
                                else
                                {
                                daan=String.valueOf(x2)+"/"+String.valueOf(y);
                                }
                            }
                        }
                        else if(c==1)
                        {
                            int x1=b*y;
                            int x2=x1-x;
                            if(x2%y==0)
                            {
                                daan=String.valueOf(x2/y);
                            }
                            else
                            {
                                if(x2>y)
                                {
                                int shang=x2/y;
                                int yushu=x2-y*shang;
                                daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y);
                                }
                                else
                                {
                                daan=String.valueOf(x2)+"/"+String.valueOf(y);
                                }
                            }
                        }
                        else if(c==2)
                        {
                            int x2=x*b;
                            if(x2%y==0)
                            {
                                daan=String.valueOf(x2/y);
                            }
                            else
                            {
                                if(x2>y)
                                {
                                int shang=x2/y;
                                int yushu=x2-y*shang;
                                daan=String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y);
                                }
                                else
                                {
                                daan=String.valueOf(x2)+"/"+String.valueOf(y);
                                }
                            }
                        }
                    }
                    else
                    {
                        if(c==0)
                        {
                            daan=String.valueOf(b+z);
                        }
                        else if(c==1)
                        {
                            daan=String.valueOf(b-z);
                        }
                        else
                        {
                            daan=String.valueOf(b*z);
                        }
                    }
                }
            }
            m=m+"=";
            return m;
        }
        public int jianyan(String a[],int l)//检验是否重复的函数
        {
             int flag=1;
               for(int i=0;i<l;i++)
               {
                   if(m.equals(a[i]))
                   {
                      flag=0;
                      break;
                   }
               }
               return flag;
        }
    }
    class Shengcheng
    {
        public Random random=new Random();
        public Suan1 a=new Suan1();//定义整数运算变量a
        public Suan2 b=new Suan2();//定义分数运算变量b
        public Suan3 c=new Suan3();//定义余数运算变量c
        public Suan4 d=new Suan4();
        public Scanner in=new Scanner(System.in);
        public String shuju[]=new String[1000000];//定义储存计算式的数组
        public int flag=0;//定义旗帜看是否有重复
        public int m=0,wide;
        public void caidan()
        {    
            try
            {
            Connection con = null; //定义一个SQL链接对象
            //Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            //con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433/mydatabase", "sa", "123456"); //链接本地SQLjdbc:mysql://localhost:3306/test", "root", "20153246"
            String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
            String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=小学算术";
            String userName="sa";
            String userPwd="123456";
            java.sql.Statement stmt; //创建声明
            stmt = con.createStatement();
            for(int i=0;;i++)
            {
              System.out.println("1   整数的四则计算");
              System.out.println("2   真分数的四则计算");
              System.out.println("3   整数与真分数的混合四则运算");
              System.out.println("4   有余数的除法");//新添加的带括号的混合四则运算
              System.out.println("5   有括号的四则运算");
              System.out.println("6   退出");
              System.out.print("请选择:");
              int t=in.nextInt();
              if(t==1)
              {
                System.out.print("请选择出题的个数:");
                int tishu=in.nextInt();
                String zhengque="",cuowu="";
                System.out.print("请选择生成的数范围:");
                wide=in.nextInt();
                int zhengque1=0,cuowu1=0;
                while(m<tishu)//生成30个计算式
                 {
                        shuju[m]=a.shengcheng(wide);//将生成的计算式储存咋数组里面
                        flag=a.jianyan(shuju, m);//返回是否有重复
                        if(flag==1)//如果没有就是1
                        {
                            System.out.print(m+1+".  ");
                            String daan=a.shuchu();//输出式子,将答案储存在daan里面
                            String daan1=in.next();//用户输入答案
                            String sql="INSERT INTO 整数的四则计算 (shizi,result) VALUES ('"+shuju[m]+" = "+"','"+daan+"')";
                            stmt.executeUpdate(sql);
                            if(daan1.equals("break"))//用户不想做题时输入break跳出
                            {
                                break;
                            
                            }
                            else if(daan1.equals(daan))//检查答案是否正确
                            {
                                System.out.println("回答正确!!!");
                                zhengque=zhengque+String.valueOf(m+1)+",";
                                zhengque1++;
                                
                            }
                            else
                            {
                            System.out.println("回答错误!!!正确答案是:"+daan);//如果不正确输出正确答案
                            cuowu=cuowu+String.valueOf(m+1)+",";
                            cuowu1++;
                            }
                            m++;
                            flag=0;
                        }
                 }
                 String sql="INSERT INTO Grade (zhengque,cuowu) VALUES ('"+zhengque+"','"+cuowu+"')";
                 stmt.executeUpdate(sql);
                 System.out.println("正确的数量为:"+zhengque1+"正确的题目是:"+zhengque);
                 System.out.println("错误的数量为:"+cuowu1+"错误的题目是:"+cuowu);
                 m=0;
              }
              else if(t==2)
              {
                  System.out.print("请选择出题的个数:");
                  int tishu=in.nextInt();
                  String zhengque="",cuowu="";
                  System.out.print("请选择生成的数范围:");
                  wide=in.nextInt();
                  int zhengque1=0,cuowu1=0;
                  while(m<tishu)
                    {
                      shuju[m]=b.shengcheng(wide);//将生成的计算式储存咋数组里面
                      flag=b.jianyan(shuju, m);//返回是否有重复
                      if(flag==1)//如果没有就是1
                        {
                            System.out.print(m+1+".  ");
                            String daan=b.shuchu();//输出式子,将答案储存在daan里面
                            String daan1=in.next();//用户输入答案
                            String sql="INSERT INTO 真分数的四则计算 (shizi,result) VALUES ('"+shuju[m]+" = "+"','"+daan+"')";
                            stmt.executeUpdate(sql);
                            if(daan1.equals("break"))//用户不想做题时输入break跳出
                            {
                                break;
                            
                            }
                            else if(daan1.equals(daan))//检查答案是否正确
                            {
                                System.out.println("回答正确!!!");
                                zhengque=zhengque+String.valueOf(m+1)+",";
                                zhengque1++;
                            }
                            else
                            {
                            System.out.println("回答错误!!!正确答案是:"+daan);//如果不正确输出正确答案
                            cuowu=cuowu+String.valueOf(m+1)+",";
                            cuowu1++;
                            }
                            m++;
                            flag=0;
                        }
                    }
                  String sql="INSERT INTO Grade (zhengque,cuowu) VALUES ('"+zhengque+"','"+cuowu+"')";
                  stmt.executeUpdate(sql);
                  System.out.println("正确的数量为:"+zhengque1+"正确的题目是:"+zhengque);
                  System.out.println("错误的数量为:"+cuowu1+"错误的题目是:"+cuowu);
                  m=0;
              }
              else if(t==3)//真是整数于分数混合的运算同上
              {
                  System.out.print("请选择出题的个数:");
                  int tishu=in.nextInt();
                  String zhengque="",cuowu="";
                  System.out.print("请选择生成的数范围:");
                  wide=in.nextInt();
                  int zhengque1=0,cuowu1=0;
                  while(m<tishu)
                    {
                      int suiji=random.nextInt(2);
                      if(suiji==0)
                      {
                        System.out.print(m+1+".  ");
                        shuju[m]=b.shengcheng(wide);
                        flag=b.jianyan(shuju, m);
                        String daan=b.shuchu();
                        String daan1=in.next();
                        String sql="INSERT INTO 整数与真分数的混合四则运算 (shizi,result) VALUES ('"+shuju[m]+" = "+"','"+daan+"')";
                        stmt.executeUpdate(sql);
                        if(daan1.equals("break"))
                        {
                            break;
                        
                        }
                        else if(daan1.equals(daan))
                        {
                            System.out.println("回答正确!!!");
                            zhengque=zhengque+String.valueOf(m+1)+",";
                            zhengque1++;
                        }
                        else
                        {
                        System.out.println("回答错误!!!正确答案是:"+daan);
                        cuowu=cuowu+String.valueOf(m+1)+",";
                        cuowu1++;
                        }
                        m++;
                        flag=0;
                      }
                      else
                      {
                          System.out.print(m+1+".  ");
                          shuju[m]=a.shengcheng(wide);
                          flag=a.jianyan(shuju, m);
                          if(flag==1)
                            {
                                String daan=a.shuchu();
                                String daan1=in.next();
                                String sql="INSERT INTO 整数与真分数的混合四则运算 (shizi,result) VALUES ('"+shuju[m]+" = "+"','"+daan+"')";
                                stmt.executeUpdate(sql);
                                if(daan1.equals("break"))
                                {
                                    break;
                                
                                }
                                else if(daan1.equals(daan))
                                {
                                    System.out.println("回答正确!!!");
                                    zhengque=zhengque+String.valueOf(m+1)+",";
                                    zhengque1++;
                                }
                                else
                                {
                                System.out.println("回答错误!!!正确答案是:"+daan);
                                cuowu=cuowu+String.valueOf(m+1)+",";
                                cuowu1++;
                                }
                                m++;
                                flag=0;
                            }
                      }
                    }
                  String sql="INSERT INTO Grade (zhengque,cuowu) VALUES ('"+zhengque+"','"+cuowu+"')";
                  stmt.executeUpdate(sql);
                  System.out.println("正确的数量为:"+zhengque1+"正确的题目是:"+zhengque);
                  System.out.println("错误的数量为:"+cuowu1+"错误的题目是:"+cuowu);
                  m=0;
              }
              
              else if(t==4)//余数的运算
              {
                  System.out.print("请选择出题的个数:");
                  int tishu=in.nextInt();
                  String zhengque="",cuowu="";
                  System.out.print("请选择生成的数范围:");
                  wide=in.nextInt();
                  int zhengque1=0,cuowu1=0;
                  while(m<tishu)
                     {
                            shuju[m]=c.shengcheng(wide);//将结果储存在数组里面
                            flag=c.jianyan(shuju, m);//检验是否有重复
                            if(flag==1)
                            {
                                System.out.print(m+1+".  ");
                                String daan=c.shuchu();//输出式子,将答案储存在daan里面
                                System.out.print("商为:");
                                String shang=in.next();
                                System.out.print("余数为:");
                                String yushu=in.next();
                                String sql="INSERT INTO 有余数的除法 (shizi,result) VALUES ('"+shuju[m]+" = "+"','"+daan+"')";
                                stmt.executeUpdate(sql);
                                if(daan.equals("break"))
                                {
                                    break;
                                
                                }
                                else if(daan.equals(shang+"/"+yushu))
                                {
                                    System.out.println("回答正确!!!");
                                    zhengque=zhengque+String.valueOf(m+1)+",";
                                    zhengque1++;
                                }
                                else
                                {
                                 int weizhi=daan.indexOf('/');
                                 shang=daan.substring(0, weizhi);
                                 yushu=daan.substring(weizhi+1);        
                                 System.out.println("回答错误!!!正确答案是商"+shang+"余"+yushu);
                                 cuowu=cuowu+String.valueOf(m+1)+",";
                                 cuowu1++;
                                }
                                m++;
                                flag=0;
                            }
                     }
                    String sql="INSERT INTO Grade (zhengque,cuowu) VALUES ('"+zhengque+"','"+cuowu+"')";
                    stmt.executeUpdate(sql);
                    System.out.println("正确的数量为:"+zhengque1+"正确的题目是:"+zhengque);
                    System.out.println("错误的数量为:"+cuowu1+"错误的题目是:"+cuowu);
                    m=0;
              }
              else if(t==5)
              {
                    System.out.print("请选择出题的个数:");
                    int tishu=in.nextInt();
                    String zhengque="",cuowu="";
                    System.out.print("请选择生成的数范围:");
                    wide=in.nextInt();
                    int zhengque1=0,cuowu1=0;
                    while(m<tishu)//生成30个计算式
                     {
                            shuju[m]=d.shengcheng(wide);//将生成的计算式储存咋数组里面
                            flag=d.jianyan(shuju, m);//返回是否有重复
                            if(flag==1)//如果没有就是1
                            {
                                System.out.print(m+1+".  ");//用到栈
                                System.out.print(d.m);
                                String daan=in.next();
                                String sql="INSERT INTO 有括号的四则运算 (shizi,result) VALUES ('"+shuju[m]+" = "+"','"+daan+"')";
                                stmt.executeUpdate(sql);
                                if(daan.equals(d.daan))
                                {
                                    System.out.println("回答正确!!!");
                                    zhengque=zhengque+String.valueOf(m+1)+",";
                                    zhengque1++;
                                }
                                else if(daan.equals("break"))
                                {
                                    break;
                                }
                                else
                                {
                                    System.out.println("回答错误!!!正确答案是:"+d.daan);
                                    cuowu=cuowu+String.valueOf(m+1)+",";
                                    cuowu1++;
                                }
                                m++;
                                flag=0;
                            }
                     }
                     String sql="INSERT INTO Grade (zhengque,cuowu) VALUES ('"+zhengque+"','"+cuowu+"')";
                     stmt.executeUpdate(sql);
                     System.out.println("正确的数量为:"+zhengque1+"正确的题目是:"+zhengque);
                     System.out.println("错误的数量为:"+cuowu1+"错误的题目是:"+cuowu);
                     m=0;
              }
              else
              {
                  break;
              }
            }
            }
            catch (Exception e) 
            {
                System.out.print("SQL ERROR:" + e.getMessage());
            } 
        }
    }
    public class caculate3 {
    
        public static void main(String[] args) {
            Shengcheng a=new Shengcheng();
            a.caidan();
        }
    
    }
  • 相关阅读:
    C指针典例
    20150310 块设备驱动程序
    python连接redis
    利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
    将一个正整数分解质因数。例如输入90,打印出90=2*3*3*5
    python 中输入一个字符串,判断这个字符串中有多少个字符、数字、空格、特殊字符
    学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用利用条件运算符的嵌套来完成此题:C表示。
    nginx在基于域名访问的时候是下载的界面
    mysql数据库二进制初始化出现:170425 17:47:04 [ERROR] /application/mysql//bin/mysqld: unknown option '--skip-locking' 170425 17:47:04 [ERROR] Aborting 解决办法
    赛马问题
  • 原文地址:https://www.cnblogs.com/ever1961211/p/6599761.html
Copyright © 2020-2023  润新知