酒店管理系统

您所在的位置:网站首页 酒店管理系统需求说明书怎么写好 酒店管理系统

酒店管理系统

2023-08-09 11:40| 来源: 网络整理| 查看: 265

酒店后台管理系统

这是一个基于ssm+jsp的maven后台管理系统项目,使用idea,Mysql来搭建项目,在完成项目后,我想通过一篇博客来记录我的学习过程已经对项目进行讲解,具体的代码会放在Github上 功能介绍: 1,能够实现对系统管理员进行授权,不同级别的管理员可以授予不同的管理员权限。 2,能够实现入住信息的查询,添加,删除。 3,能够实现对客房信息的查询,已经管理不同类型的客房 4,管理VIP客户 功能展示 首页添加系统用户 在这里插入图片描述 注册会员 在这里插入图片描述入住信息 在这里插入图片描述

在介绍项目之前,我想先记录一个分页功能和按条件查询功能(手机号,姓名,房间号),分页在展示数据的时候是必不可少的,按条件查询也同样重要

1在pom中加分页插件

com.github.pagehelper pagehelper 4.1.6

2, 配置mybatis的分页插件PageHelper

在service层调用

3,service层 @Autowired UserDao userDao; @Override public List findUsersInfo(Map paramMap, Integer pageNum, Integer pageSize) { PageHelper.startPage(pageNum, pageSize); return userDao.selectUser(paramMap); }

在controller层调用

4,controller层 @RequestMapping("/getUserInfo.do") public String getInRoomInfo(Model model, @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum, @RequestParam(value = "pageSize", required = false, defaultValue = "2") Integer pageSize, @RequestParam(value = "name", required = false) String name, @RequestParam(value = "email", required = false) String email, @RequestParam(value = "tel", required = false) String tel) { Map paramMap = new HashMap(); if(name!=null) { name=name.trim(); } if(email!=null) { email=email.trim(); } if(tel!=null) { tel=tel.trim(); } paramMap.put("name", name); paramMap.put("email", email); paramMap.put("tel",tel); List usersInfo = userService.findUsersInfo(paramMap, pageNum, pageSize); PageInfo pageInfo = new PageInfo(usersInfo); model.addAttribute("pageInfo",pageInfo); return "testuserinfo.jsp"; }

在jsp页面

--%> 第${pageInfo.pageNum}页,共${pageInfo.pages}页,共${pageInfo.total}条记录 首页 上一页 ${page} ${page} 下一页 末页

按条件查询 在这里插入图片描述 实现步骤: 1,在jsp页面的form标签中以post的方式发请求到获取全部用户信息的请求方法getInRoomInfo.do。

选择分类: 房间号 客人姓名 手机号码 关键字: jQuery(function(){ jQuery("#conditionType").change(function(){ var v = jQuery(this).find("option:selected").val(); console.log(v); jQuery("#keyword").attr("name",v); }); });

在controller中,将customerName,roomNum,phone放入map集合中再去调用service方法,由于只能按照一个条件去查询,所以这三个参数只有一个是有值的,另外两个是null的。

@RequestMapping("/getInRoomInfo.do") public String getInRoomInfo(Model model, @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum, @RequestParam(value = "pageSize", required = false, defaultValue = "3") Integer pageSize, @RequestParam(value = "customerName", required = false) String customerName, @RequestParam(value = "roomNum", required = false) String roomNum, @RequestParam(value = "phone", required = false) String phone) { Map paramMap = new HashMap(); paramMap.put("customerName", customerName); paramMap.put("roomNum", roomNum); paramMap.put("phone", phone); List inRoomList = inRoomService.findInRoomInfo(paramMap, pageNum, pageSize); PageInfo pageInfo = new PageInfo(inRoomList); model.addAttribute("pageInfo", pageInfo); return "bill/inroominfo.jsp"; }

service层中调用dao方法接口 在Mapper中SQL是这样写的,使用if标签,使得传进来的非空的值能够成为条件拼接到SQL语句中。

SELECT iri.out_room_status,rm.room_num,rt.room_type_name,iri.customer_name,iri.gender, iri.phone,iri.money,iri.idcard,iri.create_date,iri.is_vip,vp.vip_rate FROM hotel.in_room_info iri INNER JOIN hotel.rooms rm ON iri.room_id=rm.id INNER JOIN hotel.room_type rt ON rt.id=rm.room_type_id LEFT JOIN hotel.vip vp ON iri.idcard=vp.idcard WHERE iri.status='1' AND iri.customer_name=#{customerName} and rm.room_num=#{roomNum} AND iri.phone=#{phone}

项目搭建:只需要配置Spring,Springmvc,Mybatis的配置文件,CSDN上很多这种文件,只需要修改一下数据库文件即可使用,需要注意的是不同版本的数据库文件数据库驱动不同,这里代码就不贴上来了。 自此,项目的底层就搭建好了! .接下来我分三层,来讲解我的项目:dao层(持久层),service(服务层),controller(层) 持久层主要用于操作数据库,实现对数据库的增删改查 分别对VIP模块,系统管理员模块,登录模块,入住模块,客房模块 service controller

代码不在一一赘述,我想记录一些SQl语句,便于后来学习。 首先是验证登录的SQL,用户名,密码正确,使用状态为1 SELECT COUNT(*) FROM system_user where username=#{username} AND pwd=#{password} AND use_status=1

2,授权信息列表 ,因为不同权限的管理登录,他拥有的权限也是不同的,所以在完成登录之后需要去获取权限

SELECT * FROM (SELECT id AS oneId,authority_name AS oneName FROM system_authority WHERE parent=0) t1 INNER JOIN (SELECT id AS twoId,authority_name AS twoName,authority_url AS url,parent FROM system_authority WHERE parent!=0) t2 ON t2.parent=t1.oneId WHERE t1.oneId!=5 select * from (select sa.id as oneId,sa.authority_name as oneName from hotel.system_authority sa inner join hotel.user_authority ua on sa.id=ua.authority_id inner join hotel.system_user su on su.id=ua.user_id where su.username=#{0} and sa.parent=0) t1 inner join (select sa.id as twoId,sa.authority_name as twoName,sa.authority_url as url,sa.parent from hotel.system_authority sa inner join hotel.user_authority ua on sa.id=ua.authority_id inner join hotel.system_user su on su.id=ua.user_id where su.username=#{0} and sa.parent!=0) t2 on t1.oneId=t2.parent;

在service层中完成调用Mapper的方法,实现基本的业务逻辑 注入Mapper对象

@Autowired private LoginMapper loginMapper;

验证登录

@Transactional(readOnly = false) public boolean login(String username, String pwd, HttpSession session) throws Exception { // 对明文密码进行加密后在调用mapper层 pwd = MD5Tool.md5(pwd); int flag = loginMapper.login(username, pwd); if (flag >= 1) { List oneMenuList = loginMapper.getAuthorityByUsername(username); session.setAttribute("oneMenuList", oneMenuList); session.setAttribute("username", username); return true; } return false;

controller层:调用service层的业务逻辑,并且返回给前端 注入service对象用于调用,登录成功即可跳到首页,登录失败则跳到登录页重新登录

@Controller public class LoginController { @Resource private LoginService loginService; @RequestMapping("/login.do") public String login(String username, String pwd, HttpSession session) throws Exception { boolean flag = loginService.login(username, pwd, session); return flag ? "index.jsp" : "login.jsp"; } }

以上便是登录功能,接下来介绍增加系统管理员功能 向系统添加管理员涉及到两条SQL

INSERT INTO SYSTEM_USER VALUES(NULL,#{username},#{pwd},NOW(),'1','0') INSERT INTO user_authority VALUES(#{userId},#{authority})

因为这个功能的实现,需要涉及到多张表,因此在这里着重记录一下数据库的相关知识 只读事务(@Transactional(readOnly = true))的一些概念 注意是一次执行多次查询来统计某些信息,这时为了保证数据整体的一致性,要用只读事务,在将事务设置成只读后,相当于将数据库设置成只读数据库,此时若要进行写的操作,会出现错误 service层中,使用map,将用户名和密码放入map集合中,然后调用登录的接口,验证登录。再将userId与权限id都添加到user_authority表中

@Transactional(readOnly = false) @Override public boolean saveSystemUser(String username, String pwd, String oneIds, String twoIds) throws Exception { // 1、往system_user表中添加数据,获取生成的主键值 Map paramMap = new HashMap(); paramMap.put("username", username); paramMap.put("pwd", MD5Tool.md5(pwd)); int flag1 = systemUserMapper.insertSystemUser(paramMap); // 2、将userId与权限id都添加到user_authority表中中 if (flag1 return false; } } return true; }

controller中去调用即可

/* 添加系统用户(同时授权)*/ @RequestMapping("/addSystemUser.do") public @ResponseBody boolean addSystemUser(String username, String pwd, String oneIds, String twoIds) throws Exception { return systemUserService.saveSystemUser(username, pwd, oneIds, twoIds); } @RequestMapping("/getSystemUserByLimit.do") public String getSystemUserByLimit(Model model, @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) { List systemUserList = systemUserService.findSystemUserByLimit(pageNum, pageSize); model.addAttribute("systemUserList", systemUserList); return "user/showSystemUser.jsp"; }

以上记录的是两个比较常见的功能,其他功能类似,就不在一一介绍了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3