基于SpringBoot vue的CSGO赛事管理系统设计与实现
博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1500+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
更多项目地址 介绍 翰文编程-CSDN博客
文末下方有源码获取地址
系统实现
4系统总体设计
4.1系统结构
CSGO赛事管理系统,它是一个由人、电脑及其他组件构成的,一种能够收集、存储、加工、传送信息的系统。该系统可以帮助决策者找出当前急需解决的问题,然后将信息快速的反馈,使管理人员能够以最快的时间知道目前的现状,进行更进一步的计划。
当前MIS系统结构目前存在两种较为流行的结构:C/S和B/S两种。
C/S结构的系统:C/S结构就是客户机服务器结构,它可以法派任务到Client端和Server端来进行,充分利用两端硬件环境的优势,来降低系统的通讯的花费。客户端主要作用是处理人机交互,执行客户端应用程序,收集数据以及向服务器发送任务请求。服务器基本作用是执行后台程序,它主要对客户机的请求申请进行反馈,除此之外,它的作用还包括:数据库存储系统的共享管理、通讯管理、文件管理等等。
B/S结构的系统:这种网络结构简化了客户端,并把系统功能实现的中心集中到服务器上,在这种模式中,只需要一个浏览器就可以了。这种结构将很多的工作交于WEB服务器,只通过浏览器请求WEB服务,随后根据请求返回信息。
通常在只在企业网内部使用,采用C/S。而使用不仅限于内网的情况下使用B/S。考虑到本管理系统的一系列需求,所以,该系统开发使用B/S结构开发。其主要功能结构如下图所示。
图4-1 系统总体功能结构图
4.2数据库设计
数据库设计是指为系统提供最优化的数据库模式,使得应用程序能够有效的存储数据,满足用户的各类需求。
4.2.1 数据库概念结构设计
概念结构设计是根据用户需求形成的。用最常的E-R方法描述数据模型进行数据库的概念设计,首先设计局部的E-R模式,最后各局部ER模式综合成一个全局模式。然后再把概念模式转换成逻辑模式。将概念设计从设计过程中独立开来,设计复杂程度降低,不受特定DBMS的限制。
1.所有实体和属性的定义如下所示。
参赛战队管理属性图如下图4-2所示。
图4-2参赛战队管理实体属性图
赛事信息管理实体属性图,如图4-3所示:
图4-3赛事信息管理实体属性图
4.2.2数据库逻辑结构设计
根据E-R得出数据库包涵了以下几张数据表来实现了对数据库的存储、调用。以下分别列出数据表的每个字段名、数据类型、主外键及备注。
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
saishimingcheng | varchar | 200 | 赛事名称 | ||
saishitubiao | varchar | 200 | 赛事图标 | ||
jubandi | varchar | 200 | 举办地 | ||
gongsizhanghao | varchar | 200 | 公司账号 | ||
gongsimingcheng | varchar | 200 | 公司名称 | ||
cehuashu | varchar | 200 | 策划书 | ||
hetong | varchar | 200 | 合同 | ||
sfsh | varchar | 200 | 是否审核 | 否 | |
shhf | longtext | 4294967295 | 审核回复 |
表4-2:赛事信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
saishimingcheng | varchar | 200 | 赛事名称 | ||
saishitubiao | varchar | 200 | 赛事图标 | ||
saishijieduan | varchar | 200 | 赛事阶段 | ||
jubandi | varchar | 200 | 举办地 | ||
kaishiriqi | date | 开始日期 | |||
jieshuriqi | date | 结束日期 | |||
baomingzhuangtai | varchar | 200 | 报名状态 | ||
clicktime | datetime | 最近点击时间 |
表4-3:赛事报名
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
saishimingcheng | varchar | 200 | 赛事名称 | ||
saishitubiao | varchar | 200 | 赛事图标 | ||
jubandi | varchar | 200 | 举办地 | ||
cansaizhanghao | varchar | 200 | 参赛账号 | ||
zhanduimingcheng | varchar | 200 | 战队名称 | ||
baomingriqi | date | 报名日期 | |||
sfsh | varchar | 200 | 是否审核 | 否 | |
shhf | longtext | 4294967295 | 审核回复 |
表4-4:赛事通知
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
introduction | longtext | 4294967295 | 简介 | ||
picture | varchar | 200 | 图片 | ||
content | longtext | 4294967295 | 内容 |
表4-5:合作方
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
gongsizhanghao | varchar | 200 | 公司账号 | ||
mima | varchar | 200 | 密码 | ||
gongsimingcheng | varchar | 200 | 公司名称 | ||
yingyezhizhao | varchar | 200 | 营业执照 | ||
fuzeren | varchar | 200 | 负责人 | ||
shoujihaoma | varchar | 200 | 手机号码 | ||
youxiang | varchar | 200 | 邮箱 | ||
suoshuguojia | varchar | 200 | 所属国家 | ||
sfsh | varchar | 200 | 是否审核 | 否 | |
shhf | longtext | 4294967295 | 审核回复 |
表4-6:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
表4-7:参赛战队
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
cansaizhanghao | varchar | 200 | 参赛账号 | ||
mima | varchar | 200 | 密码 | ||
zhanduimingcheng | varchar | 200 | 战队名称 | ||
touxiang | varchar | 200 | 头像 | ||
lianxifangshi | varchar | 200 | 联系方式 | ||
youxiang | varchar | 200 | 邮箱 | ||
suoshuguojia | varchar | 200 | 所属国家 |
表4-8:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
表4-9:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
userid | bigint | 用户id | |||
username | varchar | 100 | 用户名 | ||
tablename | varchar | 100 | 表名 | ||
role | varchar | 100 | 角色 | ||
token | varchar | 200 | 密码 | ||
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP | ||
expiratedtime | timestamp | 过期时间 | CURRENT_TIMESTAMP |
5 系统详细设计
5.1系统功能模块
CSGO赛事管理系统,在系统首页可以查看首页,赛事信息,赛事通知,个人中心,后台管理等内容,并进行详细操作;如图5-1所示。
图5-1系统首页界面图
赛事信息,在赛事信息页面可以查看赛事名称,赛事图标,举办地,开始日期,结束日期,报名状态等内容;如图5-2所示。
图5-2赛事信息界面图
赛事通知,在赛事通知页面通过填写标题信息,并进行搜索操作,如图5-3所示。
图5-3赛事通知界面图
参赛战队注册,在注册页面通过填写参赛账号,密码,确认密码,战队名称,联系方式,邮箱,所属国家等内容进行注册;如图5-4所示。
图5-4个参赛战队注册界面图
5.2管理员功能模块
管理员登录,管理员进入系统前在登录页面根据要求填写用户名和密码,选择角色等信息,点击登录进行登录操作,如图5-5所示。
图5-5管理员登录界面图
管理员登录系统后,可以对首页,个人中心,参赛战队管理,合作方管理,赛事信息管理,申请合作管理,赛事报名管理,系统管理等功能进行相应的操作管理,如图5-6所示。
图5-6管理员功能界面图
参赛战队管理,在参赛战队管理页面可以对索引,参赛账号,战队名称,头像,联系方式,邮箱,所属国家等内容进行修改和删除等操作,如图5-7所示。
图5-7参赛战队管理界面图
合作方管理,在合作方页面可以对索引,公司账号,公司名称,营业执照,负责人,手机号码,邮箱,所属国家,审核回复,审核状态,审核等内容进行详情,修改和删除等操作,如图5-8所示。
图5-8合作方管理界面图
主要代码
package com.controller;import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;import com.entity.HezuofangEntity;
import com.entity.view.HezuofangView;import com.service.HezuofangService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;/*** 合作方* 后端接口* @author * @email * @date 2022-04-20 11:00:01*/
@RestController
@RequestMapping("/hezuofang")
public class HezuofangController {@Autowiredprivate HezuofangService hezuofangService;@Autowiredprivate TokenService tokenService;/*** 登录*/@IgnoreAuth@RequestMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {HezuofangEntity user = hezuofangService.selectOne(new EntityWrapper<HezuofangEntity>().eq("gongsizhanghao", username));if(user==null || !user.getMima().equals(password)) {return R.error("账号或密码不正确");}if("否".equals(user.getSfsh())) return R.error("账号已锁定,请联系管理员审核。");String token = tokenService.generateToken(user.getId(), username,"hezuofang", "合作方" );return R.ok().put("token", token);}/*** 注册*/@IgnoreAuth@RequestMapping("/register")public R register(@RequestBody HezuofangEntity hezuofang){//ValidatorUtils.validateEntity(hezuofang);HezuofangEntity user = hezuofangService.selectOne(new EntityWrapper<HezuofangEntity>().eq("gongsizhanghao", hezuofang.getGongsizhanghao()));if(user!=null) {return R.error("注册用户已存在");}Long uId = new Date().getTime();hezuofang.setId(uId);hezuofangService.insert(hezuofang);return R.ok();}/*** 退出*/@RequestMapping("/logout")public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok("退出成功");}/*** 获取用户的session用户信息*/@RequestMapping("/session")public R getCurrUser(HttpServletRequest request){Long id = (Long)request.getSession().getAttribute("userId");HezuofangEntity user = hezuofangService.selectById(id);return R.ok().put("data", user);}/*** 密码重置*/@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){HezuofangEntity user = hezuofangService.selectOne(new EntityWrapper<HezuofangEntity>().eq("gongsizhanghao", username));if(user==null) {return R.error("账号不存在");}user.setMima("123456");hezuofangService.updateById(user);return R.ok("密码已重置为:123456");}/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,HezuofangEntity hezuofang,HttpServletRequest request){EntityWrapper<HezuofangEntity> ew = new EntityWrapper<HezuofangEntity>();PageUtils page = hezuofangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, hezuofang), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,HezuofangEntity hezuofang, HttpServletRequest request){EntityWrapper<HezuofangEntity> ew = new EntityWrapper<HezuofangEntity>();PageUtils page = hezuofangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, hezuofang), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( HezuofangEntity hezuofang){EntityWrapper<HezuofangEntity> ew = new EntityWrapper<HezuofangEntity>();ew.allEq(MPUtil.allEQMapPre( hezuofang, "hezuofang")); return R.ok().put("data", hezuofangService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(HezuofangEntity hezuofang){EntityWrapper< HezuofangEntity> ew = new EntityWrapper< HezuofangEntity>();ew.allEq(MPUtil.allEQMapPre( hezuofang, "hezuofang")); HezuofangView hezuofangView = hezuofangService.selectView(ew);return R.ok("查询合作方成功").put("data", hezuofangView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){HezuofangEntity hezuofang = hezuofangService.selectById(id);return R.ok().put("data", hezuofang);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){HezuofangEntity hezuofang = hezuofangService.selectById(id);return R.ok().put("data", hezuofang);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody HezuofangEntity hezuofang, HttpServletRequest request){hezuofang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(hezuofang);HezuofangEntity user = hezuofangService.selectOne(new EntityWrapper<HezuofangEntity>().eq("gongsizhanghao", hezuofang.getGongsizhanghao()));if(user!=null) {return R.error("用户已存在");}hezuofang.setId(new Date().getTime());hezuofangService.insert(hezuofang);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody HezuofangEntity hezuofang, HttpServletRequest request){hezuofang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(hezuofang);HezuofangEntity user = hezuofangService.selectOne(new EntityWrapper<HezuofangEntity>().eq("gongsizhanghao", hezuofang.getGongsizhanghao()));if(user!=null) {return R.error("用户已存在");}hezuofang.setId(new Date().getTime());hezuofangService.insert(hezuofang);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody HezuofangEntity hezuofang, HttpServletRequest request){//ValidatorUtils.validateEntity(hezuofang);hezuofangService.updateById(hezuofang);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){hezuofangService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<HezuofangEntity> wrapper = new EntityWrapper<HezuofangEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}int count = hezuofangService.selectCount(wrapper);return R.ok().put("count", count);}}
赛事信息管理,在赛事信息管理页面可以对索引,赛事名称,赛事图标,赛事阶段,举办地,开始日期,结束日期,报名状态等内容进行详情,修改和删除等操作,如图5-9所示。
图5-9赛事信息管理界面图
代码文档下载地址
基于SpringBootvue的CSGO赛事管理系统源码论文ppt资源-CSDN文库
大家点赞、收藏、关注、评论啦 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者