zoukankan      html  css  js  c++  java
  • 软件工程个人作业01

    一、程序的设计思想

    用伪随机数产生随机数,用数字表示加减乘除符号;并定义两种做题难度,计算四则运算答案后,与输入的字符相比较,并记录作对题的个数和做错题的题号。

    二、源程序代码

    import java.util.Scanner;
    
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.script.ScriptException;
    
    //随机产生四则运算题目
    //李慧,2017.2.27
    //梦断代码
    /*要求:
     1.支持真分数、整数的四则运算 
     2.题目避免重复
     3.可定制数量           
    */
    public class SZYS {
    
        public static void main(String[] args) throws ScriptException {
            // TODO Auto-generated method stub
            Scanner scan=new Scanner(System.in);
            String fuhao[]=new String[4];
            fuhao[0]="+";
            fuhao[1]="-";
            fuhao[2]="*";
            fuhao[3]="/";
            
            int i,j,k,m=0;
            int M=0;int N1=0;
            
        System.out.print("请选择题目的难易程度:(请输入“较简单” or “较困难”)   ");
        String chengdu=scan.next();
        if(chengdu.equals("较简单"))
            {M=100;N1=10;}
        else if(chengdu.equals("较困难"))
            {M=1000;N1=100;}
        else{
            System.out.println("输入有误!");
        }
        System.out.println();
            System.out.print("整数的四则运算题目的数量定量:");
            int N=scan.nextInt();
            System.out.print("真分数的四则运算题目的数量定量:");
            int n=scan.nextInt();
            
            //Part01
            ScriptEngine se=new ScriptEngineManager().getEngineByName("JavaScript");
            int dui=0;//做对的题目
            String zuocuo="";//做错的题目
            String suan[]=new String[N];//算式
            double key[]=new double[N];//答案
            String K[]=new String[N];
            System.out.println();
            System.out.println("题目打印如下:
    ");
            System.out.println("一、整数的四则运算。");
            for(i=0;i<N;i++){
                int x=(int)(Math.random()*M); 
                int x2=(int)(Math.random()*M); 
                int y=(int)(Math.random()*M);
                int y2=(int)(Math.random()*M); 
                int z=(int)(Math.random()*4);
                int zz=(int)(Math.random()*4);
                int zzz=(int)(Math.random()*4);
                String output=x+fuhao[z]+y+fuhao[zz]+x2+fuhao[zzz]+
                y2;
                 suan[i]=output+" =";
                 //key[i]=(double) se.eval(output);
            }
            
            //避免重复
            for(j=0;j<N;j++){
                for(k=j+1;k<N-1;k++){
                    if(suan[j].equals(suan[k]))
                    {
                int x2=(int)(Math.random()*M); 
                int x22=(int)(Math.random()*M); 
                int y2=(int)(Math.random()*M);
                int y22=(int)(Math.random()*M); 
                int z2=(int)(Math.random()*4);
                int zz2=(int)(Math.random()*4);
                int zzz2=(int)(Math.random()*4);
                
                String output=
                        suan[k]=x2+" "+fuhao[z2]+" "+y2+" "+fuhao[zz2]+" "+x22+" "+fuhao[zzz2]+" "+
                y22;
                suan[k]=output+" =";
                key[i]=(int)se.eval(output);
                    }
                }
            }
            for(m=0;m<N;m++){
                System.out.print(m+1+".  "+suan[m]);
                K[m]=scan.next();
                if(yanzheng(K[m],key[m])==1){
                    dui++;
                }
                else{
                    zuocuo+=" "+(m+1);
                }
                System.out.println();
            }
            System.out.println("做对了"+dui+"道题,题号"+zuocuo+"的答案错误。");
            
            
            //Part02  随机产生真分数的四则运算
            int dui2=0;//做对的题目
            String zuocuo2="";//做错的题目
            String suan2[]=new String[n];//算式
            int key2[]=new int[n];//答案
            String K2[]=new String[n];
            System.out.println();
            System.out.println("二、真分数的四则运算。");
            for(i=0;i<n;i++){
                int x0=(int) ((Math.random()*N1)+2);
                int xx=(int) ((Math.random()*(x0-1))+1);
                int a=gongyue(x0,xx);
                int x00=(int)(Math.random()*N1)+2;
                int xx0=(int)(Math.random()*(x00-1))+1;
                int b=gongyue(x00,xx0);
                int y0=(int)(Math.random()*N1)+2;
                int yy=(int)(Math.random()*(y0-1)+1);
                int c=gongyue(y0,yy);
                int y00=(int)(Math.random()*N1)+2;
                int yy0=(int)(Math.random()*(y00-1)+1);
                int d=gongyue(y00,yy0);
                int z=(int)(Math.random()*4);
                int z0=(int)(Math.random()*4);
                int z00=(int)(Math.random()*4);
                
                int p=x0/a;
                int q=xx/a;
                int o=x00/b;
                int w=xx0/b;
                int ii=y0/c;
                int e=yy/c;
                int u=y00/d;
                int r=yy0/d;
                
                String output=q+"/"+p+" "+fuhao[z]+" "+w+"/"+o+" "+fuhao[z0]+" "+e+"/"
                +ii+" "+fuhao[z00]+" "+r+"/"+u;
                suan2[i]=output+" =";
                }//for
            
            //避免重复
            for(j=0;j<n;j++){
                for(k=j+1;k<n-1;k++){
                    if(suan2[j].equals(suan2[k]))
                    {
                        int x0=(int)(Math.random()*N1)+2;
                        int xx=(int)(Math.random()*(x0-1))+1;
                        int a=gongyue(xx,x0);
                        int x00=(int)(Math.random()*N1)+2;
                        int xx0=(int)(Math.random()*(x00-1))+1;
                        int b=gongyue(xx0,x00);
                        int y0=(int)(Math.random()*N1)+2;
                        int yy=(int)(Math.random()*(y0-1)+1);
                        int c=gongyue(y0,yy);
                        int y00=(int)(Math.random()*N1)+2;
                        int yy0=(int)(Math.random()*(y00-1)+1);
                        int d=gongyue(y00,yy0);
                        int z=(int)(Math.random()*4);
                        int z0=(int)(Math.random()*4);
                        int z00=(int)(Math.random()*4);
                        
                        int p=x0/a;
                        int q=xx/a;
                        int o=x00/b;
                        int w=xx0/b;
                        int ii=y0/c;
                        int e=yy/c;
                        int u=y00/d;
                        int r=yy0/d;
                        
                        String output=q+"/"+p+" "+fuhao[z]+" "+w+"/"+o+" "+fuhao[z0]+" "+e+"/"
                                +ii+" "+fuhao[z00]+" "+r+"/"+u;
                        suan2[k]=output+" =";
                        }
                }
            }
            for(m=0;m<n;m++){
                System.out.print(m+1+".  "+suan2[m]);
                K2[m]=scan.next();
                if(yanzheng(K2[m],key2[m])==1){
                    dui2++;
                }
                else{
                    zuocuo2+=" "+(m+1);
                }
                System.out.println();
            }
            System.out.println("做对了"+dui2+"道题,题号"+zuocuo2+"的答案错误。");
            
        }//main
        //化简
        public static int gongyue(int x,int y){
            int gongyue=1;
            int min=Math.min(x, y);
            for(int i=min;i>0;i--){
                if((x%i==0) && (y%i==0))
                {
                    gongyue=i;
                   break;
                }
            }//for
            return gongyue;    
        }
        //判断输入的与答案是否相等
        public static int yanzheng(String x,double k){
            int m=0;
            String n=String.valueOf(k);
            if(x.equals(n)){
                m=1;//1为相等
            }
            else
                m=0;
            return m;
        }
    }//end

    三、运行结果截图

    四、上课未按时完成的原因

    上课时由于理解错误,只写了两个数字的加减乘除,然后个性化定制题目数量。实则,应该是至少三个数字的四则运算的算式。下课后,又改了改,出现新的问题是:整数的四则运算除法难度有点大(因为两个数相除的两个数没有联系)。计算机无法去计算,因为引用的一个结构还是什么有点错误,还未解决。

  • 相关阅读:
    Robotframework自动化6-基础关键字介绍(3)
    Robotframework自动化5-基础关键字介绍(2)
    Robotframework自动化4-基础关键字介绍(1)
    Robotframework自动化3-APP启动
    Robotframework自动化2-Windows环境搭建
    Robotframework自动化1-Windows环境搭建
    python2与python3同时安装
    Fiddler的基本界面介绍
    Fiddler的安装和APP抓包
    正则表达式
  • 原文地址:https://www.cnblogs.com/xiaxiaoshu/p/6489965.html
Copyright © 2011-2022 走看看