团队博客

云打印团队展示

团队名称: 云打印
作业要求: 团队作业第一次—团队展示
作业目标:团队配合,开发项目,增强动手实践能力

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

团队名称: 云打印


团队项目描述:打印资料就上云打印。

队员风采

队员姓名 队员介绍
陈宇 性格:开朗乐观,擅长的技术:擅长javaee后端开发,编程兴趣:对编程有较大的兴趣,希望担任开发,PM等,宣言:不做代码的搬运工
陈迎仁 性格:内向;擅长的技术:会一点微信小程序,有点菜;编程兴趣:一般;希望的软工角色:开发;少熬夜,坚决不掉发。
蔡森林 性格:随和 技术:后端python开发 兴趣:跑步 角色:开发 一句话:人生苦短,好好学习
陈诗娴 我的性格比较内向,在努力变得开朗,擅长前端web的设计,对编程的兴趣其实不大,希望担任测试的角色。一句话宣言:学得越多就越能成功
蔡鸿键 性格:内向 技术:测试 前端html 兴趣:喜欢解bug曾被邀请参加ioccc比赛 角色:开发和测试 一句话:不做码农

团队的首次合照

团队的特色描述:
拥有妹子的团队,男生敲代码积极性很高,团队成员大部分有获奖经历,代码实践能力较强,有较强的责任心。

团队作业第二次—项目选题报告

团队名称: 云打印
作业要求: 团队作业第二次—项目选题报告
作业目标:团队配合,开发项目,增强动手实践能力
选题报告下载
评审表下载
演示PPT下载

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

产品简介

云打印是一款以微信小程序为基础的在线打印服务,通过和实体打印店合作,用户可以通过微信小程序上传word,ppt,pdf等文档,后台可以通过代码计算页数然后返回给前端计算出价格,通过微信下单,付款。商家通过网页界面接单和下载文档,并进行打印和配送。


发展前景

现代生活是快节奏的生活方式,低效率的服务已经逐渐被淘汰,便利快捷的服务方式逐渐被人们所认同,而在线打印就是解决了传统的打印方式用人工打印算钱的低效率方式,利用在线支付下单,线下实体打印店打印,配送,用户只需利用微信小程序操作,无需到实体打印店排队,提高了打印店的打印效率,合理利用打印资源,提高盈业额。


产品与服务 -- 微信小程序的设计

功能部分

1、文档打印:用以打印用户需要打印的文档文件
2、图片打印:用以打印用户需要打印的图片
3、历史订单:用以查询用户历史打印文档或图片等消费记录
4、扫一扫:待开发

用户部分

1、注册登录:微信授权登录
2、用户信息管理:用户管理自己的账户和个人信息

微信小程序的制作

进入云打印的首页,有4个功能按钮,分别为文档打印,图片打印,历史订单以及扫一扫。选择文档打印或图片打印功能,进入订单填写页面,填写个人信息,上传需要打印的文档或图片之后,设置打印属性,可选单双面和黑白或者彩色打印,之后提交订单,核对订单信息,然后进入支付页面,支付成功后就提交订单到服务器,服务器会将订单实时反馈到商检的web端,商家可以在订单列表中选择订单,然后打印订单中的文档,并且根据需要安排配送人员进行资料的配送。

微信小程序的完善及发展方向

1、增加图像文字识别功能,让用户随时拍照想要的文字内容,随时生成对应的文档,随时打印相应的文档,达到即拍即印的效果。
2、增加路径规划功能,用户可通过在线输入当前所在地址,系统自动匹配距离最近的打印店供用户选择,提高用户获取资料的时效。
3、增加年度账单功能,让用户知道本年度所打印文档或图片的相关消费记录。
4、增加资源共享功能,让用户不用通过其他途径,直接通过本程序达到资源共享的效果。

微信小程序的创新要点

本项目将传统的线下打印流程全部移植到线上,通过小程序一步完成,省去了自己去打印店打印的过程,而且线上上传要打印的文件,可选单面(双面)、黑白(彩色)打印,高度还原了打印店应有的所有服务,免去了在电脑拷贝的过程,而且不用排队,既方便了自己,商家也更加省事。还有效地避免了一些不必要的麻烦,例如我们经常在打印店打印资料时,可能会遇到下列问题:U盘会感染一些病毒,忘记带U盘,资料缺损。。。
在技术实现上,本项目的客户端采用了时下最流行的微信小程序,这无疑极大地方便了广大师生的打印流程,免去了安装app的麻烦,随时随地就可以下单。商家端,本项目采用了html+css+javascript语言,展现的形式为web,商家只需打开浏览器就能接单,订单列表一目了然,操作方便。


NABCD模型

  • N (Need,需求)

    • 帮助用户便捷快速的打印文件
    • 无论何时何地用户只要在微信上操作,即可下单打印
    • 用户从微信小程序上传文档,下单,付款
      • 后台计算文档页数和价格
      • 商家进行打印,配送
    • 商家从后台界面,可以进行接单,配送
    • 对商家打印订单进行数据可视化

  • A(Approach,方法)

    • 设计一个基于微信小程序实现相关需求。
    • 用户从手机选择文件上传
    • 后台计算页数和价格
    • 商家进行接单打印,配送
  • B(Benefit,好处)

    • 用户可以便捷快速的打印自己想要的材料
    • 通过微信小程序,用户无需安装额外软件
    • 能随时随地打印

  • C(Competitors,竞争)

    • 优点:
      • 这个创意很新颖,福州大学目前还没有一个这样的微信小程序在大学里面使用
      • 操作简单方便
      • 能在任何地方打印
    • 缺点:
      • 前期和店家合作比较难达成
      • 文件上传大小容易受到限制
      • 前期用户数不足

  • D(Delivery,推广)

    • 线上推广
      • 通过写推文进行推广
      • 和广告商进行合作
      • 用微信公众号进行推广
    • 线下推广
      • 以简单便捷的方式使用,提高用户体验,用户互相推广
      • 在人流量较大的位置粘贴宣传海报

评审表

队员贡献

队员学号 队员姓名 此次作业任务 贡献比例
221600412 陈宇 安排任务,文档撰写,博客撰写,PPT制作,整理报告,演讲答辩,回答问题,提问 27%
221600411 陈迎仁 文档撰写,问卷调查,PPT制作 24%
221600401 陈诗娴 评审表撰写,文档撰写 19%
221600409 蔡森林 文档撰写 15%
221600408 蔡鸿键 文档撰写 15%

选题报告下载
评审表下载
演示PPT下载

项目原型设计


格式描述


团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

项目描述

一、项目描述

1.1产品简介

      云打印是一款以微信小程序为基础的在线打印服务,通过和实体打印店合作,用户可以通过微信小程序上传word,ppt,pdf等文档,后台可以通过代码计算页数然后返回给前端计算出价格,通过微信下单,付款。商家通过网页界面接单和下载文档,并进行打印和配送。

1.2发展前景

      现代生活是快节奏的生活方式,低效率的服务已经逐渐被淘汰,便利快捷的服务方式逐渐被人们所认同,而在线打印就是解决了传统的打印方式用人工打印算钱的低效率方式,利用在线支付下单,线下实体打印店打印,配送,用户只需利用微信小程序操作,无需到实体打印店排队,提高了打印店的打印效率,合理利用打印资源,提高盈业额。

二、市场需求分析

2.1需求调查方式

      为了更好的了解用户需求,我们采用了发放问卷的方式。问卷主要涵盖三个方面:个人情况调查、打印资料习惯调查和平台满意度调查以及功能需求调查。其中个人情况题1题,打印资料习惯调查4题,平台满意度调查1题,功能需求调查2题,意见反馈1题。

2.1.1 抽样方式

      本着自愿的原则,我们共邀请了142名被试者。为了使数据层次更加丰富,我们向不同年级的人发放了问卷,覆盖大一到大四学生。

2.1.2 调查时间

2019年3月18日开展调查,并于3月20日完成数据的统计分析工作。

2.2 问卷分析

2.2.1 打印资料习惯分析

      受访的142名参与者中经常去打印店打印资料的占42.96%,较多人还是有去打印店打印资料的需求。在这142名参与者,较多人选择打印试卷、练习,比例达到86.62%,论文报告以及课件等也分别占到了60.56%、53.52%。这些打印者对于他们资料的私密性,总的来看还是可被分享的占绝大多数。对于资料私密性要求较高的仅有25.35%。紧接着对于打印店碰到的问题,也是我们这个平台想解决的用户痛点,大部分被调查的人都遇到了打印店人多拥挤的情况,比例占到90.85%;还有其他比如错印、多印的情况也占到52.82%;所以去打印店打印碰到的问题还是较多的。
是否经常去打印店打印资料?

去打印店主要打印什么类型的材料?

资料的保密性如何

在打印店遇到的问题?

2.2.2 平台满意度分析

      对于开发一个平台来解决打印者在打印店碰到的一些问题的这个想法还是比较受到大家的欢迎以及支持;有55.63%的被调查者非常希望有这样一个平台来解决问题,也仅仅只有4.23%的人较为不需要这个平台提供帮助。


####2.2.3 功能需求调查分析       针对平台的载体我们进行了调查,81.69%的人更希望通过简单的微信小程序来使用这个平台,更加便捷和方便。针对功能上除了提供在线打印和上传资料,他们还对配送提出了一些希望的要求,比如配送费以及时效性等。当然也提到了文件的保密问题。

NABCD模型

  • N (Need,需求)

    • 帮助用户便捷快速的打印文件
    • 无论何时何地用户只要在微信上操作,即可下单打印
    • 用户从微信小程序上传文档,下单,付款
      • 后台计算文档页数和价格
      • 商家进行打印,配送
    • 商家从后台界面,可以进行接单,配送
    • 对商家打印订单进行数据可视化

  • A(Approach,方法)

    • 设计一个基于微信小程序实现相关需求。
    • 用户从手机选择文件上传
    • 后台计算页数和价格
    • 商家进行接单打印,配送
  • B(Benefit,好处)

    • 用户可以便捷快速的打印自己想要的材料
    • 通过微信小程序,用户无需安装额外软件
    • 能随时随地打印

  • C(Competitors,竞争)

    • 优点:
      • 这个创意很新颖,国内还没有一个这样的微信小程序在大学里面使用
      • 操作简单方便
      • 能在任何地方打印
    • 缺点:
      • 前期和店家合作比较难达成
      • 文件上传大小容易受到限制
      • 前期用户数不足

  • D(Delivery,推广)

    • 线上推广
      • 通过写推文进行推广
      • 和广告商进行合作
      • 用微信公众号进行推广
    • 线下推广
      • 以简单便捷的方式使用,提高用户体验,用户互相推广
      • 在人流量较大的位置粘贴宣传海报

三、产品与服务

3.1 微信小程序的设计

功能部分:
1、文档打印:用以打印用户需要打印的文档文件
2、图片打印:用以打印用户需要打印的图片
3、历史订单:用以查询用户历史打印文档或图片等消费记录
4、扫一扫:待开发

用户部分:

1、注册登录:微信授权登录
2、用户信息管理:用户管理自己的账户和个人信息
3.2 微信小程序的制作
使用微信web开发者工具进行开发小程序
3.3微信小程序所能提供的服务
进入云打印的首页,有4个功能按钮,分别为文档打印,图片打印,历史订单以及扫一扫。选择文档打印或图片打印功能,进入订单填写页面,填写个人信息,上传需要打印的文档或图片之后,设置打印属性,可选单双面和黑白或者彩色打印,之后提交订单,核对订单信息,然后进入支付页面,支付成功后就提交订单到服务器,服务器会将订单实时反馈到商检的web端,商家可以在订单列表中选择订单,然后打印订单中的文档,并且根据需要安排配送人员进行资料的配送。

3.4微信小程序的完善及发展方向

1、增加图像文字识别功能,让用户随时拍照想要的文字内容,随时生成对应的文档,随时打印相应的文档,达到即拍即印的效果。
2、增加路径规划功能,用户可通过在线输入当前所在地址,系统自动匹配距离最近的打印店供用户选择,提高用户获取资料的时效。
3、增加年度账单功能,让用户知道本年度所打印文档或图片的相关消费记录。

原型设计


使用工具: 墨刀

项目原型设计--微信小程序 (点击左边进入墨刀预览)
项目原型设计--商家端 (点击左边进入墨刀预览)


效能分析和PSP

PSP是卡耐基梅隆大学(CMU)的专家们针对软件工程师所提出的一套模型:Personal Software Process (PSP, 个人开发流程,或称个体软件过程)。
PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 0 0
• Estimate • 估计这个任务需要多少时间 800 1000
Development 开发 0 0
• Analysis • 需求分析 (包括学习新技术) 60 90
• Design Spec • 生成设计文档 50 60
• Design Review • 设计复审 50 50
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 40 45
• Design • 具体设计 500 600
• Coding • 具体编码 0 0
• Code Review • 代码复审 0 0
• Test • 测试(自我测试,修改代码,提交修改) 30 35
Reporting 报告 30 30
• Test Report • 测试报告 30 30
• Size Measurement • 计算工作量 30 35
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 30 30
合计 850 1005

向客户推销

    首先我们先介绍我们的项目是一个以微信小程序为基础的在线打印服务,能在线下单并配送至宿舍,接着向它演示如何使用在线打印,其次在说明传统的打印店模式,人多,U盘容易中毒,U盘容易丢失等问题,最后推荐它注册并使用一下小程序。

使用建议

  • 文件尽量上传pdf格式,以便打印格式不变
  • 上传的文件尽量不要含有太多图片,以免计算价格出错

原型设计

我们程序分为小程序端和商家端 我们小组分别对原型进行了讨论并进行了设计。
首先我们讨论小程序的登录注册和上传文件,接着进行了用户界面的原型设计
其次我们讨论了商家网页端的原型设计过程。

微信小程序原型












商家端原型






团队的选题报告问题的回答

Question 1.很接地气,有没有打印预览功能

Answer:首先打印预览功能是一个能有效避免用户打印出来的文件和预期打印的文件不一样的功能,它能提高用户体验,所以这个功能我们一直在考虑,我们选用的微软的在线预览功能,能预览常见的word,ppt,pdf等文档。


#### Question 2.市场是否只局限于福大?推广的力度不够 #### Answer:市场当然不局限于福大,只是我们的产品刚开始投入使用,需要事先进行试点实验,如果于福大试验成功,并深受学生爱戴,我们便可有理由向其他高校进行一系列宣传。说到宣传,我们打算通过微信公众号,qq空间,朋友圈等途径进行推广,让云打印成为每个同学的资料神器。
#### Question 3.打印内容安全和隐私如何保障? #### Answer:保密配送: 针对调查发现 25%的资料是隐私的 75%的资料是可以公开的 可以具体实现保密配送和非保密配送。 保密配送对于客户的隐私保护是有一套规范和严格的流程的:       1. 首先用户使用小程序前要同意用户隐私协议       2、保密文件由我们专门的配送员派送,并会事先与您约好收货地点,这样就避免了贸然上门派件时遇到的尴尬情况;       3、在外包装上,我们会使用统一的文件带包裹打印的文件,不会留下任何标示及产品说明。       4、使用中继号来联系配送和顾客。       安全: 将配送过程分成三方责任人         1.商家         2.配送         3.顾客 通过app进行网上登记来确定安全责任的划分。 非隐私文件: 支持到店自取 和 打印店配送员配送至宿舍
#### Question 4.是否有类似的软件竞争? #### Answer:在软件商城中我看到挺多可以连接自己的打印机来打印文件的软件,但这就需要自己有一台打印机,与我们小程序的功能不同,我认为这类不构成明显的竞争关系。我只找到很少的与我们的小程序类似的高校云打印网站,而且这些网站都是只针对个别学校,覆盖面比较小,我也没有看到福州的任何一所高校有被包含在网站服务的学校之内,所以我认为若是我们将小程序向周边学校扩展的话这些网站与我们会是竞争关系,但目前只是在校内使用应该还不会产生竞争。
#### Question 5.打印任务的优先级如何保证?加急怎么处理? #### Answer:打印优先级在微信小程序的两个方面来体现,一个是用户自选择的配送时间,另一个可以在小程序设置一个订单选项,让用户自己选择是否加急。如果用户选择加急可以在web商家端的订单上显示一个加急图标。在项目上线时,与商家老板进行系统的简单讲解,包括优先级的图标显示,从而让商家老板根据加急文件优先打印。

解决方案预期规划

    首先完善基础功能,其次针对用户打印文件可能格式出错,和隐私问题进行针对性解决。对于打印文件的格式的问题,预期解决方案提供一个在线编辑的word文档,并在用户提交订单后后台自动把word转成pdf保持文件格式不变,或者就是用户自己上传pdf文件格式,这两种文件都能保持文件不变,针对用户隐私问题,我们会在用户上传的文件的时候进行提醒,并独立出一个用户隐私文件打印模块,由我们指定的商家进行打印配送。


队员贡献

队员学号 队员姓名 此次作业任务 贡献比例
221600412 陈宇 安排任务,博客撰写,原型设计,问题的回答,整理问题 20%
221600411 陈迎仁 小程序原型设计,问题的回答 19%
221600401 陈诗娴 网页原型设计,问题的回答 21%
221600409 蔡森林 小程序原型设计,问题的回答 22%
221600408 蔡鸿键 网页原型设计,问题的回答 18%

博文下载.PDF

下载


团队作业第4次-项目需求分析


格式描述


团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

整体计划安排

  • 原型设计
    • 时间:3.23-3.30
    • 任务:完成微信小程序,登录注册,个人信息,上传文件,订单界面等原型界面设计,完成商家端,下载文件,登录注册,接单等原型界面的设计。
    • 状态:已完成
  • 需求分析报告
    • 时间:3.25-4.7
    • 任务:对该项目进行需求分析,并完成类图和用况图。
    • 状态:已完成
  • 系统设计与数据库设计
    • 时间:4.8-4.14
    • 任务:确定后台数据库表的结构,设计模式。
    • 状态:未完成

里程碑 一 :实现项目核心功能

  • 基础编码实现
    • 时间:4.15-4.21
    • 任务:实现后台基本功能,并和小程序对接。
    • 状态:未完成

里程碑 二 :项目基本完成

  • Alpha冲刺
    • 时间:4.21-5.4
    • 任务:采用敏捷开发中的迭代开发,先完成一个最简单的版本,之后不断迭代开发。
    • 状态:未完成

里程碑 三 :优化项目

  • Beta冲刺
    • 时间:5.5-6.1
    • 任务:完善和优化基础功能,并逐步扩展功能。
    • 状态:未完成

撰写需求规格说明书的工作流程

1.首先我们组员先进行了对需求规格说明书的内容进行讨论
2.接着对这个项目的类和用况进行了分析,并进行分工
3.增改原型设计,画出类图、用例图、活动图,提交新增页面的功能设计
4.整合文档,制作PPT


组员分工及队员贡献

队员学号 队员姓名 此次作业任务 贡献比例
221600412 陈宇 安排任务,需求规格说明书第一部分,博客撰写,修改评审表,整理文档 22%
221600411 陈迎仁 画用况图,ppt制作,答辩 22%
221600401 陈诗娴 需求规格说明书第五部分,用例文本 19%
221600409 蔡森林 需求规格说明书第三部分,类图 19%
221600408 蔡鸿键 需求规格说明书第二部分 18%

博文下载.PDF

下载


团队作业第五次—项目系统设计与数据库设计


格式描述


团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

撰写系统设计和数据库设计说明书

1.先针对上次答辩的问题进行了修改很整理
2.开始对系统设计和数据库设计的分析
3.改进类图
4.查找资料
5.组员分工
5.整理文档
6.撰写PPT


组员分工及队员贡献

队员学号 队员姓名 此次作业任务 贡献比例
221600412 陈宇 安排任务,系统设计说明书,数据库设计说明书,博客,PPT 25%
221600411 陈迎仁 数据库设计说明书,数据库设计说明书 23%
221600401 陈诗娴 数据库设计说明书本 17%
221600409 蔡森林 数据库设计说明书数据库设计说明书 20%
221600408 蔡鸿键 数据库设计说明书 15%

博文下载.PDF

下载


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

团队名称: 云打印
作业要求: 团队作业第六次—团队Github实战训练
作业目标:搭建一个相对公平公正的抽奖系统,根据QQ聊天记录,完成从统计参与抽奖人员颁布抽奖结果的基本流程。
Github地址:Github地址

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

组员分工及组员贡献

队员学号 队员姓名 此次作业任务 贡献比例
221600412 陈宇 项目管理、后端代码的编写,服务器的部署 23%
221600411 陈迎仁 后端逻辑模块的编写,聊天记录过滤的处理,博客文档的编写 21%
221600401 陈诗娴 编写博客文档结构,前端美工设计 15%
221600409 蔡森林 附加功能的实现,数据处理与挖掘、编写附加功能部分的博客文档 21%
221600408 蔡鸿键 前端代码的编写与设计 20%

github 的提交日志截图






程序运行截图





程序运行环境

  • 本项目为web项目,搭载在阿里云服务器上,web访问链接为: 项目运行地址

  • 前端:

开发工具为PhpStorm,开发语言为Ajax、js、css、HTML,框架为boostrap;运行环境为各类浏览器(谷歌浏览器、火狐浏览器、IE6以上的IE浏览器等)

  • 后端

开发工具为IntelliJ IDEA Ultimate,开发语言为java,框架为boostrap;运行环境为java环境


GUI界面







基础功能实现

基本功能实现的核心代码

  • 抽奖
@RequestMapping("/draw")
    public ResponseData draw(String email,String name, String document, Integer winnerNum,
                             String startTime, String endTime, String resultTime,
                             String keyWord, Integer filterType, String award,
                             HttpServletRequest request) throws ClientException, IOException, MessagingException {
        ResponseData responseData = new ResponseData();
       LotteryDrawRule lotteryDrawRule=new LotteryDrawRule(LotteryDrawFilter.getFilterTypeString(filterType),keyWord,startTime,
               endTime,resultTime, winnerNum);
        //LotteryDrawFilter lotteryDrawFilter=new LotteryDrawFilter(lotteryDrawRule,"/home/QQrecord-2022.txt");
       LotteryDrawFilter lotteryDrawFilter=new LotteryDrawFilter(lotteryDrawRule,"G:\\MyJavaWeb\\Luckydraw\\src\\main\\resources\\QQrecord-2022.txt");
       Map<String, Integer> users = lotteryDrawFilter.doFilter();
       List<User> awardUsers = LcgRandom.getResult(users,winnerNum);
       String str[] = award.split("\\,");
       int j = 0;
       for(String s : str){
           String awardName = s.split(":")[0];
           Integer awardNum = Integer.valueOf(s.split(":")[1]);
           for (int i = 0; i<awardNum;i++){
               if(j<awardUsers.size()){
                   awardUsers.get(j).setAward(awardName);
                   j++;
               }
           }
       }
       StringBuilder awardString = new StringBuilder();
       for (User u: awardUsers) {
           awardString.append(u.toString()+"\r\n");
       }
       awardString.append(" ");
       DrawLuckResult dr = new DrawLuckResult(name,document,keyWord,startTime,endTime,resultTime,winnerNum,award,
               LotteryDrawFilter.getFilterTypeString(filterType),awardString.toString());
       drawLuckResultDao.insert(dr);
       responseData.setData(dr);
       Thread t = new Thread(new Runnable() {
           @Override
           public void run() {
               try {
                   StringBuilder sb = new StringBuilder();
                   for (User u: awardUsers) {
                       sb.append(u.toString()+"</br>");
                   }
                   sb.append(" ");
                   EmailUtil.send465("中奖结果","<h1>中奖结果通知</h1></br>" + sb.toString(),email);
               } catch (MessagingException e) {
                   e.printStackTrace();
               }
               for (User u: awardUsers) {
                   try {
                       String name = u.getName();
                       String email = null;
                       if(name.contains("(")){
                           email = name.substring(name.indexOf("(") +1 ,name.lastIndexOf(")"));
                           if (!email.contains("@qq.com")){
                               email += "@qq.com";
                           }
                       }else if(name.contains("<")){
                           email = name.substring(name.indexOf("<") +1 ,name.lastIndexOf(">"));
                       }
                       // System.out.println(email);
                       // 为了不打扰其他人只通知自己
                       if (email.contains("947205926")){
                           EmailUtil.send465("中奖通知","恭喜" + u.getName() + "获得" + u.getAward(),"947205926@qq.com");
                       }
                   } catch (Exception e) {
                       e.printStackTrace();
                   }
               }
           }
       });
       t.start();
        return responseData;
    }
  • Lgc随机数
public static List<User> getResult(Map<String, Integer> users, Integer awardNum) {
        Iterator it = users.entrySet().iterator();
        List<User> listUser = new ArrayList<>();
        while (it.hasNext()) {
            Map.Entry entry = (Map.Entry) it.next();
            String name = (String) entry.getKey();
            Integer weight = (Integer) entry.getValue();
            // System.out.println(name + "  " + weight);
            listUser.add(new User(name, weight));
        }
        Random random = new Random();
        // 对所有参与的用户进行随机排序
        Collections.sort(listUser, new Comparator<User>() {
            @Override
            public int compare(User o1, User o2) {
                return random.nextInt(2) - 1;
            }
        });
        int i = 0;
        int size = listUser.size();
        LcgRandom lcg = new LcgRandom();
        List<User> awardList = new ArrayList<>();
        if (size > 0) {
            while (i < awardNum) {
                int ran = lcg.nextInt(size);
                // 对水群的用户降低获奖权重
                if (listUser.get(ran).getWeight() > 0) {
                    listUser.get(ran).setWeight(listUser.get(ran).getWeight() - 1);
                } else {
                    awardList.add(listUser.get(ran));
                    listUser.remove(ran);
                    size = listUser.size();
                    i++;
                }
            }
        }
        return awardList;
    }

LCG算法

LCG(linear congruential generator)线性同余算法,是一个古老的产生随机数的算法。由以下参数组成:

参数 m a c X
性质 模数 乘数 加数 随机数
作用 取模 移位 偏移 作为结果
LCG算法是如下的一个递推公式,每下一个随机数是当前随机数向左移动 log2 a 位,加上一个 c,最后对 m 取余,使随机数限制在 0 ~ m-1 内

  • 从该式可以看出,该算法由于构成简单,具有以下优点
    • 计算速度快
    • 易于实现
    • 易于写入硬件

二、伪随机数算法

  伪随机数产生的方法有个逼格挺高的名字---伪随机数发生器。伪随机数产生器中最最最基础的思想是均匀分布(当然这不是唯一的思路)。一般来说,只敢说"一般来说",因为我也不敢百分百肯定,如今主流的编程语言中使用的随机数函数基本采用这种均匀分布思想,而其中最常用的算法就是"线性同余法"。

  1. 什么是线性同余法?

  线性同余法基于如下线性同余方程组

  用于产生均匀型伪随机数的线性同余产生器(与上面的方程符号没有对应关系)

   

  其中,a为"乘数",b为"增量",m为"模数",x0为"种子数"。

  如果产生的是区间实在(0,1)之间的,则只需要每个数都除以m即可,即取

  

  2. 线性同余法产生均匀型伪随机数需要注意什么?

   2.1)种子数是在计算时随机给出的。比如C语言中用srand(time(NULL))函数进行随机数种子初始化。

   2.2)决定伪随机数质量的是其余的三个参数,即a,b,m决定生成伪随机数的质量(质量指的是伪随机数序列的周期性)

   2.3)一般b不为0。如果b为零,线性同余法变成了乘同余法,也是最常用的均匀型伪随机数发生器。

  3. 高性能线性同余法参数取值要求?

   3.1)一般选取方法:乘数a满足a=4p+1;增量b满足b=2q+1。其中p,q为正整数。 PS:不要问我为什么,我只是搬运工,没有深入研究过这个问题。

   3.2)m值得话最好是选择大的,因为m值直接影响伪随机数序列的周期长短。记得Java中是取得32位2进制数吧。

   3.3)a和b的值越大,产生的伪随机数越均匀

   3.4)a和m如果互质,产生随机数效果比不互质好。
反正这图我没有发现明显的规律。因此这种伪随机数在一定条件下是可以满足随机性性质的。

聊天记录过滤思路

  • 基本过滤:

首先通过正则表达式进行聊天记录的切割,分为用户信息和用户聊天内容;通过用户信息获取用户的ID(昵称+账号);根据用户ID的开头进行判断是否是系统消息、助教、教师,对这三类的对象进行过滤,不参与后续的抽奖活动,实现基本过滤。

```
if (Pattern.matches("系统消息\\([0-9]+\\)", userID) || Pattern.matches("教师_.*\\(.*\\)", userID)|| Pattern.matches("助教_.*\\(.*\\)", userID))
{
     userID = null;
}
```

三种过滤选择:

  • 不过滤

针对抽奖名单的过滤,只实现基本过滤,并不对名单进一步的进行筛选,即只去除系统消息、教师、助教这三类对象。

  • 普通过滤

针对抽奖名单的过滤,首先实现基本过滤,去除系统消息、教师、助教这三类用户;其次针对只发表抽奖关键字的对象,也进行过滤。主要通过去除聊天记录中的关键字后,如果为空,则这条消息对应的说话人则不加入待抽奖名单。

  • 深度过滤

针对抽奖名单的过滤,首先实现基本过滤,去除系统消息、教师、助教这三类用户;其次针对只发表抽奖关键字的对象,也进行过滤;并且对于聊天内容只有图片和抽奖关键字的对象也进行一定抽奖概率的降低,但不进行过滤。

基本实现:

  • 读取文件,基本过滤处理
BufferedReader bufferedReader = openFile();
        //读取文件
        String talkContent = null;
        String temp = null;
        while ((temp = bufferedReader.readLine()) != null) {
            if (textType.equals("USER_TALK_CONTENT")) {
                if (!(isUserInfo(temp))) {
                    talkContent += temp;
                } else{
                    //判断发言是否有抽奖关键字
                    if (hasKeyWord(lotteryDrawRule.getKeyWord(), talkContent) && userID != null) {
                        talkContentFilter(talkContent);
                    }
                    talkContent = null;
                    userID = null;
                    textType = "USER_INFO";
                }
            }
            if (textType.equals("USER_INFO")) {
                userID = getUser(temp);
                if (userID != null) {
                    //去除系统消息、教师、助教
                    if (Pattern.matches("系统消息\\([0-9]+\\)", userID)
                            || Pattern.matches("教师_.*\\(.*\\)", userID)
                            || Pattern.matches("助教_.*\\(.*\\)", userID)) {
                        userID = null;
                    }
                }
                textType = "USER_TALK_CONTENT";
            }
        }
        //测试
        for (String key : users.keySet()) {
            System.out.println(key + ":" + users.get(key));
        }
        read.close();
        return users;
  • 三种过滤的处理
*
        过滤函数
        filterType=NO_FILTER:表示不过滤;所有人参与抽奖
        filterType=NORMAL_FILTER:表示普通过滤;过滤只有抽奖关键字的用户
        filterType=DEEP_FILTER:表示深度过滤;过滤只有抽奖关键字的用户或降低只有图片+抽奖关键字的用户的获奖概率
		 */
    public void talkContentFilter(String talkContent) {
        boolean flag = true;    //判断其需不需要被过滤
        int deepNum = 0;        //满足深度过滤的次数
        //如果为NO_FILTER;不执行任何过滤
        if ((lotteryDrawRule.getFilterType().equals("NO_FILTER"))) {
        }
        else if((lotteryDrawRule.getFilterType().equals("NORMAL_FILTER"))){
            //去除抽奖关键关键字
            talkContent = talkContent.substring(talkContent.lastIndexOf('#')+1);
            //符合NORMAL_FILTER
            if (talkContent == null || talkContent.equals("")) {
                flag = false;
            }
        }
        else{
             //去除抽奖关键关键字
            talkContent = talkContent.substring(talkContent.lastIndexOf('#')+1);
            //符合NORMAL_FILTER
            if (talkContent == null || talkContent.equals("")) {
                flag = false;
            }
            //符合DEEP_FILTER
            if (talkContent.equals("[图片]") && lotteryDrawRule.getFilterType().equals("DEEP_FILTER")) {
                deepNum = 1;
            }
        }
        if (!users.containsKey(userID) && flag) { // 如果该用户id未出现过且不需要过滤
            users.put(userID, deepNum); // 存入map
        }
        else if (deepNum > 0) {       //如果该用户满足深度过滤的要求,就保存他的言论次数,用于计算概率时降低它的获奖权值
            deepNum = (int) users.get(userID) + 1;
            users.put(userID, deepNum);
        }
    }

附加功能实现

附加需求功能

一、聊天记录数据分析

用户各时间段发言统计

整体分析用户各时间段的发言情况,统计每个用户各个时间段的发言次数,然后以柱形图形式展现,通过柱状图我们很容易得出用户在哪些时间段发言频率较高。

    def get_time(self):
        times = re.findall(r'\d{2}:\d{2}:\d{2}', self.data)#提取用户发言时间哪小时
        Xi = [time.split(":")[0] for time in times]
        sns.countplot(Xi, order=[str(i) for i in range(0, 24)])
        plt.plot()
        plt.rcParams['font.sans-serif'] = ['SimHei']
        plt.title("各时间段发言统计")
        plt.xlabel("时间00:00—24:00")
        plt.ylabel("发言次数/次")
        plt.savefig(r"img\hour.png", format='png')
        plt.close()

活跃用户的发言情况

局部分析前五名活跃用户的发言情况,统计每个用户的发言次数,然后进行排序提取前五个活跃用户的发言情况,然后以折线图的形式展现,通过折线图我们很容易发现这五个用户在哪些时间段发言频率较高。

    def get_active(self):
        str_list = re.findall(r'\d{2}:\d{2}:\d{2} .*?\n', self.data)
        chat = {}
        i = 0
        for string in str_list:#提取用户昵称及其发言的时间段分布
            size = len(string) - 1
            dict2 = {}
            if string[9:size] != "系统消息(10000)":
                if not chat.__contains__(string[9:size]):
                    i = i + 1
                    dict2[string[0:2]] = 1
                    chat[string[9:size]] = dict2
                else:
                    if not chat[string[9:size]].__contains__(string[0:2]):
                        chat[string[9:size]][string[0:2]] = 1
                    else:
                        chat[string[9:size]][string[0:2]] = chat[string[9:size]][string[0:2]] + 1
        dict3 = {}
        for key, dic in chat.items():#降序排序统计用户活跃情况
            count = 0
            for val in dic.values():
                count += val
            dict3[key] = count
        result = dict(sorted(dict3.items(), key=operator.itemgetter(1), reverse=True))
        colors = ['red', 'green', 'blue', 'orange', 'black']
        Xi = [str(k) for k in range(0, 24)]
        i = 0
        for key in result.keys():#遍历前五名活跃用户的发言情况
            if i >= 5:
                break
            Yi = []
            for j in range(0, 24):
                Yi.append(0)
            for key2 in chat[key].keys():
                Yi[int(key2)] = chat[key][key2]
            plt.plot(Xi, Yi, color=colors[i], label=key)
            i = i + 1
        plt.rcParams['font.sans-serif'] = ['SimHei']
        plt.xticks(range(len(Xi)))
        plt.legend()
        plt.title("活跃用户统计")
        plt.xlabel("时间00:00—24:00")
        plt.ylabel("发言次数/次")
        plt.savefig(r"img\active.png", format='png')
        plt.close()

分析聊天记录有效关键词

对用户聊天记录进行有效关键词提取与分析,然后对这些关键词进行整合分析,绘出词云图,通过词云图我们很容易得出,聊天记录中哪些关键词使用频率较高。

    def get_wordcloud(self):
        pattern = re.compile(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} .*?\(\d+\)\n(.*?)\n', re.DOTALL)
        contents = re.findall(pattern, self.data)
        word_list = []
        for sentence in contents:
            sentence = sentence.replace("[表情]", "").replace("[图片]", "").replace("@全体成员", "")
            if sentence != "" and not sentence.__contains__("撤回了一条消息") and not sentence.__contains__("加入本群。") and \
                not sentence.__contains__('长按复制此消息,打开最新版支付宝就能领取!') and not sentence.__contains__('请使用新版手机QQ查收红.'):
                word_list.append(" ".join(jieba.cut(sentence.strip())))
        new_text = " ".join(word_list)
        wordcloud = WordCloud(background_color="white",
                              width=1200,
                              height=1000,
                              min_font_size=50,
                              font_path="simhei.ttf",
                              random_state=50,
                              )
        my_wordcloud = wordcloud.generate(new_text)
        plt.imshow(my_wordcloud)
        plt.axis("off")
        wordcloud.to_file(r'img\wordcloud.png')

实验结果如下

  • PlusA.txt聊天记录数据分析


  • PlusB.txt聊天记录数据分析


二、绘画获奖名单海报

1、思路分析
通过接受服务器传来的获奖名单json数据,然后对json字符串进行相应的处理,提取出获奖者的昵称,QQ号或邮箱和奖品名称,然后对相应的模块进行绘画,生成海报图。

header = '[云打印抽奖] QQ互动'
title = '2019年4月QQ互动获奖名单'
chapter = ['昵称', 'QQ号', '奖品']
string = '恭喜以上获奖的同学,我们将在近期发出本次活动的奖励,请有获奖的同学注意关注本平台抽奖动态,感谢您的参与,谢谢!'
n = 19
foot = [string[i:i + n] for i in range(0, len(string), n)]

# 设置字体和颜色
font_type = r'font\my_font.ttc'
header_font = ImageFont.truetype(font_type, 40)
title_font = ImageFont.truetype(font_type, 23)
chapter_font = ImageFont.truetype(font_type, 25)
email_font = ImageFont.truetype(font_type, 18)
list_font = ImageFont.truetype(font_type, 24)
foot_font = ImageFont.truetype(font_type, 20)
header_color = '#FFFFFF'
title_color = '#EE0000'
chapter_color = '#CD3333'
list_color = '#EE2C2C'
foot_color = '#EE3B3B'

# 设置图片
img = 'img/mode.png'
new_img = 'img/scholarship.png'  
image = Image.open(img)
draw = ImageDraw.Draw(image)
width, height = image.size

# header
header_x = 38
header_y = 880
draw.text((header_x, height - header_y), u'%s' % header, header_color, header_font)

# title
title_x = header_x + 30
title_y = header_y - 140
draw.text((title_x, height - title_y), u'%s' % title, title_color, title_font)

# chapter
chapter_x = title_x - 20
chapter_y = title_y - 40
draw.text((chapter_x, height - chapter_y), u'%s' % chapter[0], chapter_color, chapter_font)
draw.text((chapter_x + 140, height - chapter_y), u'%s' % chapter[1], chapter_color, chapter_font)
draw.text((chapter_x + 270, height - chapter_y), u'%s' % chapter[2], chapter_color, chapter_font)

# 获取student_list
data = sys.argv[1]
contents = data.split('\\r\\n')
student_list = []
size = len(contents) - 1
for i in range(0, size):
    item = []
    if contents[i].__contains__('):'):
        nick_name = re.findall(r'(.*?)\(', contents[i])
    elif contents[i].__contains__('>:'):
        nick_name = re.findall(r'(.*?)<', contents[i])
    if contents[i].__contains__('):'):
        qq = re.findall(r'\((.*?)\)', contents[i])
    elif contents[i].__contains__('>:'):
        qq = re.findall(r'<(.*?)>', contents[i])
    reward = re.findall(r':(.*?),', contents[i])
    item.append(nick_name[0])
    item.append(qq[0])
    item.append(reward[0])
    student_list.append(item)
    
list_x = chapter_x - 20
list_y = chapter_y - 40
for student in student_list:
    for i in range(0, len(student)):
        if student[i].__contains__('@'):
            draw.text((list_x + i * 140, height - list_y), u'%s' % student[i], list_color, email_font)
        else:
            draw.text((list_x + i * 140, height - list_y), u'%s' % student[i], list_color, list_font)
    list_y = list_y - 40
    
#footer
foot_x = chapter_x - 30
foot_y = list_y - 40
for i in range(0, len(foot)):
    foot_y = foot_y - 40
    draw.text((foot_x, height - foot_y), u'%s' % foot[i], foot_color, foot_font)
draw.text((chapter_x + 30, height - (foot_y - 40)), u'%s(云打印)' % time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), foot_color, foot_font)

image.save(new_img, 'png')

2、实验结果如下


增加功能

邮件提醒

增加了对中奖学生的邮件提醒,通过处理聊天记录中的用户信息,获取用户的邮箱信息比如qq邮箱,实现对中奖用户的邮件提醒,提高用户的体验。

  • 基本实现
public class EmailUtil {
    // 发件人 账号和密码
    public static final String MY_EMAIL_ACCOUNT = "cy947205926@163.com";
    public static final String MY_EMAIL_PASSWORD = "**********";// 密码,是你自己的设置的授权码
    public static void send465(String subject,String content,String receiveEmail) throws AddressException, MessagingException {
        Properties p = new Properties();
        p.put("mail.smtp.ssl.enable", true);
        p.setProperty("mail.smtp.host", MEAIL_163_SMTP_HOST);
        p.setProperty("mail.smtp.port", "465");
        p.setProperty("mail.smtp.socketFactory.port", SMTP_163_PORT);
        p.setProperty("mail.smtp.auth", "true");
        p.setProperty("mail.smtp.socketFactory.class", "SSL_FACTORY");
        Session session = Session.getInstance(p, new Authenticator() {
            // 设置认证账户信息
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(MY_EMAIL_ACCOUNT, MY_EMAIL_PASSWORD);
            }
        });
        session.setDebug(true);
        MimeMessage message = new MimeMessage(session);
        // 发件人
        message.setFrom(new InternetAddress(MY_EMAIL_ACCOUNT));
        // 收件人和抄送人
        message.setRecipients(Message.RecipientType.TO, receiveEmail);
        // 内容(这个内容还不能乱写,有可能会被SMTP拒绝掉;多试几次吧)
        message.setSubject(subject);
        message.setContent("<h1>"+ content +"</h1>", "text/html;charset=UTF-8");
        message.setSentDate(new Date());
        message.saveChanges();
        Transport.send(message);
    }
}


遇到的困难及解决方法

  • 陈宇
    • 遇到的困难:java和python对接后端的时候出现了一些问题,部署服务器的时候遇到了一些浪费了比较多的时间。java调用shell命令出了点问题
    • 解决办法:查询相关资料。团队成员一起努力一起解决了。

  • 陈迎仁
    • 遇到的困难:
      • 正则表达式应用不熟悉,在对于文档的切割过程中,经常遇到一些切割错误;花费了较多的时间在对聊天记录的切割。
    • 解决办法:
      • 通过查询百度文档,学习郑重地表达式的基本语法,根据具体格式去寻找正则表达式的书写;与团队队友进行商量。

  • 陈诗娴
    • 遇到的困难:
      • 编程方面比较弱,算法单一,有很多不懂的
    • 解决办法:
      • 做力所能及的部分

  • 蔡森林
    • 遇到的困难:对于数据分析,自己从未接触过,不知道怎么使用python绘制图表;对前后端交互不是很懂;bug调试不是很熟练。
    • 解决办法:通过网上搜索有关python绘图知识,边模仿边践行,一步一步实现聊天记录的可视化图表,如柱形图,折线图,词云图和海报图;对于前后端的交互,主要通过接口实现,以json数据格式进行数据处理;慢慢积累调bug经验,培养独立解决问题的能力。

  • 蔡鸿键
    • 遇到的困难:
      • git bash使用不便,前后端数据传输不顺,JS参数传输遇到困难
    • 解决办法:
      • 依靠队友指导,大家一起测试寻找BUG,使用搜索引擎查询,多实践


马后炮

  • 陈宇

    • 如果我能力能在强一点,那么队友就能轻松一点

  • 陈迎仁

    • 如果我学java后端的进度能更快一点,那么这次我就能独自实践Java后端开发以及服务器的搭建了,实现我所渴望的技术。

  • 陈诗娴

    • 如果我的代码能力能强一点,那么就能为团队做更多事。

  • 蔡森林

    • 如果我能提前好好学python,那么我将能为我的团队做得更多

  • 蔡鸿键

    • 如果好好学习,那么就没什么BUG要解决了


PSP表格

陈宇

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

陈迎仁

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

陈诗娴

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

蔡森林

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

蔡鸿键

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


Alpha代码规范、冲刺任务与计划

团队名称: 云打印
作业要求: Alpha代码规范、冲刺任务与计划
作业目标:代码规范、冲刺任务与计划。

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

代码规范

后端采用Springboot编写 java代码规范我一直是用阿里云java开发手册上的要求。(有些浏览器可能不支持pdf在线预览,那就只能直接下载,我正常使用的都是Google浏览器)
阿里巴巴Java开发手册纪念版.pdf在线预览

代码规范参考阿里巴巴Java开发手册纪念版:

一、命名风格

【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
反例:name / name / $name / name / name$ / name
【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。国际通用的名称,可视同英文。
反例:DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3
【强制】类名使用 UpperCamelCase 风格,但以下情形例外:DO / BO / DTO / VO / AO / PO / UID 等。
正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion
【强制】方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式。
正例: localValue / getHttpMessage() / inputUserId
【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
正例:MAX_STOCK_COUNT
反例:MAX_COUNT
【强制】抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类 命名以它要测试的类的名称开始,以 Test 结尾。
【强制】包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
正例:应用工具类包名为 com.alibaba.ai.core.util、类名为 MessageUtils(此规则参考 spring 的框架结构)
【强制】杜绝完全不规范的缩写,避免望文不知义。
反例:AbstractClass“缩写”命名成AbsClass;condition“缩写”命名成 condi,此类随 意缩写严重降低了代码的可阅读性。
【推荐】为了达到代码自解释的目标,任何自定义编程元素在命名时,使用尽量完整的单词组合来表达其意。
正例:在 JDK 中,表达原子更新的类名为:AtomicReferenceFieldUpdater。
反例:变量 int a 的随意命名方式。

二、代码格式

【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:
左大括号前不换行。
左大括号后换行。
右大括号前换行。
右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。
【强制】if/for/while/switch/do 等保留字与括号之间都必须加空格。
【强制】采用 4 个空格缩进,禁止使用 tab 字符。

三、注释规约

【强制】类、类属性、类方法的注释必须使用 Javadoc 规范,使用/**内容/格式,不得使用 // xxx 方式。
说明:在 IDE 编辑窗口中,Javadoc 方式会提示相关注释,生成 Javadoc 可以正确输出相应注释;在 IDE 中,工程调用方法时,不进入方法即可悬浮提示方法、参数、返回值的意义,提高阅读效率。
【强制】所有的抽象方法(包括接口中的方法)必须要用 Javadoc 注释、除了返回值、参数、异常说明外,还必须指出该方法做什么事情,实现什么功能。
说明:对子类的实现要求,或者调用注意事项,请一并说明。
【强制】所有的类都必须添加创建者和创建日期。
【强制】方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释 使用/
*/注释,注意与代码对齐。
【强制】所有的枚举类型字段必须要有注释,说明每个数据项的用途。
【推荐】与其“半吊子”英文来注释,不如用中文注释把问题说清楚。专有名词与关键字保持英文原文即可。
反例:“TCP连接超时”解释成“传输控制协议连接超时”,理解反而费脑筋。
【推荐】代码修改的同时,注释也要进行相应的修改,尤其是参数、返回值、异常、核心逻辑等的修改。
说明:代码与注释更新不同步,就像路网与导航软件更新不同步一样,如果导航软件严重滞后,就失去了导航的意义。

前端代码规范

1、变量名称用先小写后大写命名,如:maxStudy
2、先后端数据变量一致使用后端命名方式
3、若在小范围的命名变量中使用三个字母的命名,如:msg
4、避免使用不易理解的数字,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的静态变量来代替。
5、不要使用难懂的技巧性很高的语句,除非很有必要时。说明:高技巧语句不等于高效率的程序,实际上程序的效率关键在于算法。
6、css、js语句代码后加“ ; ”断句
7、使用空行来分割逻辑

冲刺任务与计划(含冲刺总结)

任务 内容 时间
第一天 阅读代码规范,安装相应的环境 4.24
第二天 完成微信小程序登录授权 4.25
第三天 完成微信小程序上传文件 4.26
第四天 完成后台计算页数 4.27
第五天 学习微信支付接口 4.28
第六天 完成小程序微信支付接口 4.29
第七天 后端和小程序和微信支付对接 4.30
第八天 完成商家端接单和查看订单 5.1
第九天 整合代码,测试程序 5.2
第十天 发布Alpha版本程序 5.3
第十一天 发布一篇冲刺总结随笔,描述项目预期计划、现实进展、过程体会、组员分工及在Alpha阶段的工作量比例、下阶段展望。 5.4

项目Alpha冲刺(团队1/10)

团队名称: 云打印
作业要求: 项目Alpha冲刺(团队)
作业目标: 完成项目Alpha版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 完成了Alpha代码规范、冲刺任务与计划
      • 完成任务安排
      • 休整了团队
    • 今天任务
      • 阅读代码规范,安装相应的环境
      • 帮助队友安装相关环境;
      • 规划日程、任务
    • 有哪些困难
      • 搭建Springboot环境遇到了一些小问题
      • 对敏捷开发的规划、设计方式不熟悉
    • 有哪些收获
      • 查阅百度并学习了相应的方法

  • 陈迎仁

    • 昨天完成了哪些任务
      • 阅读了任务要求,安排了开发周期任务
    • 今天任务
      • 确定代码规范。
      • 安装IDE:微信web开发者工具
      • 熟悉IDE
    • 有哪些困难
      • 第一次接触微信小程序开发,对于一些工具及其文档不熟悉
    • 有哪些收获
      • 学会使用微信小程序的开发工具

  • 陈诗娴

    • 昨天完成了哪些任务
      • 学习java
      • 确认团队分工
    • 今天任务
      • 学习java
      • 阅读代码规范
      • 安装相应的环境
    • 有哪些困难
      • 环境搭建的时候遇到了问题
    • 有哪些收获
      • 意识到一开始就明确自己要做什么很重要
      • 学会了如何搭建Springboot环境

  • 蔡森林

    • 昨天完成了哪些任务
      • 接受组长任务调配
      • 与组员讨论分工
    • 今天任务
      • 安装相应的开发工具和环境
      • 计划分工任务
    • 有哪些困难
      • 安装环境出错
    • 有哪些收获
      • 百度解决环境搭建问题

  • 蔡鸿键

    • 昨天完成了哪些任务
      • 阅读了任务要求
    • 今天任务
      • 确定代码规范。
      • 安装IDE:phpstrom
      • 熟悉IDE
    • 有哪些困难
      • 对英文环境有些困难
    • 有哪些收获
      • 熟悉了PHPstrom

站立式会议照片


项目燃尽图


冲刺情况描述

项目进展

阅读代码规范,大家一起安装好相应的环境,规划好每个人的任务

问题困难

第一次安装环境遇到了好多问题,大家对敏捷开发的规划、设计方式也都不太熟悉

心得体会

已经安装好环境,可以准备着手开发了,希望不要经常熬夜

项目Alpha冲刺(团队2/10)

团队名称: 云打印
作业要求: [项目Alpha冲刺(团队)](https
😕/edu.cnblogs.com/campus/fzu/SoftwareEngineering1916W/homework/3107 )
作业目标: 完成项目Alpha版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 阅读代码规范,安装相应的环境
      • 安装了相应的软件
      • 开始着手开发
    • 今天任务
      • 完成微信小程序登录授权
      • 完成相应的后端开发
    • 有哪些困难
      • 完成了部分日程和任务的规划
      • 对微信小程序的设置属性
    • 有哪些收获
      • 学习微信小程序和java对接方法
      • 学习了相应的java后端技术

  • 陈迎仁

    • 昨天完成了哪些任务
      • 确定代码规范,安装并熟悉了IDE
    • 今天任务
      • 阅读微信小程序的官方文档,了解微信小程序的组件与API以及微信小程序的项目结构,尝试编辑第一个微信小程序的页面
    • 有哪些困难
      • 部分组件与学过的HTML的组件形式不一样,较为不熟悉,花费的时间比较长,调试
    • 有哪些收获
      • 学习到了微信小程序的项目结构,对于小程序的实现有了一个大概的了解。对于微信小程序组件与API有了一个大致的了解

  • 陈诗娴

    • 昨天完成了哪些任务
      • 学习java
      • 阅读代码规范
      • 安装相应的软件
    • 今天任务
      • 学习java
      • 协作完成微信小程序的授权登录
    • 有哪些困难
      • 第一次做微信小程序
      • java使用还不太熟练
      • 一开始对如何实现微信小程序的授权登录不了解
    • 有哪些收获
      • 学习如何实现微信小程序的授权登录
      • 学习了更多的java的使用

  • 蔡森林

    • 昨天完成了哪些任务
      • 安装相应的开发工具和环境
      • 计划分工任务
    • 今天任务
      • 开始学习微信小程序知识
    • 有哪些困难
      • 对js知识不够熟悉
    • 有哪些收获
      • 初步接触部分微信小程序知识

  • 蔡鸿键

    • 昨天完成了哪些任务
      • 安装熟悉了IDE
    • 今天任务
      • 尝试编辑第一个网页
    • 有哪些困难
      • 调试,运行网页代码操作不流畅
    • 有哪些收获
      • 安装了浏览器插件,使的网页调试效率提升。

站立式会议照片


项目燃尽图


冲刺情况描述

项目进展

完成微信小程序登录授权、微信小程序登录授权后台的相应开发和部分GUI界面

问题困难

调试,运行网页代码操作不流畅

心得体会

刚开始还没遇到很难的问题,查找资料把问题都解决了,希望后续任务也能这样

项目Alpha冲刺(团队3/10)

团队名称: 云打印
作业要求: 项目Alpha冲刺(团队)
作业目标: 完成项目Alpha版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 完成微信小程序登录授权后台的相应开发
      • 完成微信小程序登录授权
      • 完成了部分GUI界面
    • 今天任务
      • 后端上传文件的接口
      • 进行相应的测试
    • 有哪些困难
      • 搭建测试环境的时候出现bug
      • 上传文件字符编码有写问题
    • 有哪些收获
      • 复习了Linux进行文件操作
      • 用java进行操作文件I/O

  • 陈迎仁

    • 昨天完成了哪些任务
      • 阅读微信小程序的官方文档,了解微信小程序的组件与API以及微信小程序的项目结构
    • 今天任务
      • 按照原型编写微信小程序的一个首页界面
    • 有哪些困难
      • wxss的编写与设计较为麻烦,花费的时间长
    • 有哪些收获
      • 完成了项目的第一个首页,并温习了css的一些属性

  • 陈诗娴

    • 昨天完成了哪些任务
      • 学习java
      • 协作完成微信小程序的授权登录
    • 今天任务
      • 学习java
      • 协作完成微信小程序后端上传文件的接口
    • 有哪些困难
      • 对用java实现接口还不熟
    • 有哪些收获
      • 对用java实现接口更熟悉了

  • 蔡森林

    • 昨天完成了哪些任务
      • 学习部分微信小程序知识
    • 今天任务
      • 阅读代码规范
      • 协调队友优化界面
    • 有哪些困难
      • ps美化图片技术欠缺
    • 有哪些收获
      • 初步接触微信小程序界面设计

  • 蔡鸿键

    • 昨天完成了哪些任务
      • 编写了第一个网页,安装了调试器。
    • 今天任务
      • 按照原型编写网页框架
    • 有哪些困难
      • CSS编写还原设计比较困难。
    • 有哪些收获
      • 浏览了一些优秀的设计网站,艺术感得到了提升。

站立式会议照片


项目燃尽图


冲刺情况描述

项目进展

完成微信小程序上传文件、后端上传文件的接口和相应的小程序界面

问题困难

搭建测试环境的时候出现bug、上传文件字符编码有些问题、按原型设计编写CSS比较困难

心得体会

大家都专注于各自的部分,按时完成了当天的任务,在这种氛围下敲代码也很有动力

项目Alpha冲刺(团队4/10)

团队名称: 云打印
作业要求: 项目Alpha冲刺(团队)
作业目标: 完成项目Alpha版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 完成微信小程序上传文件
      • 完成后端上传文件的接口
      • 完成相应的小程序界面
    • 今天任务
      • 完成后台计算页数 ,后端计算word页数
      • 调用第三方库进行转pdf
      • 调用相应的第三方库进行计算页数
    • 有哪些困难
      • 在linux上转pdf很困难
      • 计算word页数出现不准确
    • 有哪些收获
      • 学习了第三方Java库进行操作文件
      • 学习了相应的服务器安装软件命令

  • 陈迎仁

    • 昨天完成了哪些任务
      • 按照原型完成了微信小程序端的第一个首页界面
    • 今天任务
      • 根据原型设计功能主界面,并添加登录接口的请求
    • 有哪些困难
      • 与后端交互的过程中,碰到一些请求失败的状况
    • 有哪些收获
      • 学会了微信小程序与后端的数据请求与交互,并且完成了功能主界面

  • 陈诗娴

    • 昨天完成了哪些任务
      • 学习java
      • 协作完成微信小程序后端上传文件的接口
    • 今天任务
      • 学习java
      • 协作完成后台计算页数
    • 有哪些困难
      • 计算页数出现不准确
    • 有哪些收获
      • 了解并解决了页数不准确的问题
      • 学习了更多的java的使用

  • 蔡森林

    • 昨天完成了哪些任务
      • 阅读代码规范
      • 协助队友优化界面
    • 今天任务
      • 继续学习微信小程序知识
      • 协调队友设计界面
    • 有哪些困难
      • 语法不是很熟练
    • 有哪些收获
      • 学习微信小程序相关语法

  • 蔡鸿键

    • 昨天完成了哪些任务
      • 按原型设计了主页面
    • 今天任务
      • 按照模板编写数据流通页面。
    • 有哪些困难
      • 没啥困难。。。
    • 有哪些收获
      • 和后端交流了数据摆放方式,对用户体验进行了提升。

站立式会议照片


项目燃尽图


冲刺情况描述

项目进展

完成后台计算页数,后端计算word页数,调用第三方库进行转pdf和相应的小程序界面

问题困难

在linux上转pdf很困难,计算word页数出现不准确

心得体会

一边自学一边完成任务,大家都好棒啊!

项目Alpha冲刺(团队5/10)

团队名称: 云打印
作业要求: 项目Alpha冲刺(团队)
作业目标: 完成项目Alpha版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 完成后台计算页数
      • 后端计算word页数
      • 相应的小程序界面
    • 今天任务
      • 学习微信支付接口
      • 后端微信支付接口
      • 督促队友完成相应的开发
      • 协调任务进度
    • 有哪些困难
      • 微信支付需要企业认证
      • 微信支付需要押金,缺钱。。
    • 有哪些收获
      • 学习看微信支付接口的调用方式
      • 能更好的协调队友

  • 陈迎仁

    • 昨天完成了哪些任务
      • 根据原型设计功能主界面,并添加登录接口的请求
    • 今天任务
      • 编写我的界面(静态)
    • 有哪些困难
      • wxss的编写与设计较为麻烦,花费的时间长。
    • 有哪些收获
      • 完成我的界面,并且熟悉了css属性,练就了样式调试的耐心

  • 陈诗娴

    • 昨天完成了哪些任务
      • 学习java
      • 协作完成后台计算页数
    • 今天任务
      • 学习java
      • 学习微信支付接口
    • 有哪些困难
      • 微信支付不是随便想申请就可以申请的
    • 有哪些收获
      • 简单得了解了微信支付接口的申请、配置和调用
      • 学习了更多的java的使用

  • 蔡森林

    • 昨天完成了哪些任务
      • 学习微信小程序语法
      • 协调队友设计界面
    • 今天任务
      • 协调队友设计微信支付接口
    • 有哪些困难
      • 微信支付接口不懂
    • 有哪些收获
      • 学习微信支付接口的调用方式

  • 蔡鸿键

    • 昨天完成了哪些任务
      • 按原型设计了数据展示部分。
    • 今天任务
      • 编写JS的动画效果部分。
    • 有哪些困难
      • 代码不听话,有时该跳出来不跳出来,有时动画代码卡死了。
    • 有哪些收获
      • 收获了耐心与冷静,佛性调试代码。

站立式会议照片


项目燃尽图


冲刺情况描述

项目进展

完成后端微信支付接口、相应的小程序界面,并实现成功的调用

问题困难

微信支付需要企业认证、需要押金,不了解微信支付接口

心得体会

认真的组长开始协调任务进度,看进度根据时间稳步增长,很有继续做下去的动力

项目Alpha冲刺(团队6/10)

团队名称: 云打印
作业要求: 项目Alpha冲刺(团队)
作业目标: 完成项目Alpha版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 学习微信支付接口
      • 后端微信支付接口
      • 相应的小程序界面
      • 并实现成功的调用
    • 今天任务
      • 完成小程序微信支付接口
      • 后端微信支付回调接口
      • 督促队友完成相应的开发
      • 协调任务进度
    • 有哪些困难
      • 微信支付验证流程比较麻烦
      • 请求支付的接口加密算法不熟悉
      • 回掉接口需要解密。
    • 有哪些收获
      • 学习了常见的加密算法,能对数据进行加密
      • 了解了安全性对企业的重要性

  • 陈迎仁

    • 昨天完成了哪些任务
      • 编写我的界面(静态)
    • 今天任务
      • 配合商家端的队友编写文件上传界面,以及上传文件接口的套用
    • 有哪些困难
      • 测试时经常出现返回不了微信小程序(因为上传文件是通过引入网页页面来实现)
    • 有哪些收获
      • 完成了文件上传接口,练就了调bug的耐心,不会那么想砸电脑了。

  • 陈诗娴

    • 昨天完成了哪些任务
      • 学习java
      • 学习微信支付接口
    • 今天任务
      • 学习java
      • 协作完成小程序微信支付接口
    • 有哪些困难
      • 微信支付接口要考虑很多东西,不好写代码
    • 有哪些收获
      • 学习了新的算法,对java的使用更熟练了

  • 蔡森林

    • 昨天完成了哪些任务
      • 协调队友设计微信支付接口
    • 今天任务
      • 学习微信小程序与后端交互知识
    • 有哪些困难
      • 对微信小程序与后端交互不了解
    • 有哪些收获
      • 接触微信小程序与后端交互知识

  • 蔡鸿键

    • 昨天完成了哪些任务
      • 完成了部分动画JS。
    • 今天任务
      • 编写JS的动画效果。
      • 编写JS的AJAX部分。
    • 有哪些困难
      • 向后端申请数据时会有参数错误。
    • 有哪些收获
      • 数据前后端接口对接熟练了。

站立式会议照片


项目燃尽图


冲刺情况描述

项目进展

完成小程序微信支付接口、后端微信支付回调接口和加密算法的实现

问题困难

微信支付验证流程比较麻烦,请求支付的接口加密算法不熟悉,回调接口需要解密

心得体会

大家各部分的进度都达到预期,感觉很快就可以对接了

项目Alpha冲刺(团队7/10)

团队名称: 云打印
作业要求: 项目Alpha冲刺(团队)
作业目标: 完成项目Alpha版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 完成小程序微信支付接口
      • 后端微信支付回调接口
      • 加密算法的实现
    • 今天任务
      • 后端和小程序和微信支付对接
      • 督促队友完成相应的开发
    • 有哪些困难
      • 微信支付验证流程比较麻烦
      • 请求支付的接口加密算法不熟悉
      • 对接时接口参数有些问题
    • 有哪些收获
      • 了解模块开发的重要性
      • 没有什么事是熬个夜不能解决的,如果有,就通个宵

  • 陈迎仁

    • 昨天完成了哪些任务
      • 配合商家端的队友编写文件上传界面,以及上传文件接口的套用
    • 今天任务
      • 编写订单信息填写页面以及订单基本信息的交互接口的套用
    • 有哪些困难
      • wxss的编写与设计较为麻烦,请求接口有时会有bug。
    • 有哪些收获
      • 完成了填写订单信息页面

  • 陈诗娴

    • 昨天完成了哪些任务
      • 学习java
      • 协作完成小程序微信支付接口
    • 今天任务
      • 学习java
      • 协作实现小程序接入微信支付
    • 有哪些困难
      • 写代码遇到了很多错误
    • 有哪些收获
      • 提高了java中发现问题和解决问题的能力

  • 蔡森林

    • 昨天完成了哪些任务
      • 学习微信小程序与后端交互知识
    • 今天任务
      • 协助队友后端和小程序交互
    • 有哪些困难
      • 调试bug
    • 有哪些收获
      • 积累调试经验

  • 蔡鸿键

    • 昨天完成了哪些任务
      • 完成了部分动画JS。
      • 完成了部分AJAX。
    • 今天任务
      • 编写剩余JS的AJAX部分。
    • 有哪些困难
      • 向后端申请数据时还会有参数错误或者是后端的数据库插入问题。
    • 有哪些收获
      • 联络了前后端开发人员的感情。
      • 不能相互甩锅。

站立式会议照片


项目燃尽图


冲刺情况描述

项目进展

完成后端和小程序和微信支付对接、填写订单信息页面以及交互

问题困难

将各部分对接遇到了很多问题

心得体会

熬夜一时爽,一直熬夜一直爽。。。

项目Alpha冲刺(团队8/10)

团队名称: 云打印
作业要求: 项目Alpha冲刺(团队)
作业目标: 完成项目Alpha版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/

| 221600408 |蔡鸿键 |https://www.cnblogs.com/jichiwoyaochi/||


各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 后端和小程序和微信支付对接
      • 完成小程序端的GUI
    • 今天任务
      • 完成商家端接单和查看订单
      • 后端商家端接口
      • 商家端的部分GUI
    • 有哪些困难
      • Web和后端跨域有些问题
      • 测试数据出问题
    • 有哪些收获
      • 查询了相关资料
      • 要合理安排时间,减少熬夜时间

  • 陈迎仁

    • 昨天完成了哪些任务
      • 完成了填写订单信息页面以及交互
    • 今天任务
      • 编写打印属性选择的页面,订单确认页面;并且套用接口实现数据交互
    • 有哪些困难
      • 没有什么困难
    • 有哪些收获
      • 完成了打印属性选择的页面,订单确认页面,实现数据交互

  • 陈诗娴

    • 昨天完成了哪些任务
      • 学习java
      • 协作实现小程序接入微信支付
    • 今天任务
      • 学习java
      • 协作完成后端商家端接口
    • 有哪些困难
      • 写代码还是遇到了一些错误
    • 有哪些收获
      • 解决错误后感觉对java的使用更熟练了

  • 蔡森林

    • 昨天完成了哪些任务
      • 协助队友后端和小程序交互
    • 今天任务
      • 协助队友后端与web交互
    • 有哪些困难
      • 对后端与web交互不熟悉
    • 有哪些收获
      • 积累后端与web交互经验

  • 蔡鸿键

    • 昨天完成了哪些任务
      • 完成了JS的大体代码
    • 今天任务
      • 优化GUI
      • 优化用户体验
      • 寻找更好网页素材代替粗略图
    • 有哪些困难
      • 跨域问题,拒绝访问
      • 素材比较难找
    • 有哪些收获
      • 跨域问题的解决
      • 界面友好度提升

站立式会议照片


项目燃尽图


冲刺情况描述

项目进展

完成商家端接单和查看订单、后端商家端接口、打印属性选择的页面,订单确认页面以及数据交互

问题困难

Web和后端跨域有些问题,拒绝访问

心得体会

快结束了,再肝一下

项目Alpha冲刺(团队9/10)

团队名称: 云打印
作业要求: 项目Alpha冲刺(团队)
作业目标: 完成项目Alpha版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 完成商家端接单和查看订单
      • 后端商家端接口
      • 商家端的部分GUI
    • 今天任务
      • 整合代码
      • 测试程序
      • 协调队友完成相应的开发
    • 有哪些困难
      • 有些开发进度低于预期
      • 整合代码时出现问题
    • 有哪些收获
      • 要合理协调组员
      • 要实时关注组员的进度

  • 陈迎仁

    • 昨天完成了哪些任务
      • 完成了打印属性选择的页面,订单确认页面以及数据交互
    • 今天任务
      • 完成微信支付功能的接口套接
    • 有哪些困难
      • 请求经常有失败
    • 有哪些收获
      • 学会了如何在微信小程序完成微信支付

  • 陈诗娴

    • 昨天完成了哪些任务
      • 学习java
    • 今天任务
      • 学习java
      • 测试程序
    • 有哪些困难
      • 担心测试不够全面
    • 有哪些收获
      • 对白盒测试的实际运用更熟练了

  • 蔡森林

    • 昨天完成了哪些任务
      • 协助队友优化接口问题
    • 今天任务
      • 对微信小程序和web进行测试
      • 协调队友完成相应的开发
    • 有哪些困难
      • 调试bug
    • 有哪些收获
      • 积累测试经验

  • 蔡鸿键

    • 昨天完成了哪些任务
      • 优化了页面
      • 解决了跨域BUG
    • 今天任务
      • 优化整合代码
      • 删除了一些调用速度慢的网页
      • 删除了一些注释代码
      • 删除了一些调试代码
      • 将JS、css、图片文件整合成独立文件夹
    • 有哪些困难
      • 整合代码比较麻烦
      • 导入bootstrap框架比较麻烦
    • 有哪些收获
      • 代码整洁度提升
      • 开发过程中就应该把这些文件提前整合

站立式会议照片


项目燃尽图


冲刺情况描述

项目进展

整合代码,优化代码,测试程序

问题困难

整合代码时出现问题,导入bootstrap框架比较麻烦

心得体会

快结束了,大家最后肝一次

项目Alpha冲刺(团队10/10)

团队名称: 云打印
作业要求: 项目Alpha冲刺(团队)
作业目标: 完成项目Alpha版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 整合代码
      • 测试程序
    • 今天任务
      • 发布Alpha版本程序
    • 有哪些困难
      • 有些代码缺少较为全面的测试
      • 服务器和windows环境不一样,部署时容易出问题
      • 有些代码整合在一起报错
    • 有哪些收获
      • 需要学习新知识,来扩宽自己的知识面
      • Alpha冲刺终于结束了,终于不用肝了

  • 陈迎仁

    • 昨天完成了哪些任务
      • 完成微信支付
    • 今天任务
      • 测试
      • 优化整合代码
      • 删除了一些注释代码
      • 删除了一些调试代码
    • 有哪些困难
      • 没啥困难。。
    • 有哪些收获
      • 认识到了开发过程中应该注意一些细节,以免花费double的时间去解决
      • 程序跑成功时还是很开心的

  • 陈诗娴

    • 昨天完成了哪些任务
      • 学习java
      • 测试程序
    • 今天任务
      • 学习java
      • 测试程序
    • 有哪些困难
      • 有些代码不知道怎么进行全面的测试
    • 有哪些收获
      • 学习很多以前没接触过的新知识
      • 每天按计划完成任务感觉效率有提高
  • 蔡森林

    • 昨天完成了哪些任务
      • 对微信小程序和web进行测试
      • 协调队友完成相应的开发
    • 今天任务
      • 协助队友对程序小修小补
    • 有哪些困难
      • 整合困难
    • 有哪些收获
      • 学到了很多知识

  • 蔡鸿键

    • 昨天完成了哪些任务
      • 优化代码
    • 今天任务
      • 测试
      • 发布A版本
    • 有哪些困难
      • 没啥困难。。
    • 有哪些收获
      • 在编程的时候,要考虑代码的重用性
      • 遇到难题解决时要及时记录下来,如博客啥的。。
      • 程序跑成功时还是很开心的

站立式会议照片


项目燃尽图


冲刺情况描述

项目进展

发布Alpha版本程序

问题困难

服务器和windows环境不一样,部署时容易出问题,有些代码整合在一起报错

心得体会

终于完成了alpha冲刺,感恩!

测试随笔

团队名称: 云打印
作业要求: 项目Alpha冲刺(团队)
测试用例文档下载

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

测试工作安排

模块 测试人 测试内容
单元测试 陈宇、陈迎仁、陈诗娴、蔡森林、蔡鸿键 各自编写的代码的覆盖率
界面测试 陈迎仁、蔡鸿键 测试界面的布局和易用性
功能测试 陈宇、蔡森林 测试功能的正确性
数据库测试 陈迎仁 测试数据库接口和性能
整体测试 陈宇、陈诗娴 测试系统整体的使用是否正常

测试工具选择和应用

模块 测试工具
单元测试 Junit
界面测试 Instrumentation
功能测试 Jprofile
数据库测试 mysqlslap

测试体会

  • 一开始我们计划是全部程序写完后一起测试,在放假前最后一次软件工程课听到老师教导,当天写的代码当天就测试,这样的效率会很高。我们记住了老师的教导并使用了这样的测试方式,确实感觉最后整体测试遇到的问题没有很多,大大减少了我们最后修改代码的时间。

项目测试评述

  • 大家都有参与到测试当中,每个人先负责各自的部分,这样效率挺高的。
  • 我们对绝大多数情况都做了测试,希望演示的时候不会出现我们没测试到的问题。

Alpha冲刺总结随笔

课程名称:软件工程1916|W(福州大学)
团队名称: 云打印
作业要求: 项目Alpha冲刺(团队)
作业目标:Alpha冲刺总结随笔

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/

共享文档地址

共享文档地址 新

共享文档地址 旧,麻烦填过旧链接的同学在重新填一下新链接吧


代码

小程序端代码Github地址
商家端代码Github地址
后端代码Github地址


项目预期计划及现实进展

项目预期计划 现实进展
阅读代码规范,安装相应的环境和开发者工具 100%
微信小程序登录授权,后端相应的开发 100%
后端上传文件的接口,进行相应的测试 99%
后端计算word页数,调用第三方库进行转pdf和进行计算页数 100%
学习微信支付接口 ,后端微信支付接口,督促队友 97%
微信支付接口,后端微信支付回调接口,协调任务进度 98%
后端和小程序和微信支付对接,督促队友完成相应的开发 98%
商家端接单和查看订单,后端商家端接口,商家端的部分GUI 97%
整合代码,测试程序,协调队友完成相应的开发 99%
发布Alpha版本程序 100%

过程体会

  • 陈宇(组长)
    在Alpha冲刺,我学到了如何更高效的管理团队,和协调团队成员之间的关系,明确每天自己的任务,当天的代码当天测试,多和组员沟通,及时了解队员的难处,五一放假都在忙这次的Alpha冲刺,虽然很累但也很充实,
    最后我们团队也按预期完成了任务。在开发过程中也踩了很多坑,也经常熬夜,历尽了千辛万苦终于完成了Alpha冲刺,希望我们的团队能在Beta做得更好。

  • 陈诗娴
    这一次任务感觉时间非常紧,组长在第一天就分配了每天应完成的任务进度,明确自己每天要完成的工作,我为了赶进度每天都要自主学习新知识并完成当天的工作,这一次放假也基本上都在忙项目了。这一次任务我们终于在上课前搞完了,虽然很累,但也感觉很充实,很有成就感,在这次任务中也学到了很多新的知识,还会继续努力的。

  • 蔡鸿键
    第一次大家在一起做一个项目,因为什么都不会,感觉拖累了大家。还好大家耐心的帮助我,让我感受到了一个人写代码无聊与大家一起写代码的乐趣

  • 蔡森林
    在Alpha冲刺过程中,我学到了很多东西,开始接触开发微信小程序,虽然自己能做得不多,只是对界面上的小修小补和一些功能测试,希望在接下来的时间里,多学习一些微信小程序开发的相关知识,在Beta冲刺阶段能为我的团队多做贡献。

  • 陈迎仁
    在Alpha冲刺中,学到了很多和小程序相关的知识,先是文件上传界面,接着是微信支付,还有一些七七八八的配置,这个阶段虽然很累但是也很充实,希望自己接下来能做得更好,少熬夜。

组员分工及其工作量比例

学号 姓名 任务 百分比
221600412 陈宇(队长) 后端开发,任务安排,撰写博客 22%
221600401 陈诗娴 美工,撰写博客 17%
221600408 蔡鸿键 商家web端开发 20%
221600409 蔡森林 微信小程序界面美化及测试,撰写博客 19%
221600411 陈迎仁 微信小程序 22%

下阶段展望

总结经验教训,事先明确分工任务,做好计划安排。针对Alpha冲刺遗留的问题,进一步完善项目结构与功能。尤其是一些接口问题,经常会出现bug问题,需要进一步再优化。在下阶段的Beta冲刺过程中,希望可以充分调动组员的积极性,多进行交流讨论,把我们的项目做得更好。

alpha冲刺事后诸葛亮(团队)

课程名称:软件工程1916|W(福州大学)
团队名称: 云打印
作业要求: 项目Alpha冲刺(团队)
作业目标:完成Alpha冲刺的事后诸葛亮

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600408 蔡鸿键 https://www.cnblogs.com/jichiwoyaochi/ 转出
221600307 李姣 https://www.cnblogs.com/CloudLong/ 转入

设想和目标

1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?

我们软件主要解决传统线下打印的一些弊端,比如线下打印店人多拥挤、排队时间长,U盘中毒、丢失,对打印机不熟悉错印多印,商家需要时刻关注各台打印机的打印状况等传统弊端。对软件功能的定位是很清晰的。主要针对目前大学生的打印场景以及目前大学生的群体进行了清晰的调查,通过问卷和实地考察,进行清晰的描述。

2.我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?)

微信小程序端原计划主要实现5个大功能模块:文件打印、图片打印、联系客服、联系商家、扫一扫;每个大功能模块下还划分了许多子功能,比如文件上传、微信支付、订单列表、订单填写;按照原计划a阶段实现了主功能文件上传以及微信支付即文件打印功能。原计划达到的用户数还没有达到。

3.和上一个阶段相比,团队软件工程的质量提高了么? 在什么地方有提高,具体提高了多少,如何衡量的?

团队软件工程的质量提高了,对于整个软件的开发以及管理和计划的把握上有了一定的提高,从没有计划的建瓦房达到了有图纸有规划的建平楼,通过开发的软件项目质量以及开发过程中对问题的处理以及初始的计划安排情况来衡量

4.用户量, 用户对重要功能的接受程度和我们事先的预想一致么? 我们离目标更近了么?

用户量离预期还有较大的距离,用户对文件打印功能的接受程度与事先的预想相差不多,但在一些细节上还不够完善,还需要进一步改进。

5.有什么经验教训? 如果历史重来一遍, 我们会做什么改进?

经验教训:初期只是规划在10天内完成的一系列功能,粗糙地 安排每天的工作量,但是在后面的执行欠缺更加严格的监督,导致其中一两天耽搁,没有按照预期的进度去做,还好后面几天加班完成预期功能。通过这个教训,感受到应该严格监督每天的进度。如果重新来一遍,我们会更加合理的安排人员以及时间,清晰划分每个任务的deadline,严格监督每天进度。


计划

1.是否有充足的时间来做计划?

做计划上的时间还是挺充足的,做好计划,有助于工程的顺利进行。

2.团队在计划阶段是如何解决同事们对于计划的不同意见的?

当遇到不同意见时,我们主要采用投票表决,决策出最优方案。

3.你原计划的工作是否最后都做完了? 如果有没做完的,为什么?

大部分任务如期完成,未做完的部分因为突发原因或技术问题影响工程的进度。

4.有没有发现你做了一些事后看来没必要或没多大价值的事?

这个倒是没有遇到。

5.是否每一项任务都有清楚定义和衡量的交付件?

每一项任务基本都有明确的目标。

6.是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?

项目未完全按照计划进行,中间因为某些技术上的问题,导致进度有些落后。对于风险的问题,这个倒是没考虑到。

7.在计划中有没有留下缓冲区,缓冲区有作用么?

我们计划中留有一定的缓存区,某种程度上较好地弥补落下的工作。

8.将来的计划会做什么修改?(例如:缓冲区的定义,加班)

根据技术上的难度适当调整每天的工作量。

9.我们学到了什么? 如果历史重来一遍, 我们会做什么改进?

在这个过程中,我们学到了微信小程序开发的相关技术,前后端交互的问题解决能力以及开发过程中遇到的种种问题的解决经验等


资源

1.我们有足够的资源来完成各项任务么?

技术资源不够,需要边学习边开发,工作量大,压力大。

2.各项任务所需的时间和其他资源是如何估计的,精度如何?

主要按照工程中功能实现的难易程度进行估计,精度上还需要进一步改进。

3.测试的时间,人力和软件/硬件资源是否足够? 对于那些不需要编程的资源 (美工设计/文案)是否低估难度?

测试时间不够,人力和软硬件资源凑凑有余,对于美工、文案设计确实低估了工程难度,在界面设计中遇到了许多问题。

4.你有没有感到你做的事情可以让别人来做(更有效率)?

这个倒是没有,自己正在做的事情自己比较熟悉,突然交付给别人来做,需要花费时间跟他交流讨论,才能真正交接,这样效率反而不高。

5.有什么经验教训? 如果历史重来一遍, 我们会做什么改进?

代码复用性不是很好,后期修改的工作量大,如果可以再来一次的话,我们打算对代码进行重构,提高代码复用性和整洁性。

变更管理

1.每个相关的员工都及时知道了变更的消息?

收到变更通知后,我们及时和组员进行了沟通和交流,保证了消息的时效性,让组员第一时间收到通知。

2.我们采用了什么办法决定“推迟”和“必须实现”的功能?

根据这个功能对软件的必要性和开会讨论。

3.项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?

在前面的需求分析报告,和系统分析报告中有比较清晰的定义。

4.对于可能的变更是否能制定应急计划?

没有,全靠熬夜加班。

5.员工是否能够有效地处理意料之外的工作请求?

在alpha冲刺中没有遇到意料之外的工作请求。

6.我们学到了什么? 如果历史重来一遍, 我们会做什么改进?

保证消息的时效性,制定好应急计划。

设计/实现

1.设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?

设计是在初期原型设计的时候由团队多名队员一起完成的,是合适的时间,合适的人。

2.设计工作有没有碰到模棱两可的情况,团队是如何解决的?

有,会团队一起讨论把模棱两可的地方确定。

3.团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么? 比较项目开始的 UML 文档和现在的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?

  • 有运用单元测试和UML等工具来帮助设计和实现。
  • 这些工具是有效的,单元测试保证了每个部分的正确性,uml帮助我们观察类、对象等之间的关系。
  • UML文档类图的对象和方法都有不一样,区别产生于老师和助教的建议后,我们更新了UML文档。

4.什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?

  • 小程序微信支付功能产生的bug最多,因为大家不太熟悉它的工作原理。
  • 发布后没有发现重要bug。

5.代码复审(Code Review)是如何进行的,是否严格执行了代码规范?

  • 代码复审由组长审查代码的格式、风格、命名是否符合规范。

6.我们学到了什么? 如果历史重来一遍, 我们会做什么改进?

  • 我们学到了微信小程序的开发,还有很多测试工具的使用。
  • 如果历史重来一遍,我们会更严格按照代码规范编程。

测试/发布

1.团队是否有一个测试计划?为什么没有?

有。

2.是否进行了正式的验收测试?

进行了。

3.团队是否有测试工具来帮助测试?

有,如Junit等。

4.团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?

有用Jprofile对软件的功能进行测试。有用,确保了软件功能的正确性。

5.在发布的过程中发现了哪些意外问题?

  • 没有遇到意外问题。
  • 我们学到了测试的重要性。
  • 如果重来一遍我们会提早学习测试工具的使用,不用临时学习

6.我们学到了什么? 如果重来一遍, 我们会做什么改进?

  • 没有遇到意外问题。
  • 我们学到了测试的重要性。
  • 如果重来一遍我们会提早学习测试工具的使用,不用临时学习。

团队的角色,管理,合作

1.团队的每个角色是如何确定的,是不是人尽其才?

每个成员负责自己擅长的部分,充分发挥团员的优点。

2.团队成员之间有互相帮助么?

3.当出现项目管理、合作方面的问题时,团队成员如何解决问题?

团队一起沟通讨论

每个成员明确公开地表示对成员帮助的感谢 (并且写在各自的博客里):

  • 陈宇
    感谢chj在完成前后端的任务中给与我的帮助,即使离开了团队也继续完成了前端的任务。

  • 陈迎仁
    我感谢cy同学对我的帮助, 因为在出现的一些bug的时候都是他和我一起克服,还指导我学习java后端。

  • 蔡鸿键
    我感谢cy对我的帮助,因为某个具体的事情: 帮我一步一步改BUG。

  • 蔡森林
    我感谢cyr对我的帮助,因为某个具体的事情: 他让我开始接触和开发微信小程序。

  • 陈诗娴
    我感谢cy同学对我的帮助,因为某个具体的事情:冲刺阶段写代码遇到bug帮我找原因和修改方法。

总结

1.你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?

可重复级(Repeatable)档次。

2.你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?

从磨合到规范的阶段。

3.你觉得团队在这个里程碑相比前一个里程碑有什么改进?

代码规范度更高,配合也更默契。

4.你觉得目前最需要改进的一个方面是什么?

增加团队成员的配合度。

5.其它软件工具的应用,应该如何提高?

参考网络上的教程自学,或请求掌握该工具使用的同学的指导。

6.项目文档的质量如何提高?

参考网络中优秀的项目文档是怎么写的。

交换组员的工作交接和培训方案

工作交接:
1,传给新成员原成员写的源码,因为原成员是web端,所以我们把所有的HTML+CSS+JS的网页代码交给他。
2,因为新成员学习过基本的WEB知识,就不用另行学习。
3,由原成员带新成员学习web使用的框架。
4,由于新成员是做UI的,会帮派一些UI图标优化。

培养计划
1,温习基础HTML+CSS+JS知识
2,由原成员带新成员浏览代码,学习框架,并运用
3,使新成员了解接下来的项目需求,提出自己的见解,使加快融入小组
4,由前后端同学交流接口,使之理解数据交付,熟悉AJAX和DOM原理等
5,自我界面美感优化

讨论的照片

凡事预则立

课程名称:软件工程1916|W(福州大学)
团队名称: 云打印
作业要求: 项目Beta冲刺(团队)
作业目标:Beta冲刺

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600307 李姣 https://www.cnblogs.com/CloudLong/

组长重选议题组长重选议题

没人想当。


Beta阶段计划改进完善的功能

  • 完善小程序端的界面;
  • 美化商家网页端界面;
  • 修改了后端的代码

Beta阶段计划新增的功能

  • 完善文件上传接口
  • 文件下载
  • 增加订单优先级
  • 增加装订属性
  • 商家接单,完成订单

需要改进的团队分工

在Alpha阶段中团队的分工还是比较明确,但是开发比较分散,虽然沟通都比较及时但是队员不能及时处理出现的问题,会出现拖拉现象。在Beta阶段,我们团队成员一起开发,及时沟通和解决问题提高效率。

需要改进的工具流程

目前没有比较需要改进的工具和流程

冲刺的时间计划安排

任务 内容 时间
第一天 完善文件上传接口 5.23
第二天 文件下载 5.24
第三天 增加订单优先级 5.25
第四天 增加装订属性 5.26
第五天 商家接单,完成订单 5.27
第六天 修改了后端的代码,完善服务 5.28
第七天 美化商家网页端界面,完善小程序端的界面 5.29
用户试用的调查报告 用户试用,完成一份用户试用的调查报告。 5.31

项目Beta冲刺(团队1/7)

团队名称: 云打印
作业要求: 项目Beta冲刺(团队)
作业目标: 完成项目Beta版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600307 李姣 https://www.cnblogs.com/CloudLong/

SCRUM部分:各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 完成任务安排
      • 休整了团队
      • 花了1天进行任务安排,剩余时间6天
    • 遇到什么困难
      • 微信安装上传文件证书出现问题
    • 今天解决的进度
      • 完善文件上传接口
      • 规划日程、任务
    • 明天的计划
      • 文件下载
      • 优化后端代码

  • 陈迎仁

    • 昨天完成了哪些任务
      • 接受组长任务调配
      • 与组员讨论分工
      • 花了1天进行了解任务安排,剩余时间6天
    • 今天任务
      • 规划beta阶段所要完成微信小程序的基本功能
      • 安排开发计划
    • 有哪些困难
      • 对于beta阶段所能完成的工作量把握比较不准确
    • 有哪些收获
      • 规划了beta阶段的微信小程序开发任务
    • 明天的计划
      • 界面进行优化
      • 页数计算中的一个提示
      • 字段校验

  • 陈诗娴

    • 昨天完成了哪些任务
      • 确认七天的任务安排以及自己每天的任务,剩余时间6天
    • 遇到什么困难
    • 今天解决的进度
      • 确定所有要优化的代码
      • 学习java
    • 明天的计划
      • 优化后端代码

  • 蔡森林

    • 昨天完成了哪些任务
      • 接受组长任务调配
      • 与组员讨论分工
    • 遇到什么困难
      • 怎么合理规划时间
    • 今天解决的进度
      • 讨论项目哪些地方需要改进
      • 学习微信小程序布局方式
      • 计划分工任务
    • 明天的计划
      • 对界面进行优化
      • 进行字段检验

  • 李姣

    • 昨天完成了哪些任务
    • 今天任务
      • 确定任务安排
    • 有哪些困难
    • 有哪些收获
      • 认识了团队成员
    • 明天的计划
      • 接口修改

SCRUM 会议照片


对应的截图

嵌入记录



PM 报告 -- 燃尽图


PM 报告 -- 任务总量变化线图


PM 报告 -- 团队贡献比

队员学号 队员姓名 比例 备注
221600412 陈宇 24 队长
221600411 陈迎仁 23
221600409 蔡森林 21
221600401 陈诗娴 16
221600307 李姣 16

PM 报告 -- 项目程序/模块的最新(运行)截图


项目Beta冲刺(团队2/7)

团队名称: 云打印
作业要求: 项目Beta冲刺(团队)
作业目标: 完成项目Beta版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600307 李姣 https://www.cnblogs.com/CloudLong/

SCRUM部分:各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 完善文件上传接口
      • 解决了安装证书的问题
      • 花了1天解决了上述任务,剩余时间5天
    • 遇到什么困难
      • 文件太大下载时间较长
    • 今天解决的进度
      • 文件下载
      • 优化后端代码
    • 明天的计划
      • 增加订单优先级
      • 进行相应的测试

  • 陈迎仁

    • 昨天完成了哪些任务
      • 规划beta阶段所要完成微信小程序的基本功能
      • 安排开发计划
      • 花了1天解决了上述任务,剩余时间5天
    • 今天任务
      • 界面进行优化
      • 页数计算中的一个提示
      • 字段校验
    • 有哪些困难
      • 获取页数的一个提示较为麻烦,需要实时请求是否计算完毕
    • 有哪些收获
      • 完成了获取页数时的一个进度提示、字段校验
    • 明天的计划
      • 添加一些打印属性的选择

  • 陈诗娴

    • 昨天完成了哪些任务

      • 确定所有要优化的代码,剩余时间5天
    • 遇到什么困难

      • 有些代码不知道该怎么优化
    • 今天解决的进度

      • 优化后端代码
      • 测试优化后的代码
      • 学习java
    • 明天的计划

      • 继续优化后端代码

  • 蔡森林

    • 昨天完成了哪些任务
      • 讨论项目哪些地方需要改进
      • 学习微信小程序布局方式
      • 计划分工任务
    • 遇到什么困难
      • flex布局不是很熟练
      • 字段错误提示有点问题
    • 今天解决的进度
      • 对界面进行优化
      • 进行字段检验
    • 明天的计划
      • 添加优先级功能
      • 添加装订方式

  • 李姣

    • 昨天完成了哪些任务
      • 任务安排
    • 今天任务
      • 接口修改,后端修改了订单访问接口。修改了AJAX的订单接口地址,更正传输参数了。
    • 有哪些困难
    • 有哪些收获
    • 明天的计划
      • 新增商家完成接口

SCRUM 会议照片


对应的截图

嵌入记录


PM 报告 -- 燃尽图


PM 报告 -- 任务总量变化线图



PM 报告 -- 团队贡献比

队员学号 队员姓名 比例 备注
221600412 陈宇 24 队长
221600411 陈迎仁 23
221600409 蔡森林 21
221600401 陈诗娴 16
221600307 李姣 16

PM 报告 -- 项目程序/模块的最新(运行)截图

项目Beta冲刺(团队3/7)

团队名称: 云打印
作业要求: 项目Beta冲刺(团队)
作业目标: 完成项目Beta版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600307 李姣 https://www.cnblogs.com/CloudLong/

SCRUM部分:各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 文件下载
      • 优化后端代码
      • 花了1天解决了上述任务,剩余时间4天
    • 遇到什么困难
      • 没有较大的问题
    • 今天解决的进度
      • 增加订单优先级
      • 进行相应的测试
    • 明天的计划
      • 增加装订属性
      • 商家端界面

  • 陈迎仁

    • 昨天完成了哪些任务
      • 界面进行优化
      • 页数计算中的一个提示
      • 花了1天解决了上述任务,剩余时间4天
    • 今天任务
      • 添加一些打印属性的选择
    • 有哪些困难
      • 界面设计花费时间较多
    • 有哪些收获
      • 实现了文件打印的加急处理
    • 明天的计划
      • 修复订单列表显示的一个bug
      • 完成订单列表中的支付功能

  • 陈诗娴

    • 昨天完成了哪些任务
      • 优化部分后端代码,剩余时间4天
    • 遇到什么困难
      • 代码优化遇到bug,多花了时间去修改代码
    • 今天解决的进度
      • 优化后端代码
      • 测试优化后的代码
      • 学习java
    • 明天的计划
      • 与队友一起修改商家端界面

  • 蔡森林

    • 昨天完成了哪些任务
      • 对界面进行优化
      • 进行字段检验
    • 遇到什么困难
      • 优先级逻辑设计有点bug
    • 今天解决的进度
      • 添加优先级功能

      • 添加装订方式

    • 明天的计划
      • 与后台交互
      • 完善优先级,装订方式的逻辑设计

  • 李姣

    • 昨天完成了哪些任务
      • 熟悉了参数
    • 今天任务
      • 新增商家接口完成函数。在订单列表中添加了完成按钮,并新增函数finish,使用ajax接口返回订单ID给后端,并刷新页面。
    • 有哪些困难
      • JS函数调试
    • 有哪些收获
      • JS编写熟练。
    • 明天的计划
      • 新增商家完成接口

SCRUM 会议照片

嵌入记录


对应的截图



PM 报告 -- 燃尽图


PM 报告 -- 任务总量变化线图



PM 报告 -- 团队贡献比

队员学号 队员姓名 比例 备注
221600412 陈宇 24 队长
221600411 陈迎仁 23
221600409 蔡森林 21
221600401 陈诗娴 16
221600307 李姣 16

PM 报告 -- 项目程序/模块的最新(运行)截图

项目Beta冲刺(团队4/7)

团队名称: 云打印
作业要求: 项目Beta冲刺(团队)
作业目标: 完成项目Beta版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600307 李姣 https://www.cnblogs.com/CloudLong/

SCRUM部分:各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 增加订单优先级
      • 进行相应的测试
      • 花了1天解决了上述任务,剩余时间3天
    • 遇到什么困难
      • 微信支付回调出现异常
    • 今天解决的进度
      • 增加装订属性
      • 商家端界面
    • 明天的计划
      • 商家接单
      • 完成订单相应的后台代码

  • 陈迎仁

    • 昨天完成了哪些任务
      • 添加一些打印属性的选择
      • 花了1天解决了上述任务,剩余时间3天
    • 今天任务
      • 修复订单列表显示的一个bug
      • 完成订单列表中的支付功能
    • 有哪些困难
      • 订单列表中的一个支付有bug
    • 有哪些收获
      • 对微信支付有了更深的理解
    • 明天的计划
      • 完成订单列表的订单项删除
      • 完善订单的状态

  • 陈诗娴

    • 昨天完成了哪些任务
      • 优化后端代码,剩余时间3天
    • 遇到什么困难
      • 代码优化太慢,花了很多时间
    • 今天解决的进度
      • 与队友一起修改商家端界面
      • 学习java
    • 明天的计划
      • 修改商家接单功能

  • 蔡森林

    • 昨天完成了哪些任务
      • 添加优先级功能
      • 添加装订方式
    • 遇到什么困难
      • 交互时有些bug
    • 今天解决的进度
      • 与后台交互
      • 完善优先级,装订方式的逻辑设计
    • 明天的计划
      • 完善微信支付接口问题
      • 对代码进行重构

  • 李姣

    • 昨天完成了哪些任务
      • 接口函数完成
    • 今天任务
      • 修改了历史订单页面。将历史订单页面修改成已完成订单页面,删除了一些多余函数,避免了数据重复性。
    • 有哪些困难
      • CSS实现困难
    • 有哪些收获
      • 写代码时的考虑多方面因素。
    • 明天的计划
      • 修改订单显示页面

SCRUM 会议照片


对应的截图

后端嵌入记录

小程序端嵌入记录

商家端嵌入记录



PM 报告 -- 燃尽图


PM 报告 -- 任务总量变化线图



PM 报告 -- 团队贡献比

队员学号 队员姓名 比例 备注
221600412 陈宇 25 队长
221600411 陈迎仁 24
221600409 蔡森林 22
221600401 陈诗娴 16
221600307 李姣 13

PM 报告 -- 项目程序/模块的最新(运行)截图

项目Beta冲刺(团队5/7)

团队名称: 云打印
作业要求: 项目Beta冲刺(团队)
作业目标: 完成项目Beta版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600307 李姣 https://www.cnblogs.com/CloudLong/

SCRUM部分:各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 增加装订属性
      • 商家端界面
      • 花了1天解决了上述任务,剩余时间2天
    • 遇到什么困难
    • 今天解决的进度
      • 商家接单
      • 完成订单相应的后台代码
    • 明天的计划
      • 修改了后端的代码,完善服务
      • 协调任务进度

  • 陈迎仁

    • 昨天完成了哪些任务
      • 修复订单列表显示的一个bug
      • 完成订单列表中的支付功能
      • 花了1天解决了上述任务,剩余时间2天
    • 今天任务
      • 完成订单列表的订单项删除
      • 完善订单的状态
    • 有哪些困难
      • 订单状态设置过程中,出现了逻辑错误
    • 有哪些收获
      • 完成订单列表的订单项删除
      • 完善订单的状态
    • 明天的计划
      • 添加历史订单功能,完善一些界面显示

  • 陈诗娴

    • 昨天完成了哪些任务
      • 与队友一起修改商家端界面,剩余时间2天
    • 遇到什么困难
    • 今天解决的进度
      • 修改商家接单功能
      • 学习java
    • 明天的计划
      • 修改完成订单功能

  • 蔡森林

    • 昨天完成了哪些任务
      • 与后台交互
      • 完善优先级,装订方式的逻辑设计
    • 遇到什么困难
      • 付款异常
      • component组件使用不是很熟练
    • 今天解决的进度
      • 完善微信支付接口问题
      • 对代码进行重构
    • 明天的计划
      • 对微信小程序和web进行测试
      • 添加历史订单功能

  • 李姣

    • 昨天完成了哪些任务
      • 更新了页面
    • 今天任务
      • 修改了首页的数据显示表格。新增函数reciver,收益单数经过后台计算后返回给前端,显示在表格上。
    • 有哪些困难
      • 参数编写错误。
    • 有哪些收获
      • 耐心调试代码。
    • 明天的计划
      • 完成下载刷新的js

SCRUM 会议照片


对应的截图

后端嵌入记录

小程序端嵌入记录

商家端嵌入记录


PM 报告 -- 燃尽图


PM 报告 -- 任务总量变化线图



PM 报告 -- 团队贡献比

队员学号 队员姓名 比例 备注
221600412 陈宇 25 队长
221600411 陈迎仁 24
221600409 蔡森林 22
221600401 陈诗娴 16
221600307 李姣 13

PM 报告 -- 项目程序/模块的最新(运行)截图


项目Beta冲刺(团队6/7)

团队名称: 云打印
作业要求: 项目Beta冲刺(团队)
作业目标: 完成项目Beta版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600307 李姣 https://www.cnblogs.com/CloudLong/

SCRUM部分:各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 商家接单
      • 完成订单相应的后台代码
      • 花了1天解决了上述任务,剩余时间1天
    • 遇到什么困难
      • 设计模式不是很熟悉
    • 今天解决的进度
      • 修改了后端的代码,完善服务
      • 协调任务进度
    • 明天的计划
      • 美化商家网页端界面
      • 完善小程序端的界面
      • 并进行相应的测试

  • 陈迎仁

    • 昨天完成了哪些任务
      • 完成订单列表的订单项删除
      • 完善订单的状态
      • 花了1天解决了上述任务,剩余时间1天
    • 今天任务
      • 添加历史订单功能,完善一些界面显示
    • 有哪些困难
    • 有哪些收获
      • 基本完善小程序端
    • 明天的计划
      • 测试微信小程序,与队友的商家端进行同步测试

  • 陈诗娴

    • 昨天完成了哪些任务
      • 修改商家接单功能,剩余时间1天
    • 遇到什么困难
      • 修改代码出现bug
    • 今天解决的进度
      • 修改完成订单功能
      • 学习java
    • 明天的计划
      • 整体测试

  • 蔡森林

    • 昨天完成了哪些任务
      • 完善微信支付接口问题
      • 对代码进行重构
    • 遇到什么困难
      • 调试bug
    • 今天解决的进度
      • 对微信小程序和web进行测试
      • 添加历史订单功能
    • 明天的计划
      • 协助队友对程序小修小补

  • 李姣

    • 昨天完成了哪些任务
      • 更新了显示的JS。
    • 今天任务
      • 新增了文件下载功能,在已经接单的页面点击文件名便可下载文件,在未接单无法下载。
      • 通过后台给出的网址便可以下载文件。(这种安全性很低,可以通过接收到数据fileID,加到后台网站地址后端,便可下载未接单文件)
    • 有哪些困难
    • 有哪些收获
      • 逻辑代码实践增强
    • 明天的计划
      • 检查遗漏

SCRUM 会议照片


对应的截图

后端嵌入记录

小程序端嵌入记录


PM 报告 -- 燃尽图


PM 报告 -- 任务总量变化线图



PM 报告 -- 团队贡献比

队员学号 队员姓名 比例 备注
221600412 陈宇 25 队长
221600411 陈迎仁 24
221600409 蔡森林 22
221600401 陈诗娴 16
221600307 李姣 13

PM 报告 -- 项目程序/模块的最新(运行)截图


项目Beta冲刺(团队7/7)

团队名称: 云打印
作业要求: 项目Beta冲刺(团队)
作业目标: 完成项目Beta版本

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600307 李姣 https://www.cnblogs.com/CloudLong/

SCRUM部分:各成员情况

  • 陈宇(组长)

    • 昨天完成了哪些任务
      • 修改了后端的代码,完善服务
      • 协调任务进度
      • 花了1天解决了上述任务,剩余时间0天
    • 遇到什么困难
      • 进度稍微低于预期
    • 今天解决的进度
      • 美化商家网页端界面
      • 完善小程序端的界面
      • 并进行相应的测试
    • 明天的计划


  • 陈迎仁

    • 昨天完成了哪些任务
      • 添加历史订单功能,完善一些界面显示
      • 花了1天解决了上述任务,剩余时间0天
    • 今天任务
      • 测试微信小程序,与队友的商家端进行同步测试
    • 有哪些困难
      • 调试bug
    • 有哪些收获
      • 完成项目,成就感飞跃上升
    • 明天的计划


  • 陈诗娴

    • 昨天完成了哪些任务
      • 修改完成订单功能,剩余时间0天
    • 遇到什么困难
      • 调试bug
    • 今天解决的进度
      • 整体测试
      • 学习java
    • 明天的计划


  • 蔡森林

    • 昨天完成了哪些任务
      • 对微信小程序和web进行测试
      • 添加历史订单功能
    • 遇到什么困难
      • 整合困难
    • 今天解决的进度
      • 协助队友对程序小修小补
    • 明天的计划


  • 李姣

    • 昨天完成了哪些任务
      • 完成了JS的大体代码。
    • 今天任务
      • 整理文件,优化代码。
      • 测试。
    • 有哪些困难
    • 有哪些收获
      • 代码整洁度提升
    • 明天的计划

SCRUM 会议照片


对应的截图

后端嵌入记录











PM 报告 -- 燃尽图


PM 报告 -- 任务总量变化线图



PM 报告 -- 团队贡献比

队员学号 队员姓名 比例 备注
221600412 陈宇 25 队长
221600411 陈迎仁 24
221600409 蔡森林 22
221600401 陈诗娴 16
221600307 李姣 13

PM 报告 -- 项目程序/模块的最新(运行)截图












用户使用调查


项目概述

项目测试

项目评估

项目总结


项目概述

项目名称

微信小程序---云打印

项目简介

云打印是一款以微信小程序为基础的在线打印服务,通过和实体打印店合作,用户可以通过微信小程序上传pdf文档,后台可以通过代码计算页数然后返回给前端计算出价格,通过微信下单,付款。商家通过网页界面接单和下载文档,并进行打印和配送。

项目预期目标

用户随时随地可以进行文件资料在线打印,享受配送等快捷服务。


项目测试

测试对象及时间

  • 测试对象:福州大学全校学生
  • 测试时间:2019.05.30-2019.05.31

用户体验及反馈

(测试对象主要是在校大学生,在此简单列几个测试对象)

1、福州大学数计学院学生 女

优点: 界面简洁明了,布局也比较合理,可选的打印属性基本具备,基本满足我们学生文档打印需求,用起来挺方便的。

缺点: 如果能多增加其他格式的文档打印功能,那就更好了。

2、福州大学数计学院学生 男

优点: 界面简单明了,功能基本可以达到,用起来非常方便,不用排队,可以省掉好多时间。

缺点: 界面如果加一些好看的背景会更好看。

3、福州大学经管学院学生 男

优点: 界面风格简约,功能还行,能实现文件的在线打印,用起来很方便。之前去打印店打印文件,经常习惯性忘记U盘,通过这个小程序,可以大大避免U盘的丢失,还不错。

缺点: 要是能增加一些表格文件打印功能就更好了。

4、福州大学外国语学院学生 女

优点: 界面还不错,打印功能基本能实现,经常我每次去打印文件,总是出错,要打印双面,忘记单击向左翻页,结果打印成单面,好气呀。如果用在线打印文件,将能帮我省掉许多不必要的麻烦,挺好用。

缺点: 主要是图片打印功能没实现,要是能实现会更好。

5、福州大学电气学院学院学生 男

优点: 界面还不错,功能也还可以,重要的是能帮我省掉好多时间,这样我就不用排队,还可以享受文件装订,配送服务,挺不错的。

缺点: 有点好奇,那个扫一扫是用来干嘛的?

6、福州大学土木学院学生 男

优点: 界面还行,功能也可以,我一直讨厌去打印店,排队很痛苦,用U盘还很容易中毒,这让我很难受。通过这个在线打印,我想我就不用担心U盘再中毒了,挺好用的。

缺点: 个人信息可能会泄露,安全性不是很可靠。


项目评估

测评汇总

(汇总了大部分试用者所认为的优点和缺点)

优点

  • 界面简单明了
  • 功能基本实现
  • 减少打印错误和个人过失
  • 省时方便

缺点

  • 打印文件格式只局限pdf文件
  • 部分功能还未实现
  • 文件的安全性不是很可靠

用户评分

用户 | 评分(十进制) |
-|-|-
1 | 9 |
2 | 8 |
3 | 7 |
4 | 9 |
5 | 8 |
6 | 7 |
平均分 | 8 |


项目总结

总结

总体来说,大家对我们的界面和功能还是持好评的,对此我们的心里还是挺高兴的。

我们的微信小程序设计的初衷就是界面简洁、操作简单。通过调查,我们发现了我们项目在功能和界面上还存在许多不足。例如上面提到的打印文件格式只局限pdf文件,部分功能还未实现,文件的安全性不是很可靠等问题,我们会继续优化。

界面美观上,我们的设计主要以简约风格为主,对一些界面布局,设计的还不是很好看,后期有时间的话,我们会进行相应的调整,适当搭配好看的背景图片;在功能实现上,因为时间的原因,有些功能来不及实现,例如多种格式的文档打印功能,后期有时间的话,我们会进行相应的改进,增加一些实用的功能。

云打印 对追光的人的Beta产品测试报告

课程名称:软件工程1916|W(福州大学)
团队名称: 云打印
作业要求: 项目Beta冲刺(团队)
作业目标:作业集合


团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600307 李姣 https://www.cnblogs.com/CloudLong/

运行截图








回答以下问题

第一次上手体验感觉如何?能否正常运行?

能正常登录注册运行。

该产品具有哪些功能?

能在在平台查到关于校园的动态,二手交易等。

该产品解决了什么样的关键问题?

解决了校园功能分散的问题,使得上大学只需要要一个APP。

分析这个软件目前的优劣 (和类似软件相比), 推理出这个软件团队在软件工程方面可以提高的重要方面 (具体建议)。要求把对比的结果列出一个表格,对比每个软件各自的优点和缺点。

对比超级课程表,该软件具有这些优缺点:

优点 缺点
功能更加丰富 没有课程表
UI设计简洁 UI设计体验不是很友好

建议: 完善自己本身的服务,并提高用户体验和产品的核心竞争力。

觉得该产品有哪些需要改进的地方

给出一个评价:

好,不错

列举你找到的两个bug,配图更佳

没有比较明显的bug
就是功能不是很完善,扩展功能没有实现。

评分
根据你的体验和项目的完成情况,

方面 分数
用户体验方面 7
UI界面美观度 8
核心功能 8
完成度 7
合计 30

队伍测试分工表

队员学号 队员姓名 分工 备注
221600412 陈宇 下载,安装,体验,测试 队长
221600411 陈迎仁 体验,测试
221600409 蔡森林 体验,测试
221600401 陈诗娴 下载,安装,体验
221600307 李姣 下载,安装,体验

云打印 对Echo的Beta产品测试报告

课程名称:软件工程1916|W(福州大学)
团队名称: 云打印
作业要求: 项目Beta冲刺(团队)
作业目标:作业集合


团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600307 李姣 https://www.cnblogs.com/CloudLong/

运行截图








回答以下问题

第一次上手体验感觉如何?能否正常运行?

能正常登录运行。界面简洁明了

该产品具有哪些功能?

微信小程序:查看小区公告、便民电话、我的工单、以及物业报修
web:管理学生、更改维修状态、问卷推送等

该产品解决了什么样的关键问题?

解决了校园物业信息更新不及时,导致一些不方便

分析这个软件目前的优劣 (和类似软件相比), 推理出这个软件团队在软件工程方面可以提高的重要方面 (具体建议)。要求把对比的结果列出一个表格,对比每个软件各自的优点和缺点。

对比福大易班和山园物业,该软件具有这些优缺点:

优点 缺点
具有物业通知功能,能够及时通知住户一些停水之类 功能更少一些
UI设计简洁 web端的设计较为简陋

建议: 完善自己本身的服务,并提高用户体验和产品的核心竞争力。

觉得该产品有哪些需要改进的地方

给出一个评价:

好,不错,具有较高的实用性

列举你找到的两个bug,配图更佳

修改学生的宿舍时有问题

扩展功能没有实现,web端的界面需要进一步优化

评分
根据你的体验和项目的完成情况,

方面 分数
用户体验方面 8
UI界面美观度 7
核心功能 8
完成度 8
合计 31

队伍测试分工表

队员学号 队员姓名 分工 备注
221600412 陈宇 体验,测试 队长
221600411 陈迎仁 体验,测试
221600409 蔡森林 体验,测试
221600401 陈诗娴 体验,测试
221600307 李姣 体验,测试

Beta冲刺总结

课程名称:软件工程1916|W(福州大学)
团队名称: 云打印
作业要求: 项目Beta冲刺(团队)
作业目标:Beta冲刺总结

团队队员

队员学号 队员姓名 个人博客地址 备注
221600412 陈宇 http://www.cnblogs.com/chenyuu/ 队长
221600411 陈迎仁 https://www.cnblogs.com/yinen/
221600409 蔡森林 https://www.cnblogs.com/csl8013/
221600401 陈诗娴 https://www.cnblogs.com/orangepoem/
221600307 李姣 https://www.cnblogs.com/CloudLong/

代码

小程序端代码Github地址
商家端代码Github地址
后端代码Github地址


项目Beta预期计划及现实进展

项目预期计划 现实进展
完善文件上传接口 100%
文件下载 100%
增加订单优先级 99%
增加装订属性 100%
商家接单,完成订单 97%
修改了后端的代码,完善服务 98%
美化商家网页端界面,完善小程序端的界面 98%
商家端接单和查看订单,后端商家端接口,商家端的部分GUI 97%
用户试用的调查报告 99%
发布Beta版本程序 100%

答辩照片

过程体会

  • 陈宇(组长)
    这次冲刺主要在调试上次冲刺的bug和问题,主要在微信支付和文件上传,新功能的增加比较少,主要完善了核心功能,个人感觉一个微信小程序应该先把核心功能做好做精,所以Beta对扩展功能关注比较少,另一方面也是时间安排不合理,对任务的预期不准确,比如安装https证书,本来预期一个小时搞定,结果硬生生调了一天才完成。总之,时间不够,熬夜来补。

  • 陈诗娴
    Beta阶段感觉主要是对Alpha阶段出现的问题进行修改,例如微信回调接口在Alpha阶段存在异常。代码方面队员都帮了我很多,现在对于java的使用比刚开学时熟练了很多,也自学了很多课本上没有的知识,接下来会继续加油的。

  • 李姣
    这次β冲刺我作为新成员首先遇到的难点是如何短时间内上手一个全新的项目。此前在原来的小组我负责的是ui和界面的修改,主要是安卓端,而到新的组之后接手的工作是web端。幸好之前web端也有一定的知识积累,不至于啥也做不了给小组拖累。web端是商家端的一些基础功能实现,α阶段已经完成了大部分,我只需对细节进行修饰和增改即可。也感谢新的小组成员对我的帮助,让我能尽快上手,了解项目结构,更好地完成工作。

  • 蔡森林
    经过Beta冲刺,我学到了很多东西,对于微信小程序的布局有更进一步的理解,以及一些请求接口的交互,经常需要不断调试,但每一次的调试,对自己都是一种成长。在接下来的日子里,我会继续不断努力,让自己不断成长。

  • 陈迎仁
    虽然在这次软工实践吃尽了苦头,花费了大把的时间和心思,但是最后看到自己产品能够完整的运行,心里的成就感还是非常满足的,虽然项目做出来可能没有其他组的酷炫华丽,但在这个过程中和队友学习了很多知识,不仅提高了自己敲代码的课外能力,也实践到了一些软件工程的理论知识,也是因为自己对软件项目管理的工程量把握不准确,导致两个阶段的开发时而紧张时而轻松,所以通过这次实践,吸取教训,提高自己。痛并快乐着!

组员分工及其工作量比例

学号 姓名 任务 百分比
221600412 陈宇(队长) 后端开发,任务安排,撰写博客 22%
221600401 陈诗娴 美工,撰写博客 16%
221600307 李姣 商家web端开发 21%
221600409 蔡森林 微信小程序界面美化及测试,撰写博客 19%
221600411 陈迎仁 微信小程序 22%

总结

总结经验教训,事先明确分工任务,做好计划安排。及时跟队员进行沟通协调进度。小组多人合作方面也存在很多问题,前后端合作不完美,前端也在改,后端也在改,每一次前端把代码给我,我也不知道前端修改了啥,啥没有修改,这样导致我得重新把前端代码都换掉,挺麻烦了;然后就是任务分工方面,有的任务不能严格的分给前端或者后端,必须前后端合作,这样就得俩人共同协作,然后是现实总是很不理想,心不齐,当然解决不了问题。还是那句话,团结起来力量大。

posted @ 2019-06-24 15:53  云打印  阅读(362)  评论(1编辑  收藏  举报