基于javaweb+mysql的springboot共享自习室管理系统(java+springboot+thymeleaf+html+maven+mysql)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot共享自习室管理系统(java+springboot+thymeleaf+html+maven+mysql)
项目介绍
项目主要功能包括: 数据分析:柱状图分析、折线图分析、统计数据等,每10秒自动刷新 用户管理:用户信息管理、用户投诉管理、投诉反馈信息、黑名单管理; 座位管理:实时座位管理、座位使用预约记录,由管理员进行用户的座位预约操作; 密码管理:重置密码;
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 8.0版本;
7.是否maven项目:是;
技术栈
-
后端:SpringBoot+Mybatis
-
前端:Thymeleaf+HTML+CSS+LayUI+bootstrap
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/index.html 登录 管理员:zfx1232 密码:123456
@ResponseBody
public Msg updateStatusJC(Integer blackid){
boolean b = blacklistService.updateStatusJC(blackid);
if (b){
return Msg.success().add("va_msg","解除成功") ;
}else {
return Msg.fail().add("va_msg","解除失败");
}
}
//冻结
@PutMapping("/updateStatusDC")
@ResponseBody
public Msg updateStatusDC(Integer blackid){
boolean b = blacklistService.updateStatusDJ(blackid);
if (b){
return Msg.success().add("va_msg","冻结成功") ;
}else {
return Msg.fail().add("va_msg","冻结失败");
}
}
}
@Controller
public class SeatController {
@Autowired
SeatServiceImpl seatService;
/*
* 获取数据库座位信息,返回map中
* */
@Controller
public class SeatResverController {
@Autowired
SeatResverServiceImpl seatResverService;
/*
* 点击预约信息的提交按钮,保存该预约信息
* */
@PostMapping("/insertSeatResver")
@ResponseBody
public Msg insertSeatResver(SeatResver seatResver,@RequestParam("status") String status){
seatResver.setResverid(null);
seatResverService.insertSeatResver(seatResver,status);
return Msg.success().add("va_msg","预约座位信息插入成功!");
}
/*
* 点击预约信息的提交按钮,校验该用户是否已经预约
* */
@GetMapping("/checkSeatResverUserID/{userid}")
@ResponseBody
public Msg checkSeatResverUserID(@PathVariable("userid") Integer userid){
boolean b = seatResverService.checkUserID(userid);
if (b){
return Msg.fail().add("va_msg","该用户已预约或已上座,请重新输入!");
}else {
return Msg.success().add("va_msg","");
}
}
/*
* 点击取消按钮,删除预约信息(根据座位号)
* */
@DeleteMapping("/deleteSeatResver/{seatid}")
@ResponseBody
@Controller
public class ComplainController {
@Autowired
ComplainServiceImpl complainService;
//来到投诉页面
@RequestMapping("/toComplain")
public String toComplainPage(Map<String,Object> map){
List<Complain> complains = complainService.getAll();
map.put("cps",complains);
return "Complain";
}
//AJAX通过请求返回投诉列表
@GetMapping("/complainList")
@ResponseBody
public Msg ComplainData(@RequestParam(value = "pn",defaultValue = "1")Integer pn){
PageHelper.startPage(pn,6);
List<Complain> complains = complainService.getAll();
PageInfo<Complain> page=new PageInfo<Complain>(complains,5);
return Msg.success().add("pageInfo",page);
}
/*更新ps中的处理状态*/
@PutMapping("/updatePs")
@ResponseBody
public Msg updatePss(Integer cpid){
boolean b = complainService.updatePs(cpid);
if (b == true){
return Msg.success().add("va_msg","ps状态更新成功");
}else{
return Msg.fail().add("va_msg","ps状态更新失败");
}
}
/*根据cpid删除投诉数据*/
@DeleteMapping("/deleteCp/{cpid}")
@ResponseBody
public Msg deleteCp2(@PathVariable("cpid") int cpid){
boolean b = complainService.deleteCp(cpid);
if (b == true){
return Msg.success().add("va_msg","cp删除成功");
}else{
return Msg.fail().add("va_msg","cp删除成功");
}
map.put("msg","请输入账号or密码!");
return "Login";
}
}
/*resetpwd
* 点击确认修改密码并且返回登陆页面*/
@PutMapping("/resetpwd")
public String backLogin(@RequestParam("managername") String managername1,
@RequestParam("managerpwd") String managerpwd1,
Map<String,Object> map){
String managername = managername1.trim();
String managerpwd = managerpwd1.trim();
if (managername != "" && managerpwd != ""){
boolean tel = managerService.checkManagerName(managername);
if(tel == true){
map.put("msg","账号不存在,请重新输入!");
return "ForgotPassword";
}else {
int i = managerService.updateUserPwd(managername,managerpwd);
map.put("msg","reset success!");
if(i>0){
return "redirect:/share.html";
}else {
return "ForgotPassword";
}
}
}else {
map.put("msg","账号或新密码为空,请输入!");
return "ForgotPassword";
}
}
@PutMapping("/resetpwd2")
public String backLogin2(@RequestParam("managername") String managername1,
@RequestParam("managerpwd") String managerpwd1,
Map<String,Object> map){
String managername = managername1.trim();
String managerpwd = managerpwd1.trim();
if (managername != "" && managerpwd != ""){
boolean tel = managerService.checkManagerName(managername);
if(tel == true){
map.put("msg","账号不存在,请重新输入!");
return "ForgotPassword2";
* */
@GetMapping("/seat")
public String seat(Map<String,Object> map){
List<Seat> seats = seatService.getAll();
map.put("seats",seats);
return "SeatResver";
}
//前端发起请求来修改座位状态,置为0
@PutMapping("/updateSeatState/{seatid}")
@ResponseBody
public Msg updateState(@PathVariable("seatid") Integer seatid){
boolean b = seatService.updateSeatState(seatid);
if (b){
return Msg.success().add("va_msg","状态位置0成功!");
}else {
return Msg.fail().add("va_msg","状态位置0失败!");
}
}
//前端发起请求来修改座位状态,置为1
@PutMapping("/updateSeatStateYY")
@ResponseBody
public Msg updateState1(@RequestParam("seatid") Integer seatid,
@RequestParam("status") String status){
boolean b = seatService.updateSeatState1(seatid,status);
if (b){
return Msg.success().add("va_msg","预约成功!");
}else {
return Msg.fail().add("va_msg","预约失败!");
}
}
}
/*resetpwd
* 点击确认修改密码并且返回登陆页面*/
@PutMapping("/resetpwd")
public String backLogin(@RequestParam("managername") String managername1,
@RequestParam("managerpwd") String managerpwd1,
Map<String,Object> map){
String managername = managername1.trim();
String managerpwd = managerpwd1.trim();
if (managername != "" && managerpwd != ""){
boolean tel = managerService.checkManagerName(managername);
if(tel == true){
map.put("msg","账号不存在,请重新输入!");
return "ForgotPassword";
}else {
int i = managerService.updateUserPwd(managername,managerpwd);
map.put("msg","reset success!");
if(i>0){
return "redirect:/share.html";
}else {
return "ForgotPassword";
}
}
}else {
map.put("msg","账号或新密码为空,请输入!");
return "ForgotPassword";
}
}
@PutMapping("/resetpwd2")
public String backLogin2(@RequestParam("managername") String managername1,
@RequestParam("managerpwd") String managerpwd1,
Map<String,Object> map){
String managername = managername1.trim();
String managerpwd = managerpwd1.trim();
if (managername != "" && managerpwd != ""){
boolean tel = managerService.checkManagerName(managername);
if(tel == true){
map.put("msg","账号不存在,请重新输入!");
return "ForgotPassword2";
}else {
int i = managerService.updateUserPwd(managername,managerpwd);
map.put("msg","reset success!");
if(i>0){
return "redirect:/forgotPwd2";
}else {
return "ForgotPassword2";
}
}
}else {
map.put("msg","账号或新密码为空,请输入!");
return "ForgotPassword2";
@ResponseBody
public Msg checkManagerName(@RequestParam("managername") String managername1){
String managername = managername1.trim();
String regex = "(^[a-zA-Z0-9_-]{6,16}$)|(^[\\u2E80-\\u9FFF]+$)";
boolean c = managername.matches(regex);
if(!c) {
return Msg.fail().add("va_msg", "用户名可以是2-5位中文,或者6-16位英文和数字的组合");
}
boolean b = managerService.checkManagerName(managername);
if (b==true){
return Msg.success().add("va_msg","用户名可用!");
}else {
return Msg.fail().add("va_msg","用户名已存在!");
}
}
//检查手机号是否是十一位
@GetMapping("/checkManagerTel")
@ResponseBody
public Msg checkManagerTel(@RequestParam("managertel") String managertel1){
String managertel = managertel1.trim();
String regex = "(^1\\d{10}$)";
boolean matches = managertel.matches(regex);
if(matches == true){
return Msg.success().add("va_msg"," ");
}else{
return Msg.fail().add("va_msg","手机号必须以1开头,11位的数字!");
}
}
//登陆检查密码
@GetMapping("/checkLoginManagerPwd")
@ResponseBody
public Msg checkLoginManagerPwd(@RequestParam("managerpwd") String managerpwd1){
String managerpwd = managerpwd1.trim();
String regex = "(^[a-zA-Z0-9_-]{6,16}$)";
boolean matches = managerpwd.matches(regex);
if(matches == true){
return Msg.success().add("va_msg"," ");
}else{
return Msg.fail().add("va_msg","密码格式不正确:必须超过6位,小于16位!");
}
}
//注册检查密码
@GetMapping("/checkManagerPwd")
@ResponseBody
public Msg checkManagerPwd(@RequestParam("managerpwd") String managerpwd1){
String managerpwd = managerpwd1.trim();
/*@GetMapping("/user22")
public String getAllUser(Map<String,Object> map){
List<User> users = userService.getAll();
map.put("users",users);
return "Dashboard";
}*/
/*
* 用户删除请求
*/
@DeleteMapping(value = "/user/{ids}")
@ResponseBody
public Msg delEmp(@PathVariable("ids") String ids) {
if(ids.contains("-")) {
List<Integer> delids = new ArrayList<Integer>();
String[] split = ids.split("-");
for (String string : split) {
delids.add(Integer.parseInt(string));
}
userService.batchUser(delids);
}else {
int id = Integer.parseInt(ids);
userService.deleteUser(id);
}
return Msg.success();
}
/*
* 用户更新
*/
@PutMapping(value = "/user/{userID}")
@ResponseBody
public Msg saveEmp(User user) {
System.out.println(user);
userService.updateUser(user);
return Msg.success();
}
/*
* 根据用户ID查询结果
*/
@GetMapping(value = "user/{id}")
@ResponseBody
public Msg getEmp(@PathVariable(value = "id")Integer userID) {
User user = userService.getUserByID(userID);
return Msg.success().add("user", user);
}
@PutMapping("/updateSeatStateYY")
@ResponseBody
public Msg updateState1(@RequestParam("seatid") Integer seatid,
@RequestParam("status") String status){
boolean b = seatService.updateSeatState1(seatid,status);
if (b){
return Msg.success().add("va_msg","预约成功!");
}else {
return Msg.fail().add("va_msg","预约失败!");
}
}
}
@Controller
public class FeedBackController {
@Autowired
FeedBackServiceImpl feedBackService;
//到投诉反馈页面并且获取数据库中feedback数据
@GetMapping("/toFeedback")
public String toFeedbackPage(Map<String ,Object> map){
List<FeedBack> feedBacks = feedBackService.getAll();
map.put("fds",feedBacks);
return "Feedback";
}
//插入数据方法
@PostMapping("/insertCpText")
/*新增管理员
**/
@PostMapping("/registerManager")
public String registerManger(Manager manager,Map<String,Object> map){
manager.setManagerid(null);
boolean flag = managerService.createManager(manager);
if(flag == true){
map.put("msg","插入成功!");
return "redirect:share.html";
}else{
map.put("msg","插入失败!");
return "Register";
}
}
//点击进入按钮校验用户名和密码是否正确
@PostMapping("/loginD")
public String loginDashboard(@RequestParam("managername") String managername1,
@RequestParam("managerpwd") String managerpwd1,
Map<String,Object> map, HttpSession session){
/*
* ==true没有该用户
* ==false 用户存在
* */
String managername = managername1.trim();
String managerpwd = managerpwd1.trim();
if(managername != "" && managerpwd!=""){
boolean name = managerService.checkManagerName(managername);
boolean pwd = managerService.checkManagerPwd(managerpwd);
if(name == false && pwd ==false ){
// System.out.println("用户名或密码正确!");
session.setAttribute("username",managername);
return "redirect:/user22";
}else{
// System.out.println("密码错误!");
map.put("msg","账号密码错误,请重新输入账号和密码!");
return "Login";
}
}else {
map.put("msg","请输入账号or密码!");
return "Login";
}
}
/*resetpwd
* 点击确认修改密码并且返回登陆页面*/
@PutMapping("/resetpwd")
public String toFeedbackPage(Map<String ,Object> map){
List<FeedBack> feedBacks = feedBackService.getAll();
map.put("fds",feedBacks);
return "Feedback";
}
//插入数据方法
@PostMapping("/insertCpText")
@ResponseBody
public Msg insertCpText(FeedBack feedBack){
feedBack.setFdid(null);
Date date = new Date();
feedBack.setFdtime(date);
boolean b = feedBackService.insertCpText(feedBack);
if(b==true){
return Msg.success().add("va_msg","反馈内容插入成功!");
}else {
return Msg.fail().add("va_msg","反馈内容插入失败!");
}
}
}
@Controller
public class StatisticController {
@Autowired
StatisticServiceImpl statisticService;
/*
* 到图表分析页面
* */
@GetMapping("/charts")
public String toChartsPage(){
return "Charts";
}
/*
* 获取全部数据
* */
@GetMapping("/user22")
public Msg checkUserID(@RequestParam("userid") Integer userid){
boolean b = userService.checkUserID(userid);
if(b){
return Msg.success().add("va_msg","用户名存在!");
}else {
return Msg.fail().add("va_msg","用户名不存在,重新输入!");
}
}
}
@Controller
public class SeatuseController {
@Autowired
SeatuseServiceImpl seatuseService;
/*
* 通过用户ID进行查询
* */
@GetMapping("/queryByUserID/{userid}")
@ResponseBody
public Msg queryUserID(@RequestParam(value = "pn",defaultValue = "1") Integer pn,
@PathVariable("userid") Integer userid){
PageHelper.startPage(pn,20);
List<Seatuse> users = seatuseService.queryByUserID(userid);
PageInfo<Seatuse> page=new PageInfo<Seatuse>(users,5);
return Msg.success().add("pageInfo",page);
}
/*
* 到座位使用统计页面
* */
@RequestMapping("/seatUseCount")
public String toSeatUserPage(Map<String,Object> map){
List<Seatuse> seatusers = seatuseService.getAll();
map.put("sus",seatusers);
return "SeatUse";
}
@GetMapping("/seatUsePage")
@ResponseBody
}
boolean b = managerService.checkManagerName(managername);
if (b==true){
return Msg.success().add("va_msg","用户名可用!");
}else {
return Msg.fail().add("va_msg","用户名已存在!");
}
}
//检查手机号是否是十一位
@GetMapping("/checkManagerTel")
@ResponseBody
public Msg checkManagerTel(@RequestParam("managertel") String managertel1){
String managertel = managertel1.trim();
String regex = "(^1\\d{10}$)";
boolean matches = managertel.matches(regex);
if(matches == true){
return Msg.success().add("va_msg"," ");
}else{
return Msg.fail().add("va_msg","手机号必须以1开头,11位的数字!");
}
}
//登陆检查密码
@GetMapping("/checkLoginManagerPwd")
@ResponseBody
public Msg checkLoginManagerPwd(@RequestParam("managerpwd") String managerpwd1){
String managerpwd = managerpwd1.trim();
String regex = "(^[a-zA-Z0-9_-]{6,16}$)";
boolean matches = managerpwd.matches(regex);
if(matches == true){
return Msg.success().add("va_msg"," ");
}else{
return Msg.fail().add("va_msg","密码格式不正确:必须超过6位,小于16位!");
}
}
//注册检查密码
@GetMapping("/checkManagerPwd")
@ResponseBody
public Msg checkManagerPwd(@RequestParam("managerpwd") String managerpwd1){
String managerpwd = managerpwd1.trim();
String regex = "(^[a-zA-Z0-9_-]{6,16}$)";
boolean matches = managerpwd.matches(regex);
if(matches == true){
return Msg.success().add("va_msg"," ");
}else{
return Msg.fail().add("va_msg","密码格式不正确:必须超过6位,小于16位!");
}
}
@Controller
public class ComplainController {
@Autowired
ComplainServiceImpl complainService;
//来到投诉页面
@RequestMapping("/toComplain")
public String toComplainPage(Map<String,Object> map){
List<Complain> complains = complainService.getAll();
map.put("cps",complains);
return "Complain";
}
//AJAX通过请求返回投诉列表
@GetMapping("/complainList")
@ResponseBody
public Msg ComplainData(@RequestParam(value = "pn",defaultValue = "1")Integer pn){
PageHelper.startPage(pn,6);
List<Complain> complains = complainService.getAll();
PageInfo<Complain> page=new PageInfo<Complain>(complains,5);
return Msg.success().add("pageInfo",page);
}
/*更新ps中的处理状态*/
@PutMapping("/updatePs")
@ResponseBody
public Msg updatePss(Integer cpid){
boolean b = complainService.updatePs(cpid);
if (b == true){
return Msg.success().add("va_msg","ps状态更新成功");
}else{
return Msg.fail().add("va_msg","ps状态更新失败");
}
}
/*根据cpid删除投诉数据*/
@DeleteMapping("/deleteCp/{cpid}")
@ResponseBody
public String toForgotPage(){
return "ForgotPassword";
}
@RequestMapping("/forgotPwd2")
public String toForgotPage2(){
return "ForgotPassword2";
}
@RequestMapping("/logout")
public String toLoginPage(HttpSession session){
Enumeration<String> attributeNames = session.getAttributeNames();
while (attributeNames.hasMoreElements()) {
session.removeAttribute(attributeNames.nextElement());
}
return "Login";
}
//进入重置密码页面
@RequestMapping("/register")
public String toRegisterPage(){
return "Register";
}
//登陆和忘记密码==》检查用户名是否存在
@GetMapping("/checkLoginManagerName")
@ResponseBody
public Msg checkLoginManagerName(@RequestParam("managername") String managername1){
String managername = managername1.trim();
// String regex = "(^[a-zA-Z0-9_-]{6,16}$)|(^[\\u2E80-\\u9FFF]+$)";
//
// boolean c = managername.matches(regex);
// if(!c) {
// return Msg.fail().add("va_msg", "用户名是2-5位中文,或者6-16位英文和数字的组合");
// }
boolean b = managerService.checkManagerName(managername);
if (b==true){
return Msg.fail().add("va_msg","用户名不存在!");
}else {
return Msg.success().add("va_msg","");
}
}
//注册检查用户名是否存在
@GetMapping("/checkManagerName")
@ResponseBody
public Msg checkManagerName(@RequestParam("managername") String managername1){
String managername = managername1.trim();
String regex = "(^[a-zA-Z0-9_-]{6,16}$)|(^[\\u2E80-\\u9FFF]+$)";
boolean c = managername.matches(regex);
if(!c) {
return Msg.fail().add("va_msg", "用户名可以是2-5位中文,或者6-16位英文和数字的组合");
}
boolean b = managerService.checkManagerName(managername);
}
/*
* 获取状态为1的数据条数
* */
@GetMapping("/state1Count/{state}")
@ResponseBody
public Msg state1Count(@PathVariable("state") String state){
long l = seatuseService.queryStateCount(state);
return Msg.success().add("state1Count",l);
}
}
@Controller
public class SeatResverController {
@Autowired
SeatResverServiceImpl seatResverService;
/*
* 点击预约信息的提交按钮,保存该预约信息
* */
@PostMapping("/insertSeatResver")
@ResponseBody
public Msg insertSeatResver(SeatResver seatResver,@RequestParam("status") String status){
seatResver.setResverid(null);
seatResverService.insertSeatResver(seatResver,status);
return Msg.success().add("va_msg","预约座位信息插入成功!");
}
/*
* 点击预约信息的提交按钮,校验该用户是否已经预约
* */
@GetMapping("/checkSeatResverUserID/{userid}")
@ResponseBody
public Msg checkSeatResverUserID(@PathVariable("userid") Integer userid){
boolean b = seatResverService.checkUserID(userid);
if (b){
return Msg.fail().add("va_msg","该用户已预约或已上座,请重新输入!");
}else {
if(name == false && pwd ==false ){
// System.out.println("用户名或密码正确!");
session.setAttribute("username",managername);
return "redirect:/user22";
}else{
// System.out.println("密码错误!");
map.put("msg","账号密码错误,请重新输入账号和密码!");
return "Login";
}
}else {
map.put("msg","请输入账号or密码!");
return "Login";
}
}
/*resetpwd
* 点击确认修改密码并且返回登陆页面*/
@PutMapping("/resetpwd")
public String backLogin(@RequestParam("managername") String managername1,
@RequestParam("managerpwd") String managerpwd1,
Map<String,Object> map){
String managername = managername1.trim();
String managerpwd = managerpwd1.trim();
if (managername != "" && managerpwd != ""){
boolean tel = managerService.checkManagerName(managername);
if(tel == true){
map.put("msg","账号不存在,请重新输入!");
return "ForgotPassword";
}else {
int i = managerService.updateUserPwd(managername,managerpwd);
map.put("msg","reset success!");
if(i>0){
return "redirect:/share.html";
}else {
return "ForgotPassword";
}
}
}else {
map.put("msg","账号或新密码为空,请输入!");
return "ForgotPassword";
}
@Controller
public class SeatController {
@Autowired
SeatServiceImpl seatService;
/*
* 获取数据库座位信息,返回map中
* */
@GetMapping("/seat")
public String seat(Map<String,Object> map){
List<Seat> seats = seatService.getAll();
map.put("seats",seats);
return "SeatResver";
}
//前端发起请求来修改座位状态,置为0
@PutMapping("/updateSeatState/{seatid}")
@ResponseBody
public Msg updateState(@PathVariable("seatid") Integer seatid){
boolean b = seatService.updateSeatState(seatid);
if (b){
return Msg.success().add("va_msg","状态位置0成功!");
}else {
return Msg.fail().add("va_msg","状态位置0失败!");
}
}
//前端发起请求来修改座位状态,置为1
@PutMapping("/updateSeatStateYY")
@ResponseBody
public Msg updateState1(@RequestParam("seatid") Integer seatid,
@RequestParam("status") String status){
boolean b = seatService.updateSeatState1(seatid,status);
if (b){
return Msg.success().add("va_msg","预约成功!");
}else {
return Msg.fail().add("va_msg","预约失败!");
}
}
}