——————————DescriptionStart——————————
运行环境
Java≥8、MySQL≥5.7、Node.js≥14
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
❗没学过node.js的不要搞前后端分离项目
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SpringBoot幼儿园管理系统(java+springboot+mybaits+vue+elementui+mysql)
项目介绍
基于Springboot + vue实现的幼儿园管理系统
本系统包含管理员、教师、家长三个个角色。
管理员:用户管理、教师管理、幼儿信息管理、班级信息管理、工作日志管理、会议记录管理、待办事项管理、职工考核管理、请假信息管理、缴费信息管理、儿童体检管理、资源信息管理、原料信息管理、菜谱信息管理。
教师:登录系统、查看教学进度、查看幼儿信息、查看班级情况、记录工作日志、整理会议内容、管理待办事项、参与职工考核、处理请假信息和缴费信息。
家长:幼儿请假管理、查看缴费信息、查看菜谱信息。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
4.数据库:MySql 5.7/8.0版本均可;
5.是否Maven项目:是;
技术栈
后端:SpringBoot+Mybaits
前端:Vue+elementui
使用说明
项目运行:
使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令;
将项目中application.yml配置文件中的数据库配置改为自己的配置;
运行项目,在浏览器中输入地址:
登录页面
http://localhost:8080/springboot4023t/admin/dist/index.html
管理员账户:abo 密码:abo
普通用户:用户1 密码:123456
教师账户:教师1 密码:123456
注意项目文件路径中不能含有中文、空格、特殊字符等,否则图片会上传不成功。
文档介绍展示:
用户管理页面展示:
登录页面展示:
班级页面展示:
工作日志管理页面展示:
教师管理页面展示:
缴费信息页面展示:
幼儿信息管理页面展示:
——————————CodeStart——————————
用户管理控制层:
@SuppressWarnings({ “unchecked”, “rawtypes” })
@Controller
@RequestMapping(“/user”)
public class UserController {
private final Logger logger = LoggerFactory.getLogger(UserController.class);
private final ResultMap resultMap;
@Autowired
private UserService userService;
@Autowired
private UserRoleService userRoleService;
@Autowired
public UserController(ResultMap resultMap) {
this.resultMap = resultMap;
@RequestMapping(value = “/getMessage”, method = RequestMethod.GET)
public ResultMap getMessage() {
return resultMap.success().message(“您拥有用户权限,可以获得该接口的信息!”);
@RequestMapping(value = “/editUserPage”)
public String editUserPage(String userId, Model model) {
model.addAttribute(“manageUser”, userId);
if (null != userId) {
User user = userService.selectByPrimaryKey(userId);
model.addAttribute(“manageUser”, user);
return “user/userEdit”;
@ResponseBody
@RequestMapping(“/updateUser”)
public String updateUser(User user) {
return userService.updateUser(user);
// 任务
/**
Description: 查询所有管理员
@return List
*/
@ResponseBody
@RequestMapping(value = “/getAdmins”)
public List
return userService.getAdmins();
/**
Description: 查询所有授权用户
@return List
*/
@ResponseBody
@RequestMapping(value = “/getAllUser”)
public List
return userService.getAllUser();
登录管理控制层:
@Controller
public class LoginController {
@Autowired
private ResultMap resultMap;
@Autowired
private UserService userService;// 用户登录service
@Autowired
private PageService pageService;
private final Logger logger = LoggerFactory.getLogger(LoginController.class);
@RequestMapping(value = “/notLogin”, method = RequestMethod.GET)
@ResponseBody
public ResultMap notLogin() {
logger.warn(“尚未登陆!”);
return resultMap.success().message(“您尚未登陆!”);
@RequestMapping(value = “/notRole”, method = RequestMethod.GET)
@ResponseBody
public ResultMap notRole() {
Subject subject = SecurityUtils.getSubject();
User user = (User) subject.getPrincipal();
if (user != null) {
logger.info(“{}—没有权限!”, user.getUserName());
return resultMap.success().message(“您没有权限!”);
/**
Method name: logout
Description: 退出登录
@return String
*/
@RequestMapping(value = “/logout”, method = RequestMethod.GET)
public String logout() {
Subject subject = SecurityUtils.getSubject();
User user = (User) subject.getPrincipal();
if (null != user) {
logger.info(“{}—退出登录!”, user.getUserName());
subject.logout();
return “login”;
/**
Method name: login
Description: 登录验证
Remark:
@param username 用户名
@param password 密码
@return ResultMap
*/
@RequestMapping(value = “/login”)
@ResponseBody
public ResultMap login(String username, String password) {
return userService.login(username, password);
/**
Method name: login
Description: 登录页面
@return String login.html
*/
@RequestMapping(value = “/index”)
public String login() {
return “login”;
/**
Method name: index
Description: 登录页面
@return String login.html
*/
@RequestMapping(value = “/“)
public String index(Model model) {
Subject subject = SecurityUtils.getSubject();
User user = (User) subject.getPrincipal();
if (null != user) {
model.addAttribute(“user”, user);
List
model.addAttribute(“pageList”, pageList);
return “index”;
} else {
return “login”;
/**
Method name: main
Description: 进入主页面
@param model
@return String
*/
@RequestMapping(value = “/main”)
public String main(Model model) {
Subject subject = SecurityUtils.getSubject();
User user = (User) subject.getPrincipal();
if (null != user) {
model.addAttribute(“user”, user);
} else {
return “login”;
List
model.addAttribute(“pageList”, pageList);
return “index”;
/**
Method name: checkUserPassword
Description: 检测旧密码是否正确
@param password 旧密码
@return boolean 是否正确
*/
@RequestMapping(value = “/user/checkUserPassword”)
@ResponseBody
public boolean checkUserPassword(String password) {
return userService.checkUserPassword(password);
/**
Method name: updatePassword
Description: 更新密码
@param password 旧密码
@return String 是否成功
*/
@RequestMapping(value = “/user/updatePassword”)
@ResponseBody
public String updatePassword(String password) {
return userService.updatePassword(password);
教师管理控制层:
@Controller
@RequestMapping(value = “/ls”)
public class TeacherController {
@Autowired
private StudentService studentService;
@Autowired
private ClassService classService;
@Autowired
private NoticeService noticeService;
@Autowired
private SignService signService;
@Autowired
private UserService userService;
@Autowired
private UserChildrenService userChildrenService;
@Autowired
private CourseService courseService;
@RequestMapping(“/stu”)
public String stu(Model model) {
List
model.addAttribute(“cla”, classes);
return “ls/stuPage”;
//学生管理
/**
Method name: teacherPage
Description: 教师管理页面
@return String
*/
@RequestMapping(value = “/stuMG”)
public String teaMG(Model model) {
List
model.addAttribute(“cla”, classes);
return “ls/student”;
/**
Method name: getAllStudentByLimit
Description: 根据条件获取所有教师
@param userParameter
@return Object
*/
@RequestMapping(“/getAllStudentByLimit”)
@ResponseBody
public Object getAllStudentByLimit(Children stuParameter) {
return studentService.getAllStudentByLimit(stuParameter);
/**
Method name: addStuPage
Description: 增加教师界面
@return String
*/
@RequestMapping(value = “/addStuPage”)
public String addStuPage(Integer id, Model model) {
model.addAttribute(“manageStu”, id);
if (null != id) {
Children student = studentService.selectByPrimaryKey(id);
//UserChildren userChild = userChildrenService.selectById(id);
model.addAttribute(“manageStu”, student);
//model.addAttribute(“manageChild”, userChild);
UserChildren uc = userChildrenService.selectByUCId(student.getId());
model.addAttribute(“uc”, uc);
List
model.addAttribute(“cla”, classes);
List
model.addAttribute(“user”, user);
return “ls/stuPageAdd”;
/**
Method name: addStu
Description: 教师添加
@param user
@return String
*/
@ResponseBody
@RequestMapping(“/addStu”)
public String addStu(Children student) {
try {
studentService.addStudent(student);
addUserChildren(student);
return “SUCCESS”;
} catch (Exception e) {
return “ERR”;
public void addUserChildren(Children student) {
UserChildren userChildern = new UserChildren();
userChildern.setChildrenId(student.getId());
userChildern.setUserId(student.getUserId());
userChildern.setIsFaMa(student.getIsFaMa());
userChildern.setIsJinji(student.getIsJinji());
userChildrenService.addUserChildren(userChildern);
/**
Method name: updateStudent
Description: 更新教师
@param user
@return String
*/
@ResponseBody
@RequestMapping(“/updateStudent”)
public String updateStudent(Children studnet) {
UserChildren uc = new UserChildren();
uc.setId(studnet.getUcId());
uc.setChildrenId(studnet.getId());
uc.setIsFaMa(studnet.getIsFaMa());
uc.setIsJinji(studnet.getIsJinji());
uc.setUserId(studnet.getUserId());
userChildrenService.updateUC(uc);
return studentService.updateStu(studnet);
/**
Method name: delClaTea
Description: 批量删除教师
@param ids
@return String
*/
@RequestMapping(value = “delStudent”)
@ResponseBody
@Transactional
public String delStudent(String[] ids) {
try {
for (String id : ids) {
studentService.delStudentById(Integer.parseInt(id));
return “SUCCESS”;
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return “ERROR”;
//公告管理
/**
Method name: gg
Description: 教师管理页面
@return String
*/
@RequestMapping(value = “/gg”)
public String gg() {
return “ls/notice”;
/**
Method name: getAllNoticeByLimit
Description: 根据条件获取所有教师
@param userParameter
@return Object
*/
@RequestMapping(“/getAllNoticeByLimit”)
@ResponseBody
public Object getAllNoticeByLimit(Notice noticeParameter) {
return noticeService.getAllNoticeByLimit(noticeParameter);
/**
Method name: addStuPage
Description: 增加教师界面
@return String
*/
@RequestMapping(value = “/addNoticePage”)
public String addNoticePage(Integer id, Model model) {
model.addAttribute(“manageNotice”, id);
if (null != id) {
Notice notice = noticeService.selectByPrimaryKey(id);
model.addAttribute(“manageNotice”, notice);
return “ls/noticeAdd”;
/**
Method name: addStu
Description: 教师添加
@param user
@return String
*/
@ResponseBody
@RequestMapping(“/addNotice”)
public String addNotice(Notice notice) {
try {
notice.setCreatTime(new Date());
noticeService.addNotice(notice);
return “SUCCESS”;
} catch (Exception e) {
return “ERR”;
/**
Method name: updateStudent
Description: 更新教师
@param user
@return String
*/
@ResponseBody
@RequestMapping(“/updateNotice”)
public String updateNotice(Notice notice) {
return noticeService.updateStu(notice);
/**
Method name: delClaTea
Description: 批量删除教师
@param ids
@return String
*/
@RequestMapping(value = “delNotice”)
@ResponseBody
@Transactional
public String delNotice(String[] ids) {
try {
for (String id : ids) {
noticeService.delNoticeById(Integer.parseInt(id));
return “SUCCESS”;
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return “ERROR”;
//考勤管理
/**
Method name: lskq
Description: 教师管理页面
@return String
*/
@RequestMapping(value = “/lskq”)
public String lskq() {
return “ls/sign”;
/**
Method name: getAllSignByLimit
Description: 根据条件获取所有教师
@param userParameter
@return Object
*/
@RequestMapping(“/getAllSignByLimit”)
@ResponseBody
public Object getAllSignByLimit(Sign signParameter) {
return signService.getAllSignByLimit(signParameter);
//打卡
@RequestMapping(value = “/qianDaoTui”)
public String qianDaoTui() {
return “ls/daKa”;
/**
Method name: addStu
Description: 教师添加
@param user
@return String
*/
@ResponseBody
@RequestMapping(“/addSign”)
public String addSign(Sign sign) {
Subject subject = SecurityUtils.getSubject();
User user = (User) subject.getPrincipal();
try {
Date date=new Date();
SimpleDateFormat formatter = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss a”);
String time = formatter.format(date).split(“ “)[2];
String time1 = formatter.format(date).split(“ “)[1];
String s=PropertyUtil.getConfigureProperties(“startTime”);
if(time.equals(“上午”) && time1.compareTo(s)>0) {
sign.setState(1);
}else {
sign.setState(3);
sign.setType(1);
sign.setSignIn(date);
sign.setKqrId(user.getUserId());
sign.setKqrType(user.getUserState());
signService.addSign(sign);
return “SUCCESS”;
} catch (Exception e) {
return “ERR”;
/**
Method name: addStu
Description: 教师添加
@param user
@return String
*/
@ResponseBody
@RequestMapping(“/addQianTui”)
public String addQianTui(Sign sign) {
Subject subject = SecurityUtils.getSubject();
User user = (User) subject.getPrincipal();
try {
Date date=new Date();
SimpleDateFormat formatter = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss a”);
String time = formatter.format(date).split(“ “)[2];
String time1 = formatter.format(date).split(“ “)[1];
String s=PropertyUtil.getConfigureProperties(“endTime”);
if(time.equals(“下午”) && time1.compareTo(s)<0) {
sign.setState(1);
}else{
sign.setState(2);
sign.setType(2);
sign.setSignIn(date);
sign.setKqrId(user.getUserId());
sign.setKqrType(user.getUserState());
signService.addSign(sign);
return “SUCCESS”;
} catch (Exception e) {
return “ERR”;
//学生考勤
@RequestMapping(value = “/xskq”)
public String xskq() {
return “ls/childSign”;
/**
Method name: getAllSignByLimit
Description: 根据条件获取所有教师
@param userParameter
@return Object
*/
@RequestMapping(“/getAllChildSignByLimit”)
@ResponseBody
public Object getAllChildSignByLimit(Sign signParameter) {
return signService.getAllChildSignByLimit(signParameter);
//所有老师签到的总次数统计
@RequestMapping(value = “/kqtj”)
public String kqtj(Model model) {
List
List
List
List
List
for (TongJi tongJi : ts) {
names.add(tongJi.getUserName());
zc.add(tongJi.getZhengChang());
tq.add(tongJi.getTiQian());
cd.add(tongJi.getChiDao());
model.addAttribute(“names”, names);
model.addAttribute(“zc”, zc);
model.addAttribute(“tq”, tq);
model.addAttribute(“cd”, cd);
return “ls/tongJi”;
//所有学生签到的总次数统计
@RequestMapping(value = “/tongJiXueSheng”)
public String tongJiXueSheng(Model model) {
List
List
List
List
List
for (TongJi tongJi : ts) {
names.add(tongJi.getUserName());
zc.add(tongJi.getZhengChang());
tq.add(tongJi.getTiQian());
cd.add(tongJi.getChiDao());
model.addAttribute(“names”, names);
model.addAttribute(“zc”, zc);
model.addAttribute(“tq”, tq);
model.addAttribute(“cd”, cd);
return “ls/tongJiXueSheng”;
@RequestMapping(value = “/course”)
public String course(Model model) {
return “ls/course”;
//课程
@RequestMapping(value = “/courseAdd”)
public String courseAdd(Model model) {
List
model.addAttribute(“users”, users);
List
model.addAttribute(“cla”, clas);
return “ls/courseAdd”;
@RequestMapping(“/getAllCourseByLimit”)
@ResponseBody
public Object getAllCourseByLimit(Course course) {
return courseService.getAllCourseByLimit(course);
@ResponseBody
@RequestMapping(“/addCourse”)
public String addCourse(Course course) {
course.setCreateTime(new Date());
try {
courseService.addCourse(course);
return “SUCCESS”;
} catch (Exception e) {
return “ERR”;
@ResponseBody
@RequestMapping(“/delCourse”)
public String delCourse(Integer id) {
try {
courseService.delCourse(id);
return “SUCCESS”;
} catch (Exception e) {
return “ERR”;
——————————PayStart——————————
项目链接:
https://javayms.github.io?id=551524512608201ny
https://javayms.pages.dev?id=551524512608201ny