基于javaweb+mysql的ssm自习室图书馆座位预约占座管理系统前台后台(java+ssm+jsp+layui+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SSM自习室图书馆座位预约占座管理系统前台后台(java+ssm+jsp+layui+mysql)
管理员
admin 123456
学生
xs001 123456
xs002 123456
xs003 123456
xs004 123456
添加学生时会自动在用户表中注册
定时任务会定时生成座位信息,
阅览室分类中可设置信用等级,
学生被扣分后信用等级低于相应的值后不能预约相应的阅览室座位。
} catch (Exception e) {
e.printStackTrace();
}
}
//查找我的座位
@RequestMapping("mySeat")
public void mySeat(HttpServletRequest request,HttpServletResponse response){
User currentUser = (User)request.getSession().getAttribute("currentUser");
page = Integer.parseInt(request.getParameter("page"));
rows = Integer.parseInt(request.getParameter("limit"));
seat = new Seat();
seat.setPage((page-1)*rows);
seat.setRows(rows);
JSONObject jsonObject = new JSONObject();
try {
seat.setStudentno(currentUser.getUserName());
List<Seat> list = seatService.findSeat(seat);
jsonObject.put("code", 0);
jsonObject.put("msg", "");
//jsonObject.put("count",10 );//total代表一共有多少数据
jsonObject.put("data", list);//row是代表显示的页的数据
} catch (Exception e) {
e.printStackTrace();
}
WriterUtil.write(response, jsonObject.toString());
}
// 保存选中座位
@RequestMapping("saveSeat")
public void saveSeat(HttpServletRequest request,HttpServletResponse response) {
JSONObject jsonObject = new JSONObject();
String keyword = request.getParameter("keyword");
System.out.println("key---"+keyword);
User currentUser = (User)request.getSession().getAttribute("currentUser");
if(currentUser.getRoleId() == 1 || currentUser.getRoleId()==2){ //超管和教师不能选座
jsonObject.put("returnCode","对不起,该阅览室选座只对学生开放");
WriterUtil.write(response, jsonObject.toString());
return;
}
String studentno = currentUser.getUserName();
String nowDateHour = new SimpleDateFormat("yyyy-MM-dd-HH").format(new Date()); //当前小时数
String selectedDate = keyword.substring(0,13);
try {
//判断信用积分
score = scoreService.findOneScore(studentno);
int myScore = score.getTotal(); //该学生分数
int roomid = Integer.parseInt(keyword.substring(19,20));
int needScore = roomService.findScoreByRoomid(roomid);
if(needScore >= myScore){
jsonObject.put("returnCode", "预约失败!您的信用积分不允许在该阅览室选座");
WriterUtil.write(response, jsonObject.toString());
menu.setState("open");
menuService.updateMenu(menu);
menuService.deleteMenu(Integer.parseInt(menuId));
} else {
//不只一个孩子,直接删除
menuService.deleteMenu(Integer.parseInt(menuId));
}
result.put("success", true);
}
} catch (Exception e) {
e.printStackTrace();
result.put("errorMsg", "对不起,删除失败!");
}
WriterUtil.write(response, result.toString());
}
}
// 通知信息
@Controller
@RequestMapping("massage")
public class MassageController {
private int page;
private int rows;
private Massage massage;
@Autowired
private MassageService<Massage> massageService;
}
return jsonArray;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@RequestMapping("updateRoleMenu")
public void updateRoleMenu(HttpServletRequest request,HttpServletResponse response){
JSONObject result = new JSONObject();
try {
String roleId = request.getParameter("roleId");
String[] ids = request.getParameter("menuIds").split(",");
String menuIds = "";
String operationIds = "";
/**
* 采用的方案是在菜单递归之后,再加上各菜单下的按钮
* 采用easyui的解析方式所以字段都用的是id和text。
* 为了区别两者,我们规定operationId自增从10000开始
* menuId从1开始,在上传过来的ids中是这样的形式
* 2,10000,3,4,7,10004,10006,45 这样的菜单ID和按钮ID的混合形式
* 所以通过与10000的比较来确定哪些是菜单的哪些是按钮的
*
*/
for (int i = 0; i < ids.length; i++) {
int id = Integer.parseInt(ids[i]);
if (id>=10000) {
operationIds += (","+id);
} else {
menuIds += (","+id);
}
}
role = new Role();
role.setRoleId(Integer.parseInt(roleId));
role.setMenuIds(menuIds.substring(1));
System.out.println(operationIds);
rows = Integer.parseInt(request.getParameter("limit"));
user = new User();
user.setPage((page-1)*rows);
user.setRows(rows);
user.setUserName(request.getParameter("userName"));
String roleId = request.getParameter("roleId");
if (StringUtil.isNotEmpty(roleId)) {
user.setRoleId(Integer.parseInt(roleId));
} else {
user.setRoleId(null);
}
List<User> list = userService.findUser(user);
int total = userService.countUser(user);
JSONObject jsonObj = new JSONObject();//new一个JSON
jsonObj.put("code", 0);
jsonObj.put("msg", "");
jsonObj.put("count",total );//total代表一共有多少数据
jsonObj.put("data", list);//row是代表显示的页的数据
response.setContentType("application/json");
WriterUtil.write(response,jsonObj.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
// 新增或修改
@RequestMapping("reserveUser")
public void reserveUser(HttpServletRequest request,User user,HttpServletResponse response){
String userId = request.getParameter("userId");
JSONObject result=new JSONObject();
try {
if (StringUtil.isNotEmpty(userId)) { // userId不为空 说明是修改
user.setUserId(Integer.parseInt(userId));
userService.updateUser(user);
result.put("returnCode",200);
}else { // 添加
if(userService.existUserWithUserName(user.getUserName())==null){ // 没有重复可以添加
switch (user.getRoleId()) {
case 2:
user.setHeadPortrait("/LibrarySeatSystem/upload/headPortrait/teacher_default.jpg");
break;
case 3:
user.setHeadPortrait("/LibrarySeatSystem/upload/headPortrait/student_default.jpg");
// 班级管理控制器
@Controller
@RequestMapping("classes")
public class ClassesController {
private int page;
private int rows;
@Autowired
private ClassesService<Classes> classesService;
private Classes classes;
@RequestMapping("classesIndex")
public String index(){
return "info/classes";
}
@RequestMapping("classesList")
public void list(HttpServletRequest request ,HttpServletResponse response) {
try {
page = Integer.parseInt(request.getParameter("page"));
rows = Integer.parseInt(request.getParameter("limit"));
classes = new Classes();
classes.setPage((page-1)*rows);
classes.setRows(rows);
String instituteId = request.getParameter("instituteId");
if (StringUtil.isNotEmpty(instituteId)) {
classes.setInstituteId(Integer.parseInt(instituteId));
} else {
classes.setInstituteId(null);
}
String specialtyId = request.getParameter("specialtyId");
if (StringUtil.isNotEmpty(specialtyId)) {
// 统计图
@RequestMapping("chart")
@Controller
public class ChartController {
@Autowired
private IllegalService<Illegal> illegalService;
private Illegal illegal;
private Room room;
}
/**
* 登录
*/
@Controller
@SuppressWarnings("unchecked")
public class LoginController {
private User user;
private User currentUser;
@Autowired
private UserService<User> userService;
@RequestMapping("chart")
@Controller
public class ChartController {
@Autowired
private IllegalService<Illegal> illegalService;
private Illegal illegal;
private Room room;
@Autowired
private RoomService<Room> roomService;
private User user;
@Autowired
private UserService<User> userService;
@RequestMapping("teacherIndex")
public String index(){
return "info/teacher";
}
@RequestMapping("teacherList")
public void teacherList(HttpServletRequest request,HttpServletResponse response){
try {
page = Integer.parseInt(request.getParameter("page")); //获取当前页
rows = Integer.parseInt(request.getParameter("limit")); //每页记录条数
// 构造查询条件
teacher = new Teacher();
teacher.setPage((page-1)*rows);
teacher.setRows(rows);
teacher.setName(request.getParameter("name"));
teacher.setNo(request.getParameter("no"));
User currentUser = (User)request.getSession().getAttribute("currentUser");
if(currentUser.getRoleId()==2){ //教师
teacher.setNo(currentUser.getUserName());
}
// 调用service层的查询方法查出记录和数量
List<Teacher> list = teacherService.findTeacher(teacher);
int total = teacherService.countTeacher(teacher);
JSONObject jsonObj = new JSONObject();//new一个JSON
jsonObj.put("code", 0);
jsonObj.put("msg", "");
jsonObj.put("count",total );//total代表一共有多少数据
jsonObj.put("data", list);//row是代表显示的页的数据
WriterUtil.write(response,jsonObj.toString()); //将上述Json输出,前台ajax接收
} catch (Exception e) {
e.printStackTrace();
}
}
e.printStackTrace();
return null;
}
}
@RequestMapping("roleCombobox")
public void roleCombobox(HttpServletRequest request,HttpServletResponse response){
try {
JSONArray jsonArray=new JSONArray();
List<Role> list = findAllRole(new Role());
jsonArray.addAll(list);
WriterUtil.write(response, jsonArray.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
@RequestMapping("reserveRole")
public void addUser(HttpServletRequest request,Role role,HttpServletResponse response){
String roleId = request.getParameter("roleId");
JSONObject result=new JSONObject();
try {
if (StringUtil.isNotEmpty(roleId)) {
role.setRoleId(Integer.parseInt(roleId));
roleService.updateRole(role);
result.put("returnCode", 200);
}else {
if(roleService.existRoleWithRoleName(role.getRoleName())==null){ // 没有重复可以添加
roleService.addRole(role);
result.put("returnCode", 300);
} else {
result.put("returnCode", "该角色名被使用");
}
}
} catch (Exception e) {
e.printStackTrace();
result.put("returnCode", "对不起,操作失败");
}
WriterUtil.write(response, result.toString());
}
@RequestMapping("deleteRole")
public void delRole(HttpServletRequest request,HttpServletResponse response){
JSONObject result=new JSONObject();
try {
String[] roleIds=request.getParameter("ids").split(",");
for (int i=0;i<roleIds.length;i++) {
boolean b = userService.existUserWithRoleId(Integer.parseInt(roleIds[i]))==null; //该角色下面没有用户
/**
* 登录
*/
@Controller
@SuppressWarnings("unchecked")
public class LoginController {
private User user;
private User currentUser;
@Autowired
private UserService<User> userService;
@Autowired
private MenuService<Menu> menuService;
private Role role;
@Autowired
private RoleService<Role> roleService;
private Map map;
//登录验证
@RequestMapping("login")
public void login(HttpServletRequest request,HttpServletResponse response){
try {
HttpSession session = request.getSession();
String userName=request.getParameter("userName");
String password=request.getParameter("password");
request.setAttribute("userName", userName);
request.setAttribute("password", password);
map = new HashMap<String, String>();
map.put("userName", userName);
map.put("password", password);
currentUser = userService.loginUser(map);
if(currentUser==null){
request.setAttribute("error", "用户名或密码错误");
request.getRequestDispatcher("login.jsp").forward(request, response);
}else{
role = roleService.findOneRole(currentUser.getRoleId());
String roleName=role.getRoleName();
currentUser.setRoleName(roleName);
page = Integer.parseInt(request.getParameter("page"));
rows = Integer.parseInt(request.getParameter("rows"));
bbs = new Bbs();
bbs.setPage((page-1)*rows);
bbs.setRows(rows);
bbs.setAuthor(request.getParameter("author"));
bbs.setTitle(request.getParameter("title"));
List<Bbs> list = bbsService.findBbs(bbs);
int total = bbsService.countBbs(bbs);
JSONObject jsonObj = new JSONObject();//new一个JSON
jsonObj.put("total",total );//total代表一共有多少数据
jsonObj.put("rows", list);//row是代表显示的页的数据
WriterUtil.write(response,jsonObj.toString()); //将上述Json输出,前台ajax接收
} catch (Exception e) {
e.printStackTrace();
}
}
// 发表新帖
@RequestMapping("newBbs")
public void newTopic(HttpServletRequest request,HttpServletResponse response,Bbs bbs){
JSONObject result = new JSONObject();
String content = bbs.getContent();
User currentUser = (User)request.getSession().getAttribute("currentUser");
String author = currentUser.getUserName();
String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
try {
bbs.setAuthor(author);
bbs.setTime(time);
bbsService.addBbs(bbs);
int bbsid = bbs.getId();
topic = new Topic();
topic.setAuthor(author);
topic.setBbsid(bbsid);
topic.setContent(content);
topic.setTime(time);
topicService.addTopic(topic);
result.put("success", true);
} catch (Exception e) {
e.printStackTrace();
result.put("errorMsg", "对不起!发表新帖失败");
}
WriterUtil.write(response, result.toString());
}
// 修改标题
@RequestMapping("updateBbstitle")
public void updateBbstitle(HttpServletResponse response,HttpServletRequest request,Bbs bbs){
JSONObject result = new JSONObject();
List<Classes> classlist = classesService.findClasses(classes);
JSONObject jsonObj = new JSONObject();//new一个JSON
jsonObj.put("classlist", classlist);//row是代表显示的页的数据
WriterUtil.write(response,jsonObj.toString()); //将上述Json输出,前台ajax接收
} catch (Exception e) {
e.printStackTrace();
}
}
@RequestMapping("reserveClasses")
public void reserveClasses(HttpServletRequest request,HttpServletResponse response,Classes classes) {
JSONObject result = new JSONObject();
try {
classesService.addClasses(classes);
result.put("returnCode", 200);
} catch (Exception e) {
e.printStackTrace();
result.put("returnCode", "对不起!保存失败");
}
WriterUtil.write(response, result.toString());
}
@RequestMapping("deleteClasses")
public void deleteClasses(HttpServletRequest request,HttpServletResponse response){
JSONObject result=new JSONObject();
try {
String[] ids=request.getParameter("ids").split(",");
Classes classes=new Classes();
for (String id : ids) {
classesService.deleteClasses(Integer.parseInt(id));
}
result.put("returnCode", 200);
result.put("delNums", ids.length);
} catch (Exception e) {
e.printStackTrace();
result.put("returnCode", "对不起,删除失败");
}
user.setHeadPortrait("/LibrarySeatSystem/upload/headPortrait/teacher_default.jpg");
break;
case 3:
user.setHeadPortrait("/LibrarySeatSystem/upload/headPortrait/student_default.jpg");
break;
default:
break;
}
userService.addUser(user);
result.put("returnCode",300);
} else {
result.put("returnCode", "该用户名被使用");
}
}
} catch (Exception e) {
e.printStackTrace();
result.put("returnCode", "对不起,操作失败");
}
response.setContentType("application/json");
WriterUtil.write(response, result.toString());
}
@RequestMapping("deleteUser")
public void delUser(HttpServletRequest request,HttpServletResponse response){
JSONObject result=new JSONObject();
try {
String[] ids=request.getParameter("ids").split(",");
for (String id : ids) {
user = userService.findOneUser(Integer.parseInt(id));
userService.deleteUser(Integer.parseInt(id));
}
result.put("returnCode", 200);
result.put("delNums", ids.length);
} catch (Exception e) {
e.printStackTrace();
result.put("returnCode", "对不起,删除失败");
}
WriterUtil.write(response, result.toString());
}
@RequestMapping("updataPortrait")
public void updataPortrait(HttpServletRequest request,HttpServletResponse response,@RequestParam MultipartFile file,User user){
JSONObject jsonObj = new JSONObject();//new一个JSON
String userId = request.getParameter("userId");
HttpSession session = request.getSession();
try {
if (StringUtil.isNotEmpty(userId)) {
user.setUserId(Integer.parseInt(userId));
ComboValue cv2 = new ComboValue("14点-18点","14点-18点");
list.add(cv2);
ComboValue cv3 = new ComboValue("18点-22点","18点-22点");
list.add(cv3);
JSONArray array = new JSONArray();
array.addAll(list);
WriterUtil.write(response, array.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
// 阅览室
@RequestMapping("roomCombo")
public void roomCombo(HttpServletRequest request,HttpServletResponse response){
try {
List<Room> list = roomService.findRoom(new Room());
JSONArray array = new JSONArray();
array.addAll(list);
WriterUtil.write(response, array.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
//查找自己的座位
@RequestMapping("myselfSeat")
public void myselfSeat(HttpServletRequest request,HttpServletResponse response){
User currentUser = (User)request.getSession().getAttribute("currentUser");
try {
String date = request.getParameter("date");
if(date==null || date.length()==0){
date = (new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
}
String roomid = request.getParameter("roomid");
if(roomid==null || roomid.length()==0){
roomid = "1";
}
String time = request.getParameter("time");
if(time == null || time.length()==0){
time = "08点-12点";
}
Choice c = new Choice();
c.setSeatkeyword(date + "-" +time + "-" +roomid);
c.setStudentno(currentUser.getUserName());
choice = choiceService.findOneChoice(c);
if(choice == null){
WriterUtil.write(response, "no");
} else {
WriterUtil.write(response, choice.getSeatkeyword());
}
User currentUser = (User)request.getSession().getAttribute("currentUser");
JSONObject jsonObject = new JSONObject();
try {
// 删除choice表中的记录
String keyword = request.getParameter("seatkeyword");
Choice choice = new Choice();
choice.setSeatkeyword(keyword.substring(0, 20));
choice.setStudentno(currentUser.getUserName());
choiceService.cancelChoice(choice);
// 将seat表中该条记录学号变成1
seatService.cancelSeat(keyword); //
jsonObject.put("returnCode", 200);
WriterUtil.write(response, jsonObject.toString());
} catch (Exception e) {
e.printStackTrace();
jsonObject.put("returnCode", "对不起!系统错误,操作失败!");
WriterUtil.write(response, jsonObject.toString());
}
}
//签到定时器
public class SignTimer implements Runnable{
private String Keyword;
private String Studentno;
public SignTimer(String keyword,String studentno) {
this.Keyword=keyword;
this.Studentno=studentno;
}
@Override
public void run() {
try {
Thread.sleep(30*60*1000);//休眠半小时
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
seat=new Seat();
seat=seatService.findOneSeat(Keyword);
if(seat.getStatus()==1) { //如果到时间后仍未签到
Choice choice = new Choice();
choice.setSeatkeyword(Keyword.substring(0, 20));
choice.setStudentno(Studentno);
choiceService.cancelChoice(choice);//取消选择
seatService.cancelSeat(Keyword);//取消预约
break;
default:
break;
}
userService.addUser(user);
result.put("returnCode",300);
} else {
result.put("returnCode", "该用户名被使用");
}
}
} catch (Exception e) {
e.printStackTrace();
result.put("returnCode", "对不起,操作失败");
}
response.setContentType("application/json");
WriterUtil.write(response, result.toString());
}
@RequestMapping("deleteUser")
public void delUser(HttpServletRequest request,HttpServletResponse response){
JSONObject result=new JSONObject();
try {
String[] ids=request.getParameter("ids").split(",");
for (String id : ids) {
user = userService.findOneUser(Integer.parseInt(id));
userService.deleteUser(Integer.parseInt(id));
}
result.put("returnCode", 200);
result.put("delNums", ids.length);
} catch (Exception e) {
e.printStackTrace();
result.put("returnCode", "对不起,删除失败");
}
WriterUtil.write(response, result.toString());
}
@RequestMapping("updataPortrait")
public void updataPortrait(HttpServletRequest request,HttpServletResponse response,@RequestParam MultipartFile file,User user){
JSONObject jsonObj = new JSONObject();//new一个JSON
String userId = request.getParameter("userId");