基于Springboot实现留守儿童管理系统

简介: 基于Springboot实现留守儿童管理系统

项目编号:BS-XX-149

一,项目简介


本项目基于Springboot+Mybatis开发实现一个儿童留守管理系统,主要为农村留守儿童做一个保障,进行关爱和关心。系统的用户主要有两个角色:管理员和社区工作人员

管理员:

  1. 管理员管理
  2. 留守儿童管理
  3. 社区工作人员管理
  4. 审核管理:人员注册审核、账户注销审核、删除儿童信息审核 审核结果发送到人员注册时的邮箱中
  5. 信息反馈
  6. 系统公告管理
  1. 信息反馈管理
  2. 信息统计

社区工作人员:

  1. 账户注册
  2. 留守儿童管理
  3. 信息反馈
  4. 信息统计

二,环境介绍


语言环境:Java:  jdk1.8


数据库:Mysql: mysql5.7


应用服务器:Tomcat:  tomcat8.5.31


开发工具:IDEA或eclipse


后台开发技术:Springboot+Mybatis   邮件发送通知


前台开发技术:BootStrap+Jquery+Echart

三,系统展示


管理员

image.png

首页统计及公告查看

image.png

管理员管理

image.png

留守儿童管理

image.png

社区工作人员管理

image.png

注册审核

image.png

账户注销审核

image.png

删除儿童审核

image.png

系统公告

image.png

信息反馈管理

image.png

社区工作人员

image.png

登陆管理首页

image.png

留守儿童管理

image.png

信息反馈

image.png

个人中心

image.png

账户管理

image.png

四,核心代码展示


package com.wj2y.lbcmsystem.controller;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.wj2y.lbcmsystem.mapper.RoleMapper;
import com.wj2y.lbcmsystem.mapper.UserMapper;
import com.wj2y.lbcmsystem.pojo.Role;
import com.wj2y.lbcmsystem.pojo.User;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.lang.reflect.Array;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * @author wj2y
 * @date 2022-01-06 15:49
 * @Version 1.0
 */
@Controller
public class AdminController {
    @Autowired
    UserMapper userMapper;
    @Autowired
    RoleMapper roleMapper;
    @RequestMapping("/adminList")
    public String adminList(Model model,@RequestParam(defaultValue = "1") Integer startPage,
                            @RequestParam(defaultValue = "10") Integer pageSize){
        PageHelper.startPage(startPage, pageSize);
        List<User> users = userMapper.queryUserList();
        PageInfo<User> usersPageInfo = new PageInfo<>(users);
        model.addAttribute("usersPageInfo", usersPageInfo);
        model.addAttribute("users",users);
        return "admin/adminList";
    }
    @RequestMapping("/searchUser")
    public String searchUser(String userName, Model model, @RequestParam(defaultValue = "1") Integer startPage,
                             @RequestParam(defaultValue = "10") Integer pageSize, HttpSession session){
        PageHelper.startPage(startPage, pageSize);
        List<User> users = userMapper.queryListUserByUserName(userName);
        PageInfo<User> usersPageInfo = new PageInfo<>(users);
        session.setAttribute("userName",userName);
        model.addAttribute("usersPageInfo", usersPageInfo);
        model.addAttribute("users",users);
        return "admin/adminSearchList";
    }
    @RequestMapping("/toAdminAdd")
    public String toAdminAdd(){
        return "admin/adminAdd";
    }
    @RequestMapping("/adminAdd")
    @ResponseBody
    public String adminAdd(String name, String username, String password,  String email, String tel, String role) {
        String msg = "";
        User user1 = userMapper.queryUserByUserName(username.replace(" ",""));
        if (StringUtils.isBlank(username) || username.equals("")){
            msg = "请输入用户名";
            return msg;
        }
        if (StringUtils.isBlank(name) || name.equals("")){
            msg = "请输入姓名";
            return msg;
        }
        if (StringUtils.isBlank(password) || password.equals("")){
            msg = "请输入密码";
            return msg;
        }
        if (StringUtils.isBlank(email) || email.equals("")){
            msg = "请输入邮箱";
            return msg;
        }
        if (StringUtils.isBlank(tel) || tel.equals("")){
            msg = "请输入电话号码";
            return msg;
        }
        if (user1 != null && !username.equals("")){
            msg = "用户名已存在,请重新输入";
            return msg;
        }
        String regEx4 = "^[A-Za-z0-9]+$";
        if (!username.matches(regEx4)){
            msg = "用户名只能由字母和数字组成";
            return msg;
        }
        String regEx3 = "^[\u4e00-\u9fa5]{0,6}$";
        if (!name.matches(regEx3)){
            msg = "姓名只能由汉字组成";
            return msg;
        }
        String regEx2 = "^[A-Za-z0-9]+$";
        if (!password.matches(regEx2)){
            msg = "密码只能由数字和字母组成";
            return msg;
        }
        String regEx1 = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
        Pattern p = Pattern.compile(regEx1);
        Matcher m = p.matcher(email);
        if (!m.matches() && !email.equals("")){
            msg = "邮箱格式错误,请重新输入";
            return msg;
        }
        String REG_EXP = "^([0-9]{3}-?[0-9]{8}|[0-9]{4}-?[0-9]{7})$";
        if (!tel.matches(REG_EXP) && !tel.equals("")){
            msg = "手机号码错误,请重新输入";
            return msg;
        }
        else {
            msg = "OK";
            User user = new User();
            user.setName(name.replace(" ",""));
            user.setUserName(username.replace(" ",""));
            user.setPassWord(password);
            user.setRole(role);
            user.setEmail(email);
            user.setTel(tel);
            SimpleDateFormat sft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date createTime = new Date();
            String time = sft.format(createTime);
            user.setCreateTime(time);
            //管理员添加账号直接通过审核 状态码设置为 1
            String examineStatus = "1";
            user.setExamineStatus(examineStatus);
            userMapper.addUser(user);
            return msg;
        }
    }
    @RequestMapping("/toAdminEdit/{id}")
    public String toAdminEdit(@PathVariable("id") Integer id, Model model){
        User user = userMapper.queryUserById(id);
        List<Role> roles = roleMapper.queryAll();
        model.addAttribute("roles",roles);
        model.addAttribute("user",user);
        return "admin/adminEdit";
    }
    @RequestMapping("/adminEdit")
    @ResponseBody
    public String adminEdit(Integer id, String name, String passWord,
                             String email, String tel, String role){
        String msg = "";
        if (StringUtils.isBlank(name) || name.equals("")){
            msg = "请输入姓名";
            return msg;
        }
        if (StringUtils.isBlank(passWord) || passWord.equals("")){
            msg = "请输入密码";
            return msg;
        }
        if (StringUtils.isBlank(email) || email.equals("")){
            msg = "请输入邮箱";
            return msg;
        }
        if (StringUtils.isBlank(tel) || tel.equals("")){
            msg = "请输入电话号码";
            return msg;
        }
        String regEx3 = "^[\u4e00-\u9fa5]{0,6}$";
        if (!name.matches(regEx3)){
            msg = "姓名只能由汉字组成";
            return msg;
        }
        String regEx2 = "^[A-Za-z0-9]+$";
        if (!passWord.matches(regEx2)){
            msg = "密码只能由数字和字母组成";
            return msg;
        }
        String regEx1 = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
        Pattern p = Pattern.compile(regEx1);
        Matcher m = p.matcher(email);
        if (!m.matches() && !email.equals("")){
            msg = "邮箱格式错误,请重新输入";
            return msg;
        }
        String REG_EXP = "^([0-9]{3}-?[0-9]{8}|[0-9]{4}-?[0-9]{7})$";
        if (!tel.matches(REG_EXP) && !tel.equals("")){
            msg = "手机号码错误,请重新输入";
            return msg;
        }
        else {
            userMapper.updateUserById(id,name,passWord,email,tel,role);
            msg = "OK";
            return msg;
        }
    }
    @RequestMapping("/adminDelete")
    @ResponseBody
    public String adminDelete(Integer id, Model model){
        String msg = "";
        try {
            userMapper.delUserById(id);
            msg = "OK";
            return msg;
        }catch (Exception e){
            msg = "删除失败";
            return msg;
        }
    }
    @RequestMapping("/enableUser")
    @ResponseBody
    public String enableUser( Integer id, Model model){
        String msg = "";
        try {
            userMapper.enableUserById(id);
            msg = "OK";
            return msg;
        }catch (Exception e){
            msg = "启用失败";
            return msg;
        }
    }
    @RequestMapping("/disableUser")
    @ResponseBody
    public String disableUser( Integer id, Model model){
        String msg = "";
        try {
            userMapper.disableUserById(id);
            msg = "OK";
            return msg;
        }catch (Exception e){
            msg = "禁用失败";
            return msg;
        }
    }
    //初始化密码
    @RequestMapping("/initializePwd")
    @ResponseBody
    public String initializePwd( Integer id, Model model){
        String msg = "";
        try {
            userMapper.initializePwdById(id);
            msg = "OK";
            return msg;
        }catch (Exception e){
            msg = "删除失败";
            return msg;
        }
    }
}
package com.wj2y.lbcmsystem.controller;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.wj2y.lbcmsystem.mapper.ChildrenMapper;
import com.wj2y.lbcmsystem.mapper.ExamineMapper;
import com.wj2y.lbcmsystem.mapper.UserMapper;
import com.wj2y.lbcmsystem.pojo.Children;
import com.wj2y.lbcmsystem.pojo.Delchildren;
import com.wj2y.lbcmsystem.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpSession;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
 * @author znz
 * @date 2022-01-07 15:00
 * @Version 1.0
 */
@Controller
public class ChildrenController {
    @Autowired
    ChildrenMapper childrenMapper;
    @Autowired
    UserMapper userMapper;
    @Autowired
    ExamineMapper examineMapper;
    @RequestMapping("/childrenList")
    public String childrenList(Model model, @RequestParam(defaultValue = "1") Integer startPage,
                               @RequestParam(defaultValue = "10") Integer pageSize){
        PageHelper.startPage(startPage, pageSize);
        List<Children> childrens = childrenMapper.queryChildrenList();
        PageInfo<Children> childrensPageInfo = new PageInfo<>(childrens);
        model.addAttribute("childrensPageInfo", childrensPageInfo);
        model.addAttribute("childrens",childrens);
        return "children/childrenList";
    }
    @RequestMapping("/searchChildren")
    public String searchChildren(Model model, @RequestParam(defaultValue = "1") Integer startPage,
                                 @RequestParam(defaultValue = "10") Integer pageSize, String name, HttpSession session){
        PageHelper.startPage(startPage, pageSize);
        List<Children> childrens = childrenMapper.queryListChildrenByName(name);
        PageInfo<Children> childrensPageInfo = new PageInfo<>(childrens);
        session.setAttribute("name",name);
        model.addAttribute("childrensPageInfo", childrensPageInfo);
        model.addAttribute("childrens",childrens);
        return "children/childrenSearchList";
    }
    @RequestMapping("/childrenRecentlyList")
    public String childrenRecentlyList(){
        return "children/childrenRecentlyList";
    }
    @RequestMapping("/toChildrenAdd")
    public String tochildrenAdd(){
        return "children/childrenAdd";
    }
    @RequestMapping("/childrenAdd")
    @ResponseBody
    public String childrenAdd(Children children) {
        String msg = "";
        SimpleDateFormat sft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date createTime = new Date();
        String time = sft.format(createTime);
        children.setCreateTime(time);
        children.setDeleteStatus(0);
        try {
            childrenMapper.addChildren(children);
            msg = "OK";
            return msg;
        }catch (Exception e){
            msg = "新增失败";
            return msg;
        }
    }
    @RequestMapping("/childrenLookInfo/{id}")
    public String childrenLookInfo(@PathVariable("id") Integer id, Model model){
        Children children = childrenMapper.queryChildrenById(id);
        model.addAttribute("children",children);
        return "children/childrenLookInfo";
    }
    @RequestMapping("/toChildrenEdit/{id}")
    public String toChildrenEdit(@PathVariable("id") Integer id, Model model){
        Children children = childrenMapper.queryChildrenById(id);
        model.addAttribute("children",children);
        return "children/childrenEdit";
    }
    @RequestMapping("/childrenEdit")
    @ResponseBody
    public String childrenEdit(String name,Integer id,Integer age,String phone,String birthday,String school,String address,
                               String guardian,String guardianPhone,String healthCondition,Integer health
            ,Integer familyStatus){
        String msg = "";
        try{
            childrenMapper.updateChildrenById(id,name, phone,birthday, age,school, address
                    ,guardian, guardianPhone,healthCondition, health,familyStatus);
            msg = "OK";
            return msg;
        }catch (Exception e){
            System.out.println(e);
            msg = "修改失败";
            return msg;
        }
    }
    @RequestMapping("/childrenDelete")
    @ResponseBody
    public String childrenDelete(Integer id, Model model, String examineUser, Delchildren delchildren,String reason){
        String msg = "";
        try {
            User user = userMapper.queryUserByUserName(examineUser);
            Children children = childrenMapper.queryChildrenById(id);
            //工作人员删除 需要提交给管理员审核
            if (user.getRole().equals("1")){
                Integer deleteStatus = 2;//将删除状态码修改成 2   提交给管理员审核
                childrenMapper.delChildrenById(id,deleteStatus);
                Delchildren delchildren1 = examineMapper.queryDelChildren(id);
                if (delchildren1 != null){
                    msg = "该儿童信息已提交删除申请,请勿重复操作!";
                    return msg;
                }else {
                    delchildren.setDelUser(examineUser);
                    delchildren.setId(children.getId());
                    delchildren.setName(children.getName());
                    delchildren.setPhone(children.getPhone());
                    delchildren.setBirthday(children.getBirthday());
                    delchildren.setAge(children.getAge());
                    delchildren.setSchool(children.getSchool());
                    delchildren.setAddress(children.getAddress());
                    delchildren.setGuardian(children.getGuardian());
                    delchildren.setGuardianPhone(children.getGuardianPhone());
                    delchildren.setHealth(children.getHealth());
                    delchildren.setHealthCondition(children.getHealthCondition());
                    delchildren.setFamilyStatus(children.getFamilyStatus());
                    delchildren.setDeleteStatus(2);
                    delchildren.setReason(reason);
                    SimpleDateFormat sft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    Date createTime = new Date();
                    String time = sft.format(createTime);
                    delchildren.setCreateTime(time);
                    examineMapper.addDelChildren(delchildren);
                    msg = "OK";
                    return msg;
                }
            }else {
                Integer deleteStatus = 1;
                childrenMapper.delChildrenById(id,deleteStatus);
                msg = "OK";
                return msg;
            }
        }catch (Exception e){
            msg = "删除失败";
            return msg;
        }
    }
}

五,项目总结


信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对社区留守儿童帮扶系统等问题,对留守儿童帮扶进行研究分析,然后开发设计出社区留守儿童帮扶系统 以解决问题。


社区留守儿童帮扶系统主要功能模块包括用户管理、留守儿童、帮扶活动、捐献记录、机构捐献,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取MySQL作为后台数据的主要存储单元,采用springboot框架、Java技术、Ajax技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对社区留守儿童帮扶系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现社区留守儿童帮扶系统和部署运行使用它。

相关文章
|
2月前
|
XML Java 数据库连接
SpringBoot集成Flowable:打造强大的工作流管理系统
在企业级应用开发中,工作流管理是一个核心组件,它能够帮助我们定义、执行和管理业务流程。Flowable是一个开源的工作流和业务流程管理(BPM)平台,它提供了强大的工作流引擎和建模工具。结合SpringBoot,我们可以快速构建一个高效、灵活的工作流管理系统。本文将探讨如何将Flowable集成到SpringBoot应用中,并展示其强大的功能。
351 1
|
2月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
3月前
|
存储 安全 Java
打造智能合同管理系统:SpringBoot与电子签章的完美融合
【10月更文挑战第7天】 在数字化转型的浪潮中,电子合同管理系统因其高效、环保和安全的特点,正逐渐成为企业合同管理的新宠。本文将分享如何利用SpringBoot框架实现一个集电子文件签字与合同管理于一体的智能系统,探索技术如何助力合同管理的现代化。
137 4
|
3月前
|
前端开发 Java Apache
SpringBoot实现电子文件签字+合同系统!
【10月更文挑战第15天】 在现代企业运营中,合同管理和电子文件签字成为了日常活动中不可或缺的一部分。随着技术的发展,电子合同系统因其高效性、安全性和环保性,逐渐取代了传统的纸质合同。本文将详细介绍如何使用SpringBoot框架实现一个电子文件签字和合同管理系统。
137 1
|
4月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
242 3
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
|
3月前
|
文字识别 安全 Java
SpringBoot3.x和OCR构建车牌识别系统
本文介绍了一个基于Java SpringBoot3.x框架的车牌识别系统,详细阐述了系统的设计目标、需求分析及其实现过程。利用Tesseract OCR库和OpenCV库,实现了车牌图片的识别与处理,确保系统的高准确性和稳定性。文中还提供了具体的代码示例,展示了如何构建和优化车牌识别服务,以及如何处理特殊和异常车牌。通过实际应用案例,帮助读者理解和应用这一解决方案。
|
4月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的蛋糕商城管理系统
基于Java+Springboot+Vue开发的蛋糕商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的蛋糕商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
211 3
基于Java+Springboot+Vue开发的蛋糕商城管理系统
|
2月前
|
JavaScript NoSQL Java
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
53 0
|
3月前
|
机器学习/深度学习 移动开发 自然语言处理
基于人工智能技术的智能导诊系统源码,SpringBoot作为后端服务的框架,提供快速开发,自动配置和生产级特性
当身体不适却不知该挂哪个科室时,智能导诊系统应运而生。患者只需选择不适部位和症状,系统即可迅速推荐正确科室,避免排错队浪费时间。该系统基于SpringBoot、Redis、MyBatis Plus等技术架构,支持多渠道接入,具备自然语言理解和多输入方式,确保高效精准的导诊体验。无论是线上医疗平台还是大型医院,智能导诊系统均能有效优化就诊流程。
|
3月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
200 1