1. 程式人生 > >課後作業2~

課後作業2~

1.Fork到自己遠端倉庫的碼雲專案地址https://gitee.com/wdongx/personal_project41656.git
2.PSP表格。表格中的任務估計花費時間以及實際花費時間。

PSP2.1

任務內容

計劃完成需要的時間(min)

實際完成需要的時間(min)

Planning

計劃

30

50

Estimate

估計這個任務需要多少時間,並規劃大致工作步驟

30

50

Development

開發

300

410

Analysis

需求分析 (包括學習新技術)

60

60

Design Spec

生成設計文件

30

30

Design Review

設計複審 (和同事稽核設計文件)

10

10

Coding Standard

程式碼規範 (為目前的開發制定合適的規範)

20

20

Design

具體設計

30

50

Coding

具體編碼

60

80

Code Review

程式碼複審

60

120

est

測試(自我測試,修改程式碼,提交修改)

30

40

Reporting

報告

120

180

Test Report

測試報告

60

50

Size Measurement

計算工作量

30

100

Postmortem & Process

Improvement Plan

 

事後總結 ,並提出過程改進計劃

30

30

Summary

合計

450

640

3.解題思路描述。即剛開始拿到題目後,如何思考,如何找資料的過程。
  3.1:仔細審題,看清題目要求。
  3.2:確定語言比如(java,python,c#),然後我選擇java語言進行編寫,編輯器為myeclipse2014.
  3.3:Fork 碼雲 專案 到自己的倉庫,在碼雲倉庫中新建一個學號為名的資料夾,然後clone到本地。
  3.4:在Main.java中進行正式編寫專案。
  3.5:分別建立了6個類,
    3.5.1其中主類中呼叫CalTest01()方法,實現向控制檯進行錄入功能,並有相應的提示.
    3.5.2CalTest01()方法呼叫CalcAS()方法。把使用者錄入的算式以+/-進行切分然後存到arr陣列中
    3.5.3對arr進行遍歷,並對算式進行優先順序的判斷,若含有*或/,陣列進入CalcMD()方法。
    3.5.4在CalcMD()方法中,遍歷已處理過的字串str,若條件為*進入CalTest02()類中,從而進入到 CalculatorMul()類中,返回x1*y1
    3.5.5進行除法運算同上。
  3.6:在百度上查詢關於計算器方面的對字串進行切分的方法,判斷是否包括字元如contains().等等。

4.程式對錶達式型別的支援程度。描述你的程式對不同型別表示式求值的支援程度

  4.1能支援兩個運算元,一種運算子

  4.2能支援兩個運算元的簡單四則運算(只有一個操作符)。

  4.3能支援簡單混合四則運算(最多有3個操作符,沒有括號)。

 

5.設計實現過程。設計包括程式碼如何組織,比如會有幾個類,幾個函式,他們之間關係如何,關鍵函式是否需要畫出流程圖?單元測試是怎麼設計的?
  本次程式碼一共含有6個類:
  Main():主類,與檔名一致。

  CalTest03():為計算器的父類,含有x1,x2的get,set方法。

  CalculatorAdd():繼承CalTest03()類,返回x1+x2。


  CalculatorSub():繼承CalTest03()類,返回x1-x2。

同上
  CalculatorMul():繼承CalTest03()類,返回x1*x2。

同上
  CalculatorDiv():繼承CalTest03()類,返回x1/x2。

同上
  本次程式碼一共含有5個函式:
    main():對使用者進行提示說明,並呼叫CalTest01()。
    CalTest02():傳值x1,s,y1。若條件為+/-/*//,分別到不同的CalculatorAdd(),CalculatorSub(), CalculatorMul(),CalculatorDiv()類中。


    CalTest01():對控制檯進行錄入,並呼叫CalcAS()。


    CalcMD():判斷優先順序,對乘或除進行切分。把*或/存到臨時變數temp中,temp=x1*//y1.


    CalcAS():對+/-進行切分,然後對陣列arr進行遍歷,判斷str是否含有*//若有呼叫CalcMD(),若為空,返回值為 0.,對str進行遍歷,為+,臨時變數result= x1+y1,為-,臨時變數:result=x1-y1。

6.記錄在改程序序效能上所花費的時間,描述你改進的思路,並展示一張效能分析圖(由VS 2017的效能分析工具自動生成),並展示你程式中消耗最大的函式。
  1.程式剛開始的框架很好實現。
  2.第一個計算器版本是以陣列索引進行切分,這就只能是兩個數進行相加,有很大的侷限性。
  3.有很大的弊端,這次通過+或-進行切分。成功解決此問題。
  4.解決此問題,花費了較長時間,進行了大量的更改程式碼。
  5.程式中消耗最大的函式應該是CalcAS(),需要進行切分判斷,分別對arr陣列進行遍歷,和str進行遍歷。並呼叫函式方法。
7.結合在構建之法中學習到的相關內容與個人專案的實踐經歷,撰寫解決專案的心路歷程與收穫。

  7.1.剛開始的分析太簡單,有很多的不完善之處,然後直接進行程式碼的編寫,導致後來花了更長的時間去改正。

  7.2.合理全面的分析。