結對編程第三次做業

結對編程做業
GitHub項目地址 https://github.com/15565048308/PairProgramming
搭檔博客地址 https://www.cnblogs.com/XYFWXR/
做業地址 http://www.javashuo.com/article/p-noqnzypb-ga.html

1、PSP表格

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

2、代碼設計及其實現過程

1 程序設計及實現

這個項目是在已有的點名系統的基礎上進一步完成的,實現點名自動將缺課學生寫入指定文檔,並根據缺課次數寫入不一樣的文檔,一次做爲平時考勤加減分和是否重修的依據,減輕老師點名記錄負擔。
(1)隨機點名,判斷該同窗是否缺課
(2)將第一次缺課學生寫入FirstAbsent文檔
(3) 隨機點名,遍歷第一次缺課學生文檔,判斷該同窗是否第二次缺課,如果寫入第二次缺課文檔並給與提示,第三次同理。
(4)課程結束,任課教師翻閱文檔,查看缺勤信息。
結構以下:git

graph LR A1[隨機點名]-->D1{是否第三次缺課} D1--YES-->A2[提示重修 寫入ThirdAbsent名字加T標識] D1--NOT-->D2{是否第二次缺課} D2--YES-->A3[寫入SecondAbsend文檔名字加S標識] D2--NOT-->D3{是否第一次缺課} D3--YES-->A[寫入FirstAbsent文檔名字加F標識] D3--NOT-->A5[下一次隨機點名] A5-->A1
2 如何體現原則的

1)Design By Contract(契約式設計):
契約式設計就是按照某種規定對一些數據等作出約定,若是超出約定,程序將再也不運行
如何體現:在輸入數據狀況下,能獲得與預期同樣的結果
(2)Information Hiding(信息隱藏):
信息隱藏指在設計和肯定模塊時,使得一個模塊內包含的特定信息(過程或數據),對於不須要這些信息的其餘模塊來講,是不可訪問的。
如何實現:信息隱藏就是對信息的封裝,設置訪問權限public、protect private等
(3)Interface Design(接口設計):
對接口的名字,功能,接口與接口間的繼承關係進行設計;好的接口設計能夠加強代碼可讀性,易用性,可更改性。
如何實現:將不一樣的功能程序段寫到不一樣的方法中,而後包裝在同一個類中,加強可讀性,便於調用
(4)Loose Coupling 鬆耦合:
想讓對象與對象間鬆耦合,經過增長抽象類(Abstract Class)或者接口來作到
如何實現:軟件設計的一條基本原則就是「低耦合,高內聚」,下降對象與對象之間的耦合性,便於代碼設計與維護,本程序只增長啦一個方法,全部沒法提現鬆耦合github

3、代碼複審過程

(1)代碼規範參考
(2)編程

4、具體代碼

(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("第一次缺課,第一次重修半價哦!");
                }

效果展現
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述測試

5、附加功能

此代碼是在已有代碼的基礎上進一步完成的,輔助任課教師記錄缺課名單,不足就是不能語音自動播報。若實現自動語音點名,這樣能夠解決在老師嗓子不舒服的狀況下(感冒生病等),也能考勤;編碼

6、單元測試

(1)單元測試代碼
在這裏插入圖片描述
(2)代碼測試結果設計

在這裏插入圖片描述

七,結對過程展現

在這裏插入圖片描述

八,做業完成及感悟

1.0 對於代碼設計很在很大問題,寫程序以前首先肯定我要作什麼,而後開始作,遇到不會的邊學變寫代碼。
2.0 程序中把第一次缺課學生寫入文檔很容易,可是如何判斷是第二次逃課?就須要遍歷第一次逃課名單,每一個同窗都有可能兩次逃課,這樣每一個學生就要單獨寫一個判斷if語句,也有可能第三次缺勤就要再次遍歷第二個文檔,這樣幾乎多寫800多行囉嗦重複代碼。我選擇給缺勤學生名字後加一個字符,判斷名字結尾字符就能知道第幾回逃課,節約幾百行代碼,增長程序的可讀性。
3.0 由於基礎很差,因此完成這個簡單的做業很難,幾乎都是邊學邊寫代碼,可是這樣確實進步的也快! 就是耗費時間比較多。
相關文章
相關標籤/搜索