博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址
springboot035学科竞赛管理录像(含源码文档)
4.2系统结构设计
系统架构的整体设计是一个将一个庞大的任务细分为多个小的任务的过程,这些小的任务分段完成后,组合在一起形成一个完整的任务。本学科竞赛管理系统的设计与实现主要包括学生功能模块和管理员功能模块两大部分,系统结构设计如图4-2所示。

图4-2系统结构图
4.3 系统顺序图
(1)登陆顺序图
用户在登录时,首先进入系统登录窗口,用户需要输入用户名和密码,点击登录按钮进行登录操作,系统会以用户名和密码为参数在数据库中进行登录信息的验证,验证成功则登录成功,进入用户主界面。登录模块顺序图如图4-3所示。

图4-3 登录顺序图
(2)注册顺序图
未有账号的用户可进入注册界面进行注册操作,在注册界面输入注册信息,点击提交按钮,系统首先判断用户名是否存在,存在则提示重新输入,不存在则验证注册信息是否正确,正确则在数据库中添加注册数据,提示注册成功。用户注册模块顺序图如图4-4所示。

图4-4 注册顺序图
(3)修改密码顺序图
用户登录后可进入修改密码界面进行修改密码操作,在修改密码时,需要输入原始密码和新密码,系统会在数据库中进行原密码的验证,原密码正确则在数据库中添加修改数据,修改成功。修改密码顺序图如图4-5所示。

图4-5 修改密码顺序图
4.4数据库设计
4.4.1 数据库实体(E-R图)
E-R图是一种描述显示数据类型间的关系的数据描述方法,E-R图可以完整地映射出现实模型的关系。
实体联系模型反映出来的是现实世界中实体的相互间关联的关系,是用来在数据库设计过程中表示数据库系统结构的方法。它的思想是使用现有的数据模型来表现出目前项目实体间所具有的现实关联。E-R图是可以表示实体间相互关联的意义,直观反映出实体间的关联。
在为实体设计属性与关联的时候便可以确定实体间主外键的关联关系,实体所具有的延伸性。在E-R图中这些都能直观的显示出来。像这样将数据分类成组后,就会产生了与相关的分组所不同的信心,这样更加的易于用户进行观察和实际分析。本学科竞赛管理系统的设计与实现的E-R图如下所示:
4.4.2 数据库表设计
本学科竞赛管理系统的设计与实现采用了MYSQL数据库管理系统,各个表的设计结果如下:
表4-1 jiangxiangtongji奖项统计信息表
字段名 | 数据类型 | 是否允许空 | 字段含义 |
id | bigint(20) | NOT NULL | 编号 |
addtime | timestamp | NULL | 创建时间 |
yuanxiaomingcheng` | varchar(200) | NULL | 院校名称 |
leixing | varchar(200) | NULL | 类型 |
shuxue | int(11) | NULL | 数学 |
wuli | int(11) | NULL | 物理 |
huaxue | int(11) | NULL | 化学 |
shengwu | int(11) | NULL | 生物 |
xinxixue | int(11) | NULL | 信息学 |
zongshu | int(11) | NULL | 总数 |
表4-2 saixiangbaoming赛项报名信息表
字段名 | 数据类型 | 是否允许空 | 字段含义 |
id | bigint(20) | NOT NULL | 编号 |
addtime | timestamp | NULL | 创建时间 |
`saixiangmingcheng | varchar(200) | NULL | 赛项名称 |
`leixing | varchar(200) | NULL | 类型 |
jibie | varchar(200) | NULL | 级别 |
`baomingfeiyong | int(11) | NULL | 报名费用 |
baomingriqi | date | NULL | 报名日期 |
shenbaocailiao | longtext | NULL | 申报材料 |
xuehao | varchar(200) | NULL | 学号 |
xingming | varchar(200) | NULL | 姓名 |
sfsh | varchar(200) | NULL | 是否审核 |
shhf | longtext | NULL | 审核回复 |
ispay | varchar(200) | NULL | 是否支付 |
表4-3 users管理员信息表
字段名 | 数据类型 | 是否允许空 | 字段含义 |
id | bigint(20) | NOT NULL | 编号 |
username | varchar(100) | NULL | 用户名 |
password | varchar(100) | NULL | 密码 |
role | varchar(100) | NULL | 角色 |
addtime | timestamp | NULL | 添加时间 |
表4-4 saixiangxinxi赛项信息表
字段名 | 数据类型 | 是否允许空 | 字段含义 |
id | bigint(20) | NOT NULL | 编号 |
addtime | timestamp | NULL | 创建时间 |
`saixiangmingcheng | varchar(200) | NULL | 赛项名称 |
`leixing | varchar(200) | NULL | 类型 |
`bisaididian | varchar(200) | NULL | 比赛地点 |
saixiangneiron | longtext | NULL | 赛项内容 |
jibie` | varchar(200) | NULL | 级别 |
canjiarenshu | int(11) | NULL | 参加人数 |
baomingfeiyong | int(11) | NULL | 报名费用 |
xiangqing | longtext | NULL | 详情 |
jiezhiriqi | date | NULL | 截至日期 |
tupian | varchar(200) | NULL | 图片 |
表4-5 xuesheng学生信息表
字段名 | 数据类型 | 是否允许空 | 字段含义 |
id | bigint(20) | NOT NULL | 编号 |
addtime | timestamp | NULL | 创建时间 |
xuehao | varchar(200) | NULL | 学号 |
mima | varchar(200) | NULL | 密码 |
xingming | varchar(200) | NULL | 姓名 |
xingbie | varchar(200) | NULL | 性别 |
shouji | varchar(200) | NULL | 手机 |
youxiang | varchar(200) | NULL | 邮箱 |
shenfenzheng | varchar(200) | NULL | 身份证 |
tupian` | varchar(200) | NULL | 图片 |
5 系统的实现
5.1学生功能模块的实现
学生进入本系统可查看系统信息,系统主界面展示如图5-1所示。
图5-1系统主界面图
5.1.1 学生注册界面
没有账号的学生用户可进行注册操作,学生注册界面展示如图5-2所示。
图5-2 学生注册界面图
5.1.2 学生登录界面
学生在登录时需输入正确的登录用户名和密码,系统会以登录用户名、密码为参数进行登录信息的验证,信息正确则登录成功,反之登录失败,学生登录界面展示如图5-2所示。
图5-3 学生登录界面图
5.1.3 赛项详情界面
学生可选择赛项查看详情信息,登录后可进行报名操作,赛项详情界面展示如图5-4所示,报名界面展示如图5-5所示。
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.SaixiangbaomingEntity;
import com.entity.view.SaixiangbaomingView;
import com.service.SaixiangbaomingService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 赛项报名
* 后端接口
* @author
* @email
* @date 2021-03-26 17:35:20
*/
@RestController
@RequestMapping("/saixiangbaoming")
public class SaixiangbaomingController {
@Autowired
private SaixiangbaomingService saixiangbaomingService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,SaixiangbaomingEntity saixiangbaoming,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("xuesheng")) {
saixiangbaoming.setXuehao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<SaixiangbaomingEntity> ew = new EntityWrapper<SaixiangbaomingEntity>();
PageUtils page = saixiangbaomingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, saixiangbaoming), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,SaixiangbaomingEntity saixiangbaoming, HttpServletRequest request){
EntityWrapper<SaixiangbaomingEntity> ew = new EntityWrapper<SaixiangbaomingEntity>();
PageUtils page = saixiangbaomingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, saixiangbaoming), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( SaixiangbaomingEntity saixiangbaoming){
EntityWrapper<SaixiangbaomingEntity> ew = new EntityWrapper<SaixiangbaomingEntity>();
ew.allEq(MPUtil.allEQMapPre( saixiangbaoming, "saixiangbaoming"));
return R.ok().put("data", saixiangbaomingService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(SaixiangbaomingEntity saixiangbaoming){
EntityWrapper< SaixiangbaomingEntity> ew = new EntityWrapper< SaixiangbaomingEntity>();
ew.allEq(MPUtil.allEQMapPre( saixiangbaoming, "saixiangbaoming"));
SaixiangbaomingView saixiangbaomingView = saixiangbaomingService.selectView(ew);
return R.ok("查询赛项报名成功").put("data", saixiangbaomingView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
SaixiangbaomingEntity saixiangbaoming = saixiangbaomingService.selectById(id);
return R.ok().put("data", saixiangbaoming);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
SaixiangbaomingEntity saixiangbaoming = saixiangbaomingService.selectById(id);
return R.ok().put("data", saixiangbaoming);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody SaixiangbaomingEntity saixiangbaoming, HttpServletRequest request){
saixiangbaoming.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(saixiangbaoming);
saixiangbaomingService.insert(saixiangbaoming);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody SaixiangbaomingEntity saixiangbaoming, HttpServletRequest request){
saixiangbaoming.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(saixiangbaoming);
saixiangbaomingService.insert(saixiangbaoming);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody SaixiangbaomingEntity saixiangbaoming, HttpServletRequest request){
//ValidatorUtils.validateEntity(saixiangbaoming);
saixiangbaomingService.updateById(saixiangbaoming);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
saixiangbaomingService.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<SaixiangbaomingEntity> wrapper = new EntityWrapper<SaixiangbaomingEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("xuesheng")) {
wrapper.eq("xuehao", (String)request.getSession().getAttribute("username"));
}
int count = saixiangbaomingService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
5.1.4 个人中心界面
学生可对个人信息进行修改,个人中心界面展示如图5-6所示。
图5-6 个人中心界面图
5.2管理员功能模块的实现
5.2.1 管理员登录界面
管理员要想进入后台进行管理操作,必须登录系统后台,管理员登录界面展示如图5-7所示。
图5-7 管理员登录界面图
5.2.2 学生管理界面
管理在学生管理界面可查看所有学生信息,并可对其进行修改和删除操作,同时也可添加学生信息,学生管理界面展示如图5-8所示。
图5-8 学生管理界面图
大家点赞、收藏、关注、评论啦 其他的定制服务 商务合作 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者