基于Springboot的高校社團(tuán)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
一、項(xiàng)目簡介
本項(xiàng)目基于Springboot+Mybatis開發(fā)實(shí)現(xiàn)了一個(gè)高校社團(tuán)管理系統(tǒng),系統(tǒng)包含三個(gè)角色:管理員、團(tuán)長、會(huì)員。管理員主要是做一些基礎(chǔ)數(shù)據(jù)的管理,比較用戶管理,新聞管理,活動(dòng)審批,社團(tuán)創(chuàng)建審批等等,會(huì)員可以申請(qǐng)加入相關(guān)的社團(tuán),也可自己申請(qǐng)社團(tuán),管理員審批通過后成為團(tuán)長,可以申請(qǐng)開展相關(guān)的活動(dòng)。團(tuán)長登陸后可以審批申請(qǐng)加入本社團(tuán)的申請(qǐng)信息,并管理和查看相關(guān)的社團(tuán)用戶信息。各角色進(jìn)入均可以查看發(fā)布的新聞信息。
二、環(huán)境介紹
語言環(huán)境:Java: jdk1.8
數(shù)據(jù)庫:Mysql: mysql5.7 Redis緩存數(shù)據(jù)庫
應(yīng)用服務(wù)器:Tomcat: tomcat8.5.31
開發(fā)工具:IDEA或eclipse
后臺(tái)開發(fā)技術(shù):Springboot+Mybatis+SpringCache緩存框架
前端開發(fā)技術(shù):Jquery+AjAX+JSP
三、系統(tǒng)展示
下面展示一下系統(tǒng)的相關(guān)功能模塊:
管理員登陸后主要操作功能
登陸注冊界面

主界面

查看社團(tuán)活動(dòng)信息

用戶管理

社團(tuán)管理

審核 管理

新聞管理

團(tuán)長登陸系統(tǒng)后
申請(qǐng)創(chuàng)建活動(dòng)

管理本社團(tuán)成員

審核加入社團(tuán)申請(qǐng)

學(xué)生登陸
申請(qǐng)創(chuàng)建社團(tuán)

申請(qǐng)加入社團(tuán)

四、核心代碼展示
package com.example.association2.controller;
import com.example.association2.service.impl.ActivityServiceImpl;
import com.example.association2.service.impl.AssociationMemberServiceImpl;
import com.example.association2.utils.PicUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@Controller
public class ActivityController {
@Autowired
private AssociationMemberServiceImpl associationMemberService;
@Autowired
private ActivityServiceImpl activityService;
@GetMapping("/activities")//所有活動(dòng)頁面
public String toActivities(HttpServletRequest httpServletRequest,
@RequestParam(name = "key", required = true) int key) {//key判斷點(diǎn)擊的活動(dòng)分類
if (key == 0) {//所有活動(dòng)
httpServletRequest.setAttribute("activityList", activityService.findAllActivityAndName());
httpServletRequest.setAttribute("key", key);
} else if (key == 1) {//文體類活動(dòng)
httpServletRequest.setAttribute("activityList", activityService.findActivityAndNameByAssociationType(key));
httpServletRequest.setAttribute("key", key);
} else if (key == 2) {//學(xué)術(shù)類活動(dòng)
httpServletRequest.setAttribute("activityList", activityService.findActivityAndNameByAssociationType(key));
httpServletRequest.setAttribute("key", key);
} else if (key == 3) {//公益類活動(dòng)
httpServletRequest.setAttribute("activityList", activityService.findActivityAndNameByAssociationType(key));
httpServletRequest.setAttribute("key", key);
}
return "jsp/activity";
}
@GetMapping("/activity")//活動(dòng)詳情頁面
public String act_detail(HttpServletRequest httpServletRequest,
@RequestParam(name = "activityId", required = true) int activityId) {
String imglocation[] = activityService.findActivityById(activityId).getPicture().split(";");//把活動(dòng)圖片路徑和分號(hào)切割后返回正確的圖片路徑
httpServletRequest.setAttribute("imgLocation", imglocation);
int imgNum = imglocation.length;
httpServletRequest.setAttribute("imgNum", imgNum);//獲取圖片數(shù)量
httpServletRequest.setAttribute("activity", activityService.findActivityById(activityId));
return "jsp/act_detail";//活動(dòng)詳情頁面
}
@GetMapping("/activityApply")//申請(qǐng)活動(dòng)頁面
public String toApply(HttpServletRequest httpServletRequest) {
HttpSession session = httpServletRequest.getSession();
int userId = (int) session.getAttribute("userId");
httpServletRequest.setAttribute("associationId", associationMemberService.findassociationIdByUserId(userId));
return "jsp/act_apply";
}
@PostMapping("/activity")//提交活動(dòng)申請(qǐng)
@ResponseBody
public String addAct(@RequestParam String title,
String description,
int associationId,
String startTime,
String endTime,
String location,
float material,
@RequestParam(name = "base64Data0", required = false) String base64Data0,
@RequestParam(name = "base64Data1", required = false) String base64Data1,
@RequestParam(name = "base64Data2", required = false) String base64Data2,
HttpServletRequest httpServletRequest) {
String picture1 = "";
String picture2 = "";
String picture3 = "";
String picture = "";
if (base64Data0 == null || "".equals(base64Data0)) {
//提示上傳圖片錯(cuò)誤
} else {
picture1 = PicUtil.pictureUtil(base64Data0, httpServletRequest);
picture = picture1;
}
if (base64Data1 == null || "".equals(base64Data1)) {
//提示上傳圖片錯(cuò)誤
} else {
picture2 = PicUtil.pictureUtil(base64Data1, httpServletRequest);
picture = picture + ";" + picture2;
}
if (base64Data2 == null || "".equals(base64Data2)) {
//提示上傳圖片錯(cuò)誤
} else {
picture3 = PicUtil.pictureUtil(base64Data2, httpServletRequest);
picture = picture + ";" + picture3;
}
activityService.addActivity(title, description, associationId, startTime, endTime, location, material, picture);
//HttpSession session = httpServletRequest.getSession();
String result = "1";
return result;
}
@RequestMapping("/applyResult")//活動(dòng)申請(qǐng)結(jié)果頁面
public String toresult() {
return "jsp/apply_result";
}
@RequestMapping("/actDelete")
public ModelAndView actDelete(@RequestParam(name = "activityId", required = true) int activityId) {
activityService.deleteActivity(activityId);
int bar = 2;
ModelAndView mv = new ModelAndView();
mv.addObject("bar", bar);
mv.setViewName("forward:assManage");
return mv;
}
//查看申請(qǐng)的活動(dòng)圖片
@RequestMapping("/actPicture")
public String act_picture(HttpServletRequest httpServletRequest,
@RequestParam(name = "activityId", required = true) int activityId) {
String imglocation[] = activityService.findActivityById(activityId).getPicture().split(";");//把活動(dòng)圖片路徑和分號(hào)切割后返回正確的圖片路徑
httpServletRequest.setAttribute("imgLocation", imglocation);
int imgNum = imglocation.length;
httpServletRequest.setAttribute("imgNum", imgNum);//獲取圖片數(shù)量
httpServletRequest.setAttribute("activity", activityService.findActivityById(activityId));
return "jsp/manage/act_picture";//活動(dòng)詳情頁面
}
@RequestMapping("/toActModify")//活動(dòng)修改頁面
public String toAssModify(@RequestParam(name = "activityId", required = true) int activityId,
HttpServletRequest httpServletRequest) {
String imglocation[] = activityService.findActivityAndNameById(activityId).getPicture().split(";");//把活動(dòng)圖片路徑和分號(hào)切割后返回正確的圖片路徑
httpServletRequest.setAttribute("imgLocation", imglocation);
int imgNum = imglocation.length;
httpServletRequest.setAttribute("imgNum", imgNum);//獲取圖片數(shù)量
httpServletRequest.setAttribute("act", activityService.findActivityAndNameById(activityId));
return "jsp/manage/act_modify";
}
@RequestMapping("/actModify")//提交活動(dòng)修改
@ResponseBody
public String actModify( @RequestParam(name = "activityId", required = true)int activityId,
int activityStatus,
@RequestParam String title,
String description,
int associationId,
String startTime,
String endTime,
String location,
float material,
@RequestParam(name = "base64Data0", required = false) String base64Data0,
@RequestParam(name = "base64Data1", required = false) String base64Data1,
@RequestParam(name = "base64Data2", required = false) String base64Data2,
HttpServletRequest httpServletRequest) {
String picture1 = "";
String picture2 = "";
String picture3 = "";
String picture = "";
if("data".equals(base64Data0.substring(0,4))){//本地上傳的圖片
if (base64Data0 == null || "".equals(base64Data0)) {
//提示上傳圖片錯(cuò)誤
} else {
picture1 = PicUtil.pictureUtil(base64Data0, httpServletRequest);
picture = picture1;
}
if (base64Data1 == null || "".equals(base64Data1)) {
//提示上傳圖片錯(cuò)誤
} else {
picture2 = PicUtil.pictureUtil(base64Data1, httpServletRequest);
picture = picture + ";" + picture2;
}
if (base64Data2 == null || "".equals(base64Data2)) {
//提示上傳圖片錯(cuò)誤
} else {
picture3 = PicUtil.pictureUtil(base64Data2, httpServletRequest);
picture = picture + ";" + picture3;
}
}else {//是從數(shù)據(jù)庫讀取的圖片
if (base64Data0 == null || "".equals(base64Data0)) {
//提示上傳圖片錯(cuò)誤
} else {
picture1 = base64Data0;
picture = picture1;
}
if (base64Data1 == null || "".equals(base64Data1)) {
//提示上傳圖片錯(cuò)誤
} else {
picture2 = base64Data1;
picture = picture + ";" + picture2;
}
if (base64Data2 == null || "".equals(base64Data2)) {
//提示上傳圖片錯(cuò)誤
} else {
picture3 =base64Data2;
picture = picture + ";" + picture3;
}
}
activityService.updateActivity(title,description,associationId,startTime,endTime,location,picture,material,activityStatus,activityId);
String result = "1";
return result;
}
@RequestMapping("/toAddAct")
public String toAddAss(int associationId,HttpServletRequest httpServletRequest) {
httpServletRequest.setAttribute("associationId",associationId);
return "jsp/manage/act_add";
}
@PostMapping("/actAdd")//活動(dòng)添加業(yè)務(wù)邏輯
@ResponseBody
public String actAdd(@RequestParam String title,
String description,
int associationId,
String startTime,
String endTime,
String location,
float material,
@RequestParam(name = "base64Data0", required = false) String base64Data0,
@RequestParam(name = "base64Data1", required = false) String base64Data1,
@RequestParam(name = "base64Data2", required = false) String base64Data2,
HttpServletRequest httpServletRequest) {
String picture1 = "";
String picture2 = "";
String picture3 = "";
String picture = "";
if (base64Data0 == null || "".equals(base64Data0)) {
//提示上傳圖片錯(cuò)誤
} else {
picture1 = PicUtil.pictureUtil(base64Data0, httpServletRequest);
picture = picture1;
}
if (base64Data1 == null || "".equals(base64Data1)) {
//提示上傳圖片錯(cuò)誤
} else {
picture2 = PicUtil.pictureUtil(base64Data1, httpServletRequest);
picture = picture + ";" + picture2;
}
if (base64Data2 == null || "".equals(base64Data2)) {
//提示上傳圖片錯(cuò)誤
} else {
picture3 = PicUtil.pictureUtil(base64Data2, httpServletRequest);
picture = picture + ";" + picture3;
}
activityService.addActivity(title, description, associationId, startTime, endTime, location, material, picture);
//HttpSession session = httpServletRequest.getSession();
String result = "1";
return result;
}
@RequestMapping("/actApplyPass")//活動(dòng)申請(qǐng)通過
public ModelAndView actApplySuccess(@RequestParam(name = "activityId", required = true) int activityId) {
activityService.applyPass(activityId);
int bar = 1;
ModelAndView mv = new ModelAndView();
mv.addObject("bar", bar);
mv.setViewName("forward:applyManage");
return mv;
}
@RequestMapping("/actApplyRefuse")//活動(dòng)申請(qǐng)拒絕
public ModelAndView actApplyRefuse(@RequestParam(name = "activityId", required = true) int activityId) {
activityService.applyRefuse(activityId);
int bar = 1;
ModelAndView mv = new ModelAndView();
mv.addObject("bar", bar);
mv.setViewName("forward:applyManage");
return mv;
}
}package com.example.association2.controller;
import com.example.association2.service.impl.ActivityServiceImpl;
import com.example.association2.service.impl.AssociationMemberServiceImpl;
import com.example.association2.service.impl.AssociationServiceImpl;
import com.example.association2.service.impl.NewsServiceImpl;
import com.example.association2.utils.PicUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.text.SimpleDateFormat;
import java.util.Date;
@Controller
public class AssociationController {
@Autowired
private AssociationServiceImpl associationService;
@Autowired
private AssociationMemberServiceImpl associationMemberService;
@Autowired
private ActivityServiceImpl activityService;
@Autowired
private NewsServiceImpl newsService;
@GetMapping("/associations")//所有社團(tuán)頁面
public String index(HttpServletRequest httpServletRequest,
@RequestParam(name = "type", required = false, defaultValue = "1") int type) {
httpServletRequest.setAttribute("type", type);
httpServletRequest.setAttribute("associationsList", associationService.findAssociationsByType(type));
httpServletRequest.setAttribute("lastActivity", activityService.findLastActivity());
return "jsp/mid/index";
}
//申請(qǐng)創(chuàng)建社團(tuán)頁面
@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";
}
//提交創(chuàng)建社團(tuán)申請(qǐng)
@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)) {
//提示上傳圖片錯(cuò)誤
} 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;
}
//社團(tuán)詳情頁面
@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:
//活動(dòng)列表
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";
}
@RequestMapping("/assManage")
public String toAssManage(@RequestParam(name = "bar", defaultValue = "1") int bar,
HttpServletRequest httpServletRequest) {
switch (bar) {
case 1:
httpServletRequest.setAttribute("assList", associationService.findAllAss());
httpServletRequest.setAttribute("bar", 1);
break;
case 2:
httpServletRequest.setAttribute("actList", activityService.findAllActivityAndName());
httpServletRequest.setAttribute("bar", 2);
break;
}
return "jsp/manage/ass_manage";
}
@RequestMapping("/toAddAss")
public String toAddAss() {
return "jsp/manage/ass_add";
}
@PostMapping("/assAdd")
@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)) {
//提示上傳圖片錯(cuò)誤
} else {
logo = PicUtil.pictureUtil(base64Data, httpServletRequest);
logo = logo.substring(3, logo.length());
System.out.println(logo);
}
String createTime = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
associationService.addAss(description, name, createTime, type, ownerId, logo);
String result = "1";
return result;
}
@RequestMapping("/assDelete")
public ModelAndView amDelete(@RequestParam(name = "associationId", required = true) int associationId) {
associationService.deleteAss(associationId);
int bar = 2;
ModelAndView mv = new ModelAndView();
mv.addObject("bar", bar);
mv.setViewName("forward:assManage");
return mv;
}
@RequestMapping("/toAssModify")
public String toAssModify(@RequestParam(name = "associationId", required = true) int associationId,
HttpServletRequest httpServletRequest) {
httpServletRequest.setAttribute("ass", associationService.findAssociationById(associationId));
return "jsp/manage/ass_modify";
}
@RequestMapping("/assModify")
@ResponseBody
public String assModify( @RequestParam(name = "associationId", required = true)int associationId,
String name,
String description,
int ownerId,
int type,
Integer signatureActivity,
@RequestParam(name = "base64Data", required = true) String base64Data,
HttpServletRequest httpServletRequest) {
String logo = "";
if("data".equals(base64Data.substring(0,4))) {//本地上傳的圖片
if (base64Data == null || "".equals(base64Data)) {
//提示上傳圖片錯(cuò)誤
} else {
logo = PicUtil.pictureUtil(base64Data, httpServletRequest);
logo = logo.substring(3, logo.length());
}
}else {
logo=base64Data.substring(22,base64Data.length()) ;
}
associationService.assModify(description,name,type,ownerId,logo,signatureActivity,associationId);
associationMemberService.updatePresidentByAssociationId(associationId,ownerId);
String result = "1";
return result;
}
@RequestMapping("/applyManage")
public String toApplyManage(@RequestParam(name = "bar", defaultValue = "1") int bar,
HttpServletRequest httpServletRequest) {
switch (bar) {
case 1:
httpServletRequest.setAttribute("actApplyList", activityService.findAllActivityApply());
httpServletRequest.setAttribute("bar", 1);
break;
case 2:
httpServletRequest.setAttribute("assApplyList", associationService.findAllAssociationsApply());
httpServletRequest.setAttribute("bar", 2);
break;
}
return "jsp/manage/apply_manage";
}
@RequestMapping("/assApplyPass")
public ModelAndView assApplySuccess(@RequestParam(name = "associationId", required = true) int associationId) {
String createTime = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
associationService.applyPass(createTime,associationId);
associationMemberService.updatePresidentByAssociationId(associationId,associationService.findOwnerIdByAssociationId(associationId));
associationMemberService.updateUserByAssociationId(associationId,associationService.findOwnerIdByAssociationId(associationId));
int bar = 2;
ModelAndView mv = new ModelAndView();
mv.addObject("bar", bar);
mv.setViewName("forward:applyManage");
return mv;
}
@RequestMapping("/assApplyRefuse")
public ModelAndView assApplyRefuse(@RequestParam(name = "associationId", required = true) int associationId) {
associationService.applyRefuse(associationId);
int bar = 2;
ModelAndView mv = new ModelAndView();
mv.addObject("bar", bar);
mv.setViewName("forward:applyManage");
return mv;
}
}以上就是基于Springboot的高校社團(tuán)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Springboot高校社團(tuán)管理系統(tǒng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Maven統(tǒng)一版本管理的實(shí)現(xiàn)
在使用Maven多模塊結(jié)構(gòu)工程時(shí),配置版本是一個(gè)比較頭疼的事,本文主要介紹了Maven統(tǒng)一版本管理的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
Java中關(guān)于String StringBuffer StringBuilder特性深度解析
這篇文章主要介紹了Java中關(guān)于String StringBuffer StringBuilder特性深度解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
利用Java寫一個(gè)學(xué)生管理系統(tǒng)
今天這篇文章就給給大家分享利用Java寫一個(gè)學(xué)生管理系統(tǒng)吧,先寫一個(gè)簡單的用List來實(shí)現(xiàn)學(xué)生管理系統(tǒng):2021-09-09
java時(shí)間戳轉(zhuǎn)日期格式的實(shí)現(xiàn)代碼
本篇文章是對(duì)java時(shí)間戳轉(zhuǎn)日期格式的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Spring Boot加密配置文件特殊內(nèi)容的示例代碼詳解
這篇文章主要介紹了Spring Boot加密配置文件特殊內(nèi)容的相關(guān)知識(shí),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
Java中Easypoi實(shí)現(xiàn)excel多sheet表導(dǎo)入導(dǎo)出功能
這篇文章主要介紹了Java中Easypoi實(shí)現(xiàn)excel多sheet表導(dǎo)入導(dǎo)出功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01

