码迷,mamicode.com
首页 > 其他好文 > 详细

团队项目:二次开发

时间:2016-04-22 22:23:14      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:

程序源代码已上传至https://github.com/ganjiaping

源程序的文件名为:KuohaoCalcTest.java

 

要求:

团队项目:二次开发

至此,我们有了初步的与人合作经验,接下来投入到更大的团队中去。

也具备了一定的个人能力,能将自己的代码进行测试。接下来尝试在别人已有的基础上进行开发。

 

上一界51冯美欣同学的项目:http://www.cnblogs.com/maxx/

1.每个团队从Github上fork这个项目的源代码;

  https://github.com/RABITBABY/We-have-bing

2.了解、部署、运行这个项目,理解其功能及实现;

3.进行必要的测试,发现软件的bug并记录,并进行bug的排除;

针对以下三步,每个团队发布一篇博客:
  • 简要说明如何下载部署运行这个项目;
  • 补充这个软件的单元测试并提交到Github上;
  • 解释说明找出的bug及修复情况;
  • 列出每个团队成员的个人贡献分。

一、了解、部署、运行这个项目,理解其功能及实现;

用Java-ADT运行这个项目,运行结果如下:

 

二、补充这个软件的单元测试并提交到Github上;

代码如下:

package java;

import static org.junit.Assert.*;

import java.text.DecimalFormat;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class KuohaoCalcTest {

    KuohaoCalc cal;
    @Before
    public void setUp() throws Exception {
        cal=new KuohaoCalc();
    }
    
    int intercePosition = 0; // 记录单个运算数据的长度
     DecimalFormat decimal = new DecimalFormat("#.##");
     @Test
    public final void testInterceResult(String str) {
         String finalresult;
          String result = str;
          char[] numberString = str.toCharArray(); 
          int IndexStart = 0; // 记录“(”的实际数量
          int EndStart = 0; // 记录“)”的实际数量
          Assert.assertEquals(interceptOperation(str, *, ÷),result,1.0);   
    }
    private String interceptOperation(String operationNumber, char a,
               char b) {
        String mess = operationNumber;
          char[] stringOperation = mess.toCharArray();
        // 循环遍历运算字符串,并做相应的运算
          for (int i = 0; i < stringOperation.length; i++) {

           // 判断运算符所在的索引
           if (stringOperation[i] == a || stringOperation[i] == b) {
            if (i != 0) {
             // 运算符前的第一个数
             double num1 = interceptNumIndex(mess.substring(0, i));

             // 记录第一个数据的长度
             int frontPosition = intercePosition;

             // 运算符前的第二个数
             double num2 = interceptNumEnd(mess.substring(i + 1,
               stringOperation.length));

             // 记录第二个数据的长度
             int backPosition = intercePosition;

             // 算完乘除,将结果替换到原来运算的位置,得到新的运算字符串
             String IndexMess = mess.substring(0, i - frontPosition + 1);
             String IndexResult = "";

             // 判断是否运算到最后的结果了
             if (IndexMess.indexOf(+) == -1
               && IndexMess.indexOf(*) == -1
               && IndexMess.indexOf(÷) == -1
               && IndexMess.lastIndexOf(-) == -1)
              IndexMess = "";
             if (IndexMess != "")
              IndexResult = IndexMess.lastIndexOf(-) == IndexMess
                .length() - 1 ? IndexMess.substring(0, i
                - frontPosition) : IndexMess;

             // 组装新的运算字符串
             mess = IndexResult// mess.substring(0,i-frontPosition+1)
               + reslutString("" + stringOperation[i], num1, num2)
               + mess.substring(i + backPosition + 1);
             // 0.111/1212/2/2/2/2/2/2/2
             if (mess.lastIndexOf(-) == 0 && mess.indexOf(+) == -1
               && mess.indexOf(*) == -1
               && mess.indexOf(÷) == -1) {
              break;
             }
             // 回调,继续运算
             return interceptOperation(mess, a, b);// 1+7-5+89/3+4-6*8/2+4-6
            } else
             continue;
           }
           if (i == stringOperation.length - 1) {
            // 递归出口,判断是否还有运算字符串在
            if (mess.indexOf(+) != -1 || mess.indexOf(-) != -1)
             return interceptOperation(mess, +, -);
            break;
           }
          }
          return mess;
    }
    private double reslutString(String operation, double num1,
               double num2) {
          double sumResult = 0;
          if (operation.equals("*"))
           sumResult = num1 * num2;
          if (operation.equals("-"))
           sumResult = num1 - num2;
          if (operation.equals("÷"))
           sumResult = num1 / num2;
          if (operation.equals("+"))
           sumResult = num1 + num2;
          return sumResult;
         }
    private double interceptNumEnd(String str) {
          double a = 0;
          int InrerceIndex = 0;
          char[] stringOperation = str.toCharArray();
          boolean ispas = false; // 记录是否为负数
          for (int i = 0; i < stringOperation.length; i++) {
           switch (stringOperation[i]) {
           case *:
           case ÷:
           case +:
           case -:
            InrerceIndex = i;
            if (i != 0) // 判断该数是否为负数
             ispas = true;
            break;
           default:
            break;
           }
           if (ispas)
            break;
          }
          // 判断此数据是否在运算字符串的最后一位
          if (InrerceIndex == 0) {
           a = Double.parseDouble(str);
           intercePosition = str.length();
           if (ispas)
            intercePosition++;

          } else {
           a = Double.parseDouble(str.substring(0, InrerceIndex));
           // 记录数据的真实长度
           intercePosition = str.substring(0, InrerceIndex).length();
          }
          return a;
         }
    private double interceptNumIndex(String str) {
          double a = 0; // 记录数据
          int InrerceIndex = 0; // 记录运算符的位置
          boolean temp = false; // 记录数据前运算符的状态
          char[] stringOperation = str.toCharArray();
          for (int i = stringOperation.length - 1; i >= 0; i--) {
           switch (stringOperation[i]) {
           case *:
           case ÷:

           case +:
           case -:
            InrerceIndex = i;
            temp = true;
            break;
           default:
            break;
           }
           if (temp)
            break;
          }
          // 判断此数据是否在运算字符串的第一位
          if (InrerceIndex == 0) {
           a = Double.parseDouble(str);
           intercePosition = str.length();
           // if(temp)
           // intercePosition++;
          } else {
           a = Double.parseDouble(str.substring(InrerceIndex, str.length()));
           // 记录数据的真实长度
           intercePosition = str.substring(InrerceIndex, str.length())
             .length();
          }
          return a;
         }


    
}

 运行结果:

技术分享

技术分享

 

三、进行必要的测试,发现软件的bug并记录,并进行bug的排除;

例如找出如下一些bug:

无返回键

几率会出现一样的题目

题目会出现两个一样的答案

暂时无法修复

 

四、列出每个团队成员的个人贡献分

甘佳萍在此次项目对团队的贡献分为6,

李鹏飞在此次项目对团队的贡献分为4,

赵创佳在此次项目对团队的贡献分为4,

林升浩在此次项目对团队的贡献分为6.

 

团队项目:二次开发

标签:

原文地址:http://www.cnblogs.com/gjpg/p/5422937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!