团队做业第六次—团队Github实战训练

做业格式

队员学号 队员姓名 博客地址 备注
221600131 Jamin https://www.cnblogs.com/JaminWu/ 队长
221600308 我超可爱的 http://www.cnblogs.com/XNC-SoCute/
221600305 haziza http://www.cnblogs.com/haziza/
221600340 你看见个人小熊了吗 https://www.cnblogs.com/stereohearts/
221600426 Hunterj Lin https://www.cnblogs.com/HunterJ/
021600823 玫葵 https://www.cnblogs.com/offeroques/

目录

  1. 组员职责分工
  2. github 的提交日志截图
  3. 程序运行截图
  4. 程序运行环境
  5. GUI界面
  6. 基础功能实现
  7. 附加功能实现
  8. 鼓励有想法且有用的功能
  9. 遇到的困难及解决方法
  10. 马后炮
  11. 组员贡献比例
  12. PSP表格

做业正文

1. 组员职责分工

学号 姓名 贡献
221600131 Jamin Web、管理master分支
221600308 我超可爱的 iOS、文档撰写
221600426 Hunterj Lin 后端编写,算法设计
021600823 玫葵 数据处理与词云图实现
221600340 你看见个人小熊了吗 数据处理与柱状图实现
221600305 haziza UI设计、文档撰写

2. github 的提交日志截图

3. 程序运行截图

  • 运行结果

4. 程序运行环境

  • Web前端:npm+webpack+Vue.js+Vue-Router+element-ui
  • 后端:.net MVC

5. GUI界面

  • 抽奖规则设置
    • 设计了日期时间选择期来选择,输入者无需按后台字符串要求格式输入,前端会转成datetime格式再请求。
    • 设置筛选聊天记录的起止时间
    • 设置开奖时间
  • 抽奖结果公布
    • 自定义弹窗并嵌入表格展现中奖名单
    • 自定义弹窗提示未到开奖时间
  • 导出海报
  • 导出excel

  • 部署
    该项目已部署在iis服务器上,但因为学校信息办防火墙限制只能在校园网内访问 抽奖平台前端

    6. 基础功能实现

  • 抽奖算法设计

    • 本算法具备如下模式:
      • 不过滤模式:只过滤系统消息
      • 普通模式:过滤教师和助教以及过滤掉空白字符的无效发言
      • 深度模式:在普经过滤的基础上,过滤广告,表情等发言(统称无效发言);并对无效发言进行惩罚降权处理
  • 算法详述:

    • 整体抽奖算法模拟二层感知器前馈,惩罚降权算法模拟BP的工做原理

      一、net(i)=Wij*Yk表明每一个参与者中间的得分结果,Wij为权重,Yk为发言次数及发言时间的向量。
      二、隐层激活函数是线性函数,输出层采用sigmoid函数激活。
      三、能量函数表明最终的分和通过惩罚后得分之间的偏差,用于降权处理。
      四、通过降权能够促进最终中奖几率和有效发言次数以及发言时间之间达到一个较为合理的加权关系。
    • 抽奖算法:
      - 一、对每一个人的有效发言次数以及发表关键词距离抽奖开始的时间进行加权求和
      - 二、对1求出来的权值和进行sigmoid运算,映射到0-1的区间
      - 三、对于不过滤和普经过滤模式把2的结果经过线性变换映射导0-10区间;对于深度过滤,因为有惩罚降权机制,因此映射到0-100区间以确保足够大的区分度
      - 四、将全部参与者的最终得分连在一块儿构成随机区间,对区间进行随机投点,得分越高者区间越大,相对来讲更容易中奖。


      webpack

    • 惩罚降权算法:
      - 一、因为日常不发言者,在抽奖时大量水群,这时经过判断规定时间段内大量发言且这些发言是表情或者空白字符者会下降其得分直到0为止
      - 二、经过黑名单检测,平时若是发布广告等无效水群言论,则会在下降其最终得分直到0为止,并将其拉入黑名单
      -
      - 如图大量水群者
      - git

7. 附加功能实现

  • 附加功能一:分析聊天时间段

    • 根据聊天时间段,以及对应的聊天量,生成聊天时间热度图,能够直观地看到同窗们晚上22点后在群里特别活跃,一直到凌晨两点才趋于平静(才睡觉)。
  • 附加功能二:分析发言最多的同窗

    • 统计帐号的发言次数,选取发言次数最高的十我的,生成最能水群top10排行榜。这里为了保护隐私不将同窗的帐号信息截取上传。
  • 附加功能二:分析最火话题

    • 先使用正则表达式将聊天记录中的内容提取出来,而后使用jieba工具进行分词并去除停用词(语气词、助动词等无心义但频率很高的词汇),不然将影响最后的统计结果。
    • 人工观察数据集,针对实际状况整理了一个外部停用词表导入,以去除抽奖刷屏时的关键字与无心义的词汇。
    • 最后统计全部词汇出现的个数,选取top50的词汇并生成词云图,以此能够看到计算机软工实践群的热度话题,大部分都是在谈论博客、提交、代码、截止等跟做业相关的话题。
    • 而助教给的以供数据挖掘的数据集忠能够看出这是相似于大学城集市的群,大部分都是在谈论二手物品交易相关的话题。
  • 附加功能三:根据获奖名单生成海报

    • 首先设计了一张海报做为底图。再经过编码设置边距等将文字投到底图海报上。

8. 其余功能

  • 抽奖录

    • 主要功能:
      • 此为附赠的iOS端简单的app
      • 方便管理人员对抽奖信息例如奖品、金额、时间、获奖名单等进行记录
      • 照片墙功能,对领奖等精彩瞬间进行记录
    • 界面展现:
      • 注册
      • 登陆
    • 照片墙

    • 个人抽奖



      github

    • 我的信息
      web

    • 运行条件:Xcode 10.1(10.1.1版本以上会出错),OS X系统
    • 运行环境:iOS 11.1~iOS 12.1之间版本
    • 演示视频:
      • 这里是视频地址
      • 由于苹果对安全性能很看重,常常会出现xcode运行环境问题,须要pod安装一些库,因此这里录了演示视频,方便查看。

9. 遇到的困难及解决方法

  • Jamin

    • 困难:
    • 做业公布的时候人在厦门,周日很晚才回来,周一又是满课,因此最大的困难就是时间上的不足,加上人在外地没办法跟队友及时有效地沟通。
    • 在将系统部署到服务器的时候一直没法解决实验室服务器的跨域访问问题,先后端一直没法交接。
    • 解决方法:
    • 在厦门的时候看了题目就先初步给队友分了一下任务,而且大体描述了一下数据挖掘部分的思路和方法
  • Hunterj Lin

    • 困难:
    • 做业时间实在过短,周日我还要去培训公司上课,忙的不可开交,队友又各自有事。
    • 系统后端部署后,因为跨域等问题没法与前端对接。
    • 解决方法:
    • 硬生生挤出时间来设计算法,熬夜编程,已经两天睡眠不足5小时了,感受人快飞了。
    • 修改后端配置文件以支持跨域。
  • 我超可爱的

    • 困难:
    • 遇到的最大的问题就是GitHub的使用,由于以前对GitHub的操做并不熟练,这次用GitHub把整个项目上传到仓库出了不少问题。另外就是,这次的题目其实并不适合在手机端写,由于iOS这边是沙盒的,使用iPhone的人都了解,没法直接在APP内打开助教提供的文件。
    • 解决方法:
    • 向助教和同窗请教GitHub的使用方法。写iOS端和web端两个端的想法夭折了,iOS端只作了一个简单的作抽奖记录的功能,并不能抽奖。
  • 你看见个人小熊了吗

    • 困难:
    • 我主要负责附加功能部分的数据分析和挖掘,并生成可视化的图表。最主要的困难就是在安装库环境的时候不断地出错,不断地推倒重来,差一点想摔电脑了,可是理智告诉我必定要完成好此次任务。
    • 解决方法:
    • 保持耐心,面向谷歌编程,看懂报错,对每次的错误作记录,积累经验,以便在下次遇到这个问题的时候能够很快解决。
  • 玫葵

    • 困难:
    • 我主要负责界面UI设计和附加功能生成词云图的编码,嘉民带哥告诉我利用Python现有的库能够较轻松的编码,可是我没有怎么接触过Python,只能从零开始。
    • 生成词云图的时候中文的筛选比较困难,初步筛选之后仍有不少没有意义的词组。
    • 解决方法:
    • 一个下午的时间都在CSDN上看jieba分词和wordcloud的学习教程,而且搭建Python的编码环境。
    • 手动添加筛选词。
  • haziza

    • 困难:
    • 基础过于薄弱,不会基本的语法等
    • 解决方法:
    • 了解并学习web前端,深刻学习c#,从执行环境到数据类型、公共语言基础结构

10. 马后炮

  • Jamin

    • 若是早知软工实践事请这么多,我必定要在上学期把雅思和论文赶出来。
  • Hunterj Lin

    • 若是没有软工实践这门课,那么我该有多快乐呀,我就学更多本身喜欢的技术了。
  • 我超可爱的

    • 若是能够不用GitHub,我可能安卓端都写出来了。
  • 你看见个人小熊了吗

    • 若是能回到2016年,那么我确定好好学习。
  • 玫葵

    • 若是再来一次,我转专业那次确定选择留级,而后好好学一蛤Python。
  • haziza

    • 若是早点开始学习,那么会有点用吧。

11. 组员贡献比例

学号 姓名 贡献 比例
221600131 Jamin Web、管理master分支 20%
221600308 我超可爱的 iOS、文档撰写 17%
221600426 Hunterj Lin 后端编写,算法设计 22%
021600823 玫葵 数据处理与词云图实现 18%
221600340 你看见个人小熊了吗 数据处理与柱状图实现 18%
221600305 haziza UI设计、文档撰写 5%

12. PSP表格

  • Jamin

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

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

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

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

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

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