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

    一、设计思想:支持整数、真分数的四则运算(需要验证结果的正确性)、题目避免重复、可定制出题的数量。

    二、源程序代码

      1 import java.util.Scanner;
      2 
      3 import javax.script.ScriptEngine;
      4 import javax.script.ScriptEngineManager;
      5 import javax.script.ScriptException;
      6 
      7 
      8 public class SZYS {
      9 
     10     public static void main(String[] args) throws ScriptException {
     11         // TODO Auto-generated method stub
     12         Scanner scan=new Scanner(System.in);
     13         String fuhao[]=new String[4];
     14         fuhao[0]="+";
     15         fuhao[1]="-";
     16         fuhao[2]="*";
     17         fuhao[3]="/";
     18         
     19         int i,j,k,m=0;
     20         int M=0;int N1=0;
     21         
     22     System.out.print("请选择题目的难易程度:(请输入“较简单” or “较困难”)   ");
     23     String chengdu=scan.next();
     24     if(chengdu.equals("较简单"))
     25         {M=100;N1=10;}
     26     else if(chengdu.equals("较困难"))
     27         {M=1000;N1=100;}
     28     else{
     29         System.out.println("输入有误!");
     30     }
     31     System.out.println();
     32         System.out.print("整数的四则运算题目的数量定量:");
     33         int N=scan.nextInt();
     34         System.out.print("真分数的四则运算题目的数量定量:");
     35         int n=scan.nextInt();
     36         
     37         //Part01
     38         ScriptEngine se=new ScriptEngineManager().getEngineByName("JavaScript");
     39         int dui=0;//做对的题目
     40         String zuocuo="";//做错的题目
     41         String suan[]=new String[N];//算式
     42         double key[]=new double[N];//答案
     43         String K[]=new String[N];
     44         System.out.println();
     45         System.out.println("题目打印如下:
    ");
     46         System.out.println("一、整数的四则运算。");
     47         for(i=0;i<N;i++){
     48             int x=(int)(Math.random()*M); 
     49             int x2=(int)(Math.random()*M); 
     50             int y=(int)(Math.random()*M);
     51             int y2=(int)(Math.random()*M); 
     52             int z=(int)(Math.random()*4);
     53             int zz=(int)(Math.random()*4);
     54             int zzz=(int)(Math.random()*4);
     55             String output=x+fuhao[z]+y+fuhao[zz]+x2+fuhao[zzz]+
     56             y2;
     57              suan[i]=output+" =";
     58              //key[i]=(double) se.eval(output);
     59         }
     60         
     61         //避免重复
     62         for(j=0;j<N;j++){
     63             for(k=j+1;k<N-1;k++){
     64                 if(suan[j].equals(suan[k]))
     65                 {
     66             int x2=(int)(Math.random()*M); 
     67             int x22=(int)(Math.random()*M); 
     68             int y2=(int)(Math.random()*M);
     69             int y22=(int)(Math.random()*M); 
     70             int z2=(int)(Math.random()*4);
     71             int zz2=(int)(Math.random()*4);
     72             int zzz2=(int)(Math.random()*4);
     73             
     74             String output=
     75                     suan[k]=x2+" "+fuhao[z2]+" "+y2+" "+fuhao[zz2]+" "+x22+" "+fuhao[zzz2]+" "+
     76             y22;
     77             suan[k]=output+" =";
     78             key[i]=(int)se.eval(output);
     79                 }
     80             }
     81         }
     82         for(m=0;m<N;m++){
     83             System.out.print(m+1+".  "+suan[m]);
     84             K[m]=scan.next();
     85             if(yanzheng(K[m],key[m])==1){
     86                 dui++;
     87             }
     88             else{
     89                 zuocuo+=" "+(m+1);
     90             }
     91             System.out.println();
     92         }
     93         System.out.println("做对了"+dui+"道题,题号"+zuocuo+"的答案错误。");
     94         
     95         
     96         //Part02  随机产生真分数的四则运算
     97         int dui2=0;//做对的题目
     98         String zuocuo2="";//做错的题目
     99         String suan2[]=new String[n];//算式
    100         int key2[]=new int[n];//答案
    101         String K2[]=new String[n];
    102         System.out.println();
    103         System.out.println("二、真分数的四则运算。");
    104         for(i=0;i<n;i++){
    105             int x0=(int) ((Math.random()*N1)+2);
    106             int xx=(int) ((Math.random()*(x0-1))+1);
    107             int a=gongyue(x0,xx);
    108             int x00=(int)(Math.random()*N1)+2;
    109             int xx0=(int)(Math.random()*(x00-1))+1;
    110             int b=gongyue(x00,xx0);
    111             int y0=(int)(Math.random()*N1)+2;
    112             int yy=(int)(Math.random()*(y0-1)+1);
    113             int c=gongyue(y0,yy);
    114             int y00=(int)(Math.random()*N1)+2;
    115             int yy0=(int)(Math.random()*(y00-1)+1);
    116             int d=gongyue(y00,yy0);
    117             int z=(int)(Math.random()*4);
    118             int z0=(int)(Math.random()*4);
    119             int z00=(int)(Math.random()*4);
    120             
    121             int p=x0/a;
    122             int q=xx/a;
    123             int o=x00/b;
    124             int w=xx0/b;
    125             int ii=y0/c;
    126             int e=yy/c;
    127             int u=y00/d;
    128             int r=yy0/d;
    129             
    130             String output=q+"/"+p+" "+fuhao[z]+" "+w+"/"+o+" "+fuhao[z0]+" "+e+"/"
    131             +ii+" "+fuhao[z00]+" "+r+"/"+u;
    132             suan2[i]=output+" =";
    133             }//for
    134         
    135         //避免重复
    136         for(j=0;j<n;j++){
    137             for(k=j+1;k<n-1;k++){
    138                 if(suan2[j].equals(suan2[k]))
    139                 {
    140                     int x0=(int)(Math.random()*N1)+2;
    141                     int xx=(int)(Math.random()*(x0-1))+1;
    142                     int a=gongyue(xx,x0);
    143                     int x00=(int)(Math.random()*N1)+2;
    144                     int xx0=(int)(Math.random()*(x00-1))+1;
    145                     int b=gongyue(xx0,x00);
    146                     int y0=(int)(Math.random()*N1)+2;
    147                     int yy=(int)(Math.random()*(y0-1)+1);
    148                     int c=gongyue(y0,yy);
    149                     int y00=(int)(Math.random()*N1)+2;
    150                     int yy0=(int)(Math.random()*(y00-1)+1);
    151                     int d=gongyue(y00,yy0);
    152                     int z=(int)(Math.random()*4);
    153                     int z0=(int)(Math.random()*4);
    154                     int z00=(int)(Math.random()*4);
    155                     
    156                     int p=x0/a;
    157                     int q=xx/a;
    158                     int o=x00/b;
    159                     int w=xx0/b;
    160                     int ii=y0/c;
    161                     int e=yy/c;
    162                     int u=y00/d;
    163                     int r=yy0/d;
    164                     
    165                     String output=q+"/"+p+" "+fuhao[z]+" "+w+"/"+o+" "+fuhao[z0]+" "+e+"/"
    166                             +ii+" "+fuhao[z00]+" "+r+"/"+u;
    167                     suan2[k]=output+" =";
    168                     }
    169             }
    170         }
    171         for(m=0;m<n;m++){
    172             System.out.print(m+1+".  "+suan2[m]);
    173             K2[m]=scan.next();
    174             if(yanzheng(K2[m],key2[m])==1){
    175                 dui2++;
    176             }
    177             else{
    178                 zuocuo2+=" "+(m+1);
    179             }
    180             System.out.println();
    181         }
    182         System.out.println("做对了"+dui2+"道题,题号"+zuocuo2+"的答案错误。");
    183         
    184     }//main
    185     //化简
    186     public static int gongyue(int x,int y){
    187         int gongyue=1;
    188         int min=Math.min(x, y);
    189         for(int i=min;i>0;i--){
    190             if((x%i==0) && (y%i==0))
    191             {
    192                 gongyue=i;
    193                break;
    194             }
    195         }//for
    196         return gongyue;    
    197     }
    198     //判断输入的与答案是否相等
    199     public static int yanzheng(String x,double k){
    200         int m=0;
    201         String n=String.valueOf(k);
    202         if(x.equals(n)){
    203             m=1;//1为相等
    204         }
    205         else
    206             m=0;
    207         return m;
    208     }
    209 }//end

     

    三、运行结果截图

    四、分析上课未能完成原因

    要说一说现在和以前的差别,最主要的是态度和状态,以前总是感觉编程和自己没有什么多大的关系,上大二了就感觉毕业找工作和自己不远了,我的天,一切就这么活生生的展现在自己的眼前,有了恐惧感,没办法,只能自己定下决心,要努力啦,你没有别的路了。

    出现的问题:理解经别人点拨出现问题,只能进行四个数的运算,运算数字的个数应该是随机的。

  • 相关阅读:
    UVA 1025 A Spy in the Metro DP水题
    ZOJ 3814 Sawtooth Puzzle BFS
    ZOJ 3816 Generalized Palindromic Number
    UVA 10859 Placing Lampposts 树形DP
    UVA 11825 Hackers' Crackdown 状压DP
    POJ 2887 Big String 线段树 离线处理
    POJ 1635 Subway tree systems Hash法判断有根树是否同构
    BZOJ 3110 k大数查询 & 树套树
    sdoi 2009 & 状态压缩
    来自于2016.2.24的flag
  • 原文地址:https://www.cnblogs.com/gxt-/p/6492170.html
Copyright © 2011-2022 走看看