基于springboot+Vue的社团管理系统(程序+文档+数据库)

news2024/9/21 4:26:46

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路,向着优秀程序员前行!
🍅更多优质项目👇🏻👇🏻可点击下方获取🍅
文章底部或评论区获取🍅
Java项目精品实战案例《100套》

文章目录

  • 项目介绍
  • 一、需求描述
      • 1.系统管理员需求描述
      • 2.用户的功能需求
      • 3.社团管理员功能需求
      • 4.技术栈
  • 二、用例分析
      • 1.管理员模块
      • 2.用户管理模块
      • 3.社长管理模块
  • 三、运行效果
      • 1.登录注册
      • 2.系统首页
      • 3.系统用户管理
      • 4.社团类型管理
      • 5.社团信息管理
      • 6.社团成员管理
      • 7.社团活动管理
      • 8.通知信息管理
      • 9.入团申请管理
      • 10.费用记录管理
      • 11.文档目录
  • 四、部分代码实现
    • 总结


📣 有源码 查看源码

项目介绍

现今社会信息传送发展迅速,校园服务平台应是数字化、网络化学校下的一个重要分支,平台的进步与全面发展便意味着服务范围的扩大和服务水平的提高,这对大学生和建设综合性服务校园都具有重大意义。
高校社团是学生自发创建的拥有相同兴趣爱好的活动组织,通过组织各式各样的活动丰富学生的校园生活。每年 9月,新生到校后,各种社团在校园中进行宣传,招募新成员,新成员通过填写报名表参加对应社团,之后社团组织活动时需要经过教师审批,学生报名等过程,周期较长,所有过程材料通过纸质保存,不仅浪费纸张,而且容易丢失,整个组织过程也比较低效,因此,有必要开发一个社团信息管理系统,简化报名和组织活动流程,提高效率。


一、需求描述

1.系统管理员需求描述

①用户管理
a. 注册用户账户
当一个新用户注册时,用户填写基本信息并上传。用户基本信息包括账号、
姓名、密码、手机、地址等信息。
b.用户信息管理
管理员可以查看系统所有用户的基本信息,并修改和删除。
②社团管理
a.创建社团
社团由管理员创建,创建社团需填写社团名称,社团类型和社团社长。
b. 社团信息管理
管理员可以查看使用该系统的所有社团基本信息,修改和删除该社团。由于需要处理的信息可能更多,为了使页面更简洁,减少数据库查询的压力,并使管理员能够更快地找到需要处理的社团信息,添加社团名称字段的查询功能。

2.用户的功能需求

①用户管理
a.个人信息管理
用户可以查看自己的个人信息,也可以修改、删除操作自己不满意的信息。
b.申请加入社团
用户可以浏览所有社团,并向喜欢的社团提交申请。
c.加入活动
用户可以浏览加入社团的全部活动,并选择加入到感兴趣的活动中。
b.缴费信息管理
用户可以收到缴费通知,并进行缴费

3.社团管理员功能需求

①社团管理
a. 活动信息管理
社团管理员可以向所有社员发布活动信息,可以对参与活动的社员进行审核。
c.社团成员信息管理
社团管理员可以对社员进行删除,对入团申请者进行审核。
d.缴费信息管理
社团管理员可以根据社员编号发布缴费信息

4.技术栈

开发系统:Windows
架构模式:MVC/前后端分离
JDK版本:Java JDK1.8(推荐)
开发工具:IDEA
数据库版本: mysql8.0(推荐)
数据库可视化工具: navicat
服务器:SpringBoot自带 apache tomcat
主要技术:Java,Springboot,mybatis,mysql,jquery,html,vue

二、用例分析

1.管理员模块

系统用户管理:可以查看系统所有用户的基本信息,并修改和删除。
社团类型管理:可以对社团类型进行修改,删除,查询操作,并且可以根据需求增添社团类型。
社团信息管理:可以对社团进行查询,删除,创建社团,修改社团信息。
活动信息管理:可以查询,删除社团活动。
通知信息管理:可以查询,删除,发布社团活动。
查询缴费记录:可以查询各个社团的缴费记录。

在这里插入图片描述

2.用户管理模块

入团申请管理:可以向感兴趣的社团提交申请。
浏览社团信息:可以浏览所有社团及其基本信息。
活动信息管理:实现向所有社员发布活动信息,可以对参与活动的社员进行审核的功能。
用户信息管理:实现修改个人信息和密码的功能。
通知信息查询:可以查询发布的通知信息。
缴费信息管理:实现缴费查询和缴费缴纳功能。

在这里插入图片描述

3.社长管理模块

入团申请处理:可以对提交社团申请的用户进行审核。
社团成员管理:实现对社团的成员查询和删除功能。
社团活动管理:可以查看和发布社团活动。
社团通知管理:可以查看,发布社团活动,删除本社团发布的通知
社团费用管理:可以查看,删除,根据社员编号发布缴费通知。

在这里插入图片描述

三、运行效果

1.登录注册

在这里插入图片描述

2.系统首页

在这里插入图片描述

3.系统用户管理

在这里插入图片描述

4.社团类型管理

在这里插入图片描述

5.社团信息管理

在这里插入图片描述

6.社团成员管理

在这里插入图片描述

7.社团活动管理

在这里插入图片描述

8.通知信息管理

在这里插入图片描述

9.入团申请管理

在这里插入图片描述

10.费用记录管理

在这里插入图片描述

11.文档目录

1 关键技术	4
1.1 开发框架	4
1.1.1 SpringBoot 框架	4
1.1.2 Vue.js 框架	4
2 需求分析	5
2.1需求描述	5
2.1.1系统管理员需求描述	5
2.1.2用户的功能需求	6
2.1.3社团管理员功能需求	6
2.2用例分析	6
2.2.1管理员模块	6
2.2.2用户管理模块	7
2.2.3社长管理模块	8
2.3静态分析	9
2.3.1系统静态类图:	9
2.3.2基本信息管理类图	10
2.4功能分析	10
3 系统设计	11
3.1系统总体结构	11
3.2模块设计	11
3.2.1登录模块	12
3.2.2加入社团模块	12
3.2.3修改密码模块	13
4 数据库设计	14
4.1概念结构设计	14
4.2逻辑结构设计	15
4.3物理设计	15
4.4 数据库实施	18
4-4-1创建用户表 (users):	18
4-4-2创建社团表(team):	19
4-4-3创建社团类型表 (team_types):	19
4-4-4创建缴费表 (pay_logs):	20
4-4-5创建通知表(notices):	20
4-4-6创建社团成员表 (members):	20
4-4-7 创建申请表 (apply_logs):	20
4-4-8创建活动表 (activities):	21
4-4-9创建活动日志表(active_logs):	21
5 系统实现及测试	22
5.1系统实现	22
5.1.1用户注册功能实现:	22
5.1.2用户登录功能实现:	23
5.1.3用户密码修改功能实现:	24
5.1.4系统用户信息修改功能实现:	24
5.1.5社团类型管理功能实现:	25
5.1.6入团申请功能实现:	27
5.1.7 活动信息功能实现	29
5.1.8费用记录功能实现	30
5.2 系统测试	32
6总结与展望	35
参考文献	37

四、部分代码实现

    @Override
    @Transactional
    public void add(Users users) {

        usersDao.insert(users);
    }

    @Override
    @Transactional
    public void update(Users users) {

        usersDao.updateById(users);
    }

    @Override
    @Transactional
    public void delete(Users users) {

        usersDao.deleteById(users);
    }

    @Override
    @Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
    public Boolean isRemove(String userId){

        QueryWrapper<Members> qw = new QueryWrapper<Members>();
        qw.eq("user_id", userId);

        Integer total = membersDao.selectCount(qw);

        return total <= 0;
    }

    @Override
    @Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
    public Users getOne(String id) {

        Users users = usersDao.selectById(id);

        return users;
    }

    @Override
    @Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
    public Users getUserByUserName(String userName) {

        QueryWrapper<Users> qw = new QueryWrapper<Users>();
        qw.eq("user_name", userName);

        Users user = usersDao.selectOne(qw);

        return user;
    }

    @Override
    @Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
    public PageData getPageInfo(Long pageIndex, Long pageSize, Users users) {

        QueryWrapper<Users> qw = new QueryWrapper<Users>();

        if (StringUtils.isNotNullOrEmpty(users.getUserName())) {

            qw.like("user_name", users.getUserName());
        }

        if (StringUtils.isNotNullOrEmpty(users.getName())) {

            qw.like("name", users.getName());
        }

        if (StringUtils.isNotNullOrEmpty(users.getPhone())) {

            qw.like("phone", users.getPhone());
        }

        qw.orderByDesc("create_time");

        Page<Users> page =
                usersDao.selectPage(new Page<Users>(pageIndex, pageSize), qw);

        return parsePage(page);
    }

    /**
     * 转化分页查询的结果
     */
    public PageData parsePage(Page<Users> p) {

        List<Map<String, Object>> resl = new ArrayList<Map<String, Object>>();

        for (Users users : p.getRecords()) {

            Map<String, Object> temp = new HashMap<String, Object>();
            temp.put("id", users.getId());
            temp.put("userName", users.getUserName());
            temp.put("passWord", users.getPassWord());
            temp.put("name", users.getName());
            temp.put("gender", users.getGender());
            temp.put("age", users.getAge());
            temp.put("phone", users.getPhone());
            temp.put("address", users.getAddress());
            temp.put("status", users.getStatus());
            temp.put("createTime", users.getCreateTime());
            temp.put("type", users.getType());
            resl.add(temp);
        }

        PageData pageData = new PageData(p.getCurrent(), p.getSize(), p.getTotal(), resl);

        return pageData;
    }

📝分享的所有Java项目源码均包含(前端+后台+数据库),可做毕业设计或课程设计,欢迎留言分享问题,交流经验
🍅更多优质项目👇🏻👇🏻可点击下方获取🍅文章底部或评论区获取🍅
Java项目精品实战案例《100套》

总结

📣 有源码 查看源码

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

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

相关文章

(02)Cartographer源码无死角解析-(44) 2D栅格地图→ProbabilityGrid

讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/127350885 文末…

win10系统如何找回删除文件?教你五种恢复方法

在使用win10系统过程中&#xff0c;意外删除数据是经常发生的事情&#xff0c;那么win10系统如何找回删除文件呢&#xff1f;下面为大家总结了这五种win10文件误删除恢复方法&#xff0c;希望能够帮助到您。 ▍方法一、 ctrlz撤销法 ctrlz撤销法十分适用于恢复刚刚删除的文件…

绘图神器draw.io(写文必备)

绘图神器draw.io&#xff08;写文必备&#xff09; 前言 大家早上好&#xff0c;我是毛小悠&#xff0c;一个前端开发工程师。 最近发现一个绘图神器&#xff0c;没错&#xff0c;就是标题中的draw.io。免费、开源&#xff0c;功能强大&#xff0c;真的非常适合程序员。 我…

NSGA-II:快速精英多目标遗传算法(论文+代码解读)

目录 1.介绍 2. NSGA-II 2.1 快速非支配排序 2.1.1 NSGA的传统非支配排序 2.1.2 NSGA-II的快速非支配排序 2.2 多样性保护(Diversity Preservation) 2.2.1 NSGA的共享函数方法(sharing function) 2.2.2 NSGA-II的拥挤距离方法(crowded-comparison) 2.3 NSGA-II主循环…

4类时钟分频【附源码】1.偶数分频;2.奇数分频(占空比50%);3.奇数分频(任意无占空比);4.小数分频;

题目来源于牛客网&#xff0c;完整工程源码&#xff1a;https://github.com/ningbo99128/verilog 目录 VL37 偶数分频 VL40 奇数分频&#xff08;占空比50%&#xff09; VL42 奇数分频&#xff08;任意无占空比&#xff09; VL41 任意小数分频 VL37 偶数分频 题目介绍 请…

【阶段二】Python数据分析NumPy工具使用04篇:数组常用分析函数、数组广播与数组和矩阵的点积运算

本篇的思维导图: 数组常用分析函数 基本数学函数 函数 描述 abs 求取每个元素的绝对值

1-计算机系统概述

文章目录一.操作系统的基本概念&#xff08;一&#xff09;操作系统的特征&#xff08;二&#xff09;操作系统的目标和功能二.操作系统的发展与分类&#xff08;一&#xff09;手工操作阶段&#xff08;二&#xff09;批处理阶段&#xff08;三&#xff09;分时操作系统&#…

verilog学习笔记- 1)Quartus软件的使用

目录 新建工程&#xff1a; 设计输入&#xff1a; 配置工程&#xff1a; 编译 &#xff1a; 分配引脚&#xff1a; 编译工程&#xff1a; 下载程序&#xff1a; 固化程序 &#xff1a; 在开始使用 Quartus 软件之前&#xff0c;我们先来了解一下 Quartus 软件的使用流程…

Windows10 下的docker和Kubernetes安装

Docker官网Docker Desktop 安装 Docker官网 进入docker官网&#xff0c;下载windows版 docker desktop建议使用win10专业版在任务管理器查看是否开启了windows虚拟化如果没有开启&#xff0c;则在控制面板&#xff0c;启用或关闭windows功能&#xff0c;勾选Hyper-v&#xff…

面向对象1(类的成员变量的默认值规则、private、this、构造方法、基本数据类型和引用数据类型)

1、定义类的注意事项 类的成员变量的默认值规则 2、private 3、this关键字 语法是this. 4、构造方法 先Constructor生成构造方法&#xff0c;select无参构造&#xff0c;Ctrla全参构造 再Getter and Setter生成每个成员变量的getter 和 setter方法 也可以使用插件右键Ptg To …

java开发的美食菜谱网

简介 Java开发美食菜谱分享网站&#xff0c;健康专题分享&#xff0c;菜谱网源码。用户可以发布菜谱&#xff0c;可以评论&#xff0c;可以发布关于健康饮食的文章&#xff0c;还可以查看自己的主页。管理员可以管理所有的数据&#xff0c;审核数据。 演示视频 https://www.b…

ROS机器人底盘坐标像素变换

对于ROS小车底盘地图数据需要知道的点 1.整幅地图处于第三象限 2.坐标值代表距离&#xff0c;单位米。 3.分辨率单位&#xff08;米/像素&#xff09; 因此通过地图坐标得到像素坐标的办法&#xff1a; 像素坐标(实时坐标-初始坐标)/分辨率 实时坐标的获取&#xff1a; 触发条…

20230102单独编译Toybrick的TB-RK3588X开发板的Android12的内核【失败】

20230102单独编译Toybrick的TB-RK3588X开发板的Android12的内核【失败】 现阶段已经验证通过的编译指令&#xff1a; 直接使用build.sh编译了。 rootrootrootroot-adol-ADOLBOOK-I421UAY-ADOL14UA:~/toybrick3588_discrete$ source build/envsetup.sh rootrootrootroot-adol-A…

windows下编译opencv_contrib

文章目录基本环境二. 准备1. 下载所需各软件的安装文件2. 安装所需软件三.编译opencv步骤基本环境 cmaker&#xff1a;3.22.0vs2019&#xff1a;16.11.10CUDA&#xff1a;11.4.1cudnn&#xff1a;8.2.4opencv_source&#xff1a;4.5.4opencv_contrib&#xff1a;4.5.4python&a…

给程序员友人,2022投资总结的6000字评论

程序员友人的2022投资总结 以下是我的评论、回复。 友情提示&#xff1a;不好意思&#xff0c;长篇大论了&#xff0c;先长篇铺垫&#xff0c;再到正题。 下午说道&#xff1a;以我的最新投资原则方法&#xff0c;对你的持股情况&#xff0c;略显忧虑。 “一直放心不下”&#…

Ubuntu 18.04使用CMake编译可执行文件、动态链接库

目录准备新建文件编辑源文件编译生成可执行文件编译生成动态链接库准备 新建文件 在开始之前&#xff0c;我们先准备一个项目所需要的基本结构。 新建一个项目的文件夹test_so在项目文件夹中新建一个src文件夹存放源代码&#xff08;并新建一个test.cpp文件&#xff09;&…

基于 Prometheus 的监控平台简介

1. Prometheus 体系架构简介 Prometheus 是 CNCF 基金会的一款开源产品&#xff0c;主要用做监控系统&#xff0c;通常用来和 Zabbix 等监控系统做比较&#xff0c;以其简单易用、架构灵活著称。整个 Prometheus 的架构如上&#xff0c;分为几个重要的部分&#xff1a; 指标收…

Kubernetes:Ingress

文章目录1、安装 Ingress 控制器2、Ingress 扇出3、基于名称的虚拟托管4、Ingress TLSIngress 是一组路由规则&#xff0c;公开从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 Ingress 控制器是一组 pod&#xff0c;负责通过负载均衡器来解析 Ingress 路由规则&#xff0c;将请…

序列到序列学习(seq2seq,BLEU)

根据“编码器-解码器”架构的设计&#xff0c; 我们可以使用两个循环神经网络来设计一个序列到序列学习的模型。 在实现编码器和解码器时&#xff0c;我们可以使用多层循环神经网络。 我们可以使用遮蔽来过滤不相关的计算&#xff0c;例如在计算损失时。 在“编码器&#xf…

crackme01——Acid_burn

最近对逆向稍微有点兴趣&#xff0c;自学了一点。写这个文章主要用于记录学习的过程。 首先看一下这个程序&#xff0c;其实就是个简单的比对程序&#xff0c;主界面按左侧按钮进入Name Serial界面&#xff0c;点击【Check it Baby】&#xff0c;则弹出窗口【Sorry, The seria…