所属课程 软件工程1916
作业要求 团队作业第六次—团队Github实战训练
团队名称 追光的人
作业目标 搭建一个相对公平公正的抽奖系统,根据QQ聊天记录,完成从统计参与抽奖人员颁布抽奖结果的基本流程。

目录


组员职责分工

队员学号 队员博客 此次作业任务
221600219 小墨 建立github数据库,协助修改bug;
221600240 真·大能猫 数据库编程;
221600212 kilig GUI编程;
221600235 fishkk 算法设计;
221600236 巴啦啦魔仙 算法设计;
221600103 lc 博客编写,辅助编程;
221600205 星夜、痕 过滤数据;

github 的提交日志截图


程序运行截图


GUI界面


基础功能实现


  • 实现完整GUI界面
  • 设置抽奖事件、文案、规则
  • 设置参与抽奖关键词,所有发某个关键词的用户可参与,比如:#我要参与换组活动#、#我要红包#、#我爱软工实践#、#我要当学习委员#

  • 抽奖活动文案
  • 抽奖发言时段

  • 抽奖过滤规则
    • 过滤掉平时不发言的同学
    • 过滤掉助教和老师
  • 奖品列表

  • 获奖名单

  • 提供不过滤、普通过滤、深度过滤等满足不同用户需求的抽奖功能选项

  • 抽奖算法设计思路
    • 通过Java爬虫处理输入的text聊天记录,过滤掉系统消息。将聊天记录存入到两张数据库的表中,一张记录聊天信息(index,date,name,qqNumber,key_changeGroup,key_redPackets,key_iLoveSEP),一张记录用户聊天频率用于深度过滤(qqNumber,name,chatTotalRecords,normalChatRecords)。
    • 不过滤:通过sql语句
      select distinct chatrecord.qqNumber,chatrecord.name,userinfo.chatTotalRecords from chatrecord left join userinfo on chatrecord.qqNumber=userinfo.qqNumber where date between ? and ? and key_changeGroup=1;
      筛选出符合要求的用户存入ArrayList中;
  • 初步过滤:在不过滤的基础上通过增加sql语句 and not (chatrecord.name like'助教%' or chatrecord.name like'教师%')
    筛选非助教,非教师的用户

  • 深度过滤:在初步过滤的通过sql语句userinfo.normalChatRecords>10
    筛选出发送非抽奖消息次数多于10次的用户
  • 随机lucknumbers生成:

    • 通过Date now = new Date();

      long nowtime =now.getTime();
      获取1970至今的毫秒数
    • 通过使用系统时间作为随机数种子生成随机数
      Random r=new Random();
      int ran1=r.nextInt(1000);

      使用双随机的方式生成lucknumbers: int lucknum=(int) (sum%(peoplenum));

      若奖品数大于参与人数,则返回所有用户的序列号。

遇到的困难及解决方法


  • 在读取文件的过程中出现乱码的现象,经过逐一排查后发现是数据库的编码格式不正确,改为utf8mb4之后顺利解决问题。
  • 没有与前端沟通好,导致编写数据库接口时多写了一些没有必要的接口却少了必要的接口;以及少了必要的字段。通过及时的沟通然后顺利解决了上述问题

每位组员的贡献比例:


队员学号 队员博客 贡献占比
221600219 小墨 11%
221600240 真·大能猫 16%
221600212 kilig 16%
221600235 fishkk 16%
221600236 巴啦啦魔仙 16%
221600103 lc 9%
221600205 星夜、痕 16%

PSP表格


小墨

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 10 20
•EStimate • 估计这个任务需要多少时间 10 20
Development 开发 160 140
• Analysis • 需求分析 (包括学习新技术) 20 20
• Design Spec • 生成设计文档 0 0
• Design Review • 设计复审 0 0
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 10 30
• Design • 具体设计 20 30
• Coding • 具体编码 60 30
• Code Review • 代码复审 10 20
• Test • 测试(自我测试,修改代码,提交修改) 30 10
Reporting 报告 40 30
• Test Repor • 测试报告 10 10
• Size Measurement • 计算工作量 10 10
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 20 10
合计 210 190

真·大能猫

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 10 10
• Estimate • 估计这个任务需要多少时间 10 10
Development 开发 30 45
• Analysis • 需求分析 (包括学习新技术) 20 30
• Design Spec • 生成设计文档 0 0
• Design Review • 设计复审 10 10
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 10 10
• Design • 具体设计 20 35
• Coding • 具体编码 180 250
• Code Review • 代码复审 60 60
• Test • 测试(自我测试,修改代码,提交修改) 25 30
•Reporting •报告 0 0
• Test Report • 测试报告 0 0
• Size Measurement • 计算工作量 15 15
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 5 10
合计 395 490

kilig

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
•EStimate • 估计这个任务需要多少时间 500 240
Development 开发
• Analysis • 需求分析 (包括学习新技术) 120 120
• Design Spec • 生成设计文档 30 30
• Design Review • 设计复审
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 20 20
• Design • 具体设计
• Coding • 具体编码 240 180
• Code Review • 代码复审 30 120
• Test • 测试(自我测试,修改代码,提交修改) 60 50
Reporting 报告
• Test Repor • 测试报告 30 30
• Size Measurement • 计算工作量 30 30
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 30 20
合计 590 600

fishkk

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
•EStimate • 估计这个任务需要多少时间 60 80
Development 开发
• Analysis • 需求分析 (包括学习新技术) 60 60
• Design Spec • 生成设计文档 60 40
• Design Review • 设计复审 120 110
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 60 50
• Design • 具体设计 120 120
• Coding • 具体编码 120 150
• Code Review • 代码复审 60 120
• Test • 测试(自我测试,修改代码,提交修改) 60 50
Reporting 报告
• Test Repor • 测试报告 40 50
• Size Measurement • 计算工作量 30 20
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 60 50
合计 790 850

巴啦啦魔仙

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
•EStimate • 估计这个任务需要多少时间 500 240
Development 开发
• Analysis • 需求分析 (包括学习新技术) 120 120
• Design Spec • 生成设计文档 30 30
• Design Review • 设计复审
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 20 20
• Design • 具体设计
• Coding • 具体编码 240 180
• Code Review • 代码复审 30 120
• Test • 测试(自我测试,修改代码,提交修改) 60 50
Reporting 报告
• Test Repor • 测试报告 30 30
• Size Measurement • 计算工作量 30 30
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 30 20
合计 590 600

lc

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
•EStimate • 估计这个任务需要多少时间 100 275
Development 开发
• Analysis • 需求分析 (包括学习新技术) 20 25
• Design Spec • 生成设计文档 40 40
• Design Review • 设计复审 10 10
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 30 30
• Design • 具体设计
• Coding • 具体编码 80 80
• Code Review • 代码复审
• Test • 测试(自我测试,修改代码,提交修改) 20 25
Reporting 报告
• Test Repor • 测试报告
• Size Measurement • 计算工作量 10 15
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 20 10
合计 270 275

星夜、痕

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划         
•EStimate • 估计这个任务需要多少时间    240  640  
Development  开发         
• Analysis • 需求分析 (包括学习新技术)   180    240 
• Design Spec • 生成设计文档    30   20 
• Design Review • 设计复审       
• Coding Standard • 代码规范 (为目前的开发制定合适的规范)    30    30
• Design • 具体设计        
• Coding • 具体编码    240   240 
• Code Review • 代码复审    60  120  
• Test • 测试(自我测试,修改代码,提交修改)  60   50  
Reporting 报告        
• Test Repor • 测试报告  30    30 
• Size Measurement • 计算工作量   30    30 
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划    30  20  
    合计   630     780

团队作业第六次—团队Github实战训练(追光的人)的更多相关文章

  1. 团队作业第六次—团队Github实战训练

    作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 团队作业第六次-团队Github实战训练 团队目标 搭建一个相对公平公正的抽奖系统,根据QQ聊天记录,完成从统计参与抽 ...

  2. 团队作业第六次——团队Github实战训练

    作业格式 课程名称:软件工程1916|W(福州大学) 作业要求:团队作业第六次-团队Github实战训练 团队名称:葫芦娃队 作业目标:确定和分析选题,绘制评审表 github地址:https://g ...

  3. 团队作业第六次-团队Github实战训练

    格式描述 课程名称:软件工程1916|W(福州大学) 作业要求:项目系统设计与数据库设计 团队名称:为了交项目干杯 GitHub地址:地址 作业目标:搭建一个相对公平公正的抽奖系统,根据QQ聊天记录, ...

  4. 团队Github实战训练

    班级:软件工程1916|W 作业:团队Github实战训练 团队名称:SkyReach Github地址:Github地址 贡献比例表 队员学号 队员姓名 此次活动任务 贡献比例 221600106 ...

  5. bug终结者 团队作业第六、七周

    bug终结者 团队作业第六.七周 作业要求:团队作业第六.七周 博客编辑:20162322 朱娅霖 一.修改<需求规格说明书> <需求规格说明书>2.0版(即初稿) <需 ...

  6. 团队作业八——第二次团队冲刺(Beta版本)第7天&项目汇总

    项目汇总 第一天:http://www.cnblogs.com/newteam6/p/6879383.html 第二天:http://www.cnblogs.com/newteam6/p/688078 ...

  7. 团队作业八——第二次团队冲刺(Beta版本)第6天

    团队作业八--第二次团队冲刺(Beta版本)第6天 一.每个人的工作 (1) 昨天已完成的工作 简单模式逻辑代码涉及与相关功能的具体实现 (2) 今天计划完成的工作 修改完善注册登录内容界面,编辑错题 ...

  8. 团队作业八——第二次团队冲刺(Beta版本)第5天

    团队作业八--第二次团队冲刺(Beta版本)第5天 一.每个人的工作 (1) 昨天已完成的工作 完成界面跳转界面. (2) 今天计划完成的工作 简单模式逻辑代码涉及与相关功能的具体实现 (3) 工作中 ...

  9. 团队作业八——第二次团队冲刺(Beta版本)第4天

    团队作业八--第二次团队冲刺(Beta版本)第4天 一.每个人的工作 (1) 昨天已完成的工作 做一下用户注册的功能和登录功能. (2) 今天计划完成的工作 完成界面跳转 (3) 工作中遇到的困难 界 ...

随机推荐

  1. SLA 99.99%以上!饿了么实时计算平台3年演进历程

    作者介绍 倪增光,饿了么BDI-大数据平台研发高级技术经理,曾先后就职于PPTV.唯品会.15年加入饿了么,组建数据架构team,整体负责离线平台.实时平台.平台工具的开发和运维,先后经历了唯品会.饿 ...

  2. 第7/7Beta冲刺

    1.团队成员 成员姓名 成员学号 秦裕航 201731062432(组长) 刘东 201731062227 张旭 201731062129 王伟 201731062214 2.SCRU部分 2.1各成 ...

  3. npm包的语义版本控制(Semantic Versioning of Packages)

    本文删改自Node.js 8 the Right Way Part I Chapter 3 npm 使用语义版本控制(SemVer)来寻找包的最佳可用兼容版本. 以安装测试框架mocha为例 $ ​​ ...

  4. ElasticSerach 6.x的安装及配置

    1.准备工作 安装Centos7.建议内存2G以上.安装java1.8环境,固定IP地址,本文省略. 2.ElasticSerach单机安装 1) 创建/opt/es目录,存放文件ElasticSer ...

  5. activiti串行会签的使用

    1.串行任务的配置 2.当任务走到串行会签节点时,会从你之前保存的流程变量中找集合(我这里设置的assigneeList),串行会签会根据这个集合设置一系列该节点的流程变量 3.结束条件的设置,若满足 ...

  6. 如何在Oracle触发器中使用查询语句

    通常情况下,Oracle数据库禁止在行级触发器或行级触发器所调用的子程序中使用查询语句.但是,面对复杂的业务逻辑,不可避免的要使用查询语句. 当在行级触发器中使用查询语句时,Oracle数据库会抛出O ...

  7. ubuntu 迅雷 XwareDesktop

    Xinkai/XwareDesktop Ubuntu上编译安装说明 Home    Ubuntu上编译安装说明    使用说明    升级到0.12    升级到0.9    发行版支持情况    名 ...

  8. NEST 字符串sort

    text字符串sort会先分词.可先建立filed字段.并设置为keyword mapping public void Mapping() { var response = client.IndexE ...

  9. 【洛谷 P4070】 [SDOI2016]生成魔咒(后缀自动机)

    题目链接 建出\(SAM\)后,不同子串个数就是\(\sum len(i)-len(fa(i))\) 因为\(SAM\)在线的,所以每加入一个字符就能直接加上其贡献,于是这道题就没了. 因为\(x\) ...

  10. 【洛谷 P2408】 不同子串个数(后缀自动机)

    题目链接 裸体就是身体. 建出\(SAM\),\(DAG\)上跑\(DP\),\(f[u]=1+\sum_{(u,v)\in DAG}f[v]\) 答案为\(f[1]-1\)(因为根节点没有字符) # ...