20165214 結隊編程項目-四則運算

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

需求分析

本週的結隊編程想要實現一個四則運算系統,它能夠自動生成n個計算題(本週不包括分數),其中n由咱們輸入。每輸出一道題目,運行程序的人須要輸入相應的答案,直到最後一道題作完。最後,統計正確率。git

設計思路

首先,個人想法是:因爲本週不包括分數,因此我乾脆把除法的運算直接歸到下一週的分數的運算中去(由於在數學中,兩數相除也能夠直接表示爲分數的方式,每個整數均可以表現爲分數的形式)。因此本週結隊編程我和個人隊友兩我的就只實現加減乘,除法咱們會在下週實現的。
而後,我把程序分了三個類:主類進行運算,另外兩個類分別隨機產生數字和操做符。(這裏有一點很差就是沒有把計算的過程從主類中提取出來)
而後分別對三個類進行實現。正則表達式

本週達成:

①可以隨機生成n道題目,n由咱們輸入,最大長度可直接在程序裏面修改;
②可以計算正確率而且按照百分比形式輸出,取到小數點後一位。編程

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

①加上分數運算;
②加上括號運算;
③支持簡體中文、繁體中文、英語;(我的以爲這個是最簡單的)
④可以查重到必定程度;
⑤可以選擇計算的數字範圍,輸入1隨機生成數的範圍是1~10,輸入2隨機生成數的範圍是1~50,輸入3隨機生成數的範圍是1~100。學習

整數/多運算符(題目生成/題目運算判題)

運行截圖:
測試

碼雲連接

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

JUnit測試

爲了實現JUnit測試,把本來程序的隨機生成算式給改爲手動輸入算式斷定結果
debug

UML圖

在畫這個圖的時候就一直以爲本身把計算過程放在主類真是太很差了。。不符合高內聚低耦合的標準,下週必定改正。
設計

PSP

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

遇到的困難與解決方法

本次編程遇到的不少問題我都藉助API解決了,不得再也不次感慨,API真是太好用了!有時候一些類的方法忘記了也不用費不少時間去找書,直接使用API就能夠了。代碼規範

  • 問題一:編程過程當中一個比較難的問題是,Java沒有提供可以直接把字符串中的運算符號提取出來直接參與運算的方法
  • 問題一解決方案:我調用String類的spilt(),利用正則表達式,分隔字符串從而分別把運算符號和數字抽取出來,再利用equals()方法來與運算符號進行匹配就能夠了。code

  • 問題二:問題二恰好就是我爲何要把除法也給歸到第二週的分數的緣由。設想一下,若是產生一個算式2%3+1(這裏%是除號),那麼獲得的結果也是分數,即這個算式跟2/3+1是同樣的。
  • 問題二解決方案:因此我把除法也給歸到下一週的內容上去了。

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

點評夥伴

本次個人夥伴對咱們的小組作出了很大的貢獻,咱們兩一塊商量,一塊編程,互相交流程序實現的方法,並一塊兒debug。感受仍是挺不錯的,有人結伴學習,互相監督,在一我的想偷懶的時候,另外一我的就會拉一把,防止偷懶。並且每一個人都有本身的優點,在一塊兒工做的時候互相取長補短,對個人成長也有很大的幫助。下週我將會和個人隊友再次挑戰本身!

相關文章
相關標籤/搜索