团队作业第二次——团队Github实战训练
这个作业属于哪个课程 | 2020春|S班(福州大学) |
---|---|
这个作业要求在哪里 | |
团队名称 | Hail Hydra |
这个作业的目标 | 通过开发预约口罩应用的方式进行团队Github实战训练 |
作业正文 | |
其他参考文献 | ... |
Github网址 | live-project |
代码规范 |
题目需求
在全国人民的共同努力下,新冠肺炎疫情得到逐步缓解,国内多地已经出现零确诊。然而当前国内形势严峻,多国疫情出现大爆发,国内出现了多例的输入病例,此时国人仍不可掉以轻心,外出需要注意个人防护,特别是要佩戴好口罩。虽然国内口罩等防护用品的产能和供应量在逐步增长,但目前还不能完全充分满足需求,仍然需要按需进行预约。假如,城市A需要开发一个向社会限量供应的 口罩应用,现要外包给你们组完成这个任务。
简单来说,就是开发出一个预约口罩的应用,用户通过输入姓名、身份证号码、手机号码、预约口罩数量等信息进行登记,若登记成功则获得一个号码。用户通过输入号码查看是否中签,若中签则生成购买凭证。用户凭借购买凭证即可获得预约的口罩。
功能清单
基础功能清单
功能点 | 完成度 |
---|---|
身份证、手机号格式验证及错误提示 | |
身份证、手机号的唯一性及错误提示 | 1 |
间隔三次才能预约及错误提示 | |
存储预约信息 | |
预约结束后的中签计算 | |
预约查询及提示 | 0.5 |
中签计算描述
我们是直接按照先后顺序来判定中签的,如果预约的量小于库存就认定为中签,否则不中签。
预约查询及提示完成部分说明
在预约查询中,我们只展示了预约结果,没有个人信息
附加功能清单
管理员登录 | |
设置预约的开放时间和截止时间 | |
设置预约时单个用户最高可预约数量 | |
设置口罩总数 | |
导出某次中签的名单 | |
附加功能完成度说明
管理员登录、设置预约的开放时间和截止时间、设置预约时单个用户最高可预约数量、设置口罩总数仅完成前端部分
基础功能
1. 预约功能:
口罩预约定时开放
开放预约后,市民可以进行登记;登记内容包括
真实姓名、身份证号、手机号、预约口罩数量
预约登记
若手机号或者身份证号在本次摇号登记过了,预约失败
若手机号或者身份证号在此前三次预约中成功中签,预约失败
否则预约成功,给出不重复的预约编号
登记时单个用户最高可预约口罩数量,默认为3个
预约定时关闭
预约页面
提供两个按钮,作用分别是开始新的预约和结束当前预约
提供设置口罩总量的方法
2. 中签查询功能:
用户输入自己的预约编号,显示是否中签
若中签,则生成购买凭证,凭证信息包括:姓名、身份证号、电话号、购买数量
附加功能
- 管理员发布预约摇号活动
作业展示
2. github 的提交日志截图
这里稍微解释一下,就是我们小组在最开始分工的时候主要是分成了前端组合后端组,每个组各自讨论,并且一开始建好了一个仓库(这里附上原始仓库地址),前端小组一直的commit的是在这个仓库,我们后端因为对工具的不熟悉等等原因,最后把仓库的代码弄的一团糟,最后不得不重新建立一个仓库(这个是文章开头给出的仓库地址),因此如果学长在第一个仓库没有看到我们前端队员的commit,希望不要误会,他们的commit是在本段的那个链接中(因为我们技术的原因导致老师和学长的不便,这里深表愧疚)。
3. 各组员的commit次数、分工、贡献比
学号 | 姓名 | 次数 | 分工 | 贡献比 |
---|---|---|---|---|
021700613 | 黄忠雄 | 3 | 表单美化、查询预约界面 | 10 |
221600313 | 黄子峻 | 文档 | 5 | |
221701118 | 张嘉伟 | 7 | 后端Dao层,pojo层 | 16 |
221701136 | 唐志豪 | 12 | 后端service层 | 14 |
221701219 | 韦琛 | |||
221701240(生病) | 郑逸豪 | 生病住院 | ||
221701316 | 刘成华 | 管理员登陆页面,管理员发布页面 | 13 | |
221701335 | 袁锦辉 | 菜单栏,欢迎页面,用户预约页面 | ||
221701421 | 翁绍鸿 | 后端servlet层 | 19 |
4. 程序运行截图
- 预约功能
- 查询功能
5. 程序运行环境
eclipse+tomcat+mysql(这里的eclipse是只用于javaEE开发的eclipse)
需要的jar包
需要的sql文件
6. GUI界面
主页
预约口罩页面
查询预约页面
管理员登录页面
设置预约信息页面
7. 基础功能实现
前端建立adminlogin类用来管理员登录界面、adminsetting类是管理员管理界面、book类是预约界面、index类是初始页面、query类是查询页面。
后端建立AppointmentDao类进行预约的增删改查、Appointment类是预约的具体项目、acquireServlet类是获取信息接口、AppointServlet类是预约项目接口、DBUtil类是数据库工具类。
8. 用户体验,操作的方便、快捷性
web应用功能明确。我们这个应用主要解决用户的口罩提供问题。用户只需一个链接即可进入网站预约口罩,不需要再下载一个软件。对于用户来说,预约口罩十分轻松。只需打开链接,点开预约口罩的页面,填入姓名、身份证号、手机号码等信息,再点开下拉菜单,选择要预约的口罩数目。若输入的信息无误,则预约成功。预约成功的用户想要查看具体情况,则点开查询预约页面,输入获得的号码,即可获知是否中签。若已中签,则显示购买凭证。用户凭借购买凭证即可获得所预约的口罩,操作非常方便。
9.遇到的困难及解决方法
翁绍鸿:
困难:不能很好的将想要分配的任务表达给组员听,导致成员之间的配合很差,很多队员不知道该怎么开发
解决方法:打开屏幕共享,通过共同看一个屏幕能够比较好的理解要做什么,相互进行配合
困难:前端编码时遇到提交按钮无法居中摆放
解决方法:查阅到一篇简书教程学习到了在div中使用text-align来实现按钮居中摆放。
困难:由于基础比较薄弱,很多基本知识没掌握或是忘了,虽然代码行数不多,但还是写得异常痛苦。
解决方法:在百度和组员的热心帮助下,困难基本解决。
困难:个人能力的不足导致跟队友的配合出现问题
解决方法:合理分工去解决简单问题,并利用空闲时间有针对性的强化自己
困难:没有进前端后端的群,对于开发的过程不够了解,无法顺利完成文档;
解决方法:交给了解的同学完成该部分文档
困难:在写service层代码时,遇到一些sql语句的出错造成的问题;无法很好的使用github
解决方法:后在查询百度以及组长的debug下解决了问题;最后再团队的沟通下发现问题的所在成功commit以及push.
10. 各成员PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | |
Estimate | 估计这个任务需要多少时间 | 30 | |
Development | 开发 | 150 | 140 |
Analysis | 需求分析 (包括学习新技术) | 40 | 60 |
Design Spec | 生成设计文档 | 15 | |
Design Review | 设计复审 | ||
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 25 | |
Design | 具体设计 | 100 | 90 |
Coding | 具体编码 | 120 | |
Code Review | 代码复审 | ||
Test | 测试(自我测试,修改代码,提交修改) | ||
Reporting | 报告 | ||
Test Repor | 测试报告 | ||
Size Measurement | 计算工作量 | ||
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 35 | |
合计 | 610 |
500 | 540 | ||
50 | |||
110 | |||
400 | 420 | ||
1320 |
520 | |||
410 | |||
1350 |
550 | |||
435 | |||
55 | |||
1340 |
405 |
郑逸豪(生病中,在住院)
125 | |||
585 |
130 | |||
115 | |||
605 |
490 | |||
430 | |||
10. 反思
- 首先我们在最初没有很好的设计好整个项目的结构,导致后面后端开发的进度极慢,思路很乱。
- 我们小组没有选定一个一起使用的编程工具,导致一个人创建的项目在另一个人电脑上无法运行(甚至差点吧人家电脑弄坏),我觉得我们需要去学习和确定一个合适的开发工具
- 在没有掌握技术的前提下直接开工是我们一开始浪费大量时间去不断新建仓库,每个人的提交相互影响,最后还导致前端人员都写完界面并提交后,我们后端又不得不去新建仓库
- 前后端交流太少,后期后端开发发现一些需要的组件前端没有实现,或者一些想要的设计前端也没有。