福大软工1816 · 团队现场编程实战(抽奖系统)
队员职责分工
团队成员 | 分工 |
---|---|
张扬 | 预处理算法、抽奖算法、解决其他问题、本次博客撰写 |
韫月 | "创建抽奖活动"页面的开发、“已发布”“已结束”等页面的动态生成 |
愈明 | "创建抽奖活动"页面的开发、弹窗交互 |
文婧 | "已发布"、"已结束"页面的开发 |
地秀 | "已发布"、"已结束"页面的开发 |
全炯 | 各个页面的整合、页面切换、使用QSS进行美化 |
俊彦 | 辅助预处理算法的开发、辅助抽奖算法的设计 |
李翔 | 数据库搭建、数据库接口设计、Github合并的管理 |
加伟 | 数据库搭建、数据库接口设计 |
泽波 | 随机算法设计 |
github 的提交日志截图
程序运行截图
由于我们对pyqt
的不熟悉,最终未能开发出可用的GUI(没整合到一起)。但有较为简陋的版本作为备选方案。我们开发出了以下功能:
-
带有权重计算的自适应抽奖算法
-
对聊天记录的处理算法(预处理算法)
-
抽奖活动创建页面
-
弹窗式三页面切换功能
-
基于中文分词技术的聊天内容分析并生成词云
-
基于对Smart QQ抓包的实时聊天记录保存模块
-
用于支持抽奖系统的数据库模块
-
简单的已发布、已结束界面
程序运行环境
- Python 3.6
- 依赖库
PyQt5
、qqbot
、jieba
、wordcloud
GUI界面
-
初始页面
-
创建活动页面
基础功能实现
仅实现后台算法,未实现GUI部分
-
抽奖算法
附加功能实现
-
聊天记录分析并生成词云(对某OpenCV图像处理群聊天记录的分析结果)
-
QQ聊天记录自动爬取
鼓励有想法且有用的功能
-
抽奖信息自动生成图片
遇到的困难及解决方法
-
张扬
- 遇到的困难:团队对PyQt的不熟悉
- 解决方法:问题一时间得不到解决,只能说大家的学习程度还不够,后面要接着学。同时自己也会转到界面开发上面。
-
文婧
- 遇到的困难:遇到的最大的困难是对PyQt的不熟悉,没法用它写出自己想要的界面。
- 解决方法:上网搜教程,问队友,但是最终还是没办法解决这个困难,没能实现自己负责的界面,非常对不起团队。
-
韫月
- 遇到的困难:
1.从前端到后端的继承不熟悉
2.组件的动态生成不熟悉
3.总之pyqt不熟悉
4.pycharm的.ui转.py的功能突然ERROR - 解决方法:
还能怎么办,找度娘啊啊啊啊!
疯狂找案例,疯狂搬砖,疯狂Ctrl+R试运行,疯狂传ui文件给队友再接收py文件
- 遇到的困难:
-
愈明
- 困难1:最初设计GUI界面时,对产品功能分析不够明确,导致初版界面逻辑混乱。
解决方法:通过和队友讨论,更加明确产品功能,重新规划界面,解决了问题。 - 困难2:对pyqt具体编程不够熟悉,导致ui界面设计进展缓慢。
解决方法:现场学习教程,请教队友,努力加快进度。
- 困难1:最初设计GUI界面时,对产品功能分析不够明确,导致初版界面逻辑混乱。
-
地秀
- 用pyqt设计界面,但是pyqt不是非常熟练
解决方法:这是非常难受的一件事情,只好一边百度一边做设计
- UI设计的时候,.ui文件转成.py文件,要在pycharm安装插件,但是一直安装不成功
解决方法:按照百度的方法,一步一步操作,但是不对,只好一遍一遍重复操作,最后发现是自己粗心,英文字母打错了,以后可以直接复制就直接复制吧┭┮﹏┭┮
-
泽波
- 遇到困难:python使用不熟悉,配置有问题
-
全炯
- 困难
PyQt掌握的情况并不够好,会和能在短时间内做出来是两个概念。
讨论和设计必不可少,但要建立在较好掌握的情况下,否则合并的时候会很痛苦 - 解决
知耻而后勇,奋力掌握并精通
更加注重细节
要学会找轮子
- 困难
-
俊彦
- 困难:
PyQt掌握不好 - 解决:
转向协助后端代码的开发
- 困难:
-
李翔
- 遇到的困难:数据库接口需要有返回值时的语句出现问题,SQL语句的传参问题
-
加伟
- 困难:
- 做数据库接口的函数时,若需要返回数据库中的值,会造成返回值与关闭数据库连接的冲突。
- 在接口中直接传参数会出现问题。
- 做数据库的时候不清楚前端的需要,导致对接的时候需要做较大更改。
- 解决:
- 返回值是sqlite3类,他在关闭数据库连接后就不存在了。因此要把它存成其他形式保存。
- 需要用到占位符‘ ?’传入的参数记得后面加+
- 多次讨论后得到解决
- 困难:
马后炮
- 俊彦:如果往前推几天,那么我会多放一些时间来进行PyQt的学习
- 李翔:如果没有这次现场编程开发,那么我就任然菜的安详
- 愈明:如果再给我一次机会,我一定不会选择进实验班orz
- 文婧:如果可以回到过去,那么我一定边看教程边动手
- 韫月:没有马后炮,一切都是自己太菜了
- 张扬:如果可以重来,我想重新考虑一下要不要选这门课
- 全炯:以前我没得选,但现在还是没得选。世上一切都会迟到,只有软工实践如期而来
个人贡献分分配
经过计算后的个人贡献分
PSP表格
个人PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 10 | 10 |
· Estimate | · 估计这个任务需要多少时间 | 10 | 10 |
Development | 开发 | 340 | 450 |
· Analysis | · 需求分析 (包括学习新技术) | 120 | 120 |
· Design Spec | · 生成设计文档 | 10 | 20 |
· Design Review | · 设计复审 | 20 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
· Design | · 具体设计 | 60 | 60 |
· Coding | · 具体编码 | 60 | 120 |
· Code Review | · 代码复审 | 30 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改) | 30 | 60 |
Reporting | 报告 | 40 | 40 |
· Test Repor | · 测试报告 | 20 | 20 |
· Size Measurement | · 计算工作量 | 10 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 10 | 10 |
合计 | 390 | 500 |
个人学习进度条
第N周 | 新增代码(行) | 累计代码(行) | 本周学习耗时(小时) | 累计学习耗时(小时) | 重要成长 |
---|---|---|---|---|---|
1 | 300 | 300 | 13 | 13 | 复习C++基础知识,了解hashmap |
2 | 400 | 700 | 20 | 33 | 学习测试的方法 |
3 | 0 | 700 | 23 | 56 | 原型设计 |
4 | 400 | 1100 | 24 | 80 | 爬虫及数据可视化 |
5 | 0 | 1100 | 25 | 105 | 团队展示沟通与合作,UML设计 |
6 | 0 | 1100 | 20 | 125 | 数据流图,logo设计 |
7 | 200 | 1300 | 20 | 145 | 学习qt5 |
8 | 140 | 1440 | 10 | 155 | 编写UI规范;尝试做一个demo |
9 | 400 | 1840 | 30 | 185 | 现场编程 |