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

1、組員職責分工及貢獻分

學號 成員 分工 貢獻分
031602428 蘇路明 整合代碼,抽獎算法實現部分 12
031602401 陳瀚霖 設計算法、文案 8
031602406 程曉宏 提取抽獎名單 12
031602438 葉一帆 抽獎界面、海報界面 15
031602407 何家健 設計算法、文案 6
031602410 黃海潮 設計算法、文案 8
031602429 王錦揚 原型設計 8
031602442 鄭孔宇 撰寫博客,思考附加需求(orz 根本沒時間實現) 8
031602439 俞凱欣 原型設計 9
031602421 林世傑 用戶權重算法設計、實現 14

2、github 的提交日誌截圖

3、程序運行截圖

  • 先按照格式輸入時間信息和其餘信息
  • 點擊抽獎便可生成結果界面
  • 生成文案功能(超時提交)
    git

    4、程序運行環境

  • 程序語言:python
  • 程序運行環境:桌面程序(可在pycharm裏直接運行)github

5、GUI界面

  • 主界面
  • 獲獎名單界面
  • 生成文案界面(超時提交)

6、基礎功能實現

  • 過濾算法:
    1.不過濾:對參與抽獎的用戶不進行過濾。
    2.普經過濾:對權重低於5的用戶進行過濾。
    3.深度過濾:對權重低於10的用戶進行過濾。web

  • 採用的抽獎算法
    1.根據得出的權重 Value 進?行行累加計算得 TotalValue,並根據 key 的個數得出KeyCount.
    2.將每一個?的 Value 除 TotalValue 獲得 T_value(小於 1 的數).
    3.將獲得的 T_value(0.02KeyCount))獲得 P_Value.
    4.取?個 0-1 之間的隨機數 Random
    5.Math 的值爲 Random*(1-P_Value).
    注:權重越高的用戶獲得的P_Value值越大,Math值由隨機數和P_Value值決定,二者權重五五開,權重越高的用戶獲獎的概率越高,同時也保證權重相對低的用戶也有獲獎的機會。算法

  • 抽獎算法2
    因爲時間關係,只實現了由上述算法的抽獎方式,而沒有采用分等獎品的抽獎方式,在此就不贅述了。編程

  • 用戶權重計算方法
    1.系統消息用戶權重爲0,未發言過的用戶權重爲0。
    2.消息發送得越多的用戶權重越高,可是增加也會逐漸下降。
    3.採用用戶參與聊天的次數和發言數量結合來產生權重。例如,用戶A與用戶B發言數量至關,可是用戶A只在某一時段參與聊天,而用戶B在多個時段參與聊天,用戶B的權重有可能會比用戶A高。(在本次算法中,來不及實現)微信

  • 提取某項參與抽獎用戶
    1.用戶過濾,剔除不在抽獎時段參與抽獎的用戶。
    2.用戶去重,用戶屢次發送參與同一抽獎,只佔一份名單。

  • 抽獎算法詳細文檔

7、附加功能實現

  • 自動爬取聊天記錄功能:無
  • 對聊天記錄進行分析與挖掘:無
  • 獲獎名單海報生成,但不能自動分享。
  • 鼓勵有想法且有用的功能:文案以海報方式輸出。

8、遇到的困難及解決方法

  • 蘇路明

    • 遇到的困難和問題:沒有極速開發經驗,團隊技能不一,開發技能不足
    • 解決方法:瞭解題意,根據隊員技能狀況分工,開發硬鋼
    • 吐槽:有壓力纔有動力,然而這本來一早上的任務也過重了吧,一早上的課就變成一早上一夜了,要考試了啊... 本來覺得只有一早上,因此求穩選擇了python做爲團隊開發語言,早知道會推遲,確定選取其餘你們都比較有接觸過的開發語言呀,致使團隊開發力量後期不足。
  • 陳瀚霖

    • 遇到的困難和問題:第一次遇到這種實際應用的功能的算法 有點束手無措。
    • 解決方法:和同窗合做解決。
    • 吐槽:都是全新的挑戰太累了。
  • 程曉紅

    • 遇到的困難和問題:與其餘部分的參數傳遞
    • 解決方法:在算法設計環節主要的解決方法是查閱了網上的算法以後,再和隊友一塊兒討論。在算法設計之初沒有嚴密的定義各部分接口之間傳遞參數的格式,再後面完善的過程當中,算法經歷了重構,比較費時。
    • 吐槽:若是對編程的愛多一點點,那麼就不會那麼難過。
  • 葉一帆

    • 遇到的困難和問題:遇到python tkinter 可視化界面不提供日期控件
    • 解決方法:只好妥協,用其餘方式代替達到差很少的效果
    • 吐槽:若是早知道會推遲時間,就作web服務了
  • 何家健

    • 遇到的困難和問題:一開始不知道具體用什麼算法來解決有點手足無措。
    • 解決方法:百度看了別人的算法,再加上跟同窗討論。
    • 吐槽:算法基本都大同小異。
  • 黃海潮

    • 遇到的困難和問題:設計抽獎算法的時,不一樣人數和分等獎品的設計,算法沒辦法所有適用。
    • 解決方法:關於在qq和微信羣的人數得出人數限制,考慮到算法中從新解決設計。
    • 吐槽:實際應用的算法設計,時間不夠,考慮不夠周全。
  • 王錦揚

    • 遇到的困難和問題:海報以及原型的設計會考慮多種格式,在這方面挺糾結的。
    • 解決方法:通過詳細討論最後選出肯定的方案。
    • 吐槽:若是能回到過去,那麼我不會選這課了。
  • 鄭孔宇

    • 遇到的困難和問題:如何使用python對數據挖掘分析。
    • 解決方法:百度一下啥都有。
    • 吐槽:wordcloud這個庫有毒,下載後又說其餘庫不行,單獨調用又能夠,並且庫下載速度忒慢了,最後還沒完成附加功能2部分,只能淪落到寫博客,我崩潰了。
  • 俞凱欣

    • 遇到的困難和問題:負責了作獲獎海報和抽獎界面的原型設計,圖片的分辨率問題傳給前端不方便寫進GUI界面。
    • 解決方法:用PS改了圖片分辨率。
    • 吐槽:若是時間再長一點,那麼可能作得更好!
  • 林世傑

    • 遇到的困難和問題:python不熟悉。
    • 解決方法:百度啊。
    • 吐槽:這個遊戲太秀了,直接從零開始學習py,語法一堆出錯。

9、PSP表格

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

10、學習進度表

第N周 新增代碼 累計代碼 本週學習時間 累計學習時間(小時) 重要成長
1 200 200 5 5 對Axure的學習
5 200 400 12 17 html,css的學習
7 400 800 8 25 對c中各類函數的學習
8 500 1300 8 33 微信web開發者工具的使用,css,js的學習
11 200 1500 6 39 wxml,wxss的學習和使用
11 300 1800 3 42 python數據過濾和分析生成詞雲圖
相關文章
相關標籤/搜索