实现教程: https://www.bilibili.com/video/BV1YT4y1y7V1/ 项目名称: 校园社团管理系统 系统实现:SpringBoot + MyBatisPlus+ VUE + ElementUI + axios 运行环境:JDK8 + Maven + MySQL8.x + NodeJS 开发工具:IDEA + VSCode 特别说明:项目开发是在 IDEA 中完成的,但是如果将项目导入到 Eclipse 或者其他代码编辑器中同样也是可以运行的,只不过需要按照所使用工具的实际情况合理的进行配置进行,同理,前端项目也可以在 Sublime、Atom等其他前端代码编辑器中运行

1. 项目预览

image.png
用户登陆页面
image.png

系统首页
image.png
数据展示页面

2. 项目设计

image.png
系统功能结构图
image.png
系统角色图

3. 项目结构

image.png
服务端代码结构
image.png
前端代码结构

4. 项目部署

4.1 环境要求

JDK8,这是JAVA项目运行编译的基础,而且SpringBoot项目的开发对于 JDK的版本有明确的要求,尽量采用 JDK8的版本,如果本地没有 JDK,可以参考 JDK安装和使用 进行安装配置

Maven,项目使用 Maven进行构建,这是一个JAVA开发中常用的版本构建工具,如果本地没有 Maven,可以参考 Maven安装和配置 进行安装和配置

MySQL,需要考虑版本问题,MySQL5.x 和 MySQL8.x 在使用 JAVA进行处理的过程中,涉及的链接地址、驱动包名称、驱动包版本具有差异,本项目采用 MySQL8.x 开发完成,其他版本修改对应信息后才可以正常运行,关于 MySQL 数据库安装运行可以参考 MySQL数据库安装 进行安装和配置

NodeJS,这是前端运行所需要的,项目压缩包里包含前端运行所需的依赖模块,所以只需要安装 NodeJS 就可以在终端运行 npm run serve 就可以运行了

4.2 项目运行流程

首先,按照环境要求,在本地计算机中正确的安装 JDK、MySQL 、Maven、NodeJS等依赖,关于具体代码编辑器可以使用IDEA、VSCode 这样的组合,也可以根据自己的情况选择合适的代码编辑工具

第二,复制第5章数据库相关中找到数据库执行的SQL语句,这些SQL语句可以在命令窗口中执行,也可以在Navicat 等图形化管理窗口中执行,执行过程中请移除注释内容,避免对运行造成干扰

第三,使用代码编辑器打开项目,按照本节4.3、4.4 介绍的内容运行项目,成功运行之后,复制前端运行结果窗口中的路径,在浏览器中打开,输入 账号和密码即可,测试账号和密码存储在 users 表中(账号:admin 密码: admin)

4.3 服务端运行

image.png
如上,项目打开之后,找到 application.yml 文件,然后在图中标注位置正确配置数据库链接信息,主要是数据库用户名、用户密码、驱动类。
image.png
如上,使用 IDEA 打开项目后,找到SpringBoot启动类 Application 点击打开,然后在文件中右键运行,如果控制台无异常内容出现,即证明程序启动正常。

4.4 前端运行

image.png
如上,VSCode 打开项目后,按照图中标注方式打开终端,在终端控制台输入 npm run serve 即可运行。

5. 相关资源

5.1 依赖POM

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>self.cases</groupId>
  7. <artifactId>server</artifactId>
  8. <version>1.0.0</version>
  9. <!-- SpringBoot 依赖 -->
  10. <parent>
  11. <groupId>org.springframework.boot</groupId>
  12. <artifactId>spring-boot-starter-parent</artifactId>
  13. <version>2.3.4.RELEASE</version>
  14. <relativePath />
  15. </parent>
  16. <properties>
  17. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  18. <ehcache.version>3.8.1</ehcache.version>
  19. <druid.version>1.2.1</druid.version>
  20. <fastjson.version>1.2.72</fastjson.version>
  21. <slf4j.version>1.7.30</slf4j.version>
  22. <log4j2.version>2.13.3</log4j2.version>
  23. <mysql.version>8.0.17</mysql.version>
  24. <mybatis.version>3.4.2</mybatis.version>
  25. </properties>
  26. <dependencies>
  27. <!-- SpringBoot -->
  28. <dependency>
  29. <groupId>org.springframework.boot</groupId>
  30. <artifactId>spring-boot-starter</artifactId>
  31. <exclusions>
  32. <exclusion>
  33. <groupId>org.springframework.boot</groupId>
  34. <artifactId>spring-boot-starter-logging</artifactId>
  35. </exclusion>
  36. </exclusions>
  37. </dependency>
  38. <!-- SpringBoot Test模块 -->
  39. <dependency>
  40. <groupId>org.springframework.boot</groupId>
  41. <artifactId>spring-boot-starter-test</artifactId>
  42. <scope>test</scope>
  43. </dependency>
  44. <dependency>
  45. <groupId>org.junit.platform</groupId>
  46. <artifactId>junit-platform-launcher</artifactId>
  47. <scope>test</scope>
  48. </dependency>
  49. <!-- SpringBoot mybatis模块 -->
  50. <dependency>
  51. <groupId>com.baomidou</groupId>
  52. <artifactId>mybatis-plus-boot-starter</artifactId>
  53. <version>${mybatis.version}</version>
  54. </dependency>
  55. <!-- SpringBoot Web模块 -->
  56. <dependency>
  57. <groupId>org.springframework.boot</groupId>
  58. <artifactId>spring-boot-starter-web</artifactId>
  59. </dependency>
  60. <!-- SpringBoot log4j2模块 -->
  61. <dependency>
  62. <groupId>org.springframework.boot</groupId>
  63. <artifactId>spring-boot-starter-log4j2</artifactId>
  64. </dependency>
  65. <!--devtools热部署 -->
  66. <dependency>
  67. <groupId>org.springframework.boot</groupId>
  68. <artifactId>spring-boot-devtools</artifactId>
  69. <optional>true</optional>
  70. <scope>true</scope>
  71. </dependency>
  72. <!-- ehcache缓存 -->
  73. <dependency>
  74. <groupId>org.ehcache</groupId>
  75. <artifactId>ehcache</artifactId>
  76. <version>${ehcache.version}</version>
  77. </dependency>
  78. <!-- MySQL数据库驱动 -->
  79. <dependency>
  80. <groupId>mysql</groupId>
  81. <artifactId>mysql-connector-java</artifactId>
  82. <version>${mysql.version}</version>
  83. </dependency>
  84. <!-- 数据连接池 -->
  85. <dependency>
  86. <groupId>com.alibaba</groupId>
  87. <artifactId>druid</artifactId>
  88. <version>${druid.version}</version>
  89. </dependency>
  90. <!-- slf4j依赖程序 -->
  91. <dependency>
  92. <groupId>org.slf4j</groupId>
  93. <artifactId>slf4j-api</artifactId>
  94. <version>${slf4j.version}</version>
  95. </dependency>
  96. <!-- lo4j2依赖程序 -->
  97. <dependency>
  98. <groupId>org.apache.logging.log4j</groupId>
  99. <artifactId>log4j-core</artifactId>
  100. <version>${log4j2.version}</version>
  101. </dependency>
  102. <!-- FastJSON 处理响应数据格式 -->
  103. <dependency>
  104. <groupId>com.alibaba</groupId>
  105. <artifactId>fastjson</artifactId>
  106. <version>${fastjson.version}</version>
  107. </dependency>
  108. </dependencies>
  109. <build>
  110. <plugins>
  111. <plugin>
  112. <groupId>org.springframework.boot</groupId>
  113. <artifactId>spring-boot-maven-plugin</artifactId>
  114. <configuration>
  115. <fork>true</fork>
  116. </configuration>
  117. </plugin>
  118. </plugins>
  119. <!-- 设置静态资源 -->
  120. <resources>
  121. <resource>
  122. <directory>src/main/resources</directory>
  123. <includes>
  124. <include>application.yml</include>
  125. <include>log4j2.xml</include>
  126. </includes>
  127. </resource>
  128. </resources>
  129. </build>
  130. </project>

5.2 数据库相关

  1. -- 创建数据库
  2. CREATE DATABASE `self_student_teams` DEFAULT CHARACTER SET utf8;
  3. -- 选择数据库
  4. USE `self_student_teams`;
  5. -- 建立数据表
  6. CREATE TABLE `users` (
  7. `id` char(13) NOT NULL COMMENT '记录ID',
  8. `user_name` varchar(32) NOT NULL COMMENT '用户账号',
  9. `pass_word` varchar(32) NOT NULL COMMENT '用户密码',
  10. `name` varchar(20) COMMENT '用户姓名',
  11. `gender` char(2) COMMENT '用户性别',
  12. `age` int COMMENT '用户年龄',
  13. `phone` char(11) COMMENT '联系电话',
  14. `address` varchar(64) COMMENT '联系地址',
  15. `create_time` char(19) NOT NULL COMMENT '添加时间',
  16. `type` int NOT NULL COMMENT '用户身份',
  17. PRIMARY KEY(`id`)
  18. )ENGINE=INNODB DEFAULT CHARSET=UTF8 COMMENT '系统用户';
  19. CREATE TABLE `team_types` (
  20. `id` char(13) NOT NULL COMMENT '记录ID',
  21. `name` varchar(20) NOT NULL COMMENT '类型名称',
  22. `create_time` char(19) NOT NULL COMMENT '创建时间',
  23. PRIMARY KEY(`id`)
  24. )ENGINE=INNODB DEFAULT CHARSET=UTF8 COMMENT '社团类型';
  25. CREATE TABLE `teams` (
  26. `id` char(13) NOT NULL COMMENT '记录ID',
  27. `name` varchar(20) NOT NULL COMMENT '社团名称',
  28. `create_time` char(10) NOT NULL COMMENT '建立时间',
  29. `total` int NOT NULL COMMENT '社团人数',
  30. `manager` char(13) NOT NULL COMMENT '社团团长',
  31. `type_id` char(13) NOT NULL COMMENT '社团编号',
  32. PRIMARY KEY(`id`),
  33. FOREIGN KEY(type_id) REFERENCES team_types(id)
  34. )ENGINE=INNODB DEFAULT CHARSET=UTF8 COMMENT '社团信息';
  35. CREATE TABLE `notices` (
  36. `id` char(13) NOT NULL COMMENT '记录ID',
  37. `title` varchar(20) NOT NULL COMMENT '通知标题',
  38. `detail` varchar(125) NOT NULL COMMENT '通知详情',
  39. `create_time` char(10) NOT NULL COMMENT '发布时间',
  40. `team_id` char(13) COMMENT '发布社团',
  41. PRIMARY KEY(`id`)
  42. )ENGINE=INNODB DEFAULT CHARSET=UTF8 COMMENT '通知记录';
  43. CREATE TABLE `activities` (
  44. `id` char(13) NOT NULL COMMENT '记录ID',
  45. `name` varchar(20) NOT NULL COMMENT '活动名称',
  46. `comm` varchar(60) NOT NULL COMMENT '活动概述',
  47. `detail` varchar(256) NOT NULL COMMENT '活动详情',
  48. `ask` varchar(125) NOT NULL COMMENT '活动要求',
  49. `total` int NOT NULL COMMENT '报名人数',
  50. `active_time` char(19) NOT NULL COMMENT '活动时间',
  51. `team_id` char(13) NOT NULL COMMENT '发布社团',
  52. PRIMARY KEY(`id`),
  53. FOREIGN KEY(team_id) REFERENCES teams(id)
  54. )ENGINE=INNODB DEFAULT CHARSET=UTF8 COMMENT '活动信息';
  55. CREATE TABLE `active_logs` (
  56. `id` char(13) NOT NULL COMMENT '记录ID',
  57. `create_time` char(19) NOT NULL COMMENT '报名时间',
  58. `active_id` char(13) NOT NULL COMMENT '活动编号',
  59. `user_id` char(13) NOT NULL COMMENT '报名用户',
  60. PRIMARY KEY(`id`),
  61. FOREIGN KEY(active_id) REFERENCES activities(id),
  62. FOREIGN KEY(user_id) REFERENCES users(id)
  63. )ENGINE=INNODB DEFAULT CHARSET=UTF8 COMMENT '报名记录';
  64. CREATE TABLE `apply_logs` (
  65. `id` char(13) NOT NULL COMMENT '记录ID',
  66. `status` int NOT NULL COMMENT '处理状态',
  67. `create_time` char(19) NOT NULL COMMENT '申请时间',
  68. `team_id` char(13) NOT NULL COMMENT '申请社团',
  69. `user_id` char(13) NOT NULL COMMENT '申请用户',
  70. PRIMARY KEY(`id`),
  71. FOREIGN KEY(team_id) REFERENCES teams(id),
  72. FOREIGN KEY(user_id) REFERENCES users(id)
  73. )ENGINE=INNODB DEFAULT CHARSET=UTF8 COMMENT '申请记录';
  74. CREATE TABLE `members` (
  75. `id` char(13) NOT NULL COMMENT '记录ID',
  76. `create_time` char(19) NOT NULL COMMENT '入团时间',
  77. `team_id` char(13) NOT NULL COMMENT '加入社团',
  78. `user_id` char(13) NOT NULL COMMENT '申请用户',
  79. PRIMARY KEY(`id`),
  80. FOREIGN KEY(team_id) REFERENCES teams(id),
  81. FOREIGN KEY(user_id) REFERENCES users(id)
  82. )ENGINE=INNODB DEFAULT CHARSET=UTF8 COMMENT '成员信息';
  83. CREATE TABLE `pay_logs` (
  84. `id` char(13) NOT NULL COMMENT '记录ID',
  85. `create_time` char(19) NOT NULL COMMENT '缴费时间',
  86. `total` double NOT NULL COMMENT '缴纳费用',
  87. `team_id` char(13) NOT NULL COMMENT '收费社团',
  88. `user_id` char(13) NOT NULL COMMENT '缴费用户',
  89. PRIMARY KEY(`id`),
  90. FOREIGN KEY(team_id) REFERENCES teams(id),
  91. FOREIGN KEY(user_id) REFERENCES users(id)
  92. )ENGINE=INNODB DEFAULT CHARSET=UTF8 COMMENT '缴费记录';
  93. -- 插入测试数据
  94. INSERT INTO users (id, user_name, pass_word, name, gender, age, phone, address, create_time, type) VALUES ('1642422100000', 'admin', 'admin', '张三丰', '男', 45, '90989192', '武当十八号', '2022-01-17 20:00:00', 0);
  95. INSERT INTO users (id, user_name, pass_word, name, gender, age, phone, address, create_time, type) VALUES ('1642422100001', 'fater', 'fater', '张翠山', '男', 28, '90989193', '武当十九号', '2022-01-17 20:00:00', 1);
  96. INSERT INTO team_types (id, name, create_time) VALUES ('1642422100000', '科技创新', '2022-01-17 20:00:00');
  97. INSERT INTO team_types (id, name, create_time) VALUES ('1642422100001', '户外运动', '2022-01-17 20:00:00');
  98. INSERT INTO team_types (id, name, create_time) VALUES ('1642422100002', '语言文学', '2022-01-17 20:00:00');
  99. INSERT INTO team_types (id, name, create_time) VALUES ('1642422100003', '志愿服务', '2022-01-17 20:00:00');
  100. INSERT INTO teams (id, name, create_time, total, manager, type_id) VALUES ('1642422100000', '网络攻防', '2022-01-17', 1, '1642422100001', '1642422100000');
  101. INSERT INTO members (id, create_time, team_id, user_id) VALUES ('1642422100000', '2022-01-17 20:00:00', '1642422100000', '1642422100001');