软件工程15 结对编程作业
项目成员:
-
林振斌 201521123025 博客地址:http://www.cnblogs.com/myfist/p/8645887.html
-
周汉麟 201521123030
-
项目码云地址:https://gitee.com/iamfinethinkyou/pair_programming__four_operations
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不是分熟悉,对测试和覆盖的学习很慢。