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

功能介绍

springboot酒店宾馆管理系统。该系统为后管系统,无前台。主要分三种角色:管理者/工作人员/前台人员。

主要功能有:
客房:客房标准、房间信息;
订单:入住订单;
员工:员工信息;
事务:事务信息;
停车:车位信息;
财务:财务信息;
历史:订单历史、车库历史;
会员:会员信息;

环境需要

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.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目

6.数据库:MySql 8.0版本;

技术栈

1. 后端:SpringBoot

2. 前端:html+layui+jQuery

使用说明

1. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,下载所需jar包;

2. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
3. 将项目中db.properties配置文件中的数据库配置改为自己的配置
4. 配置tomcat,然后运行项目,输入localhost:8888 登录
5. 数据库中的employ中有密码,密码是加密过的,三种权限,管理者/工作人员/前台人员
管理账号:admin 密码:worker1
工作人员账号:worker1 密码:worker1

前台人员:sever1 密码:worker1

用户管理控制器:

/*** 用户管理控制器* @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;}
}

角色role控制器:

/*** 角色role控制器* @author yy**/
@RequestMapping("/admin/role")
@Controller
public class RoleController {@Autowiredprivate RoleService roleService;@Autowiredprivate AuthorityService authorityService;@Autowiredprivate MenuService menuService;/*** 角色列表页面* @param model* @return*/@RequestMapping(value="/list",method=RequestMethod.GET)public ModelAndView list(ModelAndView model){model.setViewName("/role/list");return model;}/*** 获取角色列表* @param page* @param name* @return*/@RequestMapping(value="/list",method=RequestMethod.POST)@ResponseBodypublic Map<String, Object> getList(Page page,@RequestParam(name="name",required=false,defaultValue="") String name){Map<String, Object> ret = new HashMap<String, Object>();Map<String, Object> queryMap = new HashMap<String, Object>();queryMap.put("name", name);queryMap.put("offset", page.getOffset());queryMap.put("pageSize", page.getRows());ret.put("rows", roleService.findList(queryMap));ret.put("total", roleService.getTotal(queryMap));return ret;}/*** 角色添加* @param role* @return*/@RequestMapping(value="/add",method=RequestMethod.POST)@ResponseBodypublic Map<String, String> add(Role role){Map<String, String> ret = new HashMap<String, String>();if(role == null){ret.put("type", "error");ret.put("msg", "请填写正确的角色信息!");return ret;}if(StringUtils.isEmpty(role.getName())){ret.put("type", "error");ret.put("msg", "请填写角色名称!");return ret;}if(roleService.add(role) <= 0){ret.put("type", "error");ret.put("msg", "角色添加失败,请联系管理员!");return ret;}ret.put("type", "success");ret.put("msg", "角色添加成功!");return ret;}/*** 角色修改* @param role* @return*/@RequestMapping(value="/edit",method=RequestMethod.POST)@ResponseBodypublic Map<String, String> edit(Role role){Map<String, String> ret = new HashMap<String, String>();if(role == null){ret.put("type", "error");ret.put("msg", "请填写正确的角色信息!");return ret;}if(StringUtils.isEmpty(role.getName())){ret.put("type", "error");ret.put("msg", "请填写角色名称!");return ret;}if(roleService.edit(role) <= 0){ret.put("type", "error");ret.put("msg", "角色修改失败,请联系管理员!");return ret;}ret.put("type", "success");ret.put("msg", "角色修改成功!");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(roleService.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;}/*** 获取所有的菜单信息* @return*/@RequestMapping(value="/get_all_menu",method=RequestMethod.POST)@ResponseBodypublic List<Menu> getAllMenu(){Map<String, Object> queryMap = new HashMap<String, Object>();queryMap.put("offset", 0);queryMap.put("pageSize", 99999);return menuService.findList(queryMap);}/*** 添加权限* @param ids* @return*/@RequestMapping(value="/add_authority",method=RequestMethod.POST)@ResponseBodypublic Map<String, String> addAuthority(@RequestParam(name="ids",required=true) String ids,@RequestParam(name="roleId",required=true) Long roleId){Map<String,String> ret = new HashMap<String, String>();if(StringUtils.isEmpty(ids)){ret.put("type", "error");ret.put("msg", "请选择相应的权限!");return ret;}if(roleId == null){ret.put("type", "error");ret.put("msg", "请选择相应的角色!");return ret;}if(ids.contains(",")){ids = ids.substring(0,ids.length()-1);}String[] idArr = ids.split(",");if(idArr.length > 0){authorityService.deleteByRoleId(roleId);}for(String id:idArr){Authority authority = new Authority();authority.setMenuId(Long.valueOf(id));authority.setRoleId(roleId);authorityService.add(authority);}ret.put("type", "success");ret.put("msg", "权限编辑成功!");return ret;}/*** 获取某个角色的所有权限* @param roleId* @return*/@RequestMapping(value="/get_role_authority",method=RequestMethod.POST)@ResponseBodypublic List<Authority> getRoleAuthority(@RequestParam(name="roleId",required=true) Long roleId){return authorityService.findListByRoleId(roleId);}
}

房间管理后台控制器:

/*** 房间管理后台控制器* @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("/home")
@Controller
public class HomeController {@Autowiredprivate RoomTypeService roomTypeService;@Autowiredprivate AccountService accountService;/*** 前台首页* @param model* @param name* @return*/@RequestMapping(value="/index",method=RequestMethod.GET)public ModelAndView list(ModelAndView model,@RequestParam(name="name",defaultValue="") String name){Map<String,Object> queryMap = new HashMap<String, Object>();queryMap.put("name", name);queryMap.put("offset", 0);queryMap.put("pageSize", 999);model.addObject("roomTypeList", roomTypeService.findList(queryMap));model.setViewName("home/index/index");model.addObject("kw", name);return model;}/*** 登录页面* @param model* @return*/@RequestMapping(value="/login",method=RequestMethod.GET)public ModelAndView login(ModelAndView model){model.setViewName("home/index/login");return model;}/*** 注册页面* @param model* @return*/@RequestMapping(value="/reg",method=RequestMethod.GET)public ModelAndView reg(ModelAndView model){model.setViewName("home/index/reg");return model;}/*** 登录信息提交* @param account* @return*/@RequestMapping(value="/login",method=RequestMethod.POST)@ResponseBodypublic Map<String,String> loginAct(Account account,String vcode,HttpServletRequest request){Map<String,String> retMap = new HashMap<String, String>();if(account == null){retMap.put("type", "error");retMap.put("msg", "请填写正确的用户信息!");return retMap;}if(StringUtils.isEmpty(account.getName())){retMap.put("type", "error");retMap.put("msg", "用户名不能为空!");return retMap;}if(StringUtils.isEmpty(account.getPassword())){retMap.put("type", "error");retMap.put("msg", "密码不能为空!");return retMap;}if(StringUtils.isEmpty(vcode)){retMap.put("type", "error");retMap.put("msg", "验证码不能为空!");return retMap;}Object attribute = request.getSession().getAttribute("accountLoginCpacha");if(attribute == null){retMap.put("type", "error");retMap.put("msg", "验证码过期,请刷新!");return retMap;}if(!vcode.equalsIgnoreCase(attribute.toString())){retMap.put("type", "error");retMap.put("msg", "验证码错误!");return retMap;}Account findByName = accountService.findByName(account.getName());if(findByName == null){retMap.put("type", "error");retMap.put("msg", "用户名不存在!");return retMap;}if(!account.getPassword().equals(findByName.getPassword())){retMap.put("type", "error");retMap.put("msg", "密码错误!");return retMap;}if(findByName.getStatus() == -1){retMap.put("type", "error");retMap.put("msg", "该用户已被禁用,请联系管理员!");return retMap;}request.getSession().setAttribute("account", findByName);request.getSession().setAttribute("accountLoginCpacha", null);retMap.put("type", "success");retMap.put("msg", "登录成功!");return retMap;}/*** 注册信息提交* @param account* @return*/@RequestMapping(value="/reg",method=RequestMethod.POST)@ResponseBodypublic Map<String,String> regAct(Account account){Map<String,String> retMap = new HashMap<String, String>();if(account == null){retMap.put("type", "error");retMap.put("msg", "请填写正确的用户信息!");return retMap;}if(StringUtils.isEmpty(account.getName())){retMap.put("type", "error");retMap.put("msg", "用户名不能为空!");return retMap;}if(StringUtils.isEmpty(account.getPassword())){retMap.put("type", "error");retMap.put("msg", "密码不能为空!");return retMap;}if(StringUtils.isEmpty(account.getMobile())){retMap.put("type", "error");retMap.put("msg", "手机号不能为空!");return retMap;}if(isExist(account.getName())){retMap.put("type", "error");retMap.put("msg", "该用户名已经存在!");return retMap;}if(accountService.add(account) <= 0){retMap.put("type", "error");retMap.put("msg", "注册失败,请联系管理员!");return retMap;}retMap.put("type", "success");retMap.put("msg", "注册成功!");return retMap;}/*** 退出登录* @param request* @return*/@RequestMapping(value="/logout",method=RequestMethod.GET)public String logout(HttpServletRequest request){request.getSession().setAttribute("account", null);return "redirect:login";}private boolean isExist(String name){Account account = accountService.findByName(name);if(account == null)return false;return true;}
}

房间类型管理后台控制器:

/*** 房间类型管理后台控制器* @author yy**/
@RequestMapping("/admin/room_type")
@Controller
public class RoomTypeController {@Autowiredprivate RoomTypeService roomTypeService;/*** 房间类型管理列表页面* @param model* @return*/@RequestMapping(value="/list",method=RequestMethod.GET)public ModelAndView list(ModelAndView model){model.setViewName("room_type/list");return model;}/*** 房间类型信息添加操作* @param roomType* @return*/@RequestMapping(value="/add",method=RequestMethod.POST)@ResponseBodypublic Map<String, String> add(RoomType roomType){Map<String, String> ret = new HashMap<String, String>();if(roomType == null){ret.put("type", "error");ret.put("msg", "请填写正确的房间类型信息!");return ret;}if(StringUtils.isEmpty(roomType.getName())){ret.put("type", "error");ret.put("msg", "房间类型名称不能为空!");return ret;}roomType.setAvilableNum(roomType.getRoomNum());//默认房间数等于可用房间数roomType.setBookNum(0);//设置预定数0roomType.setLivedNum(0);//设置已入住数0if(roomTypeService.add(roomType) <= 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(RoomType roomType){Map<String, String> ret = new HashMap<String, String>();if(roomType == null){ret.put("type", "error");ret.put("msg", "请填写正确的房间类型信息!");return ret;}if(StringUtils.isEmpty(roomType.getName())){ret.put("type", "error");ret.put("msg", "房间类型名称不能为空!");return ret;}RoomType existRoomType = roomTypeService.find(roomType.getId());if(existRoomType == null){ret.put("type", "error");ret.put("msg", "未找到该数据!");return ret;}int offset = roomType.getRoomNum() - existRoomType.getRoomNum();roomType.setAvilableNum(existRoomType.getAvilableNum() + offset);if(roomType.getAvilableNum() <= 0){roomType.setAvilableNum(0);//没有可用房间roomType.setStatus(0);//房型已满if(roomType.getAvilableNum() + existRoomType.getLivedNum() + existRoomType.getBookNum() > roomType.getRoomNum()){ret.put("type", "error");ret.put("msg", "房间数设置不合理!");return ret;}}if(roomTypeService.edit(roomType) <= 0){ret.put("type", "error");ret.put("msg", "修改失败,请联系管理员!");return ret;}ret.put("type", "success");ret.put("msg", "修改成功!");return ret;}/*** 分页查询房间类型信息* @param name* @param page* @return*/@RequestMapping(value="/list",method=RequestMethod.POST)@ResponseBodypublic Map<String,Object> list(@RequestParam(name="name",defaultValue="") String name,@RequestParam(name="status",required=false) Integer status,Page page){Map<String,Object> ret = new HashMap<String, Object>();Map<String,Object> queryMap = new HashMap<String, Object>();queryMap.put("name", name);queryMap.put("status", status);queryMap.put("offset", page.getOffset());queryMap.put("pageSize", page.getRows());ret.put("rows", roomTypeService.findList(queryMap));ret.put("total", roomTypeService.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(roomTypeService.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;}
}

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

Java项目:酒店宾馆管理系统(java+SpringBoot+html+layui+jQuery+maven+mysql)相关推荐

  1. Java项目:手机商城管理系统(java+JSP+bootstrap+servlet+Mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 本项目分为前后台,分为管理员与普通用户两种角色,管理员登录后台,普通用户登录前台: 管理员角色包含以下功能: 管理员登录,订单 ...

  2. Java项目:景区旅游管理系统(java+SpringBoot+html+layui+bootstrap+jQuery+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 springboot景区管理系统.该项目分为前台网站展示与后台管理. 前台网站主要功能有:用户登录.注册:首页有热门酒店.热门景点 ...

  3. Java项目:汽车配件销售管理系统(java+SpringBoot+layui+html+maven+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 本项目为后台管理系统, 主要功能包括: 公告增删改查,用户管理,登录页面,订单查询,配件添加等等 环境需要 1.运行环境:最好是j ...

  4. Java项目:大学生健康档案管理系统(java+jpa+swagger-ui+springboot+vue+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 大学生健康档案管理系统,目前演示数据中主要包括三种角色:管理员.医生.学生:其中管理员包含最高权限:可对体检表,健康文档,体检数据 ...

  5. Java项目:蓝天幼儿园管理系统(java+SpringBoot+thymeleaf+html+maven+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 蓝天幼儿园管理系统,共分为三种角色,管理员.家长.教师. 管理员角色具有功能: 系统管理-用户管理.页面管理.角色管理, 校园管理 ...

  6. Java项目:私人牙医管理系统(java+SpringBoot+html+layui+echarts+maven+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 私人牙医管理系统.该项目分为前后台,共三种角色:管理员.医生.客户: 前台主要功能包括:首页.医生介绍.新闻资讯.关于我们.联系我 ...

  7. Java项目:田径运动会管理系统(java+SpringBoot+Thymeleaf+HTML+maven+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 本项目分为管理员.学生两种角色, 管理员主要功能包括: 功能:登录.查看个人资料.修改密码.选手管理.赛事管理.报名管理.成绩管理 ...

  8. Java项目:美容院预约管理系统(java+SpringBoot+JSP+jQuery+maven+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 本系统分为管理员与普通用户两种角色: 管理员角色包含以下功能: 登录,首页,新增管理员,管理员信息列表,网站用户信息列表,新增新闻 ...

  9. 基于javaweb+mysql的私人牙医管理系统(java+SpringBoot+html+layui+echarts+maven+mysql)

    项目介绍 私人牙医管理系统.该项目分为前后台,共三种角色:管理员.医生.客户: 前台主要功能包括:首页.医生介绍.新闻资讯.关于我们.联系我们等功能: 后台管理员主要功能包括: 客户管理:客户信息统计 ...

最新文章

  1. 6.DeepFM: A Factorization-Machine based Neural Network for CTR Prediction论文详解和代码实现
  2. C#中Delegate和Event以及它们的区别(转载)
  3. BM15 删除有序链表中重复的元素-I
  4. leetcode 896. 单调数列
  5. android监听应用服务,Android应用中Back键的监听及处理实例
  6. 通过端口映射突破防火墙
  7. cmd java转jar包,cmd 打包java成jar可执行文件
  8. GIF图形文件格式文档
  9. 超级列表框排序mysql_超级列表框排序
  10. 顺序容器和关联容器添加新元素方法详解
  11. DEVC6.0使用教程
  12. 计算机考研数据结构答案,计算机考研数据结构试卷八(练习题含答案)
  13. ug建模教程ug建模怎么学ug10.0编程教程入门ug建模实例
  14. office图标空白异常解决方法
  15. Fork/Join 型线程池与 Work-Stealing 算法
  16. MySQL查询之内存临时表
  17. 虚拟机中可移动设备灰色 usb无法连接到客户机
  18. 树莓派(二) adb命令控制手机拨打/接听电话
  19. 激活ltsb2016_激活windows10 LTSB 2016
  20. 【考研】2022暨南大学848 电子信息(计算机技术) 经验贴 经验贴汇总

热门文章

  1. 关于蓝牙的测试(一)
  2. EMC Data Domain 存储系统的日常健康检查
  3. STM32之IIC通讯升级版--SHT30温湿度读取
  4. 详解spring的IOC控制反转和DI依赖注入
  5. Navisworks 导入revit模型显示不全问题的解决方案(比如不显示体量模型)
  6. SSD 4K对齐(转)
  7. 你是如何在压力下工作的? - Top 10 面试问题解析
  8. 微信小程序入门与实战之构建阅读详情页面
  9. Onenote2016 for Win7/Mac-学习笔记
  10. APM,监控界的扛把子,牛逼!