• 软件工程个人作业02


    可怜的二柱子同学,老师又对他的自动出题系统提出了新的要求:
    1、题目避免重复; 2、可定制(数量/打印方式); 3、可以控制下列参数:
    是否有乘除法;
    是否有括号(最多可以支持十个数参与计算);
    数值范围;
    加减有无负数;
    除法有无余数!

    结对:张一博,何琳琳

    设计思想

    需求分析:二年级100以内加减乘除,无负数,无余数,无括号

                  三年级,无负数,无余数

                  四年级,无负数

                  五年级,无负数

                  六年级,有负数

    输入:输入选择;

    选择内容:选择要打印的题目数量,取值范围最大值和最小值,加减有无负数,有无乘除法,除法有无余数,有无括号

    加工:设置for循环,num为要打印的题目数量

          是否有乘除法:只需设置运算符随机出数的范围在0-1(+,-)之间还是0-3(+,-,*,/)之间

          数值范围:即四则运算随机出数的范围最大值,最小值

         加减有无负数:对随机生成的数字进行运算,如果进行加/减运算之后,有负数,则根据选择进行保留或舍弃

         是否有括号:需要利用栈来进行括号的添加···(但是并没有弄懂),这里分了两种简单情况

    输出:运算式

    源程序代码

    import java.util.*;
    import java.util.Random;
    
    public class Calculate {
    
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
             Scanner in = new Scanner(System.in);
             Random random=new Random();
             int p=0;
             int t;
             System.out.println("请输入要打印的题目数量:");
             int num=in.nextInt();
             System.out.println("请输入取值范围最大值:");
             int max=in.nextInt();
             System.out.println("请输入取值范围最小值:");
             int min=in.nextInt();
             System.out.println("请输入加减有无负数(1:有  0:无):");
             int neg=in.nextInt();
             System.out.println("请输入有无乘除法(1:有  0:无):");
             int mul=in.nextInt();
             System.out.println("请输入除法有无余数(1:有  0:无):");
             int rem=in.nextInt();
             System.out.println("请输入有无括号(1:有  0:无):");
             int bra=in.nextInt(); 
            for(int i=0;i<num;i++)
            {
            int a=(int)(Math.random()*(max-min+1)+min);
            int b=(int)(Math.random()*(max-min+1)+min);
            int c=(int)(Math.random()*(max-min+1)+min);
            int d=(int)(Math.random()*(max-min+1)+min);
            if(bra==0)
            {
            if(mul==1)
            {
                 p=(int)(Math.random()*4);
            }
            if(mul==0)
            {
                p=(int)(Math.random()*2);
            }
            
                 switch(p)
                 { 
                 case 0:
                    System.out.println(a+"/"+b+" + "+c+"/"+d+"=");
                    break;
                 case 1:
                    if(neg==0)//减法没有负数
                    {
                         if(a<c)
                         {
                               t=a;
                               a=c;
                               c=t;
                         }
                         System.out.println(a+"/"+b+" - "+c+"/"+d+"=");
                         break;
                     }
                     else
                     {
                          System.out.println(a+"/"+b+" - "+c+"/"+d+"=");
                           break;
                     }
                case 2:
                   System.out.println(a+"/"+b+" * "+c+"/"+d+"=");
                   break;
                case 3:
                    if(b==0||d==0)//分母为零则不计入总数
                    {   
                        i=i-1;
                        break;
                    }
                    else if(rem==0)//除法没有余数
                    {
                        if(a/b%c/d==0)
                        {
                            System.out.println(a+"/"+b+" / "+c+"/"+d+"=");
                            break;
                        }
                        else
                        {
                            i=i-1;break;
                        }
                    }
                    else if(rem==1)//除法有余数
                    {
                        if(a/b%c/d!=0)
                        {
                            System.out.println(a+"/"+b+" / "+c+"/"+d+"=");
                            break;
                        }
                        else
                        {
                            i=i-1;
                            break;
                        }
                    }
                
                 if((i+1)%num==0)
                    {
                     System.out.println();
                    }
                    else
                    {
                        System.out.println(" ");
                    }
                 }
            }
                 else
                 {
                     if(mul==1)
                        {
                             p=(int)(Math.random()*4);
                        }
                        if(mul==0)
                        {
                            p=(int)(Math.random()*2);
                        }
                        
                             switch(p)
                             { 
                             case 0:
                                 System.out.println(a+"/"+"("+b+" + "+c+")"+"/"+d+"=");
                                break;
                             case 1:
                                if(neg==0)//减法没有负数
                                {
                                     if(a<c)
                                     {
                                           t=a;
                                           a=c;
                                           c=t;
                                     }
                                     System.out.println(a+"/"+"("+b+" - "+c+")"+"/"+d+"=");
                                     break;
                                 }
                                 else
                                 {
                                     System.out.println(a+"/"+"("+b+" - "+c+")"+"/"+d+"=");
                                       break;
                                 }
                            case 2:
                                System.out.println(a+"/"+"("+b+" * "+c+")"+"/"+d+"=");
                               break;
                            case 3:
                                if(b==0||d==0)//分母为零则不计入总数
                                {   
                                    i=i-1;
                                    break;
                                }
                                else if(rem==0)//除法没有余数
                                {
                                    if(a/b%c/d==0)
                                    {
                                        System.out.println(a+"/"+"("+b+" / "+c+")"+"/"+d+"=");
                                        break;
                                    }
                                    else
                                    {
                                        i=i-1;break;
                                    }
                                }
                                else if(rem==1)//除法有余数
                                {
                                    if(a/b%c/d!=0)
                                    {
                                        System.out.println(a+"/"+"("+b+" / "+c+")"+"/"+d+"=");
                                        break;
                                    }
                                    else
                                    {
                                        i=i-1;
                                        break;
                                    }
                                }
                            
                             if((i+1)%num==0)
                                {
                                 System.out.println();
                                }
                                else
                                {
                                    System.out.println(" ");
                                }
                             }
                        }
                 }
        }
        
    }
                

    运行结果截图

    个人总结:这次程序结对完成,何同学的编程思路更清晰,能力更强,在讨论过程中,我认识到自己的不足,题目看起来简单,实践起来却很难,在何同学的帮助下,我对程序有了大致的认识,但是部分功能还是无法实现,我上网查了一些程序,但有的还是看不懂,希望以后可以在不断练习中进步。

     项目计划总结

    姓名:张一博     日期:2016/3/19

     

    听课

    编写代码

    阅读课本

    准备考试

     讨论设计思想

     查阅资料

    日总计

    周日3.13

     

     

     

     

     

     

     

    周一3.14

    100

     

    20

     

     

     

    120

    周二3.15

     

    60

     

     

     

     30

    90

    周三3.16

     

     60

     20

     

     30

     30

    140

    周四3.17

     

    60

     

     

     

     20

    80

    周五3.18

     

    60

     20

     

     30

     

    110

    周六3.19

     

     180

     

     

     

     60

     240

    周总计

    100

    420

    60

     

     60

     140

    780

    时间记录日志                                     

    学生:张一博                   日期:2016/3/19

    教师:王建民                    课程:软件工程概论

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

    C

    U

    3/14

    8:00

    10:00

    20

    100

    听课

    下课,休息,上厕所

     

     

     

    15:00

    15:20

    0

    20

    读构建之法

     

     

     

    3/15

    14:30

    16:30

    30

    90

    写程序,查资料

    聊天,打电话

     

     

    3/16

    16:20

    19:40

    60

    140

    讨论设计思想查资料,阅读构建之法,写程序

    吃饭,休息,打水,上厕所

     

     

    3/17

    15:00

    17:00

    40

    80

    编程序,查资料

    休息,玩手机

     

     

    3/18

    15:00

    17:30

    40

    110

    编程序,阅读构建之法,讨论

    吃饭

     

     

     3.19

     9:00

     11:40

     20

     140

     查资料,写代码

     吃饭

     

     

     

     13:00

     15:30

     50

     100

     

     聊天,洗衣服

     

     

    缺陷记录日志

    姓名:张一博       日期:2016/3/19

    教师:王建民      程序:四则运算2

    日期

    编    号

    类    型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

    3.16

    1

    20

    编码

    编译

    30s

    描述:漏掉符号

    3.17

    2

    10

    设计

    编译

    5min

    描述:需求分析

    3

    10

    编码

    编译

    2min

    描述:局部变量重复,变量忘记初始化

    3.19

    4

    20

    编码

    编译

    3min

    描述:没有为类型Math定义方法random

    5

    20

    编程

    编译

    3min

    描述:找不到符号/

  • 相关阅读:
    梯度
    正则化、方差、偏差
    K近邻python
    感知器python
    使用 Admission Webhook 机制实现多集群资源配额控制
    微众银行案例|容器化实践在金融行业落地面临的问题和挑战
    一个优秀的云原生架构需要注意哪些地方
    如何根据不同业务场景调节 HPA 扩缩容灵敏度
    如何使用容器镜像服务 TCR 轻松实现容器 DevOps
    腾讯云联合多家生态伙伴,重磅开源 SuperEdge 边缘容器项目
  • 原文地址:https://www.cnblogs.com/qianxia/p/5294869.html
Copyright © 2020-2023  润新知