天天看點

福大軟工1816 · 團隊現場程式設計實戰(抽獎系統)

  • 值得一看的補充版本示範視訊
    • 軟工錦鯉在這裡
  • 程式版本連結及說明
    • 按時送出版本
      • 以基礎功能為主
      • github連結:first version
      • 測試環境說明
        • 本程式在python 3.6以上環境下運作
      • 操作說明:
        • 鍵入抽獎關鍵詞,支援:#我要紅包#或“我要換組“或”我支援調課“
        • 鍵入抽獎關鍵詞後,必須按回車向背景送出關鍵詞
        • 選擇或鍵入抽獎時段
        • 點選”抽獎“按鈕,開始抽獎
        • 點選”停止“按鈕,抽獎完成
        • 獲得抽獎名單
    • 逾時完善版本
      • 在基礎功能基礎上,完善并整合了附加功能
      • github連結:final version
        • 同時需要安裝配置以下内容:
          • jieba分詞
          • WordCloud詞雲包
        • 附上安裝教程部落格連結:
          • jieba分詞安裝:https://www.cnblogs.com/houjun/p/8513108.html
          • WordCloud詞雲包安裝:https://www.cnblogs.com/hanyu258/p/7966657.html
        • 獲得抽獎名單,并輸出資料分析圖
  • 組員職責分工
    • 後敬甲(組長):文案設計、現場協調、進度跟進
    • 葛亮:原型界面設計
    • 黃澤:GUI界面制作
    • 婧茹:附加功能設計
    • 劉浩:GUI界面制作
    • 澤明:随機算法設計+篩選算法設計
    • 文斌:附加功能設計
  • github 的送出日志截圖
    福大軟工1816 · 團隊現場程式設計實戰(抽獎系統)
  • 程式運作截圖
    福大軟工1816 · 團隊現場程式設計實戰(抽獎系統)
  • 程式運作環境

    python 3.6.2

  • GUI界面
    福大軟工1816 · 團隊現場程式設計實戰(抽獎系統)
  • 基礎功能實作
    • 實作了抽獎資格的篩選,算法分為以下幾次篩選:
      • 删除掉不含抽獎關鍵詞的發言記錄(包括空記錄發言)
      • 删除掉包含抽獎關鍵詞的系統發言記錄
      • 删除不在抽獎時間段内的發言記錄
      • 統計發言頻率,删除發言次數低于一定數量的同學的發言記錄
    • 随機抽取算法
      • 首先随機從1-20之間随機生成兩個數a,b
      • 定義函數變換:如a*b,ab,eab。這再對這兩個數a,b機型随機函數變換。重複n次,最後的值可能大于QQ号數,是以對所取到的值取餘。對應文本進行中傳回的set的n個下标元素(即qq号)。取過的qq号就從set中删除,避免重複。
  • 附加功能實作
    • 在送出版本中,未完成完整的附加功能;
    • 在之後完善的版本中,完成了以下資料分析功能:
      • 按時間對聊天記錄進行分析,生成群聊活躍度分析圖
      • 對聊天内容進行分析,随機生成群聊詞彙雲圖
      • 結果如圖:
        福大軟工1816 · 團隊現場程式設計實戰(抽獎系統)
  • 遇到的困難及解決方法
    • 後敬甲
      • 困難:在最初開始的時候,程式設計語言沒有統一好,沒有很仔細地考慮整合代碼的問題,導緻最後的算法無法整合,早上的工作很多都打了水漂。
      • 解決方法:是自己的問題,需要好好反思,在實踐課結束以後,和大家留下來開會,冷靜下來,重新定了方案。經過了半個下午+整個晚上的團隊程式設計,有了最後的結果!大家一起努力的感覺很棒,在此感謝各位隊友!
    • 葛亮
      • 困難:原型設計在溝通上出了問題,實際使用的圖檔和界面的尺寸、圖示位置發生了些沖突。
      • 解決方案:通過耐心地和隊友溝通,修改了原型和圖檔的尺寸,使圖檔和界面相契合。
    • 黃澤
      • 困難:之前沒有接觸過Python Tkinter,現學現賣存在困難。
      • 解決方案:跟着教程走,剛就完事兒了!
    • 婧茹
      • 困難:之前沒有接觸過Python算法,對資料分析不熟悉。
      • 解決方案:不會就百度,百度不了就請教文斌小哥哥~
    • 劉浩
      • 困難:對前端的工作不夠熟悉,在此次程式設計之前僅僅停留在初步了解的階段,做起來不太順手。
      • 解決方案:瘋狂baidu+瘋狂調試
    • 澤明
      • 困難:算法需求需要多層次劃分,文本中QQ昵稱和抽獎時間段限制不好做。
      • 解決方案:算法對文本進行類似于流水線處理,QQ昵稱難以處理,因為時間限制,隻能很遺憾地選擇不處理昵稱,用QQ号來代替。
    • 文斌
      • 困難:自動分享的功能,可以做到自動發送文本消息給個人QQ,但無法做到發送生成的圖檔給QQ群。
      • 解決方案:選擇放棄了這個功能,選擇新的功能:對獲獎名單生成資料雲圖和分析群聊活躍度。
  • 團隊作業貢獻比
成員 分工 貢獻比
敬甲 進度協調+需求分析+部落格、文案撰寫 13
界面原型設計 12
界面制作 14
靖茹
随機算法實作+篩選算法實作 17
15
界面制作+代碼分工
  • 以下部分計入個人得分:
    • PSP表格(個人獨立釋出)(1分)
  • PSP表格
PSP Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘)
Planning 計劃 30 45
?Estimate 估計這個任務需要多少時間
Development 開發 100 120
?Analysis 需求分析 (包括學習新技術) 20
?Design Spec ?生成設計文檔
?Design Review ?設計複審
?Coding Standard ?代碼規範(為目前的開發制定合适的規範)
?Design 具體設計
?Coding 具體編碼 200 300
?Code Review 代碼複審
?Test ?測試(自我測試,修改代碼,送出修改)
Reporting 報告
?Test Repor ?測試報告 10
?Size Measurement ?計算工作量
?Postmortem & Process Improvement Plan ?事後總結, 并提出過程改進計劃
合計 490 550
  • 學習進度表(個人獨立釋出)(1分)
第N周 新增代碼(行) 累計代碼(行) 本周學習耗時(小時) 累計學習耗時(小時) 重要成長
11 80 1240 588 學會了Tkinter