GamePM赛事管理系统-个人总结
相关链接
一、项目概述
1.1 项目小组
小组:第七组
学号 | 名字 | 成员 |
---|---|---|
31701047 | 滕达 | 组长 |
31701049 | 王逸康 | 组员 |
31701084 | 许旺 | 组员 |
1.2 项目背景
随着近年来游戏行业的不断发展,游戏爱好者的数量也在不断增加,与游戏相关的比赛同样如此。然而在当前,大型游戏赛事有官方专业的赛事管理系统,能够实现对整个赛事的流程控制,而小型赛事或冷门赛事却没有一套规范的赛事管理系统,更多是通过QQ、或者微信联络实现比赛举办和赛程安排。因此,我们小组希望开发一个面向小型社群赛事管理的管理系统,让游戏赛事的举办变得规范与便捷。
1.3 源码链接
1.4 相关文档链接
1.5 项目成果
二、个人总结
2.1 需求分析
我和我们组成员通过头脑风暴,设计项目功能的大致框架。
2.2 设计图的绘制
项目的用例图和类图由我设计绘制
2.3 云部署
我们预计使用spring session依赖redis来管理用户session,虽然后来我们不在选用分布式,但使用redis并不明显的影响速度,我们也可以在redis上实时检查session内容。
2.4 后端代码编写
一开始分工我负责部分后端代码的实现,由于我们小组的人数较少,在滕达写了关于比赛和主办方创建查询的相关机制和一个spring session使用demo之后,由我编写后端所有的api
2.4.1 信息管理
信息后台主要分成个人信息、团队信息和主办方信息。
个人信息的账号的密码由注册时填写,昵称邮箱和手机注册后在修改用户信息菜单填写。
主办方信息是注册后可以成为主办方,并且能够查看自己的主办方信息。
这两部分的信息都包括了对应的id,因为我们设计时考虑也会出现重名现象,需要id来保证唯一性。
这里的一些难点在于团队功能。因为我们设计系统时想要实现团队赛的赛事管理,所以在参赛前我们需要组成团队。
第一,关于团队我们除了要实现创建删除和信息获取功能外,我们还要让团队内的成员能够向别的人发送组队请求,而接到请求的人也需要查看接收或者是拒绝。
第二,若有团队成员离队,其过去参与的团队赛参赛成员名单中依旧保留离队的成员信息,而在队员名单中则不再显示
2.4.2 赛事管理
赛事功能是我们的核心的功能,存在的难点很多
第一,整个比赛的流程我将之划分为 创建比赛--比赛报名--报名审核--比赛开始--赛程安排、计分、进入下一轮(循环)--比赛结束。其中赛程安排除了功能较复杂外,为了保证公平,我通过Knuth-Durstenfeld Shuffle
算法保证每一场比赛的参赛双方都是随机的
第二,一开始我在编写赛事管理的代码时,考虑的是个人比赛的赛事管理,当我加入团队比赛的赛事管理功能时,发现现有的代码框架无法实现团队比赛,因此我将整个代码的框架重构,再将赛事管理的所有api兼容个人比赛与团队比赛,以减少前端代码工作量
第三,针对不同的赛制,例如淘汰赛和积分赛,对于赛程的安排是完全不同的,我通过调整代码框架和数据库结构,保证现有的功能理论上能够实现所有的大多数赛制
第四,为了防止用户的错误操作导致程序产生错误返回,如在比赛结束后点击比赛开始等,我将所有的流程都加上的状态检索,及时阻止可能会导致出错的错误操作
2.5 结题总结
尽管我们完成了所有信息查看和维护的功能,但由于时间和人手有限,核心功能赛事管理我们最终只实现了个人淘汰赛和团队KOF赛,对于这个完成度我并不满意
虽然之前我也学过spring框架,但经历这次项目之后,我对spring和spring boot框架有了新的理解,尤其是工程的配置文件编写
对团队作业有了新的经验。过去的课程中我们也经历过团队协作完成作业,但多数情况下是每个人完成自己的任务,团队成员之间缺乏沟通和交流。哪怕对一个小小的细节的理解的不同,也会导致代码前后端无法完成对接,我认为沟通能力比编码能力更加重要
课程建议
- 从我的直观上课体验来看,课程内容过于理论化,而我们这门课又比较注重实验,所以大多数时候我们在上课时会选择写代码而不是听课
- 上课过程中老师会给我们普及很多课外的知识,我认为很好,但是时间可能会有点长,占用了大量上课的时间,我建议对普及知识控制时间,或者利用课间休息时间分享
posted on 2019-12-10 11:22 31701049王逸康 阅读(382) 评论(0) 编辑 收藏 举报