基于Springboot+Redis+Mysql+Boostrap实现的高校社团管理系统

Sprinboot学生社团管理系统 1,项目简介 高校社团管理系统分为前后台,角色分为三种:管理员,社长,普通社员, 超级管理员角色包含以下功能:会员管理

本文包含相关资料包-----> 点击直达获取<-------

Sprinboot学生社团管理系统

1.项目简介

高校社团管理系统分为前后台,角色分为三种:管理员、社长、普通社员。

超级管理员角色包含以下功能:会员管理,物品管理,活动审批,系统用户管理,社团添加删除等功能。

社长角色包含以下功能:社团管理员登录,会员管理,物品管理,活动管理,查询社团信息,密码修改等功能。

普通社员角色包含以下功能:社员登录,申请入社,物品查看,活动申请等功能

前台主要是展示社团列表、社团风采、社团活动、新闻列表 前台登录后进入个人中心,在个人中心能申请加入社团、查看参加的社团活动等 后台为管理员与社长使用,应用于对社团的管理及内容发布等。

开发环境

1.运行环境:最好是java jdk 1.8 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.Redis需要配置3.2版本以上 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 6.数据库:MySql 8.0版本;

实用技术 Springboot+Redis+Mysql+Boostrap+mybatis

使用说明 1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;注:数据库使用mysql 8.0,注意版本要匹配,否则可能会产生连接异常的情况, 2. 将项目中db.properties配置文件中的数据库配置改为自己的配置 3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,配置文件

普通社员账号:13030303 密码:123

管理员账号:1 密码:123123 社长账号:14040404 密码:123

功能模块图

image-20210814153900854

创新功能

输入图片说明

2.数据库设计

2.1表结构

user表

image-20210814153420427

news表

image-20210814153502444

associationmember表

image-20210814153525703

association表

image-20210814153621404

activity表

image-20210814153646623

2.2ER图

image-20210814153714033

3.项目实现

3.1项目配置文件编写

```yaml

访问相关配置

server.port=8081

Spring boot视图配置

JSP配置

页面默认前缀

spring.mvc.view.prefix=/WEB-INF/

响应页面默认后缀

spring.mvc.view.suffix=.jsp

thymeleaf模板引擎配置

spring.thymeleaf.cache=false

spring.thymeleaf.prefix=/WEB-INF/

spring.thymeleaf.suffix=.html

spring.thymeleaf.enabled=false

spring.freemarker.checkTemplateLocation=false

静态文件访问配置

spring.mvc.static-path-pattern=/static/**

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/association?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.main.allow-bean-definition-overriding=true

Redis数据库索引(默认为0)

spring.redis.database=1

Redis服务器地址

spring.redis.host=127.0.0.1

Redis服务器连接端口

spring.redis.port=6379

Redis服务器连接密码(默认为空)

spring.redis.password=

连接池最大连接数(使用负值表示没有限制)

此项过时,请使用spring.redis.jedis.pool.max-idle=8

spring.redis.jedis.pool.max-idle=8

连接池最大阻塞等待时间(使用负值表示没有限制).

此项过时,请使用spring.redis.jedis.pool.max-wait=-1

spring.redis.jedis.pool.max-wait=-1

连接池中的最小空闲连接

此项过时,请使用spring.redis.jedis.pool.min-idle=0

spring.redis.jedis.pool.min-idle=0

连接超时时间(毫秒)

spring.redis.timeout=5000 ```

3.2Redis配置

```java @Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport {

@Bean
public KeyGenerator keyGenerator() {
    return new KeyGenerator() {
        @Override
        public Object generate(Object target, Method method, Object... params) {
            StringBuilder sb = new StringBuilder();
            sb.append(target.getClass().getName());
            sb.append(method.getName());
            for (Object obj : params) {
                sb.append(obj.toString());
            }
            return sb.toString();
        }
    };
}

@SuppressWarnings("rawtypes")
@Bean
//缓存管理器

public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
    RedisCacheManager cacheManager = RedisCacheManager.create(connectionFactory);
    //设置缓存过期时间
    return cacheManager;
}

@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
    StringRedisTemplate template = new StringRedisTemplate(factory);
    Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
    ObjectMapper om = new ObjectMapper();
    om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
    om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
    jackson2JsonRedisSerializer.setObjectMapper(om);
    template.setValueSerializer(jackson2JsonRedisSerializer);
    template.afterPropertiesSet();
    return template;
}

} ```

3.3全局拦截器配置

```java package com.example.association2.config;

import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.*; import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.thymeleaf.spring5.SpringTemplateEngine; import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver; import org.thymeleaf.spring5.view.ThymeleafViewResolver; import org.thymeleaf.templateresolver.ITemplateResolver;

@Configuration//用来定义 DispatcherServlet 应用上下文中的 bean @EnableWebMvc @ComponentScan public class Webconfig implements WebMvcConfigurer {

@Bean
public ViewResolver viewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/");
    resolver.setSuffix(".jsp");
    resolver.setViewNames("jsp/*");
    resolver.setOrder(2);
    return resolver;
}

@Bean
public ITemplateResolver templateResolver() {
    SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
    templateResolver.setTemplateMode("HTML5");
    templateResolver.setPrefix("/WEB-INF/");
    templateResolver.setSuffix(".html");
    templateResolver.setCharacterEncoding("utf-8");
    templateResolver.setCacheable(false);
    return templateResolver;
}

@Bean
public SpringTemplateEngine templateEngine() {
    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    templateEngine.setTemplateResolver(templateResolver());
    return templateEngine;
}

@Bean
public ThymeleafViewResolver viewResolverThymeLeaf() {
    ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
    viewResolver.setTemplateEngine(templateEngine());
    viewResolver.setCharacterEncoding("utf-8");
    viewResolver.setViewNames(new String[]{"thymeleaf/*"});
    viewResolver.setOrder(1);
    return viewResolver;
}

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
}

} ```

3.4图片工具类

```java public class PicUtil { public static String pictureUtil(String base64Data, HttpServletRequest httpServletRequest){ String dataPrix = ""; String data = "";

    String[] d = base64Data.split("base64,");
    if (d != null && d.length == 2) {
        dataPrix = d[0];
        data = d[1];
    }
    String suffix = "";
    if ("data:image/jpeg;".equalsIgnoreCase(dataPrix)) {//data:image/jpeg;base64,base64编码的jpeg图片数据
        suffix = ".jpg";
    } else if ("data:image/x-icon;".equalsIgnoreCase(dataPrix)) {//data:image/x-icon;base64,base64编码的icon图片数据
        suffix = ".ico";
    } else if ("data:image/gif;".equalsIgnoreCase(dataPrix)) {//data:image/gif;base64,base64编码的gif图片数据
        suffix = ".gif";
    } else if ("data:image/png;".equalsIgnoreCase(dataPrix)) {//data:image/png;base64,base64编码的png图片数据
        suffix = ".png";
    }
    String imgName = UUID.randomUUID().toString();
    String tempFileName = imgName + suffix;
    byte[] bs = Base64Utils.decodeFromString(data);
    String url = httpServletRequest.getSession().getServletContext().getRealPath("/upload");
    try {
        FileUtils.writeByteArrayToFile(new File(url + "/" + tempFileName), bs);
    } catch (IOException e) {
        e.printStackTrace();
    }
    String picture="../upload/"+tempFileName;
    return picture;

}

} ```

3.5主要功能实现

```java //申请创建社团页面 @GetMapping("/associationApply") public String toApplyAss(HttpServletRequest httpServletRequest) { HttpSession session = httpServletRequest.getSession(); int userId = (int) session.getAttribute("userId"); httpServletRequest.setAttribute("userId", userId); return "jsp/ass_apply"; }

//提交创建社团申请 @PostMapping("/associationApply") @ResponseBody public String addAss(String name, String description, int ownerId, int type, @RequestParam(name = "base64Data", required = true) String base64Data, HttpServletRequest httpServletRequest) { String logo = ""; String s[]; if (base64Data == null || "".equals(base64Data)) { //提示上传图片错误 } else { logo = PicUtil.pictureUtil(base64Data, httpServletRequest); logo = logo.substring(3, logo.length()); System.out.println(logo); } associationService.addAssociation(description, name, null, type, ownerId, logo); String result = "1"; return result; }

//社团详情页面 @GetMapping("/association") public String association( @RequestParam(name = "associationId", required = true) int associationId, @RequestParam(name = "bar", defaultValue = "1") int bar, HttpServletRequest httpServletRequest) { switch (bar) { case 1: //首页 httpServletRequest.setAttribute("bar", 1); break; case 2: //成员列表 httpServletRequest.setAttribute("presidentDes", associationMemberService.findPresidentDesByAssid(associationId)); httpServletRequest.setAttribute("VicePresidentDes", associationMemberService.findVicePresidentDesByAssid(associationId)); httpServletRequest.setAttribute("MinisterDes", associationMemberService.findMinisterDesByAssid(associationId)); httpServletRequest.setAttribute("bar", 2); break; case 3: //活动列表 httpServletRequest.setAttribute("activityList", activityService.findActivityByAssociationId(associationId)); httpServletRequest.setAttribute("signatureActivity",associationService.findSignatureActivityName(associationId)); httpServletRequest.setAttribute("bar", 3); break; } httpServletRequest.setAttribute("association", associationService.findAssociationById(associationId)); return "jsp/ass_detail"; } ```

3.6自定义枚举类

java public enum AssociationType { ASS1(1), ASS2(2), ASS3(3), ; private int associationType; private AssociationType(int associationType){ this.associationType=associationType; } public int getAssociationType(){ return associationType; } }

4.项目实现

4.1学生页面

登录页

image-20210814154656045

主页

image-20210814155028821

个人中心

image-20210814155018209

修改密码

image-20210814155100281

浏览活动

image-20210814155119271

申请创建社团

image-20210814155142610

申请加入社团

image-20210814154934400

4.2社长页面

主页

image-20210814155309240

社团介绍

image-20210814155351291

用户管理

image-20210814155517451

4.3管理员页面

后台用户管理

image-20210814155759280

社团管理

image-20210814160202047

创建活动

image-20210814160223112

社团信息更新

image-20210814160213566

审核管理

image-20210814160246435

新闻管理

image-20210814160254873

参考文献

  • 某高校团员管理系统的设计与实现(厦门大学·刘泉)
  • 基于Spring Boot的学生信息管理系统的设计与实现(武汉轻工大学·杨东)
  • 基于Struts+Hibernate的学生社团管理系统的设计与实现(吉林大学·左欣夏)
  • 基于Java Web的学生社团管理系统的设计与实现(吉林大学·王佳宝)
  • 企业内部管理系统的设计与实现(山东大学·李灿灿)
  • 基于B/S模式的高中教师信息管理系统的设计与实现(电子科技大学·吴敏)
  • 基于SNS导向的高校学生社团活动支持平台设计与实现(湖北工业大学·熊志)
  • 基于Spring的高校教学管理信息系统的设计与实现(西安电子科技大学·刘爱玉)
  • 基于UML的教务管理系统分析与设计(南京理工大学·陈芬)
  • 基于SSH的人事管理系统的分析与设计(北方工业大学·戴青)
  • 基于WEB高校资料信息系统的设计(中国海洋大学·夏斌)
  • 基于ssh2架构的科研管理系统研究与实现(电子科技大学·龚强)
  • 基于Java EE的学生就业信息管理系统的设计与实现(东北大学·苏姗娜)
  • 基于LAMP架构的校园微活动管理平台的设计与实现(北京工业大学·庄欠林)
  • 基于Spring Boot的学生信息管理系统的设计与实现(武汉轻工大学·杨东)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码导航 ,原文地址:https://bishedaima.com/yuanma/35475.html

相关推荐

发表回复

登录后才能评论