软件工程15 结对编程作业

项目成员:

2.功能改进与扩展

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

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

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

思维导图。

类图

核心代码展示

    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!");//数值范围超出时抛出异常
        }         
   }
}    

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

JUnit单元测试

码云提交

时间分析

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

posted @ 2018-03-25 20:08  周汉麟  阅读(189)  评论(4编辑  收藏  举报