1. 程式人生 > >20165214 結隊編程項目-四則運算(第二周)

20165214 結隊編程項目-四則運算(第二周)

除法 分享圖片 運行程序 解決方法 tag 需要 best 手動 內容

20165214 第一次結隊編程項目——四則運算第二周

需求分析

本周的結隊編程想要實現一個四則運算系統,它可以自動生成n個計算題(本周不包括分數),其中n由我們輸入。每輸出一道題目,運行程序的人需要輸入相應的答案,直到最後一道題做完。最後,統計正確率。然後,在這個基礎上可以進行相應的功能擴展,比如語言支。

設計思路

我需要在上周的基礎上對程序進行補充。在題目的生成上,應該再加上括號、÷、/

本周達成:

①能夠隨機生成n道題目,n由我們輸入,最大長度可直接在程序裏面修改;
②支持真分數運算;
③能夠計算正確率並且按照百分比形式輸出,取到小數點後一位。
④支持簡體中文、繁體中文、英語;
⑤能夠選擇參與運算的數字的最大值;

下周的目標(擴展需求):

④能夠查重到一定程度;

真分數(題目生成/題目運算判題)

運行截圖:
技術分享圖片

碼雲鏈接

其中關鍵代碼的解釋我們註釋在代碼中,碼雲裏有體現~

JUnit測試

為了實現JUnit測試,把原本程序的隨機生成算式給改成手動輸入算式判定結果
技術分享圖片

UML圖

這次畫UML圖使用了
技術分享圖片

PSP

PSP2.1 Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘)
Planning 計劃 120 100
· Estimate · 估計這個任務需要多少時間 600 580
Development 開發 60 60
· Analysis · 需求分析 (包括學習新技術) 5 5
· Design Spec · 生成設計文檔 30 30
· Design Review · 設計復審 (和同事審核設計文檔) 30 40
· Coding Standard · 代碼規範 (為目前的開發制定合適的規範) 30 60
· Design · 具體設計 30 35
· Coding · 具體編碼 120 120
· Code Review · 代碼復審 10 30
· Test · 測試(自我測試,修改代碼,提交修改) 120 100
Reporting 報告 30 40
· Test Report · 測試報告 10 5
· Size Measurement · 計算工作量 20 10
· Postmortem & Process Improvement Plan · 事後總結, 並提出過程改進計劃 20 10
合計 1235 1145

遇到的困難與解決方法

在編程時遇到的一些關於類的方法的問題我都用API解決了,這裏總結一下其他的問題~

  • 問題一:在隨機生成題目時,會出現單個數字字符但是有括號的現象,如"(1)",這時候我想用正則表達式,使用String類的repalceAll()方法來覆蓋這種情況。但是,我發現要用正則表達式來匹配"([0-9]+)"老是失敗,程序直接把引號裏面的字符串作為匹配的對象,而沒有發揮[]和+的作用。
  • 問題一解決方案:在不斷地摸索之下,我忽然想到,會不會是因為在正則表達式內使用括號需要用轉義符號來表示呢?於是我嘗試著在括號的前面加上了\,如圖:技術分享圖片

然後發現成功了。

  • 問題二:問題二剛好就是我為什麽要把除法也給歸到第二周的分數的原因。設想一下,如果產生一個算式2%3+1(這裏%是除號),那麽得到的結果也是分數,即這個算式跟2/3+1是一樣的。
  • 問題二解決方案:所以我把除法也給歸到下一周的內容上去了。

  • 問題三:本周內容有一點不足就是沒有加括號,加括號得考慮到很多因素(因為括號不能生成在算式兩邊,不能生成單邊括號,還需要優先進行運算)
  • 問題三解決方案:我已經對於括號的應用有思路了,下周我會開始嘗試,一定要盡力弄出括號。

點評夥伴

本周的合作是基於上周的基礎上的。隨著合作的次數增加,我和隊友的配合也越來越好了,因此結隊編程的效率有了不少提升,關鍵的一點是現在兩個人如果意見上有什麽不統一也比較敢於發表出來,這樣很有利於我們的思考。
這次我的隊友表現也很好~能和我共同學習一起進步~希望今後能夠一直合作下去。

結隊編程照片:
技術分享圖片

20165214 結隊編程項目-四則運算(第二周)