Java项目:酒店管理系统(java+SSM+Maven+LayUI+mysql)
源码获取:博客首页 "资源" 里下载!
酒店管理系统-温情小筑后台管理系统
系统概要
项目主要功能包括:
住客管理:住客入住、住客列表;
房间管理:房间列表、添加房间、修改房间状态;
会员管理:新增会员、会员列表;
系统设置:网站信息、修改密码、清除缓存;
数据表:生成Excel并导出等功能,适合java新手学习;
技术选型
1.后台技术选型:SSM(Spring SpringMVC Mybatis)
2.前端技术选型:LayUI
开发环境
1.编程语言:Java
2.开发工具:IDEA/Eclipse、Navicat
3.项目构建:Maven 3.5.2
4.服务器:Tomcat 8.0及以上
5.数据库:MySQL5.7
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置;
3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;
4. 运行项目,输入localhost:8080/ 登录
运行
导入项目并运行成功后,在tomcat路径中设置为/,注意路径中不要带有项目名,否则会导致项目运行异常;
房间管理后台控制器:
/*** 房间管理后台控制器* @author yy**/
@RequestMapping("/admin/room")
@Controller
public class RoomController {@Autowiredprivate RoomTypeService roomTypeService;@Autowiredprivate RoomService roomService;@Autowiredprivate FloorService floorService;/*** 房间管理列表页面* @param model* @return*/@RequestMapping(value="/list",method=RequestMethod.GET)public ModelAndView list(ModelAndView model){model.addObject("roomTypeList", roomTypeService.findAll());model.addObject("floorList", floorService.findAll());model.setViewName("room/list");return model;}/*** 房间信息添加操作* @param roomType* @return*/@RequestMapping(value="/add",method=RequestMethod.POST)@ResponseBodypublic Map<String, String> add(Room room){Map<String, String> ret = new HashMap<String, String>();if(room == null){ret.put("type", "error");ret.put("msg", "请填写正确的房间信息!");return ret;}if(StringUtils.isEmpty(room.getSn())){ret.put("type", "error");ret.put("msg", "房间编号不能为空!");return ret;}if(room.getRoomTypeId() == null){ret.put("type", "error");ret.put("msg", "请选择房间类型!");return ret;}if(room.getFloorId() == null){ret.put("type", "error");ret.put("msg", "请选择房间所属楼层!");return ret;}if(isExist(room.getSn(), 0l)){ret.put("type", "error");ret.put("msg", "该房间编号已经存在!");return ret;}if(roomService.add(room) <= 0){ret.put("type", "error");ret.put("msg", "添加失败,请联系管理员!");return ret;}ret.put("type", "success");ret.put("msg", "添加成功!");return ret;}/*** 房间信息编辑操作* @param roomType* @return*/@RequestMapping(value="/edit",method=RequestMethod.POST)@ResponseBodypublic Map<String, String> edit(Room room){Map<String, String> ret = new HashMap<String, String>();if(room == null){ret.put("type", "error");ret.put("msg", "请填写正确的房间信息!");return ret;}if(StringUtils.isEmpty(room.getSn())){ret.put("type", "error");ret.put("msg", "房间编号不能为空!");return ret;}if(room.getRoomTypeId() == null){ret.put("type", "error");ret.put("msg", "请选择房间类型!");return ret;}if(room.getFloorId() == null){ret.put("type", "error");ret.put("msg", "请选择房间所属楼层!");return ret;}if(isExist(room.getSn(), room.getId())){ret.put("type", "error");ret.put("msg", "该房间编号已经存在!");return ret;}if(roomService.edit(room) <= 0){ret.put("type", "error");ret.put("msg", "修改失败,请联系管理员!");return ret;}ret.put("type", "success");ret.put("msg", "修改成功!");return ret;}/*** 分页查询房间信息* @param sn* @param page* @return*/@RequestMapping(value="/list",method=RequestMethod.POST)@ResponseBodypublic Map<String,Object> list(@RequestParam(name="sn",defaultValue="") String sn,@RequestParam(name="status",required=false) Integer status,@RequestParam(name="roomTypeId",required=false) Long roomTypeId,@RequestParam(name="floorId",required=false) Long floorId,Page page){Map<String,Object> ret = new HashMap<String, Object>();Map<String,Object> queryMap = new HashMap<String, Object>();queryMap.put("sn", sn);queryMap.put("status", status);queryMap.put("roomTypeId", roomTypeId);queryMap.put("floorId", floorId);queryMap.put("offset", page.getOffset());queryMap.put("pageSize", page.getRows());ret.put("rows", roomService.findList(queryMap));ret.put("total", roomService.getTotal(queryMap));return ret;}/*** 房间信息删除操作* @param id* @return*/@RequestMapping(value="/delete",method=RequestMethod.POST)@ResponseBodypublic Map<String, String> delete(Long id){Map<String, String> ret = new HashMap<String, String>();if(id == null){ret.put("type", "error");ret.put("msg", "请选择要删除的信息!");return ret;}try {if(roomService.delete(id) <= 0){ret.put("type", "error");ret.put("msg", "删除失败,请联系管理员!");return ret;}} catch (Exception e) {// TODO: handle exceptionret.put("type", "error");ret.put("msg", "该房间下存在订单信息,请先删除该房间下的所有订单信息!");return ret;}ret.put("type", "success");ret.put("msg", "删除成功!");return ret;}/*** 判断房间编号是否存在* @param sn* @param id* @return*/private boolean isExist(String sn,Long id){Room findBySn = roomService.findBySn(sn);if(findBySn == null)return false;if(findBySn.getId().longValue() == id.longValue())return false;return true;}
}
用户管理控制器:
/*** 用户管理控制器* @author yy**/
@RequestMapping("/admin/user")
@Controller
public class UserController {@Autowiredprivate UserService userService;@Autowiredprivate RoleService roleService;/*** 用户列表页面* @param model* @return*/@RequestMapping(value="/list",method=RequestMethod.GET)public ModelAndView list(ModelAndView model){Map<String, Object> queryMap = new HashMap<String, Object>();model.addObject("roleList", roleService.findList(queryMap));model.setViewName("user/list");return model;}/*** 获取用户列表* @param page* @param username* @param roleId* @param sex* @return*/@RequestMapping(value="/list",method=RequestMethod.POST)@ResponseBodypublic Map<String, Object> getList(Page page,@RequestParam(name="username",required=false,defaultValue="") String username,@RequestParam(name="roleId",required=false) Long roleId,@RequestParam(name="sex",required=false) Integer sex){Map<String, Object> ret = new HashMap<String, Object>();Map<String, Object> queryMap = new HashMap<String, Object>();queryMap.put("username", username);queryMap.put("roleId", roleId);queryMap.put("sex", sex);queryMap.put("offset", page.getOffset());queryMap.put("pageSize", page.getRows());ret.put("rows", userService.findList(queryMap));ret.put("total", userService.getTotal(queryMap));return ret;}/*** 添加用户* @param user* @return*/@RequestMapping(value="/add",method=RequestMethod.POST)@ResponseBodypublic Map<String, String> add(User user){Map<String, String> ret = new HashMap<String, String>();if(user == null){ret.put("type", "error");ret.put("msg", "请填写正确的用户信息!");return ret;}if(StringUtils.isEmpty(user.getUsername())){ret.put("type", "error");ret.put("msg", "请填写用户名!");return ret;}if(StringUtils.isEmpty(user.getPassword())){ret.put("type", "error");ret.put("msg", "请填写密码!");return ret;}if(user.getRoleId() == null){ret.put("type", "error");ret.put("msg", "请选择所属角色!");return ret;}if(isExist(user.getUsername(), 0l)){ret.put("type", "error");ret.put("msg", "该用户名已经存在,请重新输入!");return ret;}if(userService.add(user) <= 0){ret.put("type", "error");ret.put("msg", "用户添加失败,请联系管理员!");return ret;}ret.put("type", "success");ret.put("msg", "角色添加成功!");return ret;}/*** 编辑用户* @param user* @return*/@RequestMapping(value="/edit",method=RequestMethod.POST)@ResponseBodypublic Map<String, String> edit(User user){Map<String, String> ret = new HashMap<String, String>();if(user == null){ret.put("type", "error");ret.put("msg", "请填写正确的用户信息!");return ret;}if(StringUtils.isEmpty(user.getUsername())){ret.put("type", "error");ret.put("msg", "请填写用户名!");return ret;}
// if(StringUtils.isEmpty(user.getPassword())){
// ret.put("type", "error");
// ret.put("msg", "请填写密码!");
// return ret;
// }if(user.getRoleId() == null){ret.put("type", "error");ret.put("msg", "请选择所属角色!");return ret;}if(isExist(user.getUsername(), user.getId())){ret.put("type", "error");ret.put("msg", "该用户名已经存在,请重新输入!");return ret;}if(userService.edit(user) <= 0){ret.put("type", "error");ret.put("msg", "用户添加失败,请联系管理员!");return ret;}ret.put("type", "success");ret.put("msg", "角色添加成功!");return ret;}/*** 批量删除用户* @param ids* @return*/@RequestMapping(value="/delete",method=RequestMethod.POST)@ResponseBodypublic Map<String, String> delete(String ids){Map<String, String> ret = new HashMap<String, String>();if(StringUtils.isEmpty(ids)){ret.put("type", "error");ret.put("msg", "选择要删除的数据!");return ret;}if(ids.contains(",")){ids = ids.substring(0,ids.length()-1);}if(userService.delete(ids) <= 0){ret.put("type", "error");ret.put("msg", "用户删除失败,请联系管理员!");return ret;}ret.put("type", "success");ret.put("msg", "用户删除成功!");return ret;}/*** 上传图片* @param photo* @param request* @return*/@RequestMapping(value="/upload_photo",method=RequestMethod.POST)@ResponseBodypublic Map<String, String> uploadPhoto(MultipartFile photo,HttpServletRequest request){Map<String, String> ret = new HashMap<String, String>();if(photo == null){ret.put("type", "error");ret.put("msg", "选择要上传的文件!");return ret;}if(photo.getSize() > 1024*1024*1024){ret.put("type", "error");ret.put("msg", "文件大小不能超过10M!");return ret;}//获取文件后缀String suffix = photo.getOriginalFilename().substring(photo.getOriginalFilename().lastIndexOf(".")+1,photo.getOriginalFilename().length());if(!"jpg,jpeg,gif,png".toUpperCase().contains(suffix.toUpperCase())){ret.put("type", "error");ret.put("msg", "请选择jpg,jpeg,gif,png格式的图片!");return ret;}String savePath = request.getServletContext().getRealPath("/") + "/resources/upload/";File savePathFile = new File(savePath);if(!savePathFile.exists()){//若不存在改目录,则创建目录savePathFile.mkdir();}String filename = new Date().getTime()+"."+suffix;try {//将文件保存至指定目录photo.transferTo(new File(savePath+filename));}catch (Exception e) {// TODO Auto-generated catch blockret.put("type", "error");ret.put("msg", "保存文件异常!");e.printStackTrace();return ret;}ret.put("type", "success");ret.put("msg", "用户删除成功!");ret.put("filepath",request.getServletContext().getContextPath() + "/resources/upload/" + filename );return ret;}/*** 判断该用户名是否存在* @param username* @param id* @return*/private boolean isExist(String username,Long id){User user = userService.findByUsername(username);if(user == null)return false;if(user.getId().longValue() == id.longValue())return false;return true;}
}
系统操作类控制器:
/*** 系统操作类控制器* @author yy**/
@Controller
@RequestMapping("/system")
public class SystemController {@Autowiredprivate UserService userService;@Autowiredprivate RoleService roleService;@Autowiredprivate AuthorityService authorityService;@Autowiredprivate MenuService menuService;@Autowiredprivate LogService logService;/*** 系统登录后的主页* @param model* @return*/@RequestMapping(value="/index",method=RequestMethod.GET)public ModelAndView index(ModelAndView model,HttpServletRequest request){List<Menu> userMenus = (List<Menu>)request.getSession().getAttribute("userMenus");model.addObject("topMenuList", MenuUtil.getAllTopMenu(userMenus));model.addObject("secondMenuList", MenuUtil.getAllSecondMenu(userMenus));model.setViewName("system/index");return model;//WEB-INF/views/+system/index+.jsp = WEB-INF/views/system/index.jsp}/*** 系统登录后的欢迎页* @param model* @return*/@RequestMapping(value="/welcome",method=RequestMethod.GET)public ModelAndView welcome(ModelAndView model){model.setViewName("system/welcome");return model;}/*** 登陆页面* @param model* @return*/@RequestMapping(value="/login",method=RequestMethod.GET)public ModelAndView login(ModelAndView model){model.setViewName("system/login");return model;}/*** 登录表单提交处理控制器* @param user* @param cpacha* @return*/@RequestMapping(value="/login",method=RequestMethod.POST)@ResponseBodypublic Map<String, String> loginAct(User user,String cpacha,HttpServletRequest request){Map<String, String> ret = new HashMap<String, String>();if(user == null){ret.put("type", "error");ret.put("msg", "请填写用户信息!");return ret;}if(StringUtils.isEmpty(cpacha)){ret.put("type", "error");ret.put("msg", "请填写验证码!");return ret;}if(StringUtils.isEmpty(user.getUsername())){ret.put("type", "error");ret.put("msg", "请填写用户名!");return ret;}if(StringUtils.isEmpty(user.getPassword())){ret.put("type", "error");ret.put("msg", "请填写密码!");return ret;}Object loginCpacha = request.getSession().getAttribute("loginCpacha");if(loginCpacha == null){ret.put("type", "error");ret.put("msg", "会话超时,请刷新页面!");return ret;}if(!cpacha.toUpperCase().equals(loginCpacha.toString().toUpperCase())){ret.put("type", "error");ret.put("msg", "验证码错误!");logService.add("用户名为"+user.getUsername()+"的用户登录时输入验证码错误!");return ret;}User findByUsername = userService.findByUsername(user.getUsername());if(findByUsername == null){ret.put("type", "error");ret.put("msg", "该用户名不存在!");logService.add("登录时,用户名为"+user.getUsername()+"的用户不存在!");return ret;}if(!user.getPassword().equals(findByUsername.getPassword())){ret.put("type", "error");ret.put("msg", "密码错误!");logService.add("用户名为"+user.getUsername()+"的用户登录时输入密码错误!");return ret;}//说明用户名密码及验证码都正确//此时需要查询用户的角色权限Role role = roleService.find(findByUsername.getRoleId());List<Authority> authorityList = authorityService.findListByRoleId(role.getId());//根据角色获取权限列表String menuIds = "";for(Authority authority:authorityList){menuIds += authority.getMenuId() + ",";}if(!StringUtils.isEmpty(menuIds)){menuIds = menuIds.substring(0,menuIds.length()-1);}List<Menu> userMenus = menuService.findListByIds(menuIds);//把角色信息、菜单信息放到session中request.getSession().setAttribute("admin", findByUsername);request.getSession().setAttribute("role", role);request.getSession().setAttribute("userMenus", userMenus);ret.put("type", "success");ret.put("msg", "登录成功!");logService.add("用户名为{"+user.getUsername()+"},角色为{"+role.getName()+"}的用户登录成功!");return ret;}/*** 后台退出注销功能* @param request* @return*/@RequestMapping(value="/logout",method=RequestMethod.GET)public String logout(HttpServletRequest request){HttpSession session = request.getSession();session.setAttribute("admin", null);session.setAttribute("role", null);request.getSession().setAttribute("userMenus", null);return "redirect:login";}/*** 修改密码页面* @param model* @return*/@RequestMapping(value="/edit_password",method=RequestMethod.GET)public ModelAndView editPassword(ModelAndView model){model.setViewName("system/edit_password");return model;}@RequestMapping(value="/edit_password",method=RequestMethod.POST)@ResponseBodypublic Map<String, String> editPasswordAct(String newpassword,String oldpassword,HttpServletRequest request){Map<String, String> ret = new HashMap<String, String>();if(StringUtils.isEmpty(newpassword)){ret.put("type", "error");ret.put("msg", "请填写新密码!");return ret;}User user = (User)request.getSession().getAttribute("admin");if(!user.getPassword().equals(oldpassword)){ret.put("type", "error");ret.put("msg", "原密码错误!");return ret;}user.setPassword(newpassword);if(userService.editPassword(user) <= 0){ret.put("type", "error");ret.put("msg", "密码修改失败,请联系管理员!");return ret;}ret.put("type", "success");ret.put("msg", "密码修改成功!");logService.add("用户名为{"+user.getUsername()+"},的用户成功修改密码!");return ret;} /*** 本系统所有的验证码均采用此方法* @param vcodeLen* @param width* @param height* @param cpachaType:用来区别验证码的类型,传入字符串* @param request* @param response*/@RequestMapping(value="/get_cpacha",method=RequestMethod.GET)public void generateCpacha(@RequestParam(name="vl",required=false,defaultValue="4") Integer vcodeLen,@RequestParam(name="w",required=false,defaultValue="100") Integer width,@RequestParam(name="h",required=false,defaultValue="30") Integer height,@RequestParam(name="type",required=true,defaultValue="loginCpacha") String cpachaType,HttpServletRequest request,HttpServletResponse response){CpachaUtil cpachaUtil = new CpachaUtil(vcodeLen, width, height);String generatorVCode = cpachaUtil.generatorVCode();request.getSession().setAttribute(cpachaType, generatorVCode);BufferedImage generatorRotateVCodeImage = cpachaUtil.generatorRotateVCodeImage(generatorVCode, true);try {ImageIO.write(generatorRotateVCodeImage, "gif", response.getOutputStream());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}
源码获取:博客首页 "资源" 里下载!
Java项目:酒店管理系统(java+SSM+Maven+LayUI+mysql)相关推荐
- Java项目酒店管理系统(java+SSM+Maven+LayUI+mysql)
源码获取:博客首页 "资源" 里下载! 酒店管理系统-温情小筑后台管理系统 系统概要 项目主要功能包括: 住客管理:住客入住.住客列表: 房间管理:房间列表.添加房间.修改房间状态 ...
- Java项目:酒店管理系统(java+SSM+jsp+mysql+maven)
源码获取:博客首页 "资源" 里下载! 主要技术:java springmvc mybatis mysql tomcat js jauery jsp log4j等 ...
- Java项目:酒店管理系统(java+Springboot+Mybatis+Beetl+Layui)
源码获取:博客首页 "资源" 里下载! 此系统用的是springboot框架,前端框架主要用的是layui,表格用的bootstrap 表格,都是一些主流的框架,前端模板引擎用的是 ...
- 计算机毕业设计Java小型酒店管理系统(源码+系统+mysql数据库+Lw文档)
计算机毕业设计Java小型酒店管理系统(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java小型酒店管理系统(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 ...
- Java项目:医院管理系统(java+SSM+layui+maven+mysql)
源码获取:博客首页 "资源" 里下载! 功能介绍: 基于ssm+layui框架的小型医院后台管理系统.简单实现了病人管理.病床管理.员工管理.部门管理.药品管理.仪器管理等基础功能 ...
- Java项目:医院管理系统(java+SpringBoot+Layui+Freemaker+maven+mysql)
源码获取:博客首页 "资源" 里下载! 项目介绍 医院管理系统,分为管理员.医生.病人三种角色: 管理员主要功能包括: 首页.系统管理:医生管理.患者管理.药品管理:预约管理:病史 ...
- Java项目:养老院管理系统(java+SSM+BootStrap+jsp+Maven+mysql)
源码获取:博客首页 "资源" 里下载! 养老院管理系统 该系统主要功能室养老院系统,采用mvc三层架构 1.采用技术书spring.springmvc.mybatis.maven等 ...
- Java项目:养老院管理系统(java+Spring Boot + SpringMVC + MyBatis+HTML+CSS+JavaScrip+ Layui+maven+mysql)
源码获取:博客首页 "资源" 里下载! 关注公众号,带你学Java 项目介绍 : Spring Boot + SpringMVC + MyBatis+ Mysql + druid ...
- Java项目:图书管理系统(java+JSP+layui+bootstrap+Servlet+Mysql)
源码获取:俺的博客首页 "资源" 里下载! 项目介绍 使用jsp+servlet.layui.mysql完成的图书馆系统,包含用户图书借阅.图书管理员.系统管理员界面,功能齐全. ...
最新文章
- JSON与Struts2的结合使用
- 用于部分迁移学习的加权对抗网络 | CVPR 2018论文解读
- c语言程序找出500以内的所有素数,c语言求出给定范围内的所有质数
- java实现聊天室界面javafx_java 聊天室WeChat
- 将一个实体转换成 Url 参数的形式 ?a=ab=b
- 现代软件工程系列 学生的精彩文章 (3) 如何在Bug 不断的情况下还能保持平常心...
- Matrix响应式软件应用类型博客模板
- hdu 3093 动态规划
- 校招对项目实战要求分析
- 令人厌恶的错误MSB3721,以及win10,VS2019,YOLO V4 环境搭建
- Recommended System
- SAP GUI 760 下载
- c语言 t跳几个字节,int占几个字节(c语言)
- 通信原理 概念 笔记
- Win10/11 自带输入法一键变五笔86/98/郑码/小鹤音形/表形码
- 处理器阉割版和满血版有什么区别?
- 无法启动Windows安全中心服务怎么办
- altium designer 网络标签作用范围(Duplicate Net Names Wire解决办法)
- Python3-正则表达式~爬取猫眼电影应用
- P1359 租用游艇 洛谷