软件工程15 结对编程作业

项目成员:

1109887-20180325205150135-978657417.png

2.功能改进与扩展

需求分析:针对现有代码的改进分析,功能分析

  • 实现简单的加减乘除算术出题运算,增添更多功能。

添加乘方运算和开根号运算

思维导图。

1109887-20180325191658231-855688254.png

类图

1109887-20180325203349395-1699001790.png

核心代码展示

    if(s.indexOf("^")>-1){ 
        int i=s.indexOf("^");            
        if(s.indexOf("^",i+1)==i+1){           
            throw new IllegalArgumentException("Input error! Don't like 1^^1");//格式错误时抛出异常
           }else{
               pow(s);
           } 
    }
    if(s.indexOf("√")>-1){
        int i=s.indexOf("√");            
        if(s.indexOf("{",i+1)==i+1){           
            throw new IllegalArgumentException("Input error! Don't like 1√√1");//格式错误时抛出异常
           }else{
               sqrt(s);
           } 
    }

public void sqrt(String s)       //开根
{   int i1=s.indexOf("√")+1;
    String str=s.substring(i1);      
    if(Integer.parseInt(str)>=0)         
            {
             double a=Integer.parseInt(str);            
             result = Math.sqrt(a) +"";                 
              }                     
        else{
           throw new IllegalArgumentException("overrun!");//数值范围超出时抛出异常
        }         
    
}

    public void pow(String s)     //乘方
{
    String[] str=s.split("\\^"); 
     if(str[0].indexOf("/")>-1 || str[1].indexOf("/")>-1)//分数
     {
        String[] str1=str[0].split("\\/");
        String[] str2=str[1].split("\\/");
        if(Integer.parseInt(str1[1]) != 0)//分母不为零
        {
            int a1=Integer.parseInt(str1[0]);
            int a2=Integer.parseInt(str1[1]);
            int b=Integer.parseInt(str[1]);
            double r1=Math.pow(a1, b);
            double r2=Math.pow(a2, b);
            result =simplefraction((int)r1,(int)r2);
        }else{
            throw new IllegalArgumentException("Divisor cannot be zero!");//除数为零时抛出异常
        }
     }
    else{
    if( Integer.parseInt(str[0])<1000&&Integer.parseInt(str[1])<1000&&Integer.parseInt(str[0])>-1000&&Integer.parseInt(str[1])>-1000)
     
             {int a=Integer.parseInt(str[0]);
              int b=Integer.parseInt(str[1]);                
              result = Math.pow(a,b) +"";
             
              }                     
        else{
           throw new IllegalArgumentException("overrun!");//数值范围超出时抛出异常
        }         
   }
}    

程序运行:程序运行及每个功能的使用截图。

1109887-20180325195553300-1196647564.png

JUnit单元测试

1109887-20180325195630755-1422393798.png

1109887-20180325195649076-566600966.png

1109887-20180325195658624-39944713.png

1109887-20180325195710473-79538731.png

1109887-20180325195727695-1397922138.png

1109887-20180325195739874-1741634108.png

码云提交

1109887-20180325200123609-1591895434.png

时间分析

1109887-20180325200144646-1848540245.png

实验小结:
时间psp表在cmd markdown上表格可以显示,但是到博客园编辑就不行了,所以用的截图
Jprofilter不是分熟悉,对测试和覆盖的学习很慢。

转载于:https://www.cnblogs.com/lamfinethinkyou/p/8646212.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值