天天看点

福大软工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