软件工程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  周汉麟  阅读(215)  评论(4)    收藏  举报