基于java实现学科竞赛管理系统「Springboot+mybatis+lyaui」
系统功能设计
- (1)登录:输入账号密码和验证码登录;
- (2)用户信息模块
- (3)菜单模块
- (4)角色模块
- (5)项目竞赛活动申请模块
- (6)项目竞赛经费申请模块
- (7)项目竞赛活动管理审批模块
- (8)项目个人赛报名模块
- (9)项目团队赛报名模块
- (10)项目结题统计模块
- (11)通知公告模块
主要功能截图:
用户登录:输入帐号密码和验证码登录。登录后,根据用户权限显示不同的菜单,灵活控制角色。
管理员功能模块:用户管理、竞赛报名信息管理、经费申请信息和x审核信息管理、项目结题信息、管理角色管理、菜单管理、权限管理、、立项申请管理等具体模块管理
用户管理:用户列表显示,数据的添加,以及删除修改等。
角色管理:将角色与用户绑定,灵活控制角色菜单,显示菜单权限。可以创建多个角色
菜单消息管理:
系统日志监控:aop切面编程。实现日志记录操作。
业务模块功能
立项申请功能
立项审核:
活动经费、预算申请
项目结题管理信息:
项目结题统计:
数据库表设计:
用户表:
CREATE TABLE `NewTable` (
`user_id` bigint(20) NOT NULL AUTO_INCREMENT ,
`username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名' ,
`salt` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '盐' ,
`email` varchar(1
`password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码' ,
00) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱' ,
`mobile` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号' ,
`status` tinyint(4) NULL DEFAULT NULL COMMENT '状态 0:禁用 1:正常' ,
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间' ,
PRIMARY KEY (`user_id`),
UNIQUE INDEX `username` (`username`) USING BTREE
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
COMMENT='系统用户'
AUTO_INCREMENT=3
ROW_FORMAT=COMPACT
菜单表:
CREATE TABLE `NewTable` (
`menu_id` bigint(20) NOT NULL AUTO_INCREMENT ,
`parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父菜单ID,一级菜单为0' ,
`name` varchar(50) SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单名称' ,
`url` varchar(200) SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单URL' ,
`perms` varchar(500) SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '授权(多个用逗号分隔,如:user:list,user:create)' ,
`type` int(11) NULL DEFAULT NULL COMMENT '类型 0:目录 1:菜单 2:按钮' ,
`icon` varchar(50) SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单图标' ,
`order_num` int(11) NULL DEFAULT NULL COMMENT '排序' ,
PRIMARY KEY (`menu_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
COMMENT='菜单管理'
AUTO_INCREMENT=69
ROW_FORMAT=COMPACT
;
立项申请:
CREATE TABLE `NewTable` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`name` varchar(255) SET utf8 COLLATE NULL NULL ,
`zsdw` varchar(255) SET utf8 COLLATE NULL ,
`type` varchar(255) SET utf8 COLLATE utf8_general_ci NULL NULL ,
`principal` varchar(255) SET utf8 COLLATE NULL DEFAULT NULL ,
`phone` varchar(255) SET utf8 COLLATE NULL NULL ,
`start_time` datetime NULL DEFAULT NULL ,
`ent_time` datetime NULL DEFAULT NULL ,
`majozhuban` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`sponsor` varchar(255) SET utf8 COLLATE utf8_general_ci NULL NULL ,
`undertaeker` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL NULL ,
`remark` varchar(255) SET utf8 COLLATE utf8_general_ci NULL NULL ,
`audit_stu` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL NULL ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=COMPACT
;
个人赛:
CREATE TABLE `NewTable` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`name` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`college` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`class_name` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`grade` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`major` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`email` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`phone` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`title` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=12
ROW_FORMAT=COMPACT
;
经费申请:
CREATE TABLE `NewTable` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`zhuche` double NULL NULL ,
`rate` double NULL NULL ,
`train` double NULL NULL ,
`guidance` double NULL NULL ,
`haocai` double NULL NULL ,
`bonus` double NULL NULL ,
`other` double NULL ,
`total` double NULL NULL ,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL NULL ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=10
ROW_FORMAT=COMPACT
;
主要代码实现:
用户权限过滤:
@Bean("shiroFilter")public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();shiroFilter.setSecurityManager(securityManager);shiroFilter.setLoginUrl("/login.html");shiroFilter.setUnauthorizedUrl("/");filterMap.put("/statics/**", "anon");filterMap.put("/login.html", "anon");filterMap.put("/sys/login", "anon");filterMap.put("/favicon.ico", "anon");filterMap.put("/captcha.jpg", "anon");filterMap.put("/**", "authc");shiroFilter.setFilterChainDefinitionMap(filterMap);Map<String, String> filterMap = new LinkedHashMap<>();filterMap.put("/swagger/**", "anon");filterMap.put("/v2/api-docs", "anon");filterMap.put("/swagger-ui.html", "anon");filterMap.put("/webjars/**", "anon");filterMap.put("/swagger-resources/**", "anon");return shiroFilter;}
登录模块验证:
/*** 登录*/@ResponseBody@RequestMapping(value = "/sys/login")public R login(String username, String password, String captcha) {String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY);if(!captcha.equalsIgnoreCase(kaptcha)){return R.error("验证码不正确。。。。。。");}try{Subject subject = ShiroUtils.getSubject();UsernamePasswordToken token = new UsernamePasswordToken(username, password);//md5+Jiayansubject.login(token);}catch (UnknownAccountException e) {return R.error(e.getMessage());}catch (IncorrectCredentialsException e) {return R.error("账号或密码不正确。。。。");}catch (LockedAccountException e) {return R.error("账号已被锁定,请联系管理。。。员");}catch (AuthenticationException e) {return R.error("账户验证失败。。。。");}return R.ok();}
统一异常处理:/*** 异常处理器** @author Mark sunlightcs@gmail.com*/
@RestControllerAdvice
public class RRExceptionHandler {private Logger logger = LoggerFactory.getLogger(getClass());/*** 处理自定义异常*/@ExceptionHandler(RRException.class)public R handleRRException(RRException e){R r = new R();r.put("code", e.getCode());r.put("msg", e.getMessage());return r;}@ExceptionHandler(AuthorizationException.class)public R handleAuthorizationException(AuthorizationException e){logger.error(e.getMessage(), e);return R.error("没有权限,请联系管理员授权");}@ExceptionHandler(Exception.class)public R handleException(Exception e){logger.error(e.getMessage(), e);return R.error();}@ExceptionHandler(DuplicateKeyException.class)public R handleDuplicateKeyException(DuplicateKeyException e){logger.error(e.getMessage(), e);return R.error("数据库中已存在该记录");}
}
分页查询
package io.renren.common.utils;import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.renren.common.xss.SQLFilter;
import org.apache.commons.lang.StringUtils;import java.util.Map;/*** 查询参数** @author Mark sunlightcs@gmail.com*/
public class Query<T> {public IPage<T> getPage(Map<String, Object> params) {return this.getPage(params, null, false);}public IPage<T> getPage(Map<String, Object> params, String defaultOrderField, boolean isAsc) {//分页参数long curPage = 1;long limit = 10;//分页对象Page<T> page = new Page<>(curPage, limit);//分页参数params.put(Constant.PAGE, page);if(params.get(Constant.PAGE) != null){curPage = Long.parseLong((String)params.get(Constant.PAGE));}if(params.get(Constant.LIMIT) != null){limit = Long.parseLong((String)params.get(Constant.LIMIT));}//排序字段//防止SQL注入(因为sidx、order是通过拼接SQL实现排序的,会有SQL注入风险)String orderField = SQLFilter.sqlInject((String)params.get(Constant.ORDER_FIELD));String order = (String)params.get(Constant.ORDER);//前端字段排序if(StringUtils.isNotEmpty(orderField) && StringUtils.isNotEmpty(order)){if(Constant.ASC.equalsIgnoreCase(order)) {return page.addOrder(OrderItem.asc(orderField));}else {return page.addOrder(OrderItem.desc(orderField));}}//没有排序字段,则不排序if(StringUtils.isBlank(defaultOrderField)){return page;}//默认排序if(isAsc) {page.addOrder(OrderItem.asc(defaultOrderField));}else {page.addOrder(OrderItem.desc(defaultOrderField));}return page;}
}package io.renren.common.utils;import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.renren.common.xss.SQLFilter;
import org.apache.commons.lang.StringUtils;import java.util.Map;/*** 查询参数** @author Mark sunlightcs@gmail.com*/
public class Query<T> {public IPage<T> getPage(Map<String, Object> params) {return this.getPage(params, null, false);}public IPage<T> getPage(Map<String, Object> params, String defaultOrderField, boolean isAsc) {//分页参数long curPage = 1;long limit = 10;//分页对象Page<T> page = new Page<>(curPage, limit);//分页参数params.put(Constant.PAGE, page);if(params.get(Constant.PAGE) != null){curPage = Long.parseLong((String)params.get(Constant.PAGE));}if(params.get(Constant.LIMIT) != null){limit = Long.parseLong((String)params.get(Constant.LIMIT));}//排序字段//防止SQL注入(因为sidx、order是通过拼接SQL实现排序的,会有SQL注入风险)String orderField = SQLFilter.sqlInject((String)params.get(Constant.ORDER_FIELD));String order = (String)params.get(Constant.ORDER);//前端字段排序if(StringUtils.isNotEmpty(orderField) && StringUtils.isNotEmpty(order)){if(Constant.ASC.equalsIgnoreCase(order)) {return page.addOrder(OrderItem.asc(orderField));}else {return page.addOrder(OrderItem.desc(orderField));}}//没有排序字段,则不排序if(StringUtils.isBlank(defaultOrderField)){return page;}//默认排序if(isAsc) {page.addOrder(OrderItem.asc(defaultOrderField));}else {page.addOrder(OrderItem.desc(defaultOrderField));}return page;}
}
获取完整源码:
大家点赞、收藏、关注、评论啦,头条后台私信回复【666】即刻免费获取到相关学习资料
基于java实现学科竞赛管理系统「Springboot+mybatis+lyaui」相关推荐
- java毕业设计学科竞赛管理系统Mybatis+系统+数据库+调试部署
java毕业设计学科竞赛管理系统Mybatis+系统+数据库+调试部署 java毕业设计学科竞赛管理系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java ...
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java大学生学科竞赛管理系统t16zl
面对老师五花八门的设计要求,首先自己要明确好自己的题目方向,并且与老师多多沟通,用什么编程语言,使用到什么数据库,确定好了,在开始着手毕业设计. 1:选择课题的第一选择就是尽量选择指导老师擅长的课题, ...
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java大学生学科竞赛管理系统7jdqe
对于计算机专业的学生最头疼的就是临近毕业时的毕业设计,对于如何选题,技术选型等这些问题,难道了大部分人,确实,还没毕业的学生对于这些问题还比较陌生,只有学习的理论知识,没有实战经验怎么能独自完成毕业设 ...
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校学科竞赛管理系统eolh8
对于即将毕业或者即将做课设的同学而言,由于经验的欠缺,面临的第一个难题就是选题,确定好题目之后便是开题报告,如果选题首先看自己学习那些技术,不同技术适合做不同的产品,比如自己会些简单的Java语言,会 ...
- 基于JAVA学科竞赛管理系统计算机毕业设计源码+系统+lw文档+部署
基于JAVA学科竞赛管理系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA学科竞赛管理系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...
- [附源码]Python计算机毕业设计SSM基于java学科竞赛管理系统(程序+LW)
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- 基于springboot+Element-Vue+mysql学科竞赛管理系统
基于springboot+Element-Vue+mysql学科竞赛管理系统 一.系统介绍 二.功能展示 1.用户登陆 2.学生页面 3.教师页面 4.学院管理员页面 5.系统管理员页面 6.竞赛列表 ...
- [附源码]Nodejs计算机毕业设计基于java学科竞赛管理系统Express(程序+LW)
该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...
- java毕业设计大学生学科竞赛管理系统mybatis+源码+调试部署+系统+数据库+lw
java毕业设计大学生学科竞赛管理系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计大学生学科竞赛管理系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目 ...
- 计算机毕业设计Java学科竞赛管理系统(源码+系统+mysql数据库+Lw文档)
计算机毕业设计Java学科竞赛管理系统(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java学科竞赛管理系统(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 ...
最新文章
- ​全球首个视频实验期刊JOVE征稿:植物微生物组学方法专刊(牛犇、韦中、高峥、王蒙岑)...
- 安卓应用如何引用动态库
- editplus 批量删除 重复行
- 【整洁之道】如何写出更整洁的代码(上)
- 一叶知秋:基于“单目标域样本”的领域自适应方法
- HTTP 响应的分块传输
- c语言编写弹窗提示是否确认退出_弹窗设计的5条基本原则
- android原生ios,Windows Phone的原生iOS/Android应用程序
- kmz文件转为arcgis的图层(制作底图)
- 考研复试数据库原理课后习题(一)——绪论
- 发现一个好用的MySQL数据库管理工具
- 【物联网毕设基础】单片机:RS485 通信与 Modbus 协议
- html图片左右滚动播放,CSS3实现横向滚动播放
- 手绘图像检索:Deep Spatial-Semantic Attention for Fine-Grained Sketch-Based Image Retrieval
- 计算机网络CiscoPacket Tracer实验
- NMOS双向转换电路实测以及上升沿尖峰处理
- 回头草的爱情,我们还需要吗?
- 关键点提取:face_recognition、疲劳检测、人脸校准、人脸数据库
- [转载]投资正道vs冯时能30年股票投资16心得
- 2021年施工员-设备方向-岗位技能(施工员)考试试卷及施工员-设备方向-岗位技能(施工员)证考试