软件工程个人作业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

描述:找不到符号/

posted on 2016-03-19 12:55  九块九毛九  阅读(151)  评论(0编辑  收藏  举报