基于javaweb+SpringBoot+JPA图书馆座位占座预约管理系统(管理员、老师、学生)
开发工具:eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
* @param user
* @return
*/
@RequestMapping(value = "/update_userinfo", method = RequestMethod.POST)
@ResponseBody
public Result updateUserInfo(User user, Model model) {
User loginedUser = SessionUtil.getLoginedUser();
loginedUser.setEmail(user.getEmail());
loginedUser.setNickName(user.getNickName());
loginedUser.setMobile(user.getMobile());
loginedUser.setHeadPic(user.getHeadPic());
//首先保存到数据库
User save = userService.save(loginedUser);
//更新session里的值
SessionUtil.set(SessionConstant.SESSION_USER_LOGIN_KEY, loginedUser);
return Result.success(save);
}
/**
* 修改密码页面
*
Seat seat = seatService.find(seatId);
Integer readingRoomIntegral = seat.getReadingRoom().getReadingType().getIntegral();
if (student.getStudentCredits() < readingRoomIntegral) {// 判断学生的积分是否符合
return Result.error(CodeMsg.ADMIN_SEAT_STUDENT_INTEGRAL_ERROR);
}
long currentDay = DateUtil.day(new Date()).getTime();//当天的时间戳
long day = DateUtil.day(DateUtil.millisecondToDate(date)).getTime(); //获取预约时间当天的时间戳
if (day < currentDay) { //传过来的预约时间小于当前时间
return Result.error(CodeMsg.ADMIN_SEAT_ORDER_DATE_ERROR);
}
int pm = DateUtil.isPM(); //判断当前时间是否为下午,0为上午 1为下午
if (day == currentDay) {
/**
* 无权限提示页面
*
* @return
*/
@RequestMapping(value = "/no_right")
public String noRight() {
return "admin/system/no_right";
}
/**
* 修改用户个人信息
*
* @return
*/
@RequestMapping(value = "/update_userinfo", method = RequestMethod.GET)
public String updateUserInfo() {
return "admin/system/update_userinfo";
}
/**
* 修改个人信息保存
*
* @param user
* @return
/**
* 登录成功后的系统主页
*
* @param model
* @return
*/
@RequestMapping(value = "/index")
public String index(Model model) {
model.addAttribute("operatorLogs", operaterLogService.findLastestLog(10));
model.addAttribute("userTotal", userService.total());
model.addAttribute("operatorLogTotal", operaterLogService.total());
model.addAttribute("databaseBackupTotal", 0);
model.addAttribute("onlineUserTotal", SessionListener.onlineUserCount);
model.addAttribute("showTipsText", "");
model.addAttribute("showTipsUrlText", "");
model.addAttribute("showTipsUtl", "");
model.addAttribute("showTipsBtnText", "");
return "admin/system/index";
* 使用jpa自带的方法
* studentDao.getOne();当我查询一个不存在的id数据时,直接抛出异常,因为它返回的是一个引用,简单点说就是一个代理对象
* studentDao.findOne() 当我查询一个不存在的id数据时,返回的值是null.
* studentDao.findById(id) ; .findById(id).get()使用时,如果数据库中查询无符合条件的记录便会抛出异常
*/
Optional<Student> byId = studentDao.findById(id);
return byId.isPresent() ? byId.get() : null;
}
public List<Student> findAll() {
return studentDao.findAll();
}
/**
* 删除一个学生删除的时候需要先查出来相对的用户的id
/**
* @return 角度
*/
private double getTheta(){
return ((int) (Math.random()*1000) % 2 == 0 ? -1 : 1)*Math.random();
}
/**
* @return 验证码字符个数
*/
public int getVcodeLen() {
return vcodeLen;
}
/**
* 设置验证码字符个数
* @param vcodeLen
*/
public void setVcodeLen(int vcodeLen) {
this.width = (fontsize+3)*vcodeLen+10;
this.vcodeLen = vcodeLen;
}
/**
* @return 字体大小
g.drawString(vcode.charAt(i)+"", i*fontsize+10, fontsize+5);
}
//释放此图形的上下文以及它使用的所有系统资源
g.dispose();
return vcodeImage;
}
/**
* 获得旋转字体的验证码图片
* @param vcode
* @param drawline 是否画干扰线
* @return
*/
public BufferedImage generatorRotateVCodeImage(String vcode, boolean drawline){
//创建验证码图片
BufferedImage rotateVcodeImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = rotateVcodeImage.createGraphics();
//填充背景色
g2d.setColor(new Color(246, 240, 250));
model.addAttribute("menu",menuService.find(id));
return "admin/menu/edit";
}
/**
* 菜单编辑页面表单提交处理
* @param
* @param menu
* @return
*/
@RequestMapping(value="/edit",method=RequestMethod.POST)
@ResponseBody
public Result<Boolean> edit(Menu menu){
if(menu == null){
Result.error(CodeMsg.DATA_ERROR);
}
if(menu.getId() == null){
Result.error(CodeMsg.ADMIN_MENU_ID_EMPTY);
}
//用统一验证实体方法验证是否合法
}
/**
* 日志管理列表
*
* @param model
* @param operaterLog
* @param pageBean
* @return
*/
@RequestMapping(value = "/operator_log_list")
public String operatorLogList(Model model, OperaterLog operaterLog, PageBean<OperaterLog> pageBean) {
model.addAttribute("pageBean", operaterLogService.findList(operaterLog, pageBean));
model.addAttribute("operator", operaterLog.getOperator());
model.addAttribute("title", "日志列表");
return "admin/system/operator_log_list";
}
/**
* 删除操作日志,可删除多个
*
* @param ids
* @return
*/
@RequestMapping(value = "/delete_operator_log", method = RequestMethod.POST)
@ResponseBody
public Result<Boolean> delete(String ids) {
//后台班级管理类错误码
public static CodeMsg ADMIN_ClAZZ_EMPTY = new CodeMsg(-9000, "教师填写错误,请重新填写!");
public static final CodeMsg ADMIN_ClAZZNAME_EXIST =new CodeMsg (-9001, "该班级名已经存在,请换一个试试!");
public static CodeMsg ADMIN_ClAZZ_ADD_ERROR = new CodeMsg(-9002, "班级添加失败,请联系管理员!");
public static final CodeMsg ADMIN_CLAZZ_NOEXIST =new CodeMsg(-9003, "班级不存在!") ;
public static final CodeMsg ADMIN_CLAZZNAME_EXIST =new CodeMsg(-9004, "该班级名已存在,请联系管理员!") ;
public static final CodeMsg ADMIN_CLAZZ_TEACHER_EMPTY =new CodeMsg(-9005, "教师信息错误,请重新编辑!") ;
//学生扣分日志管理
public static final CodeMsg ADMIN_LOFINTEGRAL_CREDITS =new CodeMsg(-9005, "该学生没有那么多分数!") ;
}
package com.demo.common.util;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.Random;
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
技术框架
JSP JavaScript SpringBoot SpringDataJPA FreeMarker MySQL
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
管理员:学生管理、教师管理、阅览室类型管理、阅览室管理(座位生成等)、学生信用积分管理、座位预约统计管理等。
学生:登录、修改个人信息、阅览室查看、选座信息查看、选座、取消选座等。
教师:登录、阅览室管理、学生信用管理:可根据学生表现进行扣分、奖励等,扣分达到设定的值则无法进行选座。