所属课程 | 软件工程1916|W(福州大学) |
---|---|
做业要求 | 团队做业第六次—团队Github实战训练 |
团队名称 | 待就业六人组 |
做业目标 | 搭建一个相对公平公正的抽奖系统,根据QQ聊天记录,完成从统计参与抽奖人员颁布抽奖结果的基本流程。 |
项目文档 | 项目在线文档 |
在线抽奖 | 项目在线展现 |
项目地址 | Github |
成员 | 职责 | 贡献比例 |
---|---|---|
XRK | Web前端、博客编写 | 22% |
Yellye | Web前端 | 16% |
黎焕明 | 聊天记录处理、聊天记录分析 | 15% |
Litm | 提取用户表 | 17% |
oirving | 提取奖项表、奖项条件表 | 16% |
supermingjun | 过滤&中奖算法、程序整合、接口&数据字典文档编写,服务器部署,博客撰写 | 14% |
实现完整GUI界面——JSP代码前端
设置抽奖事件、文案、规则java
导出抽奖结果(抽奖话题、中奖人员、对应奖项),有bug,暂未实现python
抽奖算法设计思路git
perception感知器是单输出感知器,不难看出,单节点感知器实际上就是一个M-P神经元模型,采用符号转移函数。github
设输入向量X=(x1,x2,x3)T,则3个输入份量在几何上构成一个三维空间。节点j 的输出为:算法
由如下方程肯定的平面成为三维输人样本空间上的一个分界平面:数据库
平面上方的样本neti>0,从而使输出为1;平面下方的样本netj<0,从而使输出为一1。一样,由感知器权值和阔值肯定的平面方程规定了分界平面在样本空间的方向与位置,从而也肯定了如何将输入样本分为两类。假如分界平面的初始位置不能将两类样本正确分开,改变权值和阔值即改变了分界平面的方向与位置,所以总能够将其调整到正确分类的位置。
编程
基于perception算法,咱们用粗糙的数据集训练了一个粗糙的模型,对用户活跃度进行断定。算法输入输出以下:json
input:用户的总活跃天数、最大连续活跃天数、有效发言数 output:1(活跃用户)、-1(不活跃用户)
Fisher–Yates随机置换算法抽奖后端
Fisher–Yates随机置乱算法也被称作高纳德置乱算法,通俗说就是生成一个有限集合的随机排列。Fisher-Yates随机置乱算法是无偏的,因此每一个排列都是等可能的,使用的Fisher-Yates随机置乱算法是至关有效的,须要的时间正比于要随机置乱的数,不须要额为的存储空间开销。
算法流程:
(1)不过滤:只要在抽奖时间段发布过抽奖关键词的用户都可参加抽奖
(2)普经过滤:过滤掉助教和老师用户,过滤掉潜水用户(聊天只发抽奖关键词)
(3)深度过滤:过滤活跃度低于x的用户
2.由perception算法将有抽奖资格的用户分红活跃和非活跃两类,给与不一样的权重,例如活跃权重为2,非活跃为1,设置一个String数组a,存储抽奖资格用户的用户id,每一个用户在这个数组的元素个数等于权重数:
例如一个id为666的活跃用户,他在a数组中有两个元素a[x]="666",a[y]="666"; 调用Fisher–Yates随机置换算法,将a数组置乱。
for i 从n-1到1 j <—随机整数(0 =< j <= i) 交换a[i]和a[j] end
3.根据奖项数量为k,就取前k个元素,按奖项顺序得奖,若出现已经获奖的用户,则顺延至k+1的用户获奖,以此类推。
支持对聊天记录进行分析与挖掘
活跃期:从图中分析能够获得,大部分同窗发言都喜欢在晚上22点,这时候正是同窗们思惟活跃期,活跃日期主要是3号,可能这一天发生着某些特别的事。
高频词汇:二手群很是喜欢喜欢发图片以及“带价出”、“xx价格出”等,任务群大多交流一些和计算机知识相关的内容,例如网站开发、java做业等。
XRK
Yellye
黎焕明
Litm
oirving
遇到的问题:我本次作的是把聊天记录表转换成的用户表,提取其中的信息并汇总,都是涉及一些数据的操做,没有特别难的点;最影响我进度的就是各成员的软件版本没有统一,我用的又是MacBook跟你们的系统不太同样,因此不少东西从GitHub上pull下来后不能直接使用,须要调试好久,很是影响进度。
解决办法:首先这个问题是每人电脑的差别,客观存在的问题,要把每一个成员的软件版本都统一太麻烦了,因此我选择了用他们的电脑pull下来在他们的电脑写代码,实在是花费了太多时间去配置参数,拖不起啊。本身能力也须要增强,意识到了工程能力的差距。
supermingjun
PSP2.1 | Personal Software Process Stages | XRK (预估耗时(分钟)/实际耗时(分钟) | Yellye (预估耗时(分钟)/实际耗时(分钟) | 黎焕明 (预估耗时(分钟)/实际耗时(分钟) | Litm (预估耗时(分钟)/实际耗时(分钟) | oirving (预估耗时(分钟)/实际耗时(分钟) | supermingjun (预估耗时(分钟)/实际耗时(分钟) |
---|---|---|---|---|---|---|---|
Planning | 计划 | ||||||
• Estimate | • 估计这个任务须要多少时间 | 30/30 | 30/30 | 40/40 | 80/80 | 30/30 | 50/50 |
Development | 开发 | ||||||
• Analysis | • 需求分析 (包括学习新技术) | 240/360 | 60/90 | 50/70 | 30/40 | 60/100 | 80/60 |
• Design Spec | • 生成设计文档 | 40/60 | |||||
• Design Review | • 设计复审 | ||||||
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 40/30 | |||||
• Design | • 具体设计 | 120/180 | 120/130 | 70/80 | 90/110 | 100/120 | 120/80 |
• Coding | • 具体编码 | 360/540 | 240/450 | 260/560 | 200/550 | 240/500 | 360/480 |
• Code Review | • 代码复审 | 120/180 | 150/200 | 60/80 | 60/120 | 100/120 | 40/90 |
• Test | • 测试(自我测试,修改代码,提交修改) | 160/180 | 60/100 | 50/80 | 60/150 | 60/80 | 50/80 |
Reporting | 报告 | ||||||
• Test Report | • 测试报告 | ||||||
• Size Measurement | • 计算工做量 | ||||||
• Postmortem & Process Improvement Plan | • 过后总结, 并提出过程改进计划 | ||||||
合计 | 1030/1470 | 660/1000 | 530/910 | 520/1150 | 520/980 | 780/930 |