31701049王逸康

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编辑  收藏  举报

导航