酒店管理系统

@TOC

springboot0792酒店管理系统

系统概述

进过系统的分析后,就开始记性系统的设计,系统设计包含总体设计和详细设计。总体设计只是一个大体的设计,经过了总体设计,我们能够划分出系统的一些东西,例如文件、文档、数据等。而且我们通过总体设计,大致可以划分出了程序的模块,以及功能。但是只是一个初步的分类,并没有真正的实现。

整体设计,只是一个初步设计,而且,对于一个项目,我们可以进行多个整体设计,通过对比,包括性能的对比、成本的对比、效益的对比,来最终确定一个最优的设计方案,选择优秀的整体设计可以降低开发成本,增加公司效益,从这一点来讲,整体设计还是非常重要的。

酒店管理系统工作原理图如图4-1所示:

图4-1 系统工作原理图

4.2 系统结构设计

系统架构图属于系统设计阶段,系统架构图只是这个阶段一个产物,系统的总体架构决定了整个系统的模式,是系统的基础。酒店管理系统的整体结构设计如图4-2所示。

图4-2 系统结构图

4.3数据库设计

数据库是计算机信息系统的基础。目前,电脑系统的关键与核心部分就是数据库。数据库开发的优劣对整个系统的质量和速度有着直接影响。

4.3.1 数据库设计原则

数据库的概念结构设计采用实体—联系(E-R)模型设计方法。E-R模型法的组成元素有:实体、属性、联系,E-R模型用E-R图表示,是提示用户工作环境中所涉及的事物,属性则是对实体特性的描述。在系统设计当中数据库起着决定性的因素。下面设计出这几个关键实体的实体—关系图。

4.3.2 数据库实体

数据模型中的实体(Entity),也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”。例如,公司中的每个员工,家里中的每个家具。

本系统的E-R图如下图所示:

1、客房信息管理实体图如图4-3所示:

图4-3客房信息管理实体图

2、入住登记管理实体图如图4-4所示:

图4-4入住登记管理实体图

4.3.3 数据库表设计

数据库的表信息属于设计的一部分,下面介绍数据库中的各个表的详细信息。

表4-1:酒店公告

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
titlevarchar200标题
introductionlongtext4294967295简介
picturevarchar200图片
contentlongtext4294967295内容

表4-2:客房预订

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
yudingbianhaovarchar200预订编号
kefangmingchengvarchar200客房名称
kefangleixingvarchar200客房类型
kefangtupianvarchar200客房图片
jiudianmingchengvarchar200酒店名称
jiudiandizhivarchar200酒店地址
kefangjiageint客房价格
shuliangint数量
zongjiageint总价格
ruzhurenshuint入住人数
xiadanshijiandatetime下单时间
yonghuzhanghaovarchar200用户账号
yonghuxingmingvarchar200用户姓名
lianxidianhuavarchar200联系电话
beizhulongtext4294967295备注
sfshvarchar200是否审核
shhflongtext4294967295审核回复
ispayvarchar200是否支付未支付

表4-3:客房信息

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
kefangmingchengvarchar200客房名称
kefangleixingvarchar200客房类型
kefangtupianvarchar200客房图片
kefangjiageint客房价格
kefangsheshilongtext4294967295客房设施
shuliangvarchar200数量
jiudianmingchengvarchar200酒店名称
jiudiandizhivarchar200酒店地址
kefangjieshaolongtext4294967295客房介绍
clicknumint点击次数0

表4-4:客房类型

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
kefangleixingvarchar200客房类型

表4-5:客房服务

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
fuwuxiangmuvarchar200服务项目
fuwufeiyongvarchar200服务费用
fengmianvarchar200封面
shijianduanvarchar200时间段
fuwuxiangqinglongtext4294967295服务详情

表4-6:用户

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
yonghuzhanghaovarchar200用户账号
yonghuxingmingvarchar200用户姓名
mimavarchar200密码
xingbievarchar200性别
nianlingint年龄
lianxidianhuavarchar200联系电话
dianziyouxiangvarchar200电子邮箱

表4-7:服务费用

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
yonghuzhanghaovarchar200用户账号
yonghuxingmingvarchar200用户姓名
fangjianhaovarchar200房间号
fuwuxiangmuvarchar200服务项目
fuwufeiyongvarchar200服务费用
dengjishijiandatetime登记时间
beizhulongtext4294967295备注
ispayvarchar200是否支付未支付

表4-8:用户表

字段名称类型长度字段说明主键默认值
idbigint主键主键
usernamevarchar100用户名
passwordvarchar100密码
rolevarchar100角色管理员
addtimetimestamp新增时间CURRENT_TIMESTAMP

表4-9:客房信息评论表

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
refidbigint关联表id
useridbigint用户id
nicknamevarchar200用户名
contentlongtext4294967295评论内容
replylongtext4294967295回复内容

表4-10:退房登记

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
yudingbianhaovarchar200预订编号
kefangmingchengvarchar200客房名称
kefangleixingvarchar200客房类型
fangjianhaovarchar200房间号
yonghuzhanghaovarchar200用户账号
yonghuxingmingvarchar200用户姓名
lianxidianhuavarchar200联系电话
tuifangshijiandatetime退房时间
beizhulongtext4294967295备注

表4-11:配置文件

字段名称类型长度字段说明主键默认值
idbigint主键主键
namevarchar100配置参数名称
valuevarchar100配置参数值

表4-12:token表

字段名称类型长度字段说明主键默认值
idbigint主键主键
useridbigint用户id
usernamevarchar100用户名
tablenamevarchar100表名
rolevarchar100角色
tokenvarchar200密码
addtimetimestamp新增时间CURRENT_TIMESTAMP
expiratedtimetimestamp过期时间CURRENT_TIMESTAMP

表4-13:收藏表

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
useridbigint用户id
refidbigint收藏id
tablenamevarchar200表名
namevarchar200收藏名称
picturevarchar200收藏图片

表4-14:入住登记

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
yudingbianhaovarchar200预订编号
kefangmingchengvarchar200客房名称
kefangleixingvarchar200客房类型
fangjianhaovarchar200房间号
yonghuzhanghaovarchar200用户账号
yonghuxingmingvarchar200用户姓名
lianxidianhuavarchar200联系电话
dengjishijiandatetime登记时间
yajinvarchar200押金
beizhulongtext4294967295备注
ispayvarchar200是否支付未支付

5统详细设计

5.1系统功能模块

酒店管理系统,在系统首页可以查看首页、客房服务、客房信息、酒店公告、个人中心、后台管理等内容进行操作,如图5-1所示。

图5-1系统首页界面图

用户注册,在用户注册页面通过填写用户账号、用户姓名、密码、年龄、联系电话、电子邮箱等信息完成用户注册,如图5-2所示。在个人中心页面通过填写用户账号、用户姓名、密码、性别、年龄、联系电话、电子邮箱等信息进行更新操作,还可以对我的收藏进行相应操作;如图5-3所示。

图5-2用户注册界面图

图5-3个人中心界面图

客房服务,在客房服务页面可以查看服务项目、服务费用、封面、时间段、服务详情等详细内容进预约,如图5-4所示。

图5-4客房服务界面图

客房信息,在客房信息页面可以查看客房名称、客房类型、客房图片、客房价格、客房设施、数量、酒店名称、酒店地址、客房介绍等详细内容进预约,评论或收藏等操作;如图5-5所示。

图5-5客房信息界面图

5.2管理员功能模块

管理员登录,通过填写注册时输入的用户名、密码、选择角色进行登录,如图5-6所示。

图5-6管理员登录界面图

管理员登录进入系统可以查看首页、个人中心、用户管理、客房类型管理、客房服务管理、客房信息管理、客房预订管理、入住登记管理、服务费用管理、退房登记管理、系统管理等信息进行详细操作,如图5-7所示。

图5-7管理员功能界面图

用户管理,在用户管理页面中可以对索引、用户账号、用户姓名、性别、年龄、联系电话、电子邮箱等信息进行详情,修改或删除等操作,如图5-8所示。

图5-8用户管理界面图

客房类型管理,在客房类型管理页面中可以对索引、客房类型等信息进行详情,修改或删除等操作,如图5-9所示。

图5-9客房类型管理界面图

客房服务管理,在客房服务管理页面中可以对索引、服务项目、服务费用、封面、时间段等信息进行详情,修改或删除等操作,如图5-10所示。

图5-10客房服务管理界面图

客房信息管理,在客房信息管理页面中可以对索引、客房名称、客房类型、客房图片、客房价格、客房设施、数量、酒店名称、酒店地址等信息进行详情、修改、查看评论或删除等操作,如图5-11所示。

图5-11客房信息管理界面图

客房预订管理,在客房预订管理页面中可以对索引、预订编号、客房名称、客房类型、客房图片、客房状态、酒店名称、酒店地址、客房价格、数量、总价格、入住人数、下单时间、用户账号、用户姓名、联系电话、是否支付、审核回复、审核状态等信息进行详情、入住、修改或删除等操作,如图5-12所示。

图5-12客房预订管理界面图

入住登记管理,在入住登记管理页面中可以对索引、预订编号、客房名称、客房类型、房间号、用户账号、用户姓名、联系电话、登记时间、押金、是否支付等信息进行详情、退房、修改、删除等操作,如图5-13所示。

图5-13入住登记管理界面图

服务费用管理,在服务费用管理页面中可以对索引、用户账号、用户姓名、房间号、服务项目、服务费用、登记时间、备注、是否支付等信息进行详情,修改或删除等操作,如图5-14所示。

图5-14服务费用管理界面图

退房登记管理,在退房登记管理页面中可以对索引、预订编号、客房名称、客房类型、房间号、用户账号、用户姓名、联系电话、退房时间等信息进行详情,修改或删除等操作,如图5-15所示。

图5-15退房登记管理界面图

系统管理,在酒店公告页面中可以对索引、标题、简介、图片等信息进行详情,修改或删除等操作,还可以对轮播图管理进行相应操作;如图5-16所示。

图5-16系统管理界面图

5.3用户后台功能模块

用户登录进入系统后台可以查看首页、个人中心、客房预订管理、入住登记管理、服务费用管理、退房登记管理、我的收藏管理等内容进行详细操作,如图5-17所示。

图5-17用户后台功能界面图

个人中心,在个人中心页面中通过填写用户账号、用户姓名、性别、年龄、联系电话、电子邮箱等信息进行修改,如图5-18所示。

图5-18个人中心界面图

客房预订管理,在客房预订管理页面中可以对索引、预订编号、客房名称、客房类型、客房图片、客房状态、酒店名称、酒店地址、客房价格、数量、总价格、入住人数、下单时间、用户账号、用户姓名、联系电话、是否支付、审核回复、审核状态等信息进行详情、修改或删除等操作,如图5-19所示。

图5-19客房预订管理界面图

我的收藏管理,在我的收藏管理页面中可以对索引、收藏名称、收藏图片等信息进行修改或删除等操作,如图5-20所示。

图5-20我的收藏管理界面图

KefangyudingServiceImpl.java
package com.service.impl;

import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.List;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils;
import com.utils.Query;


import com.dao.KefangyudingDao;
import com.entity.KefangyudingEntity;
import com.service.KefangyudingService;
import com.entity.vo.KefangyudingVO;
import com.entity.view.KefangyudingView;

@Service("kefangyudingService")
public class KefangyudingServiceImpl extends ServiceImpl<KefangyudingDao, KefangyudingEntity> implements KefangyudingService {
	
	
    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<KefangyudingEntity> page = this.selectPage(
                new Query<KefangyudingEntity>(params).getPage(),
                new EntityWrapper<KefangyudingEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<KefangyudingEntity> wrapper) {
		  Page<KefangyudingView> page =new Query<KefangyudingView>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
 	}
    
    @Override
	public List<KefangyudingVO> selectListVO(Wrapper<KefangyudingEntity> wrapper) {
 		return baseMapper.selectListVO(wrapper);
	}
	
	@Override
	public KefangyudingVO selectVO(Wrapper<KefangyudingEntity> wrapper) {
 		return baseMapper.selectVO(wrapper);
	}
	
	@Override
	public List<KefangyudingView> selectListView(Wrapper<KefangyudingEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

	@Override
	public KefangyudingView selectView(Wrapper<KefangyudingEntity> wrapper) {
		return baseMapper.selectView(wrapper);
	}

}

KefangleixingServiceImpl.java
package com.service.impl;

import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.List;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils;
import com.utils.Query;


import com.dao.KefangleixingDao;
import com.entity.KefangleixingEntity;
import com.service.KefangleixingService;
import com.entity.vo.KefangleixingVO;
import com.entity.view.KefangleixingView;

@Service("kefangleixingService")
public class KefangleixingServiceImpl extends ServiceImpl<KefangleixingDao, KefangleixingEntity> implements KefangleixingService {
	
	
    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<KefangleixingEntity> page = this.selectPage(
                new Query<KefangleixingEntity>(params).getPage(),
                new EntityWrapper<KefangleixingEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<KefangleixingEntity> wrapper) {
		  Page<KefangleixingView> page =new Query<KefangleixingView>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
 	}
    
    @Override
	public List<KefangleixingVO> selectListVO(Wrapper<KefangleixingEntity> wrapper) {
 		return baseMapper.selectListVO(wrapper);
	}
	
	@Override
	public KefangleixingVO selectVO(Wrapper<KefangleixingEntity> wrapper) {
 		return baseMapper.selectVO(wrapper);
	}
	
	@Override
	public List<KefangleixingView> selectListView(Wrapper<KefangleixingEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

	@Override
	public KefangleixingView selectView(Wrapper<KefangleixingEntity> wrapper) {
		return baseMapper.selectView(wrapper);
	}

}

KefangxinxiController.java
package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.KefangxinxiEntity;
import com.entity.view.KefangxinxiView;

import com.service.KefangxinxiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 客房信息
 * 后端接口
 * @author 
 * @email 
 * @date 2021-03-09 01:32:48
 */
@RestController
@RequestMapping("/kefangxinxi")
public class KefangxinxiController {
    @Autowired
    private KefangxinxiService kefangxinxiService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,KefangxinxiEntity kefangxinxi, HttpServletRequest request){
        EntityWrapper<KefangxinxiEntity> ew = new EntityWrapper<KefangxinxiEntity>();
		PageUtils page = kefangxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, kefangxinxi), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,KefangxinxiEntity kefangxinxi, HttpServletRequest request){
        EntityWrapper<KefangxinxiEntity> ew = new EntityWrapper<KefangxinxiEntity>();
		PageUtils page = kefangxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, kefangxinxi), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( KefangxinxiEntity kefangxinxi){
       	EntityWrapper<KefangxinxiEntity> ew = new EntityWrapper<KefangxinxiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( kefangxinxi, "kefangxinxi")); 
        return R.ok().put("data", kefangxinxiService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(KefangxinxiEntity kefangxinxi){
        EntityWrapper< KefangxinxiEntity> ew = new EntityWrapper< KefangxinxiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( kefangxinxi, "kefangxinxi")); 
		KefangxinxiView kefangxinxiView =  kefangxinxiService.selectView(ew);
		return R.ok("查询客房信息成功").put("data", kefangxinxiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        KefangxinxiEntity kefangxinxi = kefangxinxiService.selectById(id);
		kefangxinxi.setClicknum(kefangxinxi.getClicknum()+1);
		kefangxinxiService.updateById(kefangxinxi);
        return R.ok().put("data", kefangxinxi);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        KefangxinxiEntity kefangxinxi = kefangxinxiService.selectById(id);
		kefangxinxi.setClicknum(kefangxinxi.getClicknum()+1);
		kefangxinxiService.updateById(kefangxinxi);
        return R.ok().put("data", kefangxinxi);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody KefangxinxiEntity kefangxinxi, HttpServletRequest request){
    	kefangxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(kefangxinxi);
        kefangxinxiService.insert(kefangxinxi);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody KefangxinxiEntity kefangxinxi, HttpServletRequest request){
    	kefangxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(kefangxinxi);
        kefangxinxiService.insert(kefangxinxi);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody KefangxinxiEntity kefangxinxi, HttpServletRequest request){
        //ValidatorUtils.validateEntity(kefangxinxi);
        kefangxinxiService.updateById(kefangxinxi);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        kefangxinxiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<KefangxinxiEntity> wrapper = new EntityWrapper<KefangxinxiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = kefangxinxiService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

登陆系统:用户通过用户编号和密码登录系统,调用表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、付费专栏及课程。

余额充值