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

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

项目编号:BS-XX-149

一,项目简介

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

管理员:

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

社区工作人员:

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

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

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

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

三,系统展示

管理员

首页统计及公告查看

管理员管理

留守儿童管理

社区工作人员管理

注册审核

账户注销审核

删除儿童审核

系统公告

信息反馈管理

社区工作人员

登陆管理首页

留守儿童管理

信息反馈

个人中心

账户管理

四,核心代码展示

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技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对社区留守儿童帮扶系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现社区留守儿童帮扶系统和部署运行使用它。

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