• 1.四则运算题目自动生成程序


     

    a.需求分析:


    1.除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
    2.运算符为 +, −, ×, ÷
    3.并且要求能处理用户的输入,并判断对错,打分统计正确率。
    4.要求能处理用户输入的真分数, 如 1/2, 5/12 等
    5.使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
    Myapp.exe -n 10

    b.功能设计


    1.生成自定义数目算术题。

    2.支持整数和分数的加减乘除。

    3.输入答案判断对错,错误后写出正确答案。

    4.最后统计正确率。

    c.设计实现


    程序就一个main函数包含全部功能,采用循环和if判断实现算法。

    d.代码说明  (congding.ent:https://git.coding.net/wangrf/java-sizeyunsuan.git


    .随机数与运算符号

     1         int x=1+(int)(Math.random()*10);        
     2         int y=1+(int)(Math.random()*10);    
     3         int z=1+(int)(Math.random()*80);//产生运算符
     4         int q=1+(int)(Math.random()*10);
     5         int w=1+(int)(Math.random()*10);

     .产生算式

     1         if( z<=10 ) {//整数部分
     2            strz = "+";
     3            sum=x+y; 
     4            t=1;
     5         }
     6         if( z>10 && z<=20 ) {
     7              strz = "-";
     8              sum=x-y;
     9              t=1;
    10         }
    11         if( z>20 && z<=30) {
    12             strz = "×";
    13             sum=x*y;
    14             t=1;
    15             }        
    16       
    17         if( z>30 && z<=40 ) {
    18            
    19             strz = "÷";
    20             sum1=String.valueOf(q)+'/'+String.valueOf(w);
    21             t=1;
    22             }
    23         if( z>40 && z<=50 && x<y && q<w ) {//分数部分
    24             strz = "+";
    26             sum1=String.valueOf( x*w+q*y )+'/'+String.valueOf(y*w);
    27             t=1;
    28             }
    29         if( z>50 && z<=60 && x<y && q<w)  {
    30             strz = "-";
    32             sum1=String.valueOf( x*w-q*y )+'/'+String.valueOf(y*w);
    33             t=1;
    34             }
    35         if( z>60 && z<=70 && x<y && q<w)  {
    36             strz = "×";    
    38             sum1=String.valueOf( x*q )+'/'+String.valueOf(y*w);
    39             t=1;
    40             }
    41         if( z>70 && z<=80 && x<y && q<w )  {
    42            strz = "÷";
    43            int qq=x*w;int ww=q*y;
    44            sum1=String.valueOf(qq)+'/'+String.valueOf(ww);
    45            t=1;
    46           }

    .输出与校验

     1         String strx = String.valueOf( x );
     2         String stry = String.valueOf( y );
     3         String strq = String.valueOf( x )+'/'+String.valueOf( y );
     4         String strw = String.valueOf( q )+'/'+String.valueOf( w );
     5         String strsum=String.valueOf( sum );
     6         String ques = " " + strx + strz + stry + "=";
     7         String ques2 = " " + strq + strz + strw + "=";
     8         System.out.print( i );
     9         if( z>0 && z<=30 ) 
    10         {System.out.print("." + ques );}
    11         else {    System.out.print("." + ques2 );}
    12             Scanner input = new Scanner(System.in);
    13             String ans = input.nextLine();
    14             if(z>=0 && z<30 && ans.equals(strsum) )
    15                {
    16             j++;
    17             System.out.print( "正确
    " );    
    18             }
    19             if(z>=0 && z<30 &&!ans.equals(strsum)  )  
    20                 {
    21                 System.out.print("错误!正确答案是:"+strsum +"
    ");
    22                 }
    23           
    30            if( z>=30 && z<80 && ans.equals(sum1) )
    31             {
    32             j++;
    33             System.out.print( "正确
    " );    
    34             }
    35             if(z>=30 && z<80 & !ans.equals(sum1) ) { System.out.print("错误!正确答案是:"+sum1 +"
    ");}

    e.测试运行


    PSP表格


    PSP2.1 Personal Software Process Stages Time (%) Senior Student Time (%)
    Planning 计划 8 6
    · Estimate 估计这个任务需要多少时间 150 160
    Development 开发 80 70
    · Analysis 需求分析 (包括学习新技术) 25 20
    · Design Spec 生成设计文档 5 5
    · Design Review 设计复审 5 5
    · Coding Standard 代码规范 3 3
    · Design 具体设计 30 20
    · Coding 具体编码 80 100
    · Code Review 代码复审 7 5
    · Test 测试(自我测试,修改代码,提交修改) 15 20
    Reporting 报告 10 15
    · 测试报告 3 2
    · 计算工作量 2 1
    · 并提出过程改进计划 3 3

    小结


     程序说难不难,但对我也不简单了,在处理分数运算方面花了比较多时间。特这次代码也还有挺多不完善之处,由于只有一个main函数所以看起来代码比较冗杂~~~

  • 相关阅读:
    KMP算法的理解和代码实现
    关于线程死锁
    PAT1018
    PAT1059
    PAT1009
    PAT1006
    PAT1005
    PAT1004
    PAT1002
    PAT
  • 原文地址:https://www.cnblogs.com/wangrf1/p/6505839.html
Copyright © 2020-2023  润新知