1. 程式人生 > >20172319 結對編程練習_四則運算第二周階段性總結

20172319 結對編程練習_四則運算第二周階段性總結

參考 單獨 html 整數和 表達 sdn while 擴展 生成

20172319 2018.04.23-05.02

結對編程練習_四則運算

第一周階段性總結

目錄

  • 結對對象
  • 需求分析
  • 設計思路
  • 結對評價
  • PSP
  • 參考資料

結對對象:

  • 20172316趙乾宸(駕駛,領航員)
  • 20172319唐才銘(駕駛,領航員)
  • 20172319王文彬(駕駛,領航員)

返回目錄


需求分析:

1.項目內容

以結對小組形式編寫代碼,實現以下功能:

1.自動生成題目
可獨立使用(能實現自己編寫測試類單獨生成題目的功能)
可生成不同等級題目,類似於:
1級題目:2 + 5 =
10 - 5 =
之類的兩個數,一個運算符的題目

2.題目運算(判題)
可獨立使用
實現中綴表達式轉為後綴表達式並計算
判斷用戶答題正誤,並輸出正確結果

3.支持真分數
可獨立使用
實現分數算式的計算

4.題目去重(擴展需求,加分項)
可獨立使用
實現對自動生成表達式的去重:如下
若生成:2 + 5 =
5 + 2 =
為同一題目

2.理解:

  • 能隨機生成n道四則運算題目,n由用戶輸入
  • 支持整數和分數
  • 支持多運算符,運算符個數n可由用戶輸入
  • 能夠判斷正誤,錯誤時能提醒並輸出正確答案
  • 可以計算正確率

返回目錄


設計思路:

  • 由於分工的不同,個人獨立完成項目的各個部分,我負責的是支持真分數部分;
  1. 兩個分數進行運算,題目還得是隨機的,必須考慮每一個的分子分母都是隨機的,因此設置了四個變量每一個變量相應的從(-50)——(50)之間取隨機數
  2. 聲明一個String類變量用以判斷並輸出運算符
 switch (e)  //  運算符號
        {
            case 0:
                s1 = " + ";
                break;
            case 1:
                s1 = " - ";
                break;
            case 2:
                s1 = " × ";
                break;
            case 3:
                s1 = " ÷ ";
                break;
        }

??然後toString輸出等式

s2 = numerator1/denominator1 + s1 + numerator2/denominator2 + " = ";

??然而遇到了問題,輸出的東西雖然是分數,但並不滿足
??真分數,為了保證分數運算是真分數

while (true) {
            numerator1 = generactor.nextInt(51) - 50;
            denominator1 = generactor.nextInt(51) - 50;
            numerator2 = generactor.nextInt(51) - 50;
            denominator2 = generactor.nextInt(51) - 50;
            e = (int)(Math.random()*4);

            a = numerator1;
            b = denominator1;
            c = numerator2;
            d = denominator2;

            if (numerator1 >= denominator1 || numerator2 >= denominator2||denominator1==0||denominator2==0||numerator2==0) //  保證真分數(分子分母不為0,分子小於分母)
                continue;
            else {
                    do {
                        h = a % b;
                        i = c % d;
                        a = b;
                        c = d;
                        b = h;
                        d = i;
                    } while (h != 0 && i != 0);
        }

??運用了輾轉相除法,保證分子與分母互質,從而保證
??真分數

  • 類圖:

技術分享圖片

返回目錄


結對評價:

  • 雖然彼此都有駕駛與領航,但只是某些方面的合作,個人的編碼風格以及代碼沒有註釋,導致有時候並不能看懂夥伴寫的是什麽,各個目的都可以單獨實現,但暫時還沒有連成一個整體。

返回目錄


PSP:

PSP2.1 Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘)
Planning 計劃 60 60
Estimate 估計這個任務需要多少時間 100 100
Development 開發 800
Analysis 需求分析 (包括學習新技術) 100 60
Coding Standard 代碼規範 (為目前的開發制定合適的規範) 30 20
Design UML 設計項目UML類圖 50 30
Coding 具體編碼 30
Code Review 代碼復審 50
Test 測試(自我測試,修改代碼,提交修改) 30
Size Measurement 計算工作量(實際時間 30
Postmortem & Process Improvement Plan 事後總結, 並提出過程改進計劃 30
合計 1240

返回目錄


參考資料:

結對編程練習_四則運算

判斷互質

返回目錄

20172319 結對編程練習_四則運算第二周階段性總結