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

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

前端:(bootstrap实现)

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

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

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

1.3 密码不能为空

2.登录模块

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

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

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

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

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

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

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

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

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

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 的志愿者和 支教信息管理里面,加两个导出按钮,分别导出,志愿者和 支教信息管理的数据。

前端截图:

 

 

后台截图:

 

 

 

 

 

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.sys.lawyer.base.BaseController;
import com.sys.lawyer.po.Apply;
import com.sys.lawyer.po.Releases;
import com.sys.lawyer.po.Users;
import com.sys.lawyer.service.ApplyService;
import com.sys.lawyer.service.ReleasesService;
import com.sys.lawyer.service.TypeService;
import com.sys.lawyer.service.UsersService;
import com.sys.lawyer.utils.Pager;
import com.sys.lawyer.vo.ApplyVo;
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.ResponseBody;

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



@Controller
@RequestMapping("apply")
public class ApplyController extends BaseController {


    /**
     * 依赖注入 start dao/service/===
     */
    @Autowired
    private UsersService usersService;
    @Autowired
    private ReleasesService releasesService;
    @Autowired
    private ApplyService applyService;
    @Autowired
    private TypeService typeService;


    @RequestMapping(value = "ybmlist.json")
    @ResponseBody
    public String ybmlist(Apply apply, Integer pageIndex, Integer pageSize) {
        JSONObject jsonObject = new JSONObject();
        Users users = usersService.getUser();
        if (empty(users)) {
            jsonObject.put("flag", false);
            jsonObject.put("message", "请登录");
        } else {
            PageHelper.startPage(notEmpty(pageIndex) ? pageIndex : 0, 15);
            Pager<Apply> pagers = applyService.findByEntity(apply);
            List<Apply> list = pagers.getDatas();
            List<Releases> releases1 = releasesService.listAll();
            List<Apply> list2 = new ArrayList<>();
            for (Apply app : list) {
                for (Releases releases2 : releases1) {
                    if (releases2.getId() == app.getReleaseId()) {
                        String name = typeService.getById(releases2.getTypeId()).getName();
                        app.setTypeName(name);
                        app.setSbrName(usersService.getById(app.getSqr()).getRealName());
                        app.setReleases(releases2);
                        list2.add(app);
                    }
                }
            }
            jsonObject.put("list", list2);
            jsonObject.put("page", pagers);
        }

        return JSON.toJSONStringWithDateFormat(jsonObject, "yyyy-MM-dd HH:mm:ss", SerializerFeature.DisableCircularReferenceDetect);
    }

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

    @RequestMapping(value = "isSh.json")
    @ResponseBody
    public String isSh(Integer id) {
        Apply apply = applyService.getById(id);
        Releases releases = releasesService.getById(apply.getReleaseId());
        apply.setIsDelete(1);
        applyService.updateById(apply);
        releases.setSyrs(releases.getSyrs() - 1);
        releasesService.updateById(releases);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("flag", true);
        jsonObject.put("message", "审核成功");
        return jsonObject.toJSONString();
    }

    @RequestMapping(value = "isDsj.json")
    @ResponseBody
    public String isDsj(Integer usersId) {
        Apply apply = new Apply();
        apply.setSqr(usersId);
        apply.setIsDelete(1);
        List<Apply> list = applyService.listAllByEntity(apply);
        List<ApplyVo> applyVos = new ArrayList<>();
        for (Apply apply1 : list){
            ApplyVo applyVo = new ApplyVo();
            applyVo.setApply(apply1);
            applyVo.setUsers(usersService.getById(apply1.getSqr()));
            Releases releases = releasesService.getById(apply1.getReleaseId());
            applyVo.setReleases(releases);
            applyVo.setZjr(usersService.getById(releases.getUsersId()));
            applyVo.setType(typeService.getById(releases.getTypeId()));
            applyVos.add(applyVo);
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("flag", true);
        jsonObject.put("message", "审核成功");
        jsonObject.put("list", applyVos);
        return JSON.toJSONStringWithDateFormat(jsonObject, "yyyy-MM-dd HH:mm:ss", SerializerFeature.DisableCircularReferenceDetect);
    }

    @RequestMapping(value = "isDsjlist.do")
    public String isDsjlist() {
        return "apply/sjlist";
    }
}

 

package com.sys.lawyer.controller;

import com.alibaba.fastjson.JSONObject;
import com.sys.lawyer.base.BaseController;
import com.sys.lawyer.po.Releases;
import com.sys.lawyer.po.Users;
import com.sys.lawyer.service.ReleasesService;
import com.sys.lawyer.service.UsersService;
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.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@Controller
@RequestMapping("/")
public class LoginController extends BaseController {


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


    /**
     *  【不分页=》查询列表=>有条件】
    * @Title: listByEntity
    * @Description: TODO(这里用一句话描述这个方法的作用)
    * @param @return 设定文件
    * @author
    * @return String 返回类型
    * @throws
     */

    private static Map<String, String> map = new HashMap<>();


    @RequestMapping(value = "/login.json", method = RequestMethod.POST)
    @ResponseBody
    public String login(Users users, String captcha, HttpServletRequest request) {
        JSONObject jsonObject = new JSONObject();
        String code = (String) request.getSession().getAttribute("randomString");
        if (empty(captcha) || !code.toLowerCase().equals(captcha.toLowerCase())) {
            jsonObject.put("message", "验证码错误");
            jsonObject.put("flag", false);
            return jsonObject.toJSONString();
        }

        if (notEmpty(users)) {
            users.setPhone(null);
            Users users1 = usersService.getByEntity(users);
            if (notEmpty(users1)) {
                if (users1.getRole() > 1){
                    jsonObject.put("message", "权限不足不能登录后台管理");
                    jsonObject.put("flag", false);
                    return jsonObject.toJSONString();
                }
                jsonObject.put("flag", true);
                jsonObject.put("message", "登录成功");
                request.getSession().setAttribute("user", users1);
            } else {
                jsonObject.put("message", "用户信息错误");
            }
        }
        return jsonObject.toJSONString();
    }

    @RequestMapping(value = "indexs.do")
    public String indexs(){
        Users users = usersService.getUser();
        if (empty(users)){
            return "login";
        }
        return "indexs";
    }

    @RequestMapping(value = "/")
    public String toLogin(){
        Users users = usersService.getUser();
        if (empty(users)){
            return "login";
        }
        return "indexs";
    }

    @RequestMapping(value = "open.do")
    public String open(Model model){
        Users users = usersService.getUser();
        if (empty(users)){
            return "login";
        }
        Users users1 = new Users();
        users1.setIsDelete(0);
        List<Users> usersList = usersService.listAllByEntity(users1);
        List<Releases> releasesList = releasesService.listAll();
        Integer xx = 0;
        Integer ls = 0;
        Integer gly = 0;
        for (Users u : usersList){
            if (u.getRole() == 0 || u.getRole() == 1){
                gly += 1;
            } else if (u.getRole() == 3){
                ls += 1;
            } else if (u.getRole() == 2){
                xx += 1;
            }
        }
        model.addAttribute("gly", gly);
        model.addAttribute("xx", xx);
        model.addAttribute("ls", ls);
        model.addAttribute("zw", releasesList.size());
        return "open";
    }

    @RequestMapping(value = "/login.do")
    public String login(){
        Users users = usersService.getUser();
        if (empty(users)){
            return "login";
        }
        return "indexs";
    }

    @RequestMapping(value = "loginOut")
    public String loginOut(HttpServletRequest request){
        request.getSession().removeAttribute("user");
        return "login";
    }
}
 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT教程资源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值