BUAA2020軟工作業(三) 個人專案

2022-08-05 16:03:13 字數 2243 閱讀 8432

專案

內容這個作業屬於哪個課程

2020春季計算機學院軟體工程(羅傑 任健)

這個作業的要求在**

個人專案作業

我在這個課程的目標是

進一步提高自己的編碼能力,工程能力

這個作業在哪個具體方面幫助我實現目標

學習c++,掌握測試方法,掌握軟體工程開發規範和相關工具的使用

其他參考文獻

部落格1教學班級

006專案地址

本次作業內容比較簡單,比較適合軟體工程入門,由於之前沒有用c++寫過程式,所以這次寫起來不算是特別順利,出過很多玄學bug,不過藉助搜尋引擎的幫助,我的問題都解決了。通過這次作業我也正好入門了c++的物件導向機制,為以後的作業打下基礎。

psp2.1

personal software process stages

預估耗時(分鐘)

實際耗時(分鐘)

planning

計劃· estimate

· 估計這個任務需要多少時間

2020

development

開發· analysis

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

6060

· design spec

· 生成設計文件

3050

· design review

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

2020

· coding standard

· **規範 (為目前的開發制定合適的規範)

2010

· design

· 具體設計

3030

· coding

· 具體編碼

240300

· code review

· **複審

3020

· test

· 測試(自我測試,修改**,提交修改)

180240

reporting

報告· test report

· 測試報告

5030

· size measurement

· 計算工作量

1010

· postmortem & process improvement plan

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

1010

合計

700

800

拿到這個題之後,首先明白這是一道求交點的題,根據數學知識即可得出求交點的公式:

採用o(n^2)的演算法,每新增一條直線或者一個圓,就和之前輸入的所有直線和圓進行交點計算,並儲存到相應容器中,最後統計儲存的交點數量。

本**共有4個類:

circle:儲存圓方程的引數;

intersect:儲存所有直線、圓和交點。

採用stl中的set儲存,set中的insert方法可以在插入新元素的同時自動去除重複的元素,由於本次作業的交點是浮點數,所以在**中過載了set中的《運算子,在進行浮點數比較時忽略極小的數值差異,達到去重的目的。

對於以下每種情況分別手動編寫測試資料:

本次作業我在演算法上沒有什麼改進的地方,主要是一些細節的改善,比如減少重複的函式呼叫等等。

這裡是直接套公式計算交點座標並儲存在intersect中。

直接翻譯上面提到的演算法就可以,這裡要注意的是,答案可能是兩個相同的點也可能是兩個不同的點,由於set有去重的功能,這裡統一按兩個不同點的情況來計算。

在計算出交點連線的方程後直接呼叫直線和圓的交點方法即可。