定制开发基于java实现学科竞赛管理系统【Springboot+mybatis+layui】

🍅 作者主页:

🍅 简介:Java定制开发领域优质创作者🏆、【java李杨勇】公号作者✌  简历模板、学习资料、面试题库【关注我,都给你】

🍅定制开发文末获取源码联系🍅

 定制开发临近学期结束,定制开发还是毕业设计,你还在做java程序,期末作业,定制开发老师的作业要求觉得大了吗?定制开发不知道毕业设计该怎么办?定制开发网页功能的数量是否太多?定制开发没有合适的类型或系统?等等。这里,定制开发你想解决的问题,在这专栏👇🏻👇🏻👇🏻👇🏻

 定制开发都能满足你的需求。原始Jsp、SSM、SpringBoot、以及HTML+CSS+JS页面设计, web定制开发大学生网页设计作业源码等等都可以参考得到解决。话不多说直接拿一个学科竞赛项目来举例

 视频演示 :

  

论文设计参考:

系统功能设计

(1)登录:输入账号密码和验证码登录;

(2)用户信息模块

(3)菜单模块

(4)角色模块

(5)项目竞赛活动申请模块

(6)项目竞赛经费申请模块

(7)项目竞赛活动管理审批模块

(8)项目个人赛报名模块

(9)项目团队赛报名模块

(10)项目结题统计模块

(11)通知公告模块

主要功能截图: 

用户登录:输入帐号密码和验证码登录。登录后,根据用户权限显示不同的菜单,灵活控制角色。

管理员功能模块:用户管理、竞赛报名信息管理、经费申请信息和x审核信息管理、项目结题信息、管理角色管理、菜单管理、权限管理、、立项申请管理等具体模块管理

用户管理:用户列表显示,数据的添加,以及删除修改等。

角色管理:将角色与用户绑定,灵活控制角色菜单,显示菜单权限。可以创建多个角色

菜单消息管理:

系统日志监控:aop切面编程。实现日志记录操作。

业务模块功能

立项申请功能

​​

立项审核:

活动经费、预算申请 

立项申请个人赛以及团队赛管理,录入报名相关信息字段

项目结题管理信息:

项目完成之后、选择项目进行资金使用统计结题。录入金额

项目结题统计:

数据库表设计: 

用户表:

  1. CREATE TABLE `NewTable` (
  2. `user_id` bigint(20) NOT NULL AUTO_INCREMENT ,
  3. `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名' ,
  4. `salt` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '盐' ,
  5. `email` varchar(1
  6. `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码' ,
  7. 00) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱' ,
  8. `mobile` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号' ,
  9. `status` tinyint(4) NULL DEFAULT NULL COMMENT '状态 0:禁用 1:正常' ,
  10. `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间' ,
  11. PRIMARY KEY (`user_id`),
  12. UNIQUE INDEX `username` (`username`) USING BTREE
  13. )
  14. ENGINE=InnoDB
  15. DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
  16. COMMENT='系统用户'
  17. AUTO_INCREMENT=3
  18. ROW_FORMAT=COMPACT

菜单表:

  1. CREATE TABLE `NewTable` (
  2. `menu_id` bigint(20) NOT NULL AUTO_INCREMENT ,
  3. `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父菜单ID,一级菜单为0' ,
  4. `name` varchar(50) SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单名称' ,
  5. `url` varchar(200) SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单URL' ,
  6. `perms` varchar(500) SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '授权(多个用逗号分隔,如:user:list,user:create)' ,
  7. `type` int(11) NULL DEFAULT NULL COMMENT '类型 0:目录 1:菜单 2:按钮' ,
  8. `icon` varchar(50) SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单图标' ,
  9. `order_num` int(11) NULL DEFAULT NULL COMMENT '排序' ,
  10. PRIMARY KEY (`menu_id`)
  11. )
  12. ENGINE=InnoDB
  13. DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
  14. COMMENT='菜单管理'
  15. AUTO_INCREMENT=69
  16. ROW_FORMAT=COMPACT
  17. ;

立项申请:

  1. CREATE TABLE `NewTable` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT ,
  3. `name` varchar(255) SET utf8 COLLATE NULL NULL ,
  4. `zsdw` varchar(255) SET utf8 COLLATE NULL ,
  5. `type` varchar(255) SET utf8 COLLATE utf8_general_ci NULL NULL ,
  6. `principal` varchar(255) SET utf8 COLLATE NULL DEFAULT NULL ,
  7. `phone` varchar(255) SET utf8 COLLATE NULL NULL ,
  8. `start_time` datetime NULL DEFAULT NULL ,
  9. `ent_time` datetime NULL DEFAULT NULL ,
  10. `majozhuban` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  11. `sponsor` varchar(255) SET utf8 COLLATE utf8_general_ci NULL NULL ,
  12. `undertaeker` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL NULL ,
  13. `remark` varchar(255) SET utf8 COLLATE utf8_general_ci NULL NULL ,
  14. `audit_stu` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL NULL ,
  15. PRIMARY KEY (`id`)
  16. )
  17. ENGINE=InnoDB
  18. DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
  19. ROW_FORMAT=COMPACT
  20. ;

个人赛:

  1. CREATE TABLE `NewTable` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT ,
  3. `name` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  4. `college` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  5. `class_name` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  6. `grade` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  7. `major` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  8. `email` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  9. `phone` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  10. `title` varchar(255) SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  11. PRIMARY KEY (`id`)
  12. )
  13. ENGINE=InnoDB
  14. DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
  15. AUTO_INCREMENT=12
  16. ROW_FORMAT=COMPACT
  17. ;

经费申请:

  1. CREATE TABLE `NewTable` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT ,
  3. `zhuche` double NULL NULL ,
  4. `rate` double NULL NULL ,
  5. `train` double NULL NULL ,
  6. `guidance` double NULL NULL ,
  7. `haocai` double NULL NULL ,
  8. `bonus` double NULL NULL ,
  9. `other` double NULL ,
  10. `total` double NULL NULL ,
  11. `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL NULL ,
  12. PRIMARY KEY (`id`)
  13. )
  14. ENGINE=InnoDB
  15. DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
  16. AUTO_INCREMENT=10
  17. ROW_FORMAT=COMPACT
  18. ;

主要代码实现:

用户权限过滤:

  1. @Bean("shiroFilter")
  2. public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
  3. ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
  4. shiroFilter.setSecurityManager(securityManager);
  5. shiroFilter.setLoginUrl("/login.html");
  6. shiroFilter.setUnauthorizedUrl("/");
  7. filterMap.put("/statics/**", "anon");
  8. filterMap.put("/login.html", "anon");
  9. filterMap.put("/sys/login", "anon");
  10. filterMap.put("/favicon.ico", "anon");
  11. filterMap.put("/captcha.jpg", "anon");
  12. filterMap.put("/**", "authc");
  13. shiroFilter.setFilterChainDefinitionMap(filterMap);
  14. Map<String, String> filterMap = new LinkedHashMap<>();
  15. filterMap.put("/swagger/**", "anon");
  16. filterMap.put("/v2/api-docs", "anon");
  17. filterMap.put("/swagger-ui.html", "anon");
  18. filterMap.put("/webjars/**", "anon");
  19. filterMap.put("/swagger-resources/**", "anon");
  20. return shiroFilter;
  21. }

登录模块验证:

  1. /**
  2. * 登录
  3. */
  4. @ResponseBody
  5. @RequestMapping(value = "/sys/login")
  6. public R login(String username, String password, String captcha) {
  7. String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY);
  8. if(!captcha.equalsIgnoreCase(kaptcha)){
  9. return R.error("验证码不正确。。。。。。");
  10. }
  11. try{
  12. Subject subject = ShiroUtils.getSubject();
  13. UsernamePasswordToken token = new UsernamePasswordToken(username, password);//md5+Jiayan
  14. subject.login(token);
  15. }catch (UnknownAccountException e) {
  16. return R.error(e.getMessage());
  17. }catch (IncorrectCredentialsException e) {
  18. return R.error("账号或密码不正确。。。。");
  19. }catch (LockedAccountException e) {
  20. return R.error("账号已被锁定,请联系管理。。。员");
  21. }catch (AuthenticationException e) {
  22. return R.error("账户验证失败。。。。");
  23. }
  24. return R.ok();
  25. }

统一异常处理:

  1. /**
  2. * 异常处理器
  3. *
  4. * @author Mark sunlightcs@gmail.com
  5. */
  6. @RestControllerAdvice
  7. public class RRExceptionHandler {
  8. private Logger logger = LoggerFactory.getLogger(getClass());
  9. /**
  10. * 处理自定义异常
  11. */
  12. @ExceptionHandler(RRException.class)
  13. public R handleRRException(RRException e){
  14. R r = new R();
  15. r.put("code", e.getCode());
  16. r.put("msg", e.getMessage());
  17. return r;
  18. }
  19. @ExceptionHandler(AuthorizationException.class)
  20. public R handleAuthorizationException(AuthorizationException e){
  21. logger.error(e.getMessage(), e);
  22. return R.error("没有权限,请联系管理员授权");
  23. }
  24. @ExceptionHandler(Exception.class)
  25. public R handleException(Exception e){
  26. logger.error(e.getMessage(), e);
  27. return R.error();
  28. }
  29. @ExceptionHandler(DuplicateKeyException.class)
  30. public R handleDuplicateKeyException(DuplicateKeyException e){
  31. logger.error(e.getMessage(), e);
  32. return R.error("数据库中已存在该记录");
  33. }
  34. }

分页查询 

  1. package io.renren.common.utils;
  2. import com.baomidou.mybatisplus.core.metadata.OrderItem;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import io.renren.common.xss.SQLFilter;
  5. import org.apache.commons.lang.StringUtils;
  6. import java.util.Map;
  7. /**
  8. * 查询参数
  9. *
  10. * @author Mark sunlightcs@gmail.com
  11. */
  12. public class Query<T> {
  13. public IPage<T> getPage(Map<String, Object> params) {
  14. return this.getPage(params, null, false);
  15. }
  16. public IPage<T> getPage(Map<String, Object> params, String defaultOrderField, boolean isAsc) {
  17. //分页参数
  18. long curPage = 1;
  19. long limit = 10;
  20. //分页对象
  21. Page<T> page = new Page<>(curPage, limit);
  22. //分页参数
  23. params.put(Constant.PAGE, page);
  24. if(params.get(Constant.PAGE) != null){
  25. curPage = Long.parseLong((String)params.get(Constant.PAGE));
  26. }
  27. if(params.get(Constant.LIMIT) != null){
  28. limit = Long.parseLong((String)params.get(Constant.LIMIT));
  29. }
  30. //排序字段
  31. //防止SQL注入(因为sidx、order是通过拼接SQL实现排序的,会有SQL注入风险)
  32. String orderField = SQLFilter.sqlInject((String)params.get(Constant.ORDER_FIELD));
  33. String order = (String)params.get(Constant.ORDER);
  34. //前端字段排序
  35. if(StringUtils.isNotEmpty(orderField) && StringUtils.isNotEmpty(order)){
  36. if(Constant.ASC.equalsIgnoreCase(order)) {
  37. return page.addOrder(OrderItem.asc(orderField));
  38. }else {
  39. return page.addOrder(OrderItem.desc(orderField));
  40. }
  41. }
  42. //没有排序字段,则不排序
  43. if(StringUtils.isBlank(defaultOrderField)){
  44. return page;
  45. }
  46. //默认排序
  47. if(isAsc) {
  48. page.addOrder(OrderItem.asc(defaultOrderField));
  49. }else {
  50. page.addOrder(OrderItem.desc(defaultOrderField));
  51. }
  52. return page;
  53. }
  54. }

好了,今天就到这儿吧,我是小奥、下期见~~

 获取完整源码:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信公众号获取联系👇🏻👇🏻👇🏻

打卡 文章 更新 70/  100天

 精彩专栏推荐:

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发