1. 程式人生 > >福大軟工1816:團隊現場程式設計實戰(抽獎系統)

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

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

組長部落格連結

本次作業連結

隊員職責分工

團隊成員 分工
張揚 預處理演算法、抽獎演算法、解決其他問題、本次部落格撰寫
韞月 "建立抽獎活動"頁面的開發、“已釋出”“已結束”等頁面的動態生成
愈明 "建立抽獎活動"頁面的開發、彈窗互動
文婧 "已釋出"、"已結束"頁面的開發
地秀 "已釋出"、"已結束"頁面的開發
全炯 各個頁面的整合、頁面切換、使用QSS進行美化
俊彥 輔助預處理演算法的開發、輔助抽獎演算法的設計
李翔 資料庫搭建、資料庫介面設計、Github合併的管理
加偉 資料庫搭建、資料庫介面設計
澤波 隨機演算法設計

github 的提交日誌截圖

程式執行截圖

由於我們對pyqt的不熟悉,最終未能開發出可用的GUI(沒整合到一起)。我們開發出了以下功能:

  • 帶有權重計算的自適應抽獎演算法

  • 對聊天記錄的處理演算法(預處理演算法)

  • 抽獎活動建立頁面

  • 彈窗式三頁面切換功能

  • 基於中文分詞技術的聊天內容分析並生成詞雲

  • 基於對Smart QQ抓包的實時聊天記錄儲存模組

  • 用於支援抽獎系統的資料庫模組

  • 簡單的已釋出、已結束介面

    程式執行環境

    • Python 3.6
    • 依賴庫PyQt5qqbotjiebawordcloud

GUI介面

  • 初始頁面

  • 建立活動頁面

基礎功能實現

僅實現後臺演算法,未實現GUI部分

  • 抽獎演算法

附加功能實現

  • 聊天記錄分析並生成詞雲(對某OpenCV影象處理群聊天記錄的分析結果)

  • QQ聊天記錄自動爬取

    鼓勵有想法且有用的功能

  • 抽獎資訊自動生成圖片

遇到的困難及解決方法

  • 張揚

    • 遇到的困難:團隊對PyQt的不熟悉
    • 解決方法:問題一時間得不到解決,只能說大家的學習程度還不夠,後面要接著學。同時自己也會轉到介面開發上面。
  • 文婧

    • 遇到的困難:遇到的最大的困難是對PyQt的不熟悉,沒法用它寫出自己想要的介面。
    • 解決方法:上網搜教程,問隊友,但是最終還是沒辦法解決這個困難,沒能實現自己負責的介面,非常對不起團隊。
  • 韞月

    • 遇到的困難:
      1.從前端到後端的繼承不熟悉
      2.元件的動態生成不熟悉
      3.總之pyqt不熟悉
      4.pycharm的.ui轉.py的功能突然ERROR
    • 解決方法:
      還能怎麼辦,找度娘啊啊啊啊!
      瘋狂找案例,瘋狂搬磚,瘋狂Ctrl+R試執行,瘋狂傳ui檔案給隊友再接收py檔案
  • 愈明

    • 困難1:最初設計GUI介面時,對產品功能分析不夠明確,導致初版介面邏輯混亂。
      解決方法:通過和隊友討論,更加明確產品功能,重新規劃介面,解決了問題。
    • 困難2:對pyqt具體程式設計不夠熟悉,導致ui介面設計進展緩慢。
      解決方法:現場學習教程,請教隊友,努力加快進度。
  • 地秀

    • 用pyqt設計介面,但是pyqt不是非常熟練

    解決方法:這是非常難受的一件事情,只好一邊百度一邊做設計

    • UI設計的時候,.ui檔案轉成.py檔案,要在pycharm安裝外掛,但是一直安裝不成功

    解決方法:按照百度的方法,一步一步操作,但是不對,只好一遍一遍重複操作,最後發現是自己粗心,英文字母打錯了,以後可以直接複製就直接複製吧┭┮﹏┭┮

  • 澤波

    • 遇到困難:python使用不熟悉,配置有問題
  • 全炯

    • 困難
      PyQt掌握的情況並不夠好,會和能在短時間內做出來是兩個概念。
      討論和設計必不可少,但要建立在較好掌握的情況下,否則合併的時候會很痛苦
    • 解決
      知恥而後勇,奮力掌握並精通
      更加註重細節
      要學會找輪子
  • 俊彥

    • 困難:
      PyQt掌握不好
    • 解決:
      轉向協助後端程式碼的開發
  • 李翔

    • 遇到的困難:資料庫介面需要有返回值時的語句出現問題,SQL語句的傳參問題
  • 加偉

    • 困難:
      • 做資料庫介面的函式時,若需要返回資料庫中的值,會造成返回值與關閉資料庫連線的衝突。
      • 在介面中直接傳引數會出現問題。
      • 做資料庫的時候不清楚前端的需要,導致對接的時候需要做較大更改。
    • 解決:
      • 返回值是sqlite3類,他在關閉資料庫連線後就不存在了。因此要把它存成其他形式儲存。
      • 需要用到佔位符‘ ?’傳入的引數記得後面加+
      • 多次討論後得到解決

馬後炮

  • 俊彥:如果往前推幾天,那麼我會多放一些時間來進行PyQt的學習
  • 李翔:如果沒有這次現場程式設計開發,那麼我就任然菜的安詳
  • 愈明:如果再給我一次機會,我一定不會選擇進實驗班orz
  • 文婧:如果可以回到過去,那麼我一定邊看教程邊動手
  • 韞月:沒有馬後炮,一切都是自己太菜了
  • 張揚:如果可以重來,我想重新考慮一下要不要選這門課

PSP表格

個人PSP

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

學習進度表

個人學習進度條

第N周 新增程式碼(行) 累計程式碼(行) 本週學習耗時(小時) 累計學習耗時(小時) 重要成長
2 413 413 21 21 學用git;接觸vs效能分析、單元測試功能;
3 0 413 16.5 37.5 閱讀《構建之法》;結對配合;學習NABCD模型;接觸原型開發工具
4、5 1061 1474 23.5 61 結對配合經驗up;瞭解接觸爬蟲
6-9 500 1974 100 161 團隊合作經驗up;學習Python;學習PyQt
10 265 2239 25 186 繼續學習PyQt,開始動手實踐
……