1. 程式人生 > >網絡四則運算結對編程

網絡四則運算結對編程

結果 con a + b clas des ring ann 自己的 new

一、結對信息

項目組合 郭煒埕 201521123065 鄭曉麗 201521123066
項目地址 (https://gitee.com/vicheng/four_operations/tree/master)

二、結對編程

1、需求分析

原來的代碼只實現簡單的兩位數之間的加減乘除,而我們為需要改進其功能,實現了三位數的計算,並加了括號

技術分享圖片
改進後界面:
技術分享圖片
改進前類圖:
技術分享圖片
改進後類圖:
技術分享圖片

2、程序設計

技術分享圖片

3、代碼展示

關鍵代碼展示:
···
double g(double a, double b, String m) {

    double v = 0;
    switch (m) {
    case "+":
        v = a + b;
        break;
    case "-":
        v = a - b;
        break;
    case "×":
        v = a * b;
        break;
    case "÷":
        v = a / b;
        break;
    }
    return v;

}


private  List<Object> trans(String s) {
    Stack<Character> op = new Stack<Character>();

    ArrayList<Object> list = new ArrayList<Object>();
    Pattern P = Pattern.compile("[0-9]+(\\.[0-9]+)?"); // 正則表達式來處理帶小數點的數字
    int i = 0;

    while (i < s.length()) {
        char c = s.charAt(i);
        if (c >= ‘0‘ && c <= ‘9‘) {
            String s1 = s.substring(i);
            Matcher m = P.matcher(s1);
            if (m.find()) { // 取匹配到的第一個數字
                s1 = m.group();

                list.add(s1);
            }
            i = i + s1.length();
            continue;
        } else if (c == ‘(‘) {
            op.push(c);
        } else if (c == ‘)‘) {
            char p = op.pop();
            while (p != ‘(‘) {
                list.add(p);
                p = op.pop();
            }
        } else if (c == ‘+‘ || c == ‘-‘) {
            while (!op.isEmpty()
                    && (op.peek() == ‘+‘ || op.peek() == ‘-‘ || op.peek() == ‘ב || op.peek() == ‘÷‘)) {

                list.add(op.pop());
            }
            op.push(c);
        } else if (c == ‘ב || c == ‘÷‘) {
            while (!op.isEmpty() && (op.peek() == ‘ב || op.peek() == ‘÷‘)) {
                list.add(op.pop());
            }
            op.push(c);
        }
        i++;
    }

    while (!op.isEmpty()) {
        list.add(op.pop());
    }
    return list;
}

}
```

4、程序運行

輸入習題數,有選擇語言的功能
簡體中文
技術分享圖片d
繁體中文
技術分享圖片
英文
技術分享圖片

開始
技術分享圖片
進入運算界面,開始計時
技術分享圖片

輸入答案
技術分享圖片

5、測試

(1)、對原先的代碼進行的代碼覆蓋率的測試
技術分享圖片

(2)、對改進後的代碼進行單元測試(主要測試算法)
測試代碼:
技術分享圖片
測試結果:
技術分享圖片
(3)、對改進後的代碼進行覆蓋率測試
技術分享圖片
解讀:類似與於Arithmetic裏面switch語句部分執行,選擇性語句
技術分享圖片
或者檢測異常,如果沒有異常,裏面的語句便不會執行
技術分享圖片
諸如此類的會降低覆蓋率

6、PSP表格

PSP2.1 個人開發流程 預估耗費時間(分鐘)
Planning 計劃 18
· Estimate 明確需求和其他相關因素,估計每個階段的時間成本 10
· Analysis 需求分析 (包括學習新技術) 6
· Design Review 設計復審 4
· Coding Standard 代碼規範 5
· Design 具體設計 20
· Coding 具體編碼 36
· Code Review 代碼復審 7
· Test 測試(自我測試,修改代碼,提交修改) 22
· 並提出過程改進計劃 10

7、碼雲提交記錄

技術分享圖片

8、小結感受

我們的功能還待完善,在輸入答案欄需要輸入一位小數,如果答案是無限不循環小數,還沒法實現保留幾位小數的功能。兩個人結對編程相當於合作,
要互相了解,並完成自己的任務。在團隊中認識到自己的不足,也能看到隊友身上的優點。繼續努力學習

附上圖片
技術分享圖片

網絡四則運算結對編程