SSM酒店管理系统项目Day18


建议配合视频学习食用(12-1~12-6):
https://www.bilibili.com/video/BV1rr4y1F7Y2?p=1

22.查询房间列表(已优化)

在这里插入图片描述

22.1 查看房间列表(全部)

22.1.1 新增房间列表页面roomList.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en" class="fly-html-layui fly-html-store">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/statics/layui/dist/css/layui.css">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/statics/css/global.css" charset="utf-8">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/statics/css/global(1).css" charset="utf-8">
    <link rel="stylesheet" href="${pageContext.request.contextPath}/statics/css/store.css" charset="utf-8">
    <link rel="icon" href="${pageContext.request.contextPath}/statics/images/favicon.ico">
    <title>酒店管理系统</title>
<body>
<!-- 顶部start -->
<div class="layui-header header header-store" style="background-color: #393D49;">
    <div class="layui-container">
        <a class="logo" href="index.html">
            <img src="${pageContext.request.contextPath}/statics/images/logo.png" alt="layui">
        </a>
        <div class="layui-form component" lay-filter="LAY-site-header-component"></div>
        <ul class="layui-nav" id="layui-nav-userinfo">
            <li data-id="index" class="layui-nav-item layui-hide-xs">
                <a class="fly-case-active" data-type="toTopNav" href="/">首页</a>
            </li>
            <li data-id="room" class="layui-nav-item layui-hide-xs  layui-this">
                <a class="fly-case-active" data-type="toTopNav"  href="/room/list.html">房间</a>
            </li>
            <li data-id="login" class="layui-nav-item layui-hide-xs">
                <a class="fly-case-active" data-type="toTopNav" href="/login.jsp">登入</a>
            </li>
            <li data-id="register" class="layui-nav-item layui-hide-xs">
                <a class="fly-case-active" data-type="toTopNav" href="/register.jsp">注册</a>
            </li>
            <span class="layui-nav-bar" style="left: 560px; top: 55px; width: 0px; opacity: 0;"></span>
        </ul>
    </div>
</div>
<!-- 顶部end -->

<!-- 中间区域开始 -->
<!-- 搜索框start -->
<div class="shop-nav shop-index">
    <!--搜索 start-->
    <div id="LAY-topbar" style="height: auto;">
        <form class="layui-form layuimini-form">
            <div class="input-search">
                <div id="searchRoom"><input type="text" placeholder="搜索你需要的房间" name="keywords" id="searchKeywords"
                                            autocomplete="off" value="">
                    <button class="layui-btn layui-btn-shop" lay-submit="" lay-filter="searchHotelRoom" style="background-color: #009688"><i
                            class="layui-icon layui-icon-search"></i></button>
                </div>
                <div class="layui-container layui-hide-xs"><a href="#" class="topbar-logo"> <img
                        src="${pageContext.request.contextPath}/statics/images/logo-1.png" alt="layui"> </a></div>
            </div>
        </form>
    </div>
    <!--搜索 end-->

</div>
<!-- 搜索框end -->
<!-- 筛选条件start -->
<div class="shoplist-filter">
    <div class="layui-container">
        <div class="layui-card">
            <div class="layui-card-header"> <span class="layui-breadcrumb" style="visibility: visible;"> <a href="../hotel/index.html">酒店首页</a><span lay-separator="">/</span> <a href="../hotel/lists.html">类别</a><span lay-separator="">/</span> <a><cite>全部</cite></a>
						</span> </div>
            <div class="layui-card-body">
                <div class="store-cat-item"> <span><i class="layui-icon layui-icon-shop-fenlei"></i>类别:</span>
                    <%-- 隐藏域,保存当前选中的房型ID --%>
                    <input type="hidden" id="typeId" value="${typeId}">
                    <ul id="getAllRoomType">
                        <li <c:if test="${typeId==null}">class="active" </c:if> data-id="0">
                            <a class="fly-case-active" href="/room/list.html" data-type="toRoomTypeListByLists">全部</a>
                        </li>
                        <!--
                        <li data-id="1"> <a class="fly-case-active" href="JavaScript:void(0);" data-type="toRoomTypeListByLists">单人间</a> </li>
                        <li data-id="2"> <a class="fly-case-active" href="JavaScript:void(0);" data-type="toRoomTypeListByLists">双人间</a> </li>
                        <li data-id="3"> <a class="fly-case-active" href="JavaScript:void(0);" data-type="toRoomTypeListByLists">标准间</a> </li>
                        <li data-id="4"> <a class="fly-case-active" href="JavaScript:void(0);" data-type="toRoomTypeListByLists">商务间</a> </li>
                        <li data-id="5"> <a class="fly-case-active" href="JavaScript:void(0);" data-type="toRoomTypeListByLists">豪华间</a> </li>
                        <li data-id="6"> <a class="fly-case-active" href="JavaScript:void(0);" data-type="toRoomTypeListByLists">普通套间</a> </li>
                        <li data-id="7"> <a class="fly-case-active" href="JavaScript:void(0);" data-type="toRoomTypeListByLists">总统套间</a> </li>
                        -->
                    </ul>
                </div>
                <div class="store-cat-item colorFilt"> <span><i class="layui-icon layui-icon-shop-color"></i>楼层:</span>
                    <ul id="getAllFloor"><li style="background: #F2F2F2" title="全部">
                        <a class="fly-case-active" href="JavaScript:void(0);" data-type="toFloorListByLists">
                            <img src="${pageContext.request.contextPath}/statics/images/all_bg.jpg"><i class="layui-icon layui-icon-ok"></i></a></li><li data-id="1" title="酒店1楼" class="bg1">
                        <a class="fly-case-active" href="JavaScript:void(0);" data-type="toFloorListByLists">
                        </a>
                    </li>
                        <li data-id="2" title="酒店2楼" class="bg2">
                            <a class="fly-case-active" href="JavaScript:void(0);" data-type="toFloorListByLists">
                            </a>
                        </li>
                        <li data-id="3" title="酒店3楼" class="bg3">
                            <a class="fly-case-active" href="JavaScript:void(0);" data-type="toFloorListByLists">
                            </a>
                        </li>
                        <li data-id="4" title="酒店4楼" class="bg4">
                            <a class="fly-case-active" href="JavaScript:void(0);" data-type="toFloorListByLists">
                            </a>
                        </li>
                        <li data-id="5" title="酒店5楼" class="bg5">
                            <a class="fly-case-active" href="JavaScript:void(0);" data-type="toFloorListByLists">
                            </a>
                        </li>
                        <li data-id="6" title="酒店6楼" class="bg6">
                            <a class="fly-case-active" href="JavaScript:void(0);" data-type="toFloorListByLists">
                            </a>
                        </li>
                    </ul>
                </div>
                <p class="filtEnd">筛选出<span id="filtTotal">${roomList.size()}</span></p>
            </div>
        </div>
    </div>
</div>
<!-- 筛选条件end -->

<!-- 房间列表start -->
<div class="shop-temp shoplist">
    <div class="temp-normal">
        <div class="layui-container">
            <div class="layui-row layui-col-space20 shoplist" id="roomList">
                <c:forEach var="room" items="${roomList}">
                    <div data-id="${room.id}" class="layui-col-xs12 layui-col-sm6 layui-col-md4 layui-col-lg3">
                    <a class="template store-list-box fly-case-active" href="/room/detail/${room.id}.html" data-type="toRoomInfo">
                        <img src="/hotel/show/room-pic/main/${room.photo}" class="store-list-cover">
                        <h2 class="layui-elip">${room.title}</h2>
                        <div> <label class="layui-badge-rim store-list-pay">${room.roomType.price} </label>
                            <div class="store-list-colorbar">
                                <span class="store-color-bar" style="border-color: #009688;color: #009688;border-width: 1px;border-style: solid;background-color: #fff;    text-align: center;">NO.${room.roomNum}</span>
                                <span class="store-color-bar" style="border-color: #5fb878;color: #5fb878;border-width: 1px;border-style: solid;background-color: #fff;    text-align: center;">${room.roomType.typeName}</span>
                                <span class="store-color-bar" style="border-color: #01aaed;color: #01aaed;border-width: 1px;border-style: solid;background-color: #fff;    text-align: center;">${room.floor.floorName}</span>
                            </div>
                        </div>
                    </a>
                </div>
                </c:forEach>
            </div>
            <div style="margin: 50px 0 80px; text-align: center;"> </div>
        </div>
    </div>
</div>
<!-- 房间列表end -->



<!-- 中间区域结束 -->

<!-- 底部 -->
<div class="fly-footer">
        <p><a href="#">酒店系统</a> 2022 © <a href="#">test.cn</a></p>
    <p>
        <a href="https://blog.csdn.net/qq_41722217?">CSND</a>
        <a href="https://www.cnblogs.com/msq2000/">博客园</a>
        <a href="https://gitcode.net/users/qq_41722217/projects">GitCodedt</a>
        <a href="https://www.githubs.cn/" target="_blank">GiitHub社区论坛</a>
    </p>

</div>


<!-- 脚本开始 -->
<script src="${pageContext.request.contextPath}/statics/layui/dist/layui.js"></script>
<script>
    layui.use(["form","element","carousel"], function () {
        var form = layui.form,
            layer = layui.layer,
            element = layui.element,
            carousel = layui.carousel,
            $ = layui.$;

        //渲染轮播图
        carousel.render({
            elem: '#LAY-store-banner'
            ,width: '100%' //设置容器宽度
            ,height: '460' //设置容器高度
            ,arrow: 'always' //始终显示箭头
        });

        $.get("/roomType/roomTypeList",function(result){
            var html = "";
            for (let i = 0; i < result.length; i++) {
                //判断当前房型ID
                if(result[i].id == $("#typeId").val()){
                    html +="<li data-id='"+result[i].id+"' class='active'>";
                }else{
                    html +="<li data-id='"+result[i].id+"'>";
                }
                html +="<a class='fly-case-active' href='/room/list/"+result[i].id+".html' data-type='toRoomTypeListByLists'>"+result[i].typeName+"</a>";
                html +="</li>";
            }
            $("#getAllRoomType").append(html);
        },"json");

    });
</script>
<!-- 脚本结束 -->
<ul class="layui-fixbar">
    <li class="layui-icon layui-fixbar-top" lay-type="top" style=""></li>
</ul>
<div class="layui-layer-move"></div>

</body>
</html>

22.1.2 增加控制器RoomController.java内容

    /**
     * 查询房间列表
     * @param model
     * @return
     */
    @RequestMapping("/list.html")
    public String list(Model model){
        RoomVo roomVo = new RoomVo();
        roomVo.setStatus(1);//可预订
        //调用查询房间列表的方法
        List<Room> roomList = roomService.findRoomList(roomVo);
        //将房间列表放到模型中
        model.addAttribute("roomList",roomList);
        return "roomList";
    }

22.1.3 修改页面内容

1.将每个页面头部指向对应的页面(应用所有主页页面)
在这里插入图片描述

2.关于jsp页面的修改(视频12-1,12:14开始)

22.2 查看房型列表

1.RoomController.java

   /**
     * 根据房型查询
     * @param typeId
     * @param model
     * @return
     */
    @RequestMapping("/list/{typeId}.html")
    public String list(@PathVariable Integer typeId, Model model){
        RoomVo roomVo = new RoomVo();
        roomVo.setStatus(1);//可预订
        roomVo.setRoomTypeId(typeId);//房型
        //调用查询房间列表的方法
        List<Room> roomList = roomService.findRoomList(roomVo);
        //将房间列表放到模型中
        model.addAttribute("roomList",roomList);
        //将房型ID保存到模型中,目的在房间列表页面进行回显(优化内容)
        model.addAttribute("typeId",typeId);//null
        return "roomList";
    }

23. 立即预定

23.1 在detail.jsp添加对应的点击窗口与事件

1.添加立即预定的窗口

<%-- 预订房间 --%>
<div style="display: none;padding: 5px" id="orderRoomWindow">
    <form class="layui-form" style="width:90%;" id="dataFrm" lay-filter="dataFrm">
        <%-- 隐藏域,保存房间ID --%>
        <input type="hidden" name="roomId" value="${room.id}">
        <%-- 隐藏域,保存房型ID --%>
        <input type="hidden" name="roomTypeId" value="${room.roomTypeId}">
        <div class="layui-form-item">
            <label class="layui-form-label">预订日期</label>
            <div class="layui-input-block">
                <input type="text" id="book_date" lay-verify="required" autocomplete="off" readonly placeholder="请选择预订日期范围"
                       class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <div class="layui-inline">
                <label class="layui-form-label">入住时间</label>
                <div class="layui-input-inline">
                    <input type="text" name="arriveDate" id="arriveDate" lay-verify="required"  readonly placeholder="请选择入住时间"
                           class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label">离店时间</label>
                <div class="layui-input-inline">
                    <input type="text" name="leaveDate" id="leaveDate" lay-verify="required" readonly  placeholder="请选择离店时间"
                           class="layui-input">
                </div>
            </div>
        </div>
        <div class="layui-form-item">
            <div class="layui-inline">
                <label class="layui-form-label">入住天数</label>
                <div class="layui-input-inline">
                    <input type="text" name="day" id="day" lay-verify="required" readonly  placeholder="入住天数自动计算"
                           class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label">房费价格</label>
                <div class="layui-input-inline">
                    <input type="text" name="reservePrice" id="reservePrice" lay-verify="required"  readonly placeholder="房费价格自动计算"
                           class="layui-input">
                </div>
            </div>
        </div>
        <div class="layui-form-item">
            <div class="layui-inline">
                <label class="layui-form-label">预订姓名</label>
                <div class="layui-input-inline">
                    <input type="text" name="reservationName" lay-verify="required"  placeholder="请输入预订人姓名"
                           class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label">预订电话</label>
                <div class="layui-input-inline">
                    <input type="text" name="phone" lay-verify="required"  placeholder="请输入预订人电话"
                           class="layui-input">
                </div>
            </div>
        </div>



        <div class="layui-form-item">
            <label class="layui-form-label">身份证号</label>
            <div class="layui-input-block">
                <input type="text" name="idCard" lay-verify="required" autocomplete="off" placeholder="请输入身份证号码"
                       class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">备注留言</label>
            <div class="layui-input-block">
                <textarea class="layui-textarea" name="remark" id="content"></textarea>
            </div>
        </div>
        <div class="layui-form-item" style="margin-left: 80px">
            <span style="color: red;font-size: 16px;">预订须知:请携带本人的身份证办理入住手续,办理入住需要在前台缴纳押金¥500</span>
        </div>
        <div class="layui-form-item layui-row layui-col-xs12">
            <div class="layui-input-block" style="text-align: center;">
                <button type="button" class="layui-btn" lay-submit lay-filter="doSubmit"><span
                        class="layui-icon layui-icon-add-1"></span>提交
                </button>
                <button type="reset" class="layui-btn layui-btn-warm"><span
                        class="layui-icon layui-icon-refresh-1"></span>重置
                </button>
            </div>
        </div>
    </form>
</div>
        var mainIndex;
        //点击事件
        $("#bookRoomBtn").click(function () {
            //打开预订房间窗口
            mainIndex = layer.open({
                type: 1,//打开类型
                title: "预订房间",//窗口标题
                area: ["800px", "550px"],//窗口宽高
                content: $("#orderRoomWindow"),//引用的内容窗口
                success: function () {
                    //清空表单数据
                    $("#dataFrm")[0].reset();
                }
            });
        });

2.优化立即预定按钮
当房间已被预定后,立即预定按钮变为灰色
在这里插入图片描述

3.添加并渲染日期范围组件

  /**
         * 计算两个日期的天数差
         * @param strDateStart
         * @param strDateEnd
         * @returns {number}
         */
        function getDays(strDateStart,strDateEnd){
            var strSeparator = "-"; //日期分隔符
            Date1= strDateStart.split(strSeparator);
            oDate2= strDateEnd.split(strSeparator);
            var strDateS = new Date(Date1[0], Date1[1]-1, Date1[2]);
            var strDateE = new Date(oDate2[0], oDate2[1]-1, oDate2[2]);
            iDays = parseInt(Math.abs(strDateS - strDateE ) / 1000 / 60 / 60 /24)//把相差的毫秒数转换为天数
            return iDays ;
        }

        //渲染日期范围组件
        laydate.render({
            elem:"#book_date",
            range:"至",
            done:function (value,date,endDate) {
                var startDate = value.substr(0,value.indexOf("至")).trim();//入住时间
                var endDate = value.substr(value.indexOf("至")+1).trim();//离店时间
                //赋值
                $("#arriveDate").val(startDate);
                $("#leaveDate").val(endDate);
                //计算天数
                var day = getDays(startDate,endDate);
                //赋值天数
                $("#day").val(day);
                //计算价格
                $("#reservePrice").val(day * ${room.roomType.price});
            }
        });

23.2 提交预定信息

在这里插入图片描述

1.实体类
Orders.java

package com.manong.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

@Data
public class Orders {
    private Long id;
    private String ordersNo;
    private Long accountId;
    private Integer roomTypeId;
    private Integer roomId;
    private String reservationName;
    private String idCard;
    private String phone;
    private Integer status;
    private Date reserveDate;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date arriveDate;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date leaveDate;
    private Double reservePrice;
    private String remark;

    //添加房型对象
    private RoomType roomType;
    //添加房间对象
    private Room room;
}

2.数据层
OrdersMapper.java

package com.manong.dao;

import com.manong.entity.Orders;
import com.manong.vo.OrdersVo;

import java.util.List;

public interface OrdersMapper {

    /**
     * 添加订单
     * @param orders
     * @return
     */
    int addOrders(Orders orders);

}

OrdersMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.manong.dao.OrdersMapper">

    <insert id="addOrders">
        insert into t_orders (ordersNo, accountId,
          roomTypeId, roomId, reservationName,
          idCard, phone, status,
          reserveDate, arriveDate, leaveDate,
          reservePrice, remark)
        values (#{ordersNo,jdbcType=VARCHAR}, #{accountId,jdbcType=BIGINT},
          #{roomTypeId,jdbcType=INTEGER}, #{roomId,jdbcType=BIGINT}, #{reservationName,jdbcType=VARCHAR},
          #{idCard,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},
          #{reserveDate,jdbcType=TIMESTAMP}, #{arriveDate,jdbcType=DATE}, #{leaveDate,jdbcType=DATE},
          #{reservePrice,jdbcType=DECIMAL}, #{remark,jdbcType=VARCHAR})
     </insert>

   



</mapper>

AccountMapper.java

    @Select("select * from t_account where loginName = #{loginName}")
    Account getAccountByName(String loginName);

RoomMapper.java

    @Select("select * from t_room where id =#{id}")
    Room getRoomById(Integer roomId);

3.业务层
OrdersService.java

package com.manong.service;

import com.manong.entity.Orders;
import com.manong.vo.OrdersVo;

import java.util.List;

public interface OrdersService {
    /**
     * 添加订单
     * @param orders
     * @return
     */
    int addOrders(Orders orders);
}

OrdersServiceImpl.java

package com.manong.service.impl;

import com.manong.dao.OrdersMapper;
import com.manong.dao.RoomMapper;
import com.manong.dao.RoomTypeMapper;
import com.manong.entity.Orders;
import com.manong.entity.Room;
import com.manong.entity.RoomType;
import com.manong.service.OrdersService;
import com.manong.utils.UUIDUtils;
import com.manong.vo.OrdersVo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;


@Service
@Transactional
public class OrdersServiceImpl implements OrdersService {

    @Resource
    private OrdersMapper ordersMapper;

    @Resource
    private RoomMapper roomMapper;

    @Resource
    private RoomTypeMapper roomTypeMapper;


    public int addOrders(Orders orders) {
        orders.setOrdersNo(UUIDUtils.randomUUID());//订单号
        orders.setReserveDate(new Date());//创建时间(下单时间)
        orders.setStatus(1);//订单状态为待确认
        //1.添加订单信息
        int count = ordersMapper.addOrders(orders);
        if(count>0){
            //2.修改房间信息(状态为已预订2)
            Room room =roomMapper.getRoomById(orders.getRoomId());//查询
            room.setStatus(2);//修改状态为已预订
            roomMapper.updateRoom(room);//调用修改房间信息的方法
            //3.修改房型信息(可用房间数-1,已预订房间数+1)
            RoomType roomType = roomTypeMapper.findById(orders.getRoomTypeId());
            roomType.setAvilableNum(roomType.getAvilableNum()-1);//可用房间数减1
            roomType.setReservedNum(roomType.getReservedNum()+1);
            roomTypeMapper.updateRoomType(roomType);//调用修改房型的方法
        }
        return count;
    }

}

AccountService.java

    /**
     * 根据用户名查询用户信息
     * @param loginName
     * @return
     */
    Account getAccountByName(String loginName);

AccountServiceImpl.java

    @Override
    public Account getAccountByName(String loginName) {
        return accountMapper.getAccountByName(loginName);
    }

RoomService.java

    /**
     * 查询房型信息
     * @param id
     * @return
     */
    Room findById(Integer id);

RoomServiceImpl.java

    public Room findById(Integer id) {
        return roomMapper.findById(id);
    }

4.前台控制层
OrdersController.java

package com.manong.controller;

import com.alibaba.fastjson.JSON;
import com.manong.entity.Account;
import com.manong.entity.Orders;
import com.manong.service.AccountService;
import com.manong.service.OrdersService;
import com.manong.utils.SystemConstants;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.security.Principal;
import java.util.HashMap;
import java.util.Map;

@Controller
@RequestMapping("/orders")
public class OrdersController {

    @Resource
    private OrdersService ordersService;

    @Resource
    private AccountService accountService;

    /**
     * 立即预订(下单)
     * @param orders
     * @param principal
     * @return
     */
    @ResponseBody
    @RequestMapping("/addOrder")
    public String addOrders(Orders orders, Principal principal){
        Map<String,Object> map = new HashMap<String,Object>();
        //查询用户信息
        Account account = accountService.getAccountByName(principal.getName());

        //设置预订人ID
        orders.setAccountId(account.getId());

        if(ordersService.addOrders(orders)>0){
            map.put(SystemConstants.SUCCESS,true);
            map.put(SystemConstants.MESSAGE,"预订成功");
        }else{
            map.put(SystemConstants.SUCCESS,false);
            map.put(SystemConstants.MESSAGE,"预订失败");
        }
        return JSON.toJSONString(map);
    }

}

detail.jsp


        //监听表单提交事件
        form.on("submit(doSubmit)",function (data) {
            //发送请求
            $.post("/orders/addOrder",data.field,function(result){
                if(result.success){
                    layer.alert(result.message,{icon:1},function (index) {
                        //去到我的订单列表页面
                        //location.href="/";
                        layer.close(index);
                    });

                }else{
                    layer.alert(result.message,{icon:2});
                }
                layer.close(mainIndex);
            },"json");
            return false;
        });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
登陆系统:用户通过用户编号和密码登录系统,调用表tb_Admin,同时在每次登陆的时候生成一条日志记录,添加记录到tb_LoginLog,同时显示主界面,根据登陆的用户的身份角色不同,在主界面显示的操作控件会有微小差异 主界面设计与后台:界面的控件布局,美化设计,主界面的后台控制 包含功能菜单: 前台:(可返回登录时的主页面,主页面显示所有房间的状态。下级子菜单:在住顾客,今日在住客人,今日离店客人,今日到+今日离,今日明细表(当日盈利),房态分析表,在住查账) 订单:(单击预定打开所有订单查询页面,子菜单:预定,转入住,入住,取消预定,换房,退房,购买(购买商品的时候需要提供R_RoomId(房间编号,通过这个就可以确定是什么人),C_ConsumeId(商品编号)这些信息。))) 报表:(子菜单:盈利报表,登录日志,住客分析,发票表单) 提醒: 宾客在登记订单的时候会填写预住多少天,时间在到之前(次日11时给服务员发出某房间将要到期的提醒)会提示时间要到了,以提醒宾客提前办理退房手续,弹出消息提示框提示。如有超过预定时间的,将会添加一条违约记录到超时表中 商品管理: 添加商品:新进商品需要登记信息,添加到表tb_ConsumeInfo,需要连接表tb_ConsumeType 更改商品信息 删除商品 设置(管理员权限) 备份设置 计费设置 用户设置 商品设置 房间设置 锁屏 报表:(图表与列表) 盈利报表(按天,按周,按月,按季度,按年,指定日期)(按客房汇总,按商品汇总) 登录日志(查询指定日期的登录日志) 住客分析(分类汇总查询,查询当日某类型房的住客率,楼层住客信息查询) 电子发票(结账时候对个人产生的消费记录)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值