源码获取:俺的博客首页 "资源" 里下载!

项目介绍

一款由jsp+ssm+mysql实现的图书馆预约占座管理系统,前端采用的是当下最流行的easyui框架,后台用的ssm(spring、springMVC、mybaits)框架.添加学生和教师时会自动在用户表中注册,定时任务会定时生成座位信息,阅览室分类中可设置信用等级,学生被扣分后信用等级低于相应的值后不能预约相应的阅览室座位.本项目分为管理员、教师、学生三种角色。

管理员角色包含以下功能:
管理员登陆,用户管理,师生信息管理,阅览室管理,信用积分管理,交流管理,信息统计,图书推荐等功能。

教师角色包含以下功能:
教师角色登陆,个人信息管理,管理学生的信用积分等功能。

学生角色包含以下功能:
学生账号登陆,阅览室信息查看,信息积分查看,选座位,选座管理,通知信息管理,信息交流,图书推荐等功能。

环境需要

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 5.7版本;
6.是否Maven项目:否;

技术栈

1. 后端:Spring+SpringMVC+Mybatis
2. 前端:JSP+easyUI

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中config.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:8080/ 登录

用户管理控制层:

@Controller
public class UserController {@AutowiredUserServiceImpl userService;/** queryUserlike  通过用户姓名进行模糊查询* */@GetMapping("/queryUserlike/{username}")@ResponseBodypublic Msg queryUserlikeId(@RequestParam(value = "pn",defaultValue = "1") Integer pn,@PathVariable("username") String username){PageHelper.startPage(pn,20);List<User> users = userService.queryByUserName(username);PageInfo<User> page=new PageInfo<User>(users,5);return Msg.success().add("pageInfo",page);}/** 前端发送请求后端分页数据,* */@GetMapping("/userTables")@ResponseBodypublic Msg userTables(@RequestParam(value = "pn",defaultValue = "1") Integer pn){PageHelper.startPage(pn,7);List<User> users = userService.getAll();PageInfo<User> page=new PageInfo<User>(users,5);return Msg.success().add("pageInfo",page);}//到tables页面@RequestMapping("/usertables")public String toUserTables(Map<String,Object> map){List<User> users = userService.getAll();map.put("users",users);return "Tables";}//点击编辑按键传入userid查询用户,返回用户信息@GetMapping("/queryUserByID/{userid}")@ResponseBodypublic Msg queryUserID(@PathVariable("userid") Integer userid,Map<String,Object> map){User users = userService.getUserByID(userid);return Msg.success().add("users",users);}/** 查询全部用户*//*@GetMapping("/user22")public String getAllUser(Map<String,Object> map){List<User> users = userService.getAll();map.put("users",users);return "Dashboard";}*//** 用户删除请求*/@DeleteMapping(value = "/user/{ids}")@ResponseBodypublic 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}")@ResponseBodypublic Msg saveEmp(User user) {System.out.println(user);userService.updateUser(user);return Msg.success();}/** 根据用户ID查询结果*/@GetMapping(value = "user/{id}")@ResponseBodypublic Msg getEmp(@PathVariable(value = "id")Integer userID) {User user = userService.getUserByID(userID);return Msg.success().add("user", user);}/** 检查用户名是否可用*/@RequestMapping(value = "/checkAddUser")@ResponseBodypublic Msg checkAddUser(@RequestParam("username")String userName) {//先判断用户名是否合法的表达式String regex = "(^[a-zA-Z0-9_-]{6,16}$)|(^[\\u2E80-\\u9FFF]+$)";boolean c = userName.matches(regex);if(!c) {return Msg.fail().add("va_msg", "用户名可以是2-5位中文,或者6-16位英文和数字的组合");}//数据库用户名重复校验boolean b = userService.checkUserName(userName);if(b) {return Msg.success().add("va_msg", "用户名可用");}else {return Msg.fail().add("va_msg",  "用户名已存在");}}/*校验手机号码格式*/@RequestMapping("/checkAddTel")@ResponseBodypublic Msg checkAddTel(@RequestParam(value = "usertel")String userTel1) {String userTel = userTel1.trim();String regex = "(^1\\d{10}$)";boolean matches = userTel.matches(regex);if(matches == true){return Msg.success().add("va_msg","");}else{return Msg.fail().add("va_msg","手机号必须以1开头,11位的数字!");}}/*校验年龄码格式*/@RequestMapping("/checkAddAge")@ResponseBodypublic Msg checkAddAge(@RequestParam(value = "userage")Integer userAge1) {String s = userAge1.toString();String userTel = s.trim();String regex = "(^\\d{1,3}$)";boolean matches = userTel.matches(regex);if(matches == true){return Msg.success().add("va_msg","");}else{return Msg.fail().add("va_msg","请输入数字");}}/*校验密码格式*/@RequestMapping("/checkAddPwd")@ResponseBodypublic Msg checkAddPwd(@RequestParam(value = "userpwd")String userPwd1) {String userPwd = userPwd1.trim();String regex = "(^[a-zA-Z0-9_-]{6,16}$)";boolean matches = userPwd.matches(regex);if(matches == true){return Msg.success().add("va_msg","");}else{return Msg.fail().add("va_msg","密码格式不正确:必须超过6位,小于16位的英文和数字!");}}/****************************************************插入********** 点击保存按钮,新增用户* */@PostMapping("/insertUser")@ResponseBodypublic Msg insertUser(User user){user.setUserid(null);userService.insertUser(user);return Msg.success().add("va_msg","插入成功!");}//点击更新按钮,更新修改的数据@PutMapping("/updateUser")@ResponseBodypublic Msg updateUser(User user){userService.updateUser(user);return Msg.success().add("va_msg","插入成功!");}//用户删除@DeleteMapping("/deleteUser/{userid}")@ResponseBodypublic Msg deleteEmployee(@PathVariable("userid") Integer userid){boolean b = userService.deleteUser(userid);if (b){return Msg.success().add("va_msg","用户删除成功!");}else {return Msg.fail().add("va_msg","用户删除失败!");}}/** 前端ajax请求,查询userid是否在表中存在* */@GetMapping("/checkUserID")@ResponseBodypublic 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 SeatResverController {@AutowiredSeatResverServiceImpl seatResverService;/** 点击预约信息的提交按钮,保存该预约信息* */@PostMapping("/insertSeatResver")@ResponseBodypublic Msg insertSeatResver(SeatResver seatResver,@RequestParam("status") String status){seatResver.setResverid(null);seatResverService.insertSeatResver(seatResver,status);return Msg.success().add("va_msg","预约座位信息插入成功!");}/** 点击预约信息的提交按钮,校验该用户是否已经预约* */@GetMapping("/checkSeatResverUserID/{userid}")@ResponseBodypublic 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}")@ResponseBodypublic Msg deleteSeatResver(@PathVariable("seatid") Integer seatid){boolean b = seatResverService.deleteSeatResver(seatid);if (b){return Msg.success().add("va_msg","删除预约信息成功!");}else {return Msg.fail().add("va_msg","删除预约信息失败!");}}/** 获取全部预约信息,返回到前端展示再页面中* */@GetMapping("/getSeatResverInfo")@ResponseBodypublic Msg getSeatResverInfo(@RequestParam(value = "pn",defaultValue = "1")Integer pn){PageHelper.startPage(pn,6);List<SeatResver> all = seatResverService.getAll();PageInfo<SeatResver> page=new PageInfo<SeatResver>(all,5);return Msg.success().add("pageInfo",page);}/** 模糊查询,seatid* */@GetMapping("/querySeatlike/{seatid}")@ResponseBodypublic Msg getSeatResver(@PathVariable("seatid") Integer seatid,@RequestParam(value = "pn",defaultValue = "1")Integer pn){PageHelper.startPage(pn,20);List<SeatResver> all = seatResverService.getSeatAll(seatid);PageInfo<SeatResver> page=new PageInfo<SeatResver>(all,5);return Msg.success().add("pageInfo",page);}
}

管理员管理控制层:

@Controller
public class ManagerController {@AutowiredManagerServiceImpl managerService;//进入忘记密码页面@RequestMapping("/forgotPwd")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")@ResponseBodypublic 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")@ResponseBodypublic 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")@ResponseBodypublic 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")@ResponseBodypublic 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")@ResponseBodypublic 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位!");}}/*新增管理员**/@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 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";}}}

源码获取:俺的博客首页 "资源" 里下载!

Java项目:自习室图书馆座位预约管理系统(java+SSM+JSP+easyUI+mysql)相关推荐

  1. 基于javaweb的自习室图书馆座位预约管理系统(java+ssm+jsp+easyui+mysql)

    基于javaweb的自习室图书馆座位预约管理系统(java+ssm+jsp+easyui+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea ...

  2. Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档

    Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档 Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  3. java计算机毕业设计图书馆座位预约管理系统源代码+数据库+系统+lw文档

    java计算机毕业设计图书馆座位预约管理系统源代码+数据库+系统+lw文档 java计算机毕业设计图书馆座位预约管理系统源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  4. 基于JAVA图书馆座位预约管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA图书馆座位预约管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA图书馆座位预约管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S ...

  5. 基于SSM的图书馆座位预约管理系统占座系统-java图书馆座位预约管理系统占座系统...

    基于SSM的图书馆座位预约管理系统占座系统-java图书馆座位预约管理系统占座系统 1.包含源程序,数据库脚本.代码和数据库脚本都有详细注释. 2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善 ...

  6. 【JAVA程序设计】(C00067)基于SSM(非maven)图书馆座位预约管理系统

    基于SSM(非maven)图书馆座位预约管理系统 项目简介 项目获取 开发环境 项目技术 运行截图 项目简介 基于ssm框架非maven开发的图书馆预约占座管理系统共分为三个角色:系统管理员.教师.学 ...

  7. 基于SSM的图书馆座位预约管理系统

    1,本系统主要采取java语言的SSM框架为主要开发技术,并使用了一些div+css语言来实现图书馆座位预约系统前端页面的布局,前端的整体布局以电影院定位为参看模板设计,查看方便,操作简单.为了高效, ...

  8. 基于jsp+mysql+Spring+mybatis的SSM图书馆座位预约管理系统文末附下载地址

    运行环境: 最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以. IDE环境: Eclipse,Myeclipse,IDEA都可以 tomcat环境: Tomcat 7.x, ...

  9. 2022基于微信小程序的图书馆座位预约管理系统.rar(论文+程序设计源码+数据库)毕业设计

    随着时代不断的发展,我们对于知识的汲取需要从不同领域了解,从而扩大自己的知识面,图书馆作为大学生学习的宝地,有着不可替代的地位.但是在互联网信息化时代,传统模式下的图书馆管理模式,并不能满足校园学生需 ...

最新文章

  1. java增加 删除 修改表格_Java实现单链表的创建、添加、修改、删除
  2. MySQL解压缩安装
  3. Xilinx FPGA 仿真环境设置(ISE + Modelsim + Debussy)
  4. python 文件操作 open()与with open() as的区别(打开文件)
  5. 区分基于Ant目标的Gradle任务
  6. 暴露的全局方法_Dubbo源码解析实战 - 服务暴露原理
  7. 2018春招-赛码网-例题-水仙花数
  8. java 代码生成器 generator
  9. 【软技能】完全写作指南--PPT演讲
  10. python scrapy第一弹--爬取好看的堆糖头像
  11. redis搭建哨兵模式(哨兵模式原理)
  12. IOS和安卓展示时间兼容问题
  13. 【drawio笔记】向ERD表,列表和UML类添加行
  14. java图书馆_java编写图书馆管理系统
  15. excel 自定义工具栏_您的自定义Excel工具栏
  16. 乌班图安装python_乌班图中怎么安装python
  17. Windows系统 lusrmgr命令详解,Windows命令行查看本地用户和组
  18. mysql 字符串前四位_sql截取字符串前几位
  19. 在linux的shell中/bin/true是什么意思?
  20. “超全” Python获取某一日期是“星期几”的六种方法

热门文章

  1. Windows 技术篇-安装指定版本Internet Explorer浏览器方法,IE浏览器的升级和降级
  2. 计算机原理课堂,计算机原理课堂测验题集.ppt
  3. QT5.14.1实现界面开场动画
  4. luogu P4881 hby与tkw的基情
  5. Java中String类intern()详解
  6. Vue2使用记录(待续)
  7. 如何用python整理表格_Python 自动整理 Excel 表格
  8. TypeError: _typeof4 is not a function,解决微信小程序报错
  9. 一名年薪百万阿里P8架构师写给Java程序员一些建议(架构师必备)
  10. 【概率论】- (2)假设检验