結對編程做業 | |
---|---|
GitHub項目地址 | https://github.com/15565048308/PairProgramming |
搭檔博客地址 | https://www.cnblogs.com/XYFWXR/ |
做業地址 | http://www.javashuo.com/article/p-noqnzypb-ga.html |
PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
---|---|---|---|
Planning | 計劃 | 15 | 30 |
Estimate | 估計這個任務須要多少時間 | 900 | 1020 |
Development | 開發 | 720 | 840 |
Analysis | 需求分析 (包括學習新技術) | 80 | 120 |
Design Spec | 生成設計文檔 | 20 | 15 |
Design Review | 設計複審 (和同事審覈設計文檔) | 15 | 15 |
Coding Standard | 代碼規範 (爲目前的開發制定合適的規範) | 30 | 20 |
Design | 具體設計 | 40 | 60 |
Coding | 具體編碼 | 450 | 500 |
Code Review | 代碼複審 | 30 | 35 |
Test | 測試(自我測試,修改代碼,提交修改) | 100 | 120 |
Test Report | 報告測試報告 | 70 | 120 |
Size Measureme | 計算工做量 | 10 | 5 |
Postmortem & Process Improvement Plan | 過後總結, 並提出過程改進計劃 | 60 | 60 |
合計 | 2445 | 2120 |
關於PSP請參閱鄒欣老師博客html
這個項目是在已有的點名系統的基礎上進一步完成的,實現點名自動將缺課學生寫入指定文檔,並根據缺課次數寫入不一樣的文檔,一次做爲平時考勤加減分和是否重修的依據,減輕老師點名記錄負擔。
(1)隨機點名,判斷該同窗是否缺課
(2)將第一次缺課學生寫入FirstAbsent文檔
(3) 隨機點名,遍歷第一次缺課學生文檔,判斷該同窗是否第二次缺課,如果寫入第二次缺課文檔並給與提示,第三次同理。
(4)課程結束,任課教師翻閱文檔,查看缺勤信息。
結構以下:git
1)Design By Contract(契約式設計):
契約式設計就是按照某種規定對一些數據等作出約定,若是超出約定,程序將再也不運行
如何體現:在輸入數據狀況下,能獲得與預期同樣的結果
(2)Information Hiding(信息隱藏):
信息隱藏指在設計和肯定模塊時,使得一個模塊內包含的特定信息(過程或數據),對於不須要這些信息的其餘模塊來講,是不可訪問的。
如何實現:信息隱藏就是對信息的封裝,設置訪問權限public、protect private等
(3)Interface Design(接口設計):
對接口的名字,功能,接口與接口間的繼承關係進行設計;好的接口設計能夠加強代碼可讀性,易用性,可更改性。
如何實現:將不一樣的功能程序段寫到不一樣的方法中,而後包裝在同一個類中,加強可讀性,便於調用
(4)Loose Coupling 鬆耦合:
想讓對象與對象間鬆耦合,經過增長抽象類(Abstract Class)或者接口來作到
如何實現:軟件設計的一條基本原則就是「低耦合,高內聚」,下降對象與對象之間的耦合性,便於代碼設計與維護,本程序只增長啦一個方法,全部沒法提現鬆耦合github
(1)代碼規範參考
(2)編程
(1)當中止點名事件觸發,調用方法bash
private void btnStop_Click(object sender, EventArgs e) { timerCallName.Stop(); //調用記錄缺課次數的方法 AbsentTems(); }
(2)將隨機被選中的字符串(姓名)帶入新方法中,進行判斷
使用MessageBox類進行提示單元測試
public void AbsentTems() { string Str = stuList[i].Name; if (MessageBox.Show("該學生是否缺課?", "Absent OR Not?", MessageBoxButtons.YesNo) == DialogResult.Yes) {
(3)進行循環,並將缺課學生姓名寫入文檔,以便查看學習
if (Str.EndsWith ("S")==true ) { stuList[i].Name += "T"; string Strpath3 = @"F:\軟件工程文件\GisWinformPractice\WinformControlUse\TestFile\ThirdAbsent"; File.AppendAllText(Strpath3, Str + " "); MessageBox.Show("取消考試資格來年重修!!!"); }
else if (Str.EndsWith ("F") == true ) { //第四次嘗試修改 stuList[i].Name += "S"; string Strpath2 = @"F:\軟件工程文件\GisWinformPractice\WinformControlUse\TestFile\SecondAbsent"; File.AppendAllText(Strpath2, Str + " "); MessageBox.Show("第二次缺課,離重修更進一步!!"); }
else { stuList[i].Name += "F"; string Strpath1 = @"F:\軟件工程文件\GisWinformPractice\WinformControlUse\TestFile\FirstAbsent"; File.AppendAllText(Strpath1, Str + " "); MessageBox.Show("第一次缺課,第一次重修半價哦!"); }
效果展現
測試
此代碼是在已有代碼的基礎上進一步完成的,輔助任課教師記錄缺課名單,不足就是不能語音自動播報。若實現自動語音點名,這樣能夠解決在老師嗓子不舒服的狀況下(感冒生病等),也能考勤;編碼
(1)單元測試代碼
(2)代碼測試結果設計