[免费]SpringBoot+Vue校园社团管理系统(优质版)【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的SpringBoot+Vue校园社团管理系统(优质版),分享下哈。

项目视频演示

【免费】SpringBoot+Vue校园社团管理系统(优质版) Java毕业设计_哔哩哔哩_bilibili

项目介绍

随着信息技术的迅速发展,校园管理系统的数字化和智能化成为高校信息化建设的重要组成部分。校园社团管理作为高校管理的一项重要内容,传统的手工操作和信息记录方式已无法满足现代化、高效化的管理需求。为了提升校园社团管理的效率和透明度,本文提出了一种基于SpringBoot和Vue的校园社团管理系统。该系统以SpringBoot框架为后端开发基础,采用Vue框架作为前端展示层,通过前后端分离的架构模式,提供了一个高效、便捷、功能完备的社团管理平台。

本系统主要实现了社团信息管理、会员管理、活动管理、财务管理等功能,支持社团管理员、社团成员以及学校管理者的不同权限操作。系统通过前端界面展现社团活动、成员信息、财务收支等数据,便于各类用户实时查看和操作,提升了管理效率与透明度。后台采用SpringBoot提供RESTful API接口,使用MySQL数据库存储数据,确保了数据的安全性和一致性。前端使用Vue.js构建响应式用户界面,增强了用户体验,支持PC端和移动端自适应显示。

本文通过对系统的设计与实现过程进行详细分析,展示了SpringBoot和Vue技术栈在校园社团管理中的应用效果。系统经过测试,能够有效处理大规模数据,并且响应速度

系统展示

部分代码

package com.rabbiter.association.controller;import com.rabbiter.association.service.UsersService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import com.rabbiter.association.utils.DateUtils;
import com.rabbiter.association.utils.IDUtils;
import com.rabbiter.association.msg.R;
import com.rabbiter.association.msg.PageData;import com.rabbiter.association.entity.Users;/*** 系统请求响应控制器* 系统用户*/
@Controller
@RequestMapping("/users")
public class UsersController extends BaseController {protected static final Logger Log = LoggerFactory.getLogger(UsersController.class);@Autowiredprivate UsersService usersService;@RequestMapping("")public String index() {return "pages/Users";}@GetMapping("/info")@ResponseBodypublic R getInfo(String id) {Log.info("查找指定系统用户,ID:{}", id);Users users = usersService.getOne(id);return R.successData(users);}@GetMapping("/page")@ResponseBodypublic R getPageInfos(Long pageIndex, Long pageSize,Users users) {Log.info("分页查找系统用户,当前页码:{},"+ "每页数据量:{}, 模糊查询,附加参数:{}", pageIndex,pageSize, users);PageData page = usersService.getPageInfo(pageIndex, pageSize, users);return R.successData(page);}@PostMapping("/add")@ResponseBodypublic R addInfo(Users users) {if(usersService.getUserByUserName(users.getUserName()) == null){users.setId(IDUtils.makeIDByCurrent());users.setCreateTime(DateUtils.getNowDate());Log.info("添加系统用户,传入参数:{}", users);usersService.add(users);return R.success();}else{return R.warn("用户账号已存在,请重新输入");}}@PostMapping("/upd")@ResponseBodypublic R updInfo(Users users) {Log.info("修改系统用户,传入参数:{}", users);usersService.update(users);return R.success();}@PostMapping("/del")@ResponseBodypublic R delInfo(String id) {if(usersService.isRemove(id)){Log.info("删除系统用户, ID:{}", id);Users users = usersService.getOne(id);usersService.delete(users);return R.success();}else{return R.warn("用户存在关联社团,无法移除");}}
}
<template><div class="login-container"><div class="login-body"><div class="login-title">社团管理系统</div><div class="login-form"><el-form :model="loginForm" :rules="rules" ref="loginForm"><el-form-item prop="userName"><el-input type="text" v-model="loginForm.userName" suffix-icon="iconfont icon-r-user1"placeholder="请输入您的账号"></el-input></el-form-item><el-form-item prop="passWord"><el-input type="password" v-model="loginForm.passWord" suffix-icon="iconfont icon-r-lock"placeholder="请输入您的密码"></el-input></el-form-item><el-form-item><el-button style="margin-top: 15px;width: 100%;background-color: #6495ed;" @click="submitForm('loginForm')" type="primary"><b style="font-size: 22px;"> 用户登录</b></el-button><br /><el-button style="width: 100%; margin-top: 5px" @click="showAddWin()" :underline="false"type="info"><b style="font-size: 22px;"> 注册新账号</b></el-button></el-form-item></el-form></div></div><el-dialog title="用户注册" width="700px" :modal="false" :visible.sync="showAddFlag"><el-form label-width="90px" :model="usersForm"><el-row :gutter="15"><el-col :span="12"><el-form-item label="用户账号"><el-input v-model="usersForm.userName" placeholder="请输入用户账号…" autocomplete="off"></el-input></el-form-item></el-col><el-col :span="12"><el-form-item label="用户密码"><el-input v-model="usersForm.passWord" type="password" placeholder="请输入用户密码…"autocomplete="off"></el-input></el-form-item></el-col></el-row><el-row :gutter="15"><el-col :span="12"><el-form-item label="用户姓名"><el-input v-model="usersForm.name" placeholder="请输入用户姓名…" autocomplete="off"></el-input></el-form-item></el-col><el-col :span="12"><el-form-item label="用户年龄"><el-input v-model="usersForm.age" placeholder="请输入用户年龄…" autocomplete="off"></el-input></el-form-item></el-col></el-row><el-row :gutter="15"><el-col :span="12"><el-form-item label="用户性别"><el-radio-group v-model="usersForm.gender"><el-radio label="男"></el-radio><el-radio label="女"></el-radio></el-radio-group></el-form-item></el-col><el-col :span="12"><el-form-item label="联系电话"><el-input v-model="usersForm.phone" placeholder="请输入联系电话…" autocomplete="off"></el-input></el-form-item></el-col></el-row><el-form-item label="联系地址"><el-input rows="4" type="textarea" v-model="usersForm.address" placeholder="请输入联系地址…"autocomplete="off"></el-input></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button @click="showAddFlag = false" style="font-size: 18px"> 取 消</el-button><el-button type="primary" @click="addInfo()" style="font-size: 18px"> 确 定</el-button></div></el-dialog></div>
</template><style>
.login-container {position: fixed;top: 0;left: 0;width: 100%;overflow-y: auto;height: 100%;background: url("../assets/back.jpg") center top / cover no-repeat;/* background-color: #b0c4de; *//* background-image: url("data:image/svg+xml,%3Csvg width='6' height='6' viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23ffffff' fill-opacity='0.4' fill-rule='evenodd'%3E%3Cpath d='M5 0h1L0 6V5zM6 5v1H5z'/%3E%3C/g%3E%3C/svg%3E"); */
}.login-win {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);width: 550px;height: 300px;padding: 15px;border-radius: 5px;background-size: cover;
}.login-body {padding: 30px 40px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);background-color: white;border-radius: 20px;border: 2px solid #6495ed;opacity: 0.9;
}.login-title {text-align: center;font-size: 30px;font-weight: bold;color: #6495ed;margin-bottom: 35px;
}
</style><script>
import initMenu from "../utils/menus.js";
import { login, addUsers } from "../api/index.js";
export default {data() {return {showAddFlag: false,usersForm: {id: "",userName: "",passWord: "",name: "",gender: "",age: "",phone: "",address: "",type: 2,status: 1,},loginForm: {userName: "",passWord: "",},rules: {userName: [{required: true,message: "用户账号必须输入",trigger: "blur",},],passWord: [{required: true,message: "用户密码必须输入",trigger: "blur",},],},};},methods: {showAddWin() {this.showAddFlag = true;},submitForm(formName) {this.$refs[formName].validate((valid) => {if (valid) {login(this.loginForm).then((res) => {this.$store.commit("setToken", res.data);sessionStorage.setItem("token", res.data);initMenu(this.$router, this.$store);this.$router.push("/index");})} else {return false;}});},addInfo() {if (this.usersForm.userName.trim() == '') {this.$message({message: "请填写账号",type: "warning",});return;}if (this.usersForm.passWord.trim() == '') {this.$message({message: "请填写密码",type: "warning",});return;}if (this.usersForm.name.trim() == '') {this.$message({message: "请填写姓名",type: "warning",});return;}if (this.usersForm.age.trim() == '') {this.$message({message: "请填写年龄",type: "warning",});return;}if (this.usersForm.gender.trim() == '') {this.$message({message: "请选择性别",type: "warning",});return;}if (this.usersForm.phone.trim() == '') {this.$message({message: "请填写手机号码",type: "warning",});return;}if (this.usersForm.address.trim() == '') {this.$message({message: "请填写地址",type: "warning",});return;}addUsers(this.usersForm).then((resp) => {if (resp.code == 0) {this.$confirm("注册成功, 立即登陆?", "提示", {confirmButtonText: "确定",cancelButtonText: "取消",type: "warning",}).then(() => {login({userName: this.usersForm.userName,passWord: this.usersForm.passWord,}).then((res) => {this.$store.commit("setToken", res.data);sessionStorage.setItem("token", res.data);initMenu(this.$router, this.$store);this.$router.push("/index");});});} else {this.$message({message: resp.msg,type: "warning",});}});},},mounted() {}
};
</script>

源码代码

链接:https://pan.baidu.com/s/1Y3BK4DYkgHQzOd8rbnoPbQ
提取码:1234

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

114 二叉树展开为链表

解题思路&#xff1a; \qquad 题目中已经明确&#xff0c;要用先序遍历的顺序展开&#xff0c;那么就需要按照“中-左-右”的顺序遍历二叉树&#xff0c;剩下的问题在于如何在遍历过程中完成链表指针的更新。 \qquad 由于“右子节点”需要链接到左子树最后一个节点之后&#…

Kylin麒麟操作系统 | Nginx服务部署

目录 一、理论储备1. Nginx概述2. Nginx与Apache的区别3. Nginx的服务配置 二、任务实施任务1 Nginx的编译安装1. Server配置2. 客户端测试 任务2 Nginx反向代理1. Server1配置2. Server2配置3. 客户端测试 一、理论储备 1. Nginx概述 Nginx是一个轻量级的web服务器&#xff…

类OCSP靶场-Kioptrix系列-Kioptrix Level 1

一、前情提要 二、实战打靶 1. 信息收集 1.1. 主机发现 1.2. 端口扫描 1.3 目录爆破 1.4. 敏感信息 2.根据服务搜索漏洞 2.1. 搜索exp 2.2. 编译exp 2.3. 查看exp使用方法&#xff0c;并利用 3. 提权 二、第二种方法 一、前情提要 Kioptrix Level是免费靶场&#x…

Golang囊地鼠gopher

开发知识点-golang 介绍红队专题-Golang工具Fscan简介主要功能ubuntu 安装windows 安装常用命令:项目框架源文件common目录Plugins目录Webscan目录入口点插件扫描类型爆破插件common.ScantypeWebtitle函数webpoc扫描POC 执行CEL-GO 实践CEL指纹识别免杀源码特征参考链接红队专…

快速上手Spring注解、SpringAop

1 Spring 注解的使用 1 IOC 的概念 IOC&#xff08;Inversion of Control&#xff09;&#xff1a;控制反转。 使用对象时&#xff0c;由主动new产生对象转换为由外部提供对象&#xff0c;此过程中对象创建控制权由程序转移到外部&#xff0c;此思想称为控制反转。通俗的讲就…

前端面经-总结篇 http

下面是我在过去12天内&#xff0c;学习关于http的前端面经汇总。现在只是一些很基础的知识&#xff0c;后续还会补充&#xff0c;算是对之前学习的一个总结。 前端面经整理-CSDN博客 我主要参考的题目来源在这里。 本地存储 localstorage&#xff08;本地存储&#xff09;和…

功能篇:SpringBoot 实现静态、动态定时任务,本地动态定时任务调度

在Spring Boot中实现静态和动态定时任务可以通过使用Scheduled注解来配置静态的调度任务&#xff0c;以及通过编程方式创建动态的调度任务。下面我将分别介绍这两种方式。 ### 静态定时任务 对于静态定时任务&#xff0c;你可以直接在方法上使用Scheduled注解&#xff0c;并指定…

服务器ubuntu重装系统后将原来的用户进行关联

服务器ubuntu重装系统后将原来的用户数据进行关联 关联用户到已存在目录 sudo useradd user_name -m -s /bin/bash -d /home***/name添加sudo权限 vim /etc/sudoers# 文件末尾添加 user_name ALL(ALL:ALL) ALL更改拥有者 sudo chown -R user_name:user_name /home***/na…

数据地图怎么做?推荐这款数据可视化地图生成器

在数字化与信息化高速发展的今天&#xff0c;企业迎来了前所未有的发展机遇&#xff0c;规模迅速扩张&#xff0c;市场版图不断延伸。然而&#xff0c;伴随着这种快速的发展&#xff0c;一个不容忽视的问题逐渐浮出水面——如何精准高效地掌握分布在各地的分公司、业务点乃至整…

鸿蒙项目云捐助第九讲鸿蒙App应用的捐助详情页功能实现

鸿蒙项目云捐助第九讲鸿蒙App应用的捐助详情页功能实现 这里接下来继续实现捐助详情页的布局页面&#xff0c;也就是当用户进入到分类页面后&#xff0c;点击分类的每一个商品就进入到捐助商品的详情页&#xff0c;这里的布局可以从下面的模板演化而来。 下面根据这个模板来进…

docker mysql挂载

在提供的 docker run 命令中&#xff0c;已经挂载了三个卷到 MySQL 容器中&#xff1a;日志目录、数据目录和配置目录。然而&#xff0c;还没有挂载一个包含 cube_admin.sql 文件的目录。要将 SQL 文件放入容器中并在 MySQL 中执行它&#xff0c;可以按照以下步骤操作&#xff…

【数学】矩阵的逆与伪逆 EEGLAB

文章目录 前言matlab代码作用EEGLAB 中的代码总结参考文献 前言 在 EEGLAB 的使用中&#xff0c;运行程序时出现了矩阵接近奇异值&#xff0c;或者缩放错误。结果可能不准确。RCOND 1.873732e-20 的 bug&#xff0c;调查 EEGLAB 后发现是 raw 数据的问题。 matlab代码 A_1 …

【蓝凌表单】JSP组件常用语法整理

JSP组件常用语法整理 必填非必填写法//必填 $("[name=extendDataFormInfo.value(fd_344677482769e2)]").attr("validate","requiredvalue"); //非必填 $(

Redis 数据备份与恢复

Redis 数据备份与恢复 1. 引言 Redis 作为一款高性能的键值数据库,被广泛应用于各种场景,如缓存、消息队列等。由于其重要性,对 Redis 数据进行定期备份是保证数据安全的关键措施。本文将详细介绍 Redis 数据的备份与恢复方法,确保在数据丢失或系统故障时能够迅速恢复。 …

音视频入门基础:MPEG2-TS专题(17)——FFmpeg源码中,解析TS program map section的实现

一、引言 由《音视频入门基础&#xff1a;MPEG2-TS专题&#xff08;16&#xff09;——PMT简介》可以知道&#xff0c;PMT表&#xff08;Program map table&#xff09;由一个或多个段&#xff08;Transport stream program map section&#xff0c;简称TS program map sectio…

华为HarmonyOS NEXT 原生应用开发:鸿蒙中组件的组件状态管理、组件通信 组件状态管理小案例(好友录)!

文章目录 组件状态管理一、State装饰器1. State装饰器的特点2. State装饰器的使用 二、Prop装饰器&#xff08;父子单向通信&#xff09;1. Prop装饰器的特点2. Prop装饰器的使用示例 三、Link装饰器&#xff08;父子双向通信&#xff09;1. Link装饰器的特点3. Link使用示例 四…

Pytorch | 对比Pytorch中的十种优化器:基于CIFAR10上的ResNet分类器

Pytorch | 对比Pytorch中的十种优化器&#xff1a;基于CIFAR10上的ResNet分类器 CIFAR10数据集ResNet提出背景网络结构特点工作原理优势 代码实现分析utils.pymain.py导入必要的库设备选择与数据预处理定义加载训练集和测试集主函数部分训练部分测试部分 结果10种优化器对应的训…

Linux系统操作03|chmod、vim

上文&#xff1a; Linux系统操作02|基本命令-CSDN博客 目录 六、chmod&#xff1a;给文件设置权限 1、字母法 2、数字法&#xff08;用的最多&#xff09; 七、vim&#xff1a;代码编写和文本编辑 1、启动和退出 1️⃣启动 2️⃣退出 2、vim基本操作 六、chmod&#x…

【漏洞复现】eking管理易Html5Upload接口存在任意文件上传漏洞

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦 【漏洞复现】eking管理易Html5Upload接口存在任意文件上传漏洞 一、漏洞概述1.1漏洞简介1.2组件描述1.3漏洞描述二、漏洞复现2.1 应用协议2.2 环境搭建2.3 漏洞复现三、…

徐州数字孪生工业互联网可视化技术,赋能新型工业化智能制造工厂

#徐州数字孪生工业互联网#在当下智能制造的热潮之下&#xff0c;徐州作为中国制造业的重要基地&#xff0c;正积极拥抱数字化转型&#xff0c;通过数字孪生工业互联网可视化技术&#xff0c;赋能新型工业化智能制造工厂&#xff0c;引领制造业向更高效、更智能、更绿色的方向发…