團隊做業第六次—團隊Github實戰訓練

做業格式

隊員學號 隊員姓名 我的博客地址 備註
221600427 Alicesft https://www.cnblogs.com/LinkF/
221600429 哈噻 https://www.cnblogs.com/liujianhao21/
221600436 Xu~ https://www.cnblogs.com/xzh0517/
221600437 AWX https://www.cnblogs.com/hawx/ 隊長
221600438 ZHC https://www.cnblogs.com/mzhc/
221600440 小冰 https://www.cnblogs.com/xiaobing666/
221600441 拉哇吉 https://home.cnblogs.com/u/banglc/


組員分工

  • 221600436 && 221600441
    • 抽獎算法設計與開發
    • 抽獎算法的測試
    • 隨筆編寫
  • 221600437
    • 項目規劃,圖表製做
    • 項目GUI設計,讀取實例Condition類
    • 項目整合
  • 221600438
    • 過濾算法設計與開發
    • 過濾算法的測試
    • 過濾GroupMemberList,剔除不符合抽獎規則者
  • 221600440
    • 文件的讀取塊的代碼編寫
    • 文件數據的處理
  • 221600429
    • 將讀取的文件數據整合並建立待篩選的GroupMemberList
    • GroupMember類 和 Channel類編寫
  • 221600427
    • 項目前期規劃
    • 項目樣例文件分析,尋找
    • 對待測試文件的人工分析整理
    • 對項目函數的測試
    • 整合項目的測試


類圖

咱們在這次實訓做業發佈那會兒便開始進行討論,基本確立了設計的類圖
git

設計數據結構說明

在抽獎流程中設計到的數據結構,咱們也通過了比較激烈的討論,獲得如下結果(可能與具體實現稍有出入)
github

設計流程

咱們討論所得的設計流程圖以下,爲了讓每一個人都切實參與到實訓當中,咱們對流程作了詳細的設計劃分,在實際的設計當中也不斷改進,不斷完善(與最後的設計可能稍有出入)
正則表達式

Github提交日誌截圖




程序運行截圖

Windows7 SP1
算法

WIN10 1809
數組


程序運行環境

Windows 7 以上 具備 .Net 4.6.1 運行環境網絡


GUI界面

咱們主要採用C#的WPF進行界面設計,(馬後炮版的)進階海報也經過了學習了C#的Graphics進行繪製數據結構

抽獎選項

抽獎結果

  • 基礎需求在限定時間內實現了
  • 馬後炮版的海報生成稍晚了一步o(╥﹏╥)o(也已經發布在release v1.1版本中了)
    ide

    關於

    (馬後炮)進階海報實現


鼓勵有想法且有用的功能

做爲一我的均臉黑的團隊,咱們認爲非洲人關懷機制很重要。這種關懷大概就是在聊天記錄中的內容(話題外)關於本身對抽獎系統的吐槽之類的內容可能被系統所識別,「系統」(後稱「阿獎」)認爲你太可憐了,偶爾給你點甜頭;或者阿獎以爲你怎麼一直說它怎麼怎麼不公平,太差勁了,那就繼續臉黑下去吧。讓抽獎系統稍微的具備自我判斷。函數

遇到的困難及解決方法

  • 221600427
    • 困難:測試數據匱乏
    • 解決方法 :本身設置少許測試數據,從網絡上獲取可用測試數據
  • 221600429
    • 困難:成員類與信息類的雙向連接較爲困難,特別是若是採用指針時,邏輯較爲會混亂
    • 解決方法:採用C#的Dictionary類,相似與Java的Map類,能夠直接將一個成員和他的多條信息互相連接
  • 221600436
    • 困難:抽獎算法設計與實現
    • 解決方法 :網上參考他人的抽獎算法,加入與組員討論的idea
  • 221600437
    • 困難:團隊成員分工及接口設計
    • 解決方法 :網上參考他人的作法以及採用UML等方法,先作出類圖等,讓你們依據實現約定好的規則來實現各自功能
  • 221600438
    • 困難:設計篩選條件與接口問題衝突
    • 解決方法:撰寫需求用例文檔,儘量準確地描述應該存在的問題以及解決方案。
  • 221600440
    • 困難:聊天記錄文件中紛繁複雜的字段的讀取和預處理
    • 解決方法 :學習C#正則表達式的用法,將字段讀取統一處理,先用羣暱稱對應身份,對於在同一帳號有不一樣身份和名字的狀況,跟隊友商量在後續對結構化數據再加工,如此更方便
  • 221600441
    • 困難:如何肯定足夠好的隨機數
    • 解決方法 :在網上參考了LCG算法,對於抽獎的人數,設計相對較好的參數,初始種子是用RNGCryptoServiceProvider類隨機生成的。


組員貢獻比例

隊員學號 隊員姓名 我的博客地址 貢獻比例
221600437 AWX https://www.cnblogs.com/hawx/ 16
221600429 哈噻 https://www.cnblogs.com/liujianhao21/ 15
221600440 小冰 https://www.cnblogs.com/xiaobing666/ 15
221600436 Xu~ https://www.cnblogs.com/xzh0517/ 14
221600441 拉哇吉 https://home.cnblogs.com/u/banglc/ 14
221600438 ZHC https://www.cnblogs.com/mzhc/ 14
221600427 Alicesft https://www.cnblogs.com/LinkF/ 12


PSP表格

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


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


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


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


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


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


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


抽獎算法設計

抽獎時獲取符合抽獎資格的用戶的發言次數並乘上一個隨機數作爲權重,這樣一來就算髮言少也不必定就會中獎率低,保證隨機性。而後按順序將每一個用戶的權重構成一個數軸(以一維數組保存),生成一個隨機數,查找隨機數落在哪一個區間並判斷此人是否已中獎,若未中獎,則將此人加入中獎者列表。學習

相關文章
相關標籤/搜索