Springboot+Vue项目-基于Java+MySQL的学科竞赛管理系统(附源码+演示视频+LW)

embedded/2024/10/25 14:25:51/

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。

💞当前专栏:Java毕业设计

精彩专栏推荐👇🏻👇🏻👇🏻

🎀 Python毕业设计
🌎微信小程序毕业设计

开发环境

开发语言:Java
框架:Springboot+Vue
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7
数据库工具:Navicat12
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器

演示视频

springboot035学科竞赛管理录像

原版高清演示视频:
https://pan.quark.cn/s/5cda95b17ee0

源码下载地址:

https://download.csdn.net/download/2301_76953549/89100408

LW目录

【如需全文请按文末获取联系】
在这里插入图片描述
在这里插入图片描述

目录

  • 开发环境
  • 演示视频
  • 源码下载地址:
  • LW目录
  • 一、项目简介
  • 二、系统设计
    • 2.1软件功能模块设计
    • 2.2数据库设计
  • 三、系统项目部分截图
    • 3.1学生功能模块的实现
    • 3.2管理员功能模块的实现
  • 四、部分核心代码
    • 4.1 用户部分
  • 获取源码或论文

一、项目简介

本学科竞赛管理系统以实际运用为开发背景,基于Spring Boot框架、Vue框架,运用了Java语言和MYSQL数据库进行开发设计,充分保证系统的安全性和稳定性。本系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,实现了学科竞赛管理的重要功能。

二、系统设计

2.1软件功能模块设计

系统架构的整体设计是一个将一个庞大的任务细分为多个小的任务的过程,这些小的任务分段完成后,组合在一起形成一个完整的任务。本学科竞赛管理系统的设计与实现主要包括学生功能模块和管理员功能模块两大部分,系统结构设计如图4-2所示。
在这里插入图片描述

2.2数据库设计

本学科竞赛管理系统的设计与实现的E-R图如下所示:
(1)奖项统计实体属性E-R图如图4-6所示。
在这里插入图片描述
(2)赛项报名实体属性E-R图如图4-7所示。
在这里插入图片描述
(3)管理员实体属性E-R图如图4-8所示。
在这里插入图片描述
(4)赛项实体属性E-R图如图4-9所示。
在这里插入图片描述(5)学生实体属性E-R图如图4-10所示。
在这里插入图片描述

三、系统项目部分截图

3.1学生功能模块的实现

学生进入本系统可查看系统信息,系统主界面展示如图5-1所示。
在这里插入图片描述
学生登录界面
学生在登录时需输入正确的登录用户名和密码,系统会以登录用户名、密码为参数进行登录信息的验证,信息正确则登录成功,反之登录失败,学生登录界面展示如图5-2所示。
在这里插入图片描述
个人中心界面
学生可对个人信息进行修改,个人中心界面展示如图5-6所示。
在这里插入图片描述

3.2管理员功能模块的实现

5.2.2 学生管理界面
管理在学生管理界面可查看所有学生信息,并可对其进行修改和删除操作,同时也可添加学生信息,学生管理界面展示如图5-8所示。
在这里插入图片描述
5.2.4 赛项信息管理界面
管理员可增删改查赛项信息,赛项信息管理界面如图5-10所示。
在这里插入图片描述

5.2.6 奖项统计管理界面
管理员可增删改查奖项统计信息,奖项统计管理界面展示如图5-12所示。
在这里插入图片描述

四、部分核心代码

4.1 用户部分

java">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.JiaoshiEntity;
import com.entity.view.JiaoshiView;import com.service.JiaoshiService;
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("/jiaoshi")
public class JiaoshiController {@Autowiredprivate JiaoshiService jiaoshiService;@Autowiredprivate TokenService tokenService;/*** 登录*/@IgnoreAuth@RequestMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {JiaoshiEntity user = jiaoshiService.selectOne(new EntityWrapper<JiaoshiEntity>().eq("gonghao", username));if(user==null || !user.getMima().equals(password)) {return R.error("账号或密码不正确");}String token = tokenService.generateToken(user.getId(), username,"jiaoshi",  "教师" );return R.ok().put("token", token);}/*** 注册*/@IgnoreAuth@RequestMapping("/register")public R register(@RequestBody JiaoshiEntity jiaoshi){//ValidatorUtils.validateEntity(jiaoshi);JiaoshiEntity user = jiaoshiService.selectOne(new EntityWrapper<JiaoshiEntity>().eq("gonghao", jiaoshi.getGonghao()));if(user!=null) {return R.error("注册用户已存在");}Long uId = new Date().getTime();jiaoshi.setId(uId);jiaoshiService.insert(jiaoshi);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");JiaoshiEntity user = jiaoshiService.selectById(id);return R.ok().put("data", user);}/*** 密码重置*/@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){JiaoshiEntity user = jiaoshiService.selectOne(new EntityWrapper<JiaoshiEntity>().eq("gonghao", username));if(user==null) {return R.error("账号不存在");}user.setMima("123456");jiaoshiService.updateById(user);return R.ok("密码已重置为:123456");}/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,JiaoshiEntity jiaoshi,HttpServletRequest request){EntityWrapper<JiaoshiEntity> ew = new EntityWrapper<JiaoshiEntity>();PageUtils page = jiaoshiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiaoshi), params), params));return R.ok().put("data", page);}/*** 前端列表*/@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,JiaoshiEntity jiaoshi, HttpServletRequest request){EntityWrapper<JiaoshiEntity> ew = new EntityWrapper<JiaoshiEntity>();PageUtils page = jiaoshiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiaoshi), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( JiaoshiEntity jiaoshi){EntityWrapper<JiaoshiEntity> ew = new EntityWrapper<JiaoshiEntity>();ew.allEq(MPUtil.allEQMapPre( jiaoshi, "jiaoshi")); return R.ok().put("data", jiaoshiService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(JiaoshiEntity jiaoshi){EntityWrapper< JiaoshiEntity> ew = new EntityWrapper< JiaoshiEntity>();ew.allEq(MPUtil.allEQMapPre( jiaoshi, "jiaoshi")); JiaoshiView jiaoshiView =  jiaoshiService.selectView(ew);return R.ok("查询教师成功").put("data", jiaoshiView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){JiaoshiEntity jiaoshi = jiaoshiService.selectById(id);return R.ok().put("data", jiaoshi);}/*** 前端详情*/@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){JiaoshiEntity jiaoshi = jiaoshiService.selectById(id);return R.ok().put("data", jiaoshi);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody JiaoshiEntity jiaoshi, HttpServletRequest request){jiaoshi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(jiaoshi);JiaoshiEntity user = jiaoshiService.selectOne(new EntityWrapper<JiaoshiEntity>().eq("gonghao", jiaoshi.getGonghao()));if(user!=null) {return R.error("用户已存在");}jiaoshi.setId(new Date().getTime());jiaoshiService.insert(jiaoshi);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody JiaoshiEntity jiaoshi, HttpServletRequest request){jiaoshi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(jiaoshi);JiaoshiEntity user = jiaoshiService.selectOne(new EntityWrapper<JiaoshiEntity>().eq("gonghao", jiaoshi.getGonghao()));if(user!=null) {return R.error("用户已存在");}jiaoshi.setId(new Date().getTime());jiaoshiService.insert(jiaoshi);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody JiaoshiEntity jiaoshi, HttpServletRequest request){//ValidatorUtils.validateEntity(jiaoshi);jiaoshiService.updateById(jiaoshi);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){jiaoshiService.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<JiaoshiEntity> wrapper = new EntityWrapper<JiaoshiEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}int count = jiaoshiService.selectCount(wrapper);return R.ok().put("count", count);}}

获取源码或论文

如需对应的LW或源码,以及其他定制需求,也可以点我头像查看个人简介联系。


http://www.ppmy.cn/embedded/10384.html

相关文章

Spring Boot 中单元测试框架 Mockito 的正确使用

Spring Boot 中单元测试框架 Mockito 的正确使用 本文是对前段时间修复老项目单元测试的总结记录&#xff0c;在修复过程中&#xff0c;发现中文互联网中的不少文章对单元测试框架Mockito的使用说明基本不准确又或是AI生成&#xff0c;希望我这篇能够把这方面简单说透说对。 文…

电脑便签记事本字体如何放大 便签记事本放大字体的方法

在日常工作中&#xff0c;电脑便签记事本已成为我记录琐事、安排日程的得力助手。然而&#xff0c;长时间盯着电脑屏幕&#xff0c;眼睛难免会感到疲劳。尤其是那些密密麻麻的小字&#xff0c;看久了真让人头疼。幸好&#xff0c;我发现了一个简单易行的方法&#xff0c;能轻松…

【linux外设挂载】linux系统找到U盘解决方案

linux系统怎样找到U盘&#xff1f; 精选 更新时间&#xff1a;2019-10-27 00:12 最满意答案 1. 用FDISK-l 来找&#xff0c;一般U盘会被LINUX认为SCSI设备,如果有SCSI设备那么U盘一般是最后一个SCSI设备.如果没有SCSI设备,一般sda就是U盘。 2. 若第一个插入的u盘一般是sda&…

5款制作表格的软件,一键帮你实现数据可视化

数据可视化是许多企业决定未来方向、产品研发和用户研究的关键。只有大量的数据支持才能做出最明智的决定&#xff0c;因此表格在可视化中逐渐发挥着不可替代的作用。可以看出&#xff0c;掌握表格制作技巧是多么重要。然而&#xff0c;不能制作表格的小型合作伙伴不必担心。国…

增强现实(AR)技术的应用场景

增强现实&#xff08;AR&#xff09;技术将虚拟信息与现实世界融合&#xff0c;为用户提供更加直观、交互式的体验。AR技术具有广泛的应用前景&#xff0c;可以应用于各行各业。以下是一些AR的应用场景。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0…

3d世界坐标转换到某个二维平面。

有个功能需要截取某个平面的点云数据&#xff0c;然后计算宽高。需要将3d点投影到二维平面上。 //将3d坐标点转换为2d/*** 法向量(A, B, C)* 常量D* 原点x0,y0,z0* 方向向量(vx, vy, vz)* 投影点(x,y,z)* public static double[] Convert3DPointTo2D(double A, double B, doub…

跳跃游戏 II (贪心, 动态规划)

题目描述(力扣45题) : 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到…

如何基于香橙派AIpro对视频/图像数据进行预处理

背景介绍 受网络结构和训练方式等因素的影响&#xff0c;绝大多数神经网络模型对输入数据都有格式上的限制。在计算机视觉领域&#xff0c;这个限制大多体现在图像的尺寸、色域、归一化参数等。如果源图或视频的尺寸、格式等与网络模型的要求不一致时&#xff0c;我们需要对其…