(免费分享)ssm支教管理系统

角色:超级管理员,系统管理员,支教学校,志愿者

前端:(bootstrap实现)

1、实现支教学校和志愿者的注册模块

1.1 实现支教学校的注册,不能重复注册,一所学校只能注册一次,学校责任人姓名,学校责任人手机号码作为唯一验证,校名,密码,地区(详细地址),学校简介(非必填),上传学校图片作为头像

1.2 实现志愿者的注册,以身份证号和手机号作为唯一性验证,身份证号或者手机号都要检验,上传志愿者图片作为头像

1.3 密码不能为空

2.登录模块

2.1实现支教学校和志愿者登录成功后进入各自的界面,如支教学校管理界面以及志愿者管理界面(两个登录界面入口,一个为支教学校,一个为志愿者,验证码登录)

2、实现支教学校登录后的个人管理界面的功能

支教学校管理界面的功能清单,比如修改资料,发布职位,已发布职位,联系管理员

1.修改资料模块,实现支教学校修改学校资料功能,比如(校名,密码 (原密码,新密码,确认密码),详细地址,学校责任人和学校责任人号码不能修改,需要联系管理员进行修改,学校头像,学校简介等)

2.发布职位模块,实现支教学校发布支教职位的功能,比如支教学校想要什么类型的老师,要多少人,什么时间到学校进行支教,设置多少服务时长,支教学校联系人以及联系方式,以及备注(提供住宿之类的),发布该职位的时间,然后在发布到首页上让志愿者进行报名,

  1. 已发布职位模块,可以修改以及取消已发布的职位信息,显示报名该职位的志愿者,实现支教学校对于志愿者评价的功能(在已发布的列表中,加一个按钮,查看报名信息,会出现一组报名列表。并且在发布的职位列表中,再加一个 结束招聘的 按钮,当结束招聘时,可以给参加招聘的老师,进行评价,在老师的个人中心 我的评价中,直接显示列表,不用做查询。

同时,点击 结束招聘时,要将该职位的 服务时长 ,都加入给报名的老师,服务时长字段中。)

  1. 联系管理员模块,联系后台的管理员,类似于留言功能

    (留言就是两个输入框,一个是留言主题,一个是留言内容,支教学校不需要看到自己的留言,只要管理员看到就可以。)

3、实现志愿者登录后的个人空间管理功能

个人空间管理界面的功能清单,比如修改资料,参与职位,我的评价,我的支教服务时长

1.修改资料模块,实现志愿者修改个人资料功能,比如(姓名,密码 (原密码,新密码,确认密码),个人号码,身份证号,个人头像,个人简介等)

2.参与职位模块,可以进行模糊查询,比如根据学校名称查询,可以显示志愿者参与的支教活动的详细信息,(已经报名参加的)

3我的评价模块(列表展示 支教学校对自己的评价。)

4 我的支教服务时长,显示该志愿者总的支教服务时长

4、实现前端首页的内容展示(未登录以游客身份浏览首页,首页以同类的志愿者网站作为参考即可,访问限制。不能通过修改url直接访问到登录后的管理界面,)

4.1 实现志愿者和支教学校注册登录的入口

4.2 首页轮播图,由后台系统进行更换(图片、链接、简介。点击图片跳转到链接。)

4.3 首页有按最新发布时间的职位信息

4.4 实现志愿者报名支教学校的界面,显示支教学校的基本信息以及该职位的详细信息,未登录用户点击报名提示未登录,不能报名,跳转至登录页面,若登录,参与人数未满,则提示报名成功,否则提示参与人数已满(需要提示志愿者报名成功后,无法取消比如报名后无法取消哦,这样的话)

4.5 实现志愿者搜索职位的功能,根据支教学校,发布职位来查询

4.9首页展示志愿者总服务时长排名,比如前五名服务时长最多的志愿者

(点击某一用户,实现志愿者的基本信息界面,比如志愿者头像,个人简介,以及参与过的支教活动,以及学校对志愿者的评价,总服务时长等,可以给其他志愿者查看

后台:

5、后台管理员的注册登录模块

5.1 实现管理员的注册

(包括:用户名、密码、身份、姓名、手机号,手机号为唯一验证;数据库已存在的用户名不可用:点击注册按钮时提示用户名已存在;,如果输入已注册的用户名则会在用户输入框后提示用户名已存在,请输入其他用户名;,填写符合要求则提示注册成功并且自动跳转到后台管理首页)

5.2 实现已有管理员用户的账号密码登录

(登录错误提示相应信息:如账号不存在或密码错误,登录成功则进入后台管理界面并有相应的登录用户信息显示:如下图)

5.4实现未登录用户的访问限制

(未登录用户无法通过直接修改URL地址访问后台管理界面)

5.5实现已登录管理员用户的注销功能(即退出,点击注销按钮,注销已登录用户,提示用户已注销,并自动跳转到后台登录页面)

5.6实现管理员用户的权限分配(权限分配只能由超级管理员进行操作)

(登录角色有两个:超级管理员和系统管理员,在管理员账号管理方面只由超级管理员进行添加,无法通过注册的系统管理员进行管理员身份获取)

5.7实现管理员个人信息与密码的修改功能(管理员账号(即用户名)信息无法修改,类似下图

6、实现后台数据管理模块

6.1管理员用户管理模块{增(通过注册的管理员是系统管理员权限,无法进行添加、删除超级管理员等操作)删改}

6.2角色管理模块(只能由超级管理员进行权限分配操作,类似下图)

6.3志愿者信息管理模块(与前端志愿者个人空间管理相关联的表)

志愿者信息管理(修改,删除,根据名称查询,)

6.4支教学校信息管理(与前端支教学校个人管理相关联的表)

  支教学校信息管理 (删除,修改,根据名称查询)

7、实现数据库统计查询模块功能

在后台首页 显示:注册学校数量,注册老师数量,注册管理员数量。职位发布数量。

8.职位管理(对职位增删该查,支教管理员发布职位的时候,下拉框选择)

9、实现后台数据表的导入导出功能模块

实现管理员的导入,导入不做校验,在6.3 和6.4 的志愿者和 支教信息管理里面,加两个导出按钮,分别导出,志愿者和 支教信息管理的数据。
![在这里插入图片描述](https://img-blog.csdnimg.cn/d3fcd2a78dc34825a8050ff358150e23.png#pic_center)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package com.sys.lawyer.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sys.lawyer.base.BaseController;
import com.sys.lawyer.po.Evaluate;
import com.sys.lawyer.po.Message;
import com.sys.lawyer.po.Releases;
import com.sys.lawyer.po.Users;
import com.sys.lawyer.service.*;
import com.sys.lawyer.utils.Pager;
import com.sys.lawyer.vo.EvaluateVo;
import jdk.nashorn.internal.ir.IfNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;


@Controller
@RequestMapping("/message")
public class MessageController extends BaseController {
	
	
	/**
	 * 依赖注入 start dao/service/===
	 */
	@Autowired
	private UsersService usersService;
	@Autowired
	private EvaluateService evaluateService;
	@Autowired
	private MessageService messageService;

	@RequestMapping(value = "listAll.json")
	@ResponseBody
	public String listAll(Integer userId, Integer pageIndex, Integer pageSize) {
		Message message = new Message();
		message.setUserId(userId);
//		Pager<Message> pagers = messageService.findByEntity(message);
		PageHelper.startPage(notEmpty(pageIndex) ? pageIndex : 0, 15);
		PageInfo<Message> page = new PageInfo<>(messageService.listAllByEntity(message));
		for (Message m : page.getList()){
			m.setUsers(usersService.getById(m.getUserId()));
		}
		JSONObject jsonObject = new JSONObject();
		jsonObject.put("page", page);
		return jsonObject.toJSONString();
	}

	@RequestMapping(value = "userlist.json")
	@ResponseBody
	public String userlist(Users users) {
		users.setIsDelete(0);
		List<Users> list = usersService.listAllByEntity(users);
		JSONObject jsonObject = new JSONObject();
		jsonObject.put("list", list);
		return jsonObject.toJSONString();
	}

	@RequestMapping(value = "list.do")
	public String list(Model model) {
		return "message/list";
	}

	@RequestMapping(value = "delete.json")
	@ResponseBody
	public String delete(Integer id) {
		Users users = usersService.getUser();
		JSONObject jsonObject = new JSONObject();
		if (users.getRole() == 0 || users.getRole() == 1){
			messageService.deleteById(id);
			jsonObject.put("flag", true);
			jsonObject.put("message", "删除成功");
		} else {
			jsonObject.put("flag", false);
			jsonObject.put("message", "本账号无权限删除操作");
		}
		return jsonObject.toJSONString();
	}
}

package com.sys.lawyer.controller;

import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.sys.lawyer.base.BaseController;
import com.sys.lawyer.po.Releases;
import com.sys.lawyer.po.Users;
import com.sys.lawyer.service.UsersService;
import com.sys.lawyer.utils.Base64Img;
import com.sys.lawyer.utils.Pager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;

@Controller
@RequestMapping(“/users”)
public class UsersController extends BaseController {

/**
 * 依赖注入 start dao/service/===
 */
@Autowired
private UsersService usersService;

/**
 * 【不分页 => 查询列表 => 无条件】
* @Title: listAll 
* @Description: TODO(这里用一句话描述这个方法的作用) 
* @param @return 设定文件 
* @author
* @return String 返回类型 
* @throws
 */
@RequestMapping(value = "/listAll.json")
@ResponseBody
public String listAll(Users users, Integer pageIndex){
	PageHelper.startPage(notEmpty(pageIndex) ? pageIndex : 0, 15);
	Pager<Users> pagers = usersService.findByEntity(users);
	JSONObject jsonObject = new JSONObject();
	jsonObject.put("page", pagers);
	return jsonObject.toJSONString();
}

@RequestMapping(value = "getUser.json")
@ResponseBody
public String getUser(){
	JSONObject jsonObject = new JSONObject();
	if (notEmpty(usersService.getUser())){
		jsonObject.put("user", false);
	} else {
		jsonObject.put("user", false);
	}
	return jsonObject.toJSONString();
}

@RequestMapping(value = "list.do")
public String list(Integer role, Model model){
	model.addAttribute("role", role);
	model.addAttribute("user", new JSONObject().toJSONString(usersService.getUser()));
	return "users/list";
}

/**
 *  【不分页=》查询列表=>有条件】
* @Title: listByEntity 
* @Description: TODO(这里用一句话描述这个方法的作用) 
* @param @return 设定文件 
* @author
* @return String 返回类型 
* @throws
 */
@RequestMapping(value = "/listByEntity")
public String listByEntity(Users users, Model model, HttpServletRequest request, HttpServletResponse response){
	List<Users> listAll = usersService.listAllByEntity(users);
	model.addAttribute("list", listAll);
	return "users/list";
}

@RequestMapping(value = "edit.do")
@ResponseBody
public String edit(Users users){
	Users users1 = usersService.getByEntity(users);
	JSONObject jsonObject = new JSONObject();
	jsonObject.put("bean", users1);
	return jsonObject.toJSONString();
}

@RequestMapping(value = "grxx.do")
@ResponseBody
public String grxx(){
	Users users1 = usersService.getUser();
	JSONObject jsonObject = new JSONObject();
	jsonObject.put("bean", users1);
	return jsonObject.toJSONString();
}

/**
 * 分页查询 返回list对象(通过对象)
 *
 * @return
 */
@RequestMapping(value = "/findByObj")
public String findByObj(Users users, Model model) {
	//分页查询
	Pager<Users> pagers = usersService.findByEntity(users);
	model.addAttribute("pagers", pagers);
	//存储查询条件
	model.addAttribute("bean", users);
	return "users/list";
}

/**
 * 跳至添加页面
 * @return
 */
@RequestMapping(value = "/add")
public String add() {
	return "users/addexcl";
}

@RequestMapping(value = "/zc")
public String zc() {
	return "users/add";
}

@RequestMapping(value = "importExcl.do")
public String importExcl() {
	return "users/addexcl";
}

@RequestMapping(value = "/importsave.json")
@ResponseBody
public String importsave(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request) {
	JSONObject jsonObject = new JSONObject();
	boolean flag = false;
	if (notEmpty(file)){
		flag = usersService.importsave(file);
	}
	jsonObject.put("message", flag ? "提交成功" : "登录名重复或其他数据异常");
	jsonObject.put("flag", flag);
	return jsonObject.toJSONString();
}

@RequestMapping(value = "/reportExcl.do")
public void reportExcl(Users users, HttpServletResponse response) {
	usersService.reportExcl(users, response);
}

/**
 * 添加执行
 * @return
 */
@RequestMapping(value = "/exAdd")
public String exAdd(Users users, @RequestParam(value = "file", required = false) MultipartFile file, String openid) throws IOException {
	if (file.getSize() > 0){
		String str = Base64Img.getImgStr(file.getInputStream());
		String type = file.getContentType();
		users.setPhoto("data:" + type + ";base64," + str);
	}
	usersService.insert(users);
	return "redirect:/users/findByObj";
}

@RequestMapping(value = "/update.json")
@ResponseBody
public String update(Users users, @RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request) {
	JSONObject jsonObject = new JSONObject();
	Users user = usersService.getUser();
	Users users1 = usersService.getById(user.getId());
	if (user.getRole() == 1 || user.getRole() == 0){
		if (notEmpty(users)){
			if (notEmpty(users.getId())){
				if (notEmpty(file)){
					users.setPhoto("/resource/upload/" + saveFile(file, request));
				}
				users.setIsDelete(0);
				usersService.updateById(users);
				if (user.getId() == users.getId()){
					request.getSession().setAttribute("user", usersService.getById(users.getId()));
				}
			}
			jsonObject.put("message", "提交成功");
			jsonObject.put("flag", true);
		}
	} else if ((user.getRole() > 1) || (notEmpty(users1) && user.getRole() == 1 && users1.getRole() == 0)){
		jsonObject.put("message", "权限不足");
		jsonObject.put("flag", false);
	}
	return jsonObject.toJSONString();
}

@RequestMapping(value = "/updateGrxx.json")
@ResponseBody
public String updateGrxx(Users users, @RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request) {
	JSONObject jsonObject = new JSONObject();
	if (notEmpty(users)){
		if (notEmpty(users.getId())){
			if (notEmpty(file)){
				users.setPhoto("/resource/upload/" + saveFile(file, request));
			}
			users.setIsDelete(0);
			usersService.updateById(users);
			request.getSession().setAttribute("user", usersService.getById(users.getId()));
		}
		jsonObject.put("message", "修改成功");
		jsonObject.put("flag", true);
	}
	return jsonObject.toJSONString();
}

@RequestMapping(value = "/save.json")
@ResponseBody
public String save(Users users, @RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request) {
	JSONObject jsonObject = new JSONObject();
	Users user = usersService.getUser();
	Users users1 = new Users();
	if (user.getRole() == 1 || user.getRole() == 0){
		if (notEmpty(users)){
			users1.setName(users.getName());
			users1 = usersService.getByEntity(users1);
			if (notEmpty(users1)){
				jsonObject.put("message", "登录名重复");
				jsonObject.put("flag", false);
			} else {
				users.setPhoto("/resource/upload/" + saveFile(file, request));
				users.setIsDelete(0);
				if (notEmpty(users.getId())){
					usersService.update(users);
				} else {
					usersService.insert(users);
				}

// request.getSession().setAttribute(“user”, users);
jsonObject.put(“message”, “提交成功”);
jsonObject.put(“flag”, true);
}
}
} else {
jsonObject.put(“message”, “权限不足”);
jsonObject.put(“flag”, false);
}
return jsonObject.toJSONString();
}

/**
 * 删除通过主键
 * @return
 */
@RequestMapping(value = "delete.json")
@ResponseBody
public String delete(Integer id) {
	Users users = usersService.getUser();
	Users users2 = usersService.getById(id);
	JSONObject jsonObject = new JSONObject();
	if (users.getRole() == 0 || users.getRole() == 1){
		if (users.getId() == id){
			jsonObject.put("flag", false);
			jsonObject.put("message", "不能删除自己");
		} else if (users.getRole() ==1 && users2.getRole() == 0){
			jsonObject.put("flag", false);
			jsonObject.put("message", "不能删除超级管理员");
		} else {
			usersService.deleteById(id);
			jsonObject.put("flag", true);
			jsonObject.put("message", "删除成功");
		}
	} else {
		jsonObject.put("flag", false);
		jsonObject.put("message", "本账号无权限删除用户");
	}
	return jsonObject.toJSONString();
}

@RequestMapping(value = "sh.json")
@ResponseBody
public String sh(Integer id) {
	JSONObject jsonObject = new JSONObject();
	Users users = usersService.getById(id);
	users.setIsSh(1);
	usersService.updateById(users);
	jsonObject.put("flag", true);
	jsonObject.put("message", "审核成功");
	return jsonObject.toJSONString();
}

/**
 * 【不分页 => 查询列表 => 无条件】
* @Title: listAll 
* @Description: TODO(这里用一句话描述这个方法的作用) 
* @param @return 设定文件 
* @author
* @return String 返回类型 
* @throws
 */
@RequestMapping(value = "/listAllJson", method = RequestMethod.POST)
@ResponseBody
public String listAllJson(Users users, HttpServletRequest request, HttpServletResponse response){
	List<Users> listAll = usersService.listAll();
	JSONObject jsonObject = new JSONObject();
	jsonObject.put("list", listAll);
	jsonObject.put("obj", users);
	return jsonObject.toString();
}

/**
 * ajax 添加
 * @param 
 * @return
 */
@RequestMapping(value = "/exAddJson", method = RequestMethod.POST)
@ResponseBody
public String exAddJson(Users users, HttpServletRequest request, HttpServletResponse response) {
	usersService.insert(users);
	JSONObject jsonObject = new JSONObject();
	jsonObject.put("message", "添加成功");
	return jsonObject.toString();
}


/**
 * ajax 修改
 * @param 
 * @return
 */
@RequestMapping(value = "/exUpdate.json", method = RequestMethod.POST)
@ResponseBody
public String exUpdateJson(Users users, Model model, HttpServletRequest request, HttpServletResponse response) {
	//1.通过实体类修改,可以多传修改条件
	usersService.update(users);
	//2.通过主键id修改
	//usersService.updateById(users);
	JSONObject jsonObject = new JSONObject();
	jsonObject.put("message", "修改成功");
	return jsonObject.toString();
}


@RequestMapping(value = "loginOut.do")
public String loginOut(HttpServletRequest request){
	request.getSession().removeAttribute("user");
	return "redirect:/web/index.do";
}

public String saveFile(@RequestParam(value = "file", required = false) MultipartFile files, HttpServletRequest request) {
	String filePath = "";
	String fileNmae = "";
	if (notEmpty(files)) {
		int pre = (int) System.currentTimeMillis();
		try {
			filePath = request.getRealPath("/resource/upload/");
			File f = new File(filePath);
			if (!f.exists()) {
				f.mkdirs();
			}
			fileNmae = pre + files.getOriginalFilename().replaceAll(" ", "").replace("(", "").replace(")", "");
			File file = new File(filePath + fileNmae);
			if (!file.exists()) {
				file.createNewFile();
			}
			files.transferTo(file);
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("上传出错");
		}
	}
	return fileNmae;
}

}

获取完整源码:
大家点赞、收藏、关注、评论啦 、查看 👇🏻 👇🏻 👇🏻微信公众号获取联系 👇🏻 👇🏻 👇🏻
免费领取下载链接-公众号输入口令:045

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值