# HuojiHotel
**Repository Path**: JamesMaium/HuojiHotel
## Basic Information
- **Project Name**: HuojiHotel
- **Description**: 欢迎关注抖音 @火鸡程序员
火鸡酒店客房管理系统免费开源,需要的兄弟随时clone,记得点个Star!
关键词:
酒店管理系统、宾馆管理系统、客房管理系统
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-08-19
- **Last Updated**: 2026-08-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 🏨 酒店客房管理系统
> 基于 Python + PyQt5 + SQLite 的 Windows 桌面客户端酒店管理系统,轻量、高效、开箱即用。
>
> **既可作为计算机专业毕业设计,也可直接用于中小型酒店的日常运营管理。**
---
## 📋 目录
- [项目简介](#项目简介)
- [功能特性](#功能特性)
- [技术栈](#技术栈)
- [系统要求](#系统要求)
- [快速开始](#快速开始)
- [打包部署](#打包部署)
- [项目结构](#项目结构)
- [数据库设计](#数据库设计)
- [打印功能](#打印功能)
- [数据安全](#数据安全)
- [毕设使用指南](#毕设使用指南)
- [商业使用指南](#商业使用指南)
- [默认账号](#默认账号)
- [开发者信息](#开发者信息)
- [更新日志](#更新日志)
- [常见问题](#常见问题)
---
## 项目简介
本系统是一款功能完善的酒店客房管理系统,采用 **Python 3 + PyQt5 + SQLite** 技术栈开发,为 Windows 平台桌面应用。系统采用嵌入式 SQLite 数据库,无需额外安装数据库服务,单文件存储,真正做到「下载即用」。
系统覆盖酒店前台运营的全流程:房态管理、预订管理、入住登记、退房结算、账务管理、客户管理、协议客户、统计报表、系统管理等十大核心模块,满足中小型酒店、宾馆、民宿的日常管理需求。
同时,系统架构清晰、代码规范、文档齐全,非常适合作为计算机相关专业的**毕业设计项目**使用。
---
## 功能特性
### 🏠 房态看板(首页)
- 可视化房间状态面板,颜色区分(空闲/已预订/已入住/清洁中/维修中)
- 按楼层分组展示,实时统计入住率
- 点击房间卡片直接办理入住/退房,无需切换页面
- 房间详情弹窗,支持快捷操作
### 🛏️ 客房管理
- **楼层管理**:楼层增删改查,支持编辑
- **房型管理**:单人间/标准间/大床房/豪华间/套房等,自定义价格
- **房间管理**:房间编号、楼层、房型、价格、状态、备注
- 房间状态批量更新
### 📅 预订管理
- 新建预订(客人信息、房型偏好、入住离店日期、押金)
- 预订查询(按姓名/电话/预订号模糊搜索)
- 预订确认、修改、取消、转入住
- 预订状态管理(待确认/已确认/已入住/已取消/已过期)
- 两栏式表单布局,信息录入更高效
### ✅ 入住管理
- 散客直接入住 / 预订转入住两种方式
- 自动推荐可用房间,支持手动分配
- 客人身份信息登记(姓名、证件号、证件类型、联系方式)
- 押金收取(现金/微信/支付宝/银行卡/挂账)
- 换房操作、续住操作
- 入住登记单 58mm 小票打印
### 🚪 退房管理
- 自动核算费用(房费×天数 + 额外消费 - 折扣 - 押金)
- 押金抵扣,实时显示应收/应退/找零金额
- 多种支付方式结算
- 退房结算单 58mm 小票打印
- 事务机制保障数据一致性
### 💰 账务与消费管理
- 在住账单实时查看,支持录入额外消费
- 消费项目管理(minibar/洗衣/餐饮/接送等)
- 账单明细查看与打印
- 历史账单查询与打印
- 挂账管理(协议客户挂账额度控制、还款记录)
### 👤 客户管理
- 客户档案自动积累,入住即建档
- 会员等级管理(普通/银卡/金卡/钻石,不同折扣率)
- 客户标签(VIP/常客/黑名单等)
- 客户信息模糊查询
- 敏感数据脱敏显示(手机号、证件号)
- 两栏式布局:基本信息+证件信息 / 会员信息+备注
### 📊 统计报表
- 日报/月报/自定义区间统计
- 收入趋势柱状图
- 入住率分析
- 客源分析
- 支持导出 Excel 和 PDF
### 🤝 协议客户管理
- 协议单位信息管理
- 协议价格设置(按房型)
- 挂账额度控制,超额预警
- 对账单生成
- 还款记录管理
- 两栏式布局
### ⚙️ 系统管理
- **用户管理**:用户增删改查、角色分配、重置密码
- **角色权限**:超级管理员/前台接待/客房服务员/财务人员
- **操作日志**:登录/退房/修改等关键操作全程记录
- **系统设置**:酒店名称、地址、联系方式、营业时间、入住退房时间
- **数据备份**:一键备份与恢复,WAL 模式 checkpoint 保障数据完整
- 顶部栏「关于」「赞赏」快捷入口
---
## 技术栈
| 类别 | 技术 | 说明 |
|------|------|------|
| 开发语言 | Python 3.x | 主开发语言 |
| GUI 框架 | PyQt5 | 桌面界面 |
| 数据库 | SQLite 3 | 嵌入式单文件数据库,WAL 模式 |
| 密码加密 | bcrypt | 用户密码安全存储 |
| 打印支持 | ESC/POS + win32print + pyserial | 58mm 热敏小票打印 |
| 报表导出 | openpyxl + reportlab | Excel/PDF 导出 |
| 打包工具 | PyInstaller | 打包为单文件 EXE |
| 系统交互 | pywin32 | Windows API 调用(打印、USB设备) |
---
## 系统要求
- **操作系统**:Windows 10 / Windows 11(64位)
- **Python 版本**:3.8 及以上(开发环境)
- **内存**:最低 2GB,推荐 4GB 以上
- **磁盘空间**:最低 100MB(含数据库)
- **分辨率**:最低 1280×800,推荐 1920×1080
---
## 快速开始
### 方式一:直接运行 EXE(推荐)
1. 下载 `dist/酒店客房管理系统.exe`
2. 双击运行,无需安装 Python 和任何依赖
3. 首次启动自动创建数据库和初始数据
### 方式二:开发环境运行
```bash
# 1. 克隆或下载项目
cd 酒店客房管理系统
# 2. 安装依赖
pip install -r requirements.txt
# 3. 启动程序
python main.py
# 或双击 run.bat
```
### 首次启动
- 自动创建 `data/` 目录及数据库文件
- 自动初始化 16 张数据表
- 自动插入初始数据(角色、用户、房型、楼层、房间、测试数据等)
- 使用默认账号登录
---
## 打包部署
### 打包为单文件 EXE
```bash
# 双击 build.bat
# 或手动执行
pyinstaller --onefile --windowed ^
--icon "logo.ico" ^
--name "酒店客房管理系统" ^
--add-data "resources;resources" ^
--hidden-import PyQt5.QtPrintSupport ^
--hidden-import win32print ^
--hidden-import win32api ^
--hidden-import win32con ^
--hidden-import win32file ^
--hidden-import pywintypes ^
--hidden-import pythoncom ^
--hidden-import serial ^
--hidden-import serial.tools ^
--hidden-import serial.tools.list_ports ^
main.py
```
打包完成后,EXE 文件位于 `dist/酒店客房管理系统.exe`,约 270MB。
### 部署说明
- EXE 为单文件绿色版,无需安装,拷贝即可使用
- 数据库文件自动创建在 EXE 同目录的 `data/` 文件夹下
- 建议将 EXE 放在非系统盘目录(如 `D:\酒店管理\`),避免权限问题
- 升级时直接替换 EXE 文件,`data/` 目录中的数据不会丢失
---
## 项目结构
```
酒店客房管理系统/
├── main.py # 程序入口(启动画面+登录→主窗口)
├── config.py # 全局配置(路径、常量、状态、颜色)
├── requirements.txt # 依赖清单
├── run.bat # 开发环境启动脚本
├── build.bat # EXE 打包脚本
├── logo.ico # 程序图标
├── money.png # 赞赏二维码
├── README.md # 项目说明文档
├── database/
│ ├── db_manager.py # 数据库管理器(单例+事务+唯一索引)
│ └── init_db.py # 建表SQL + 初始数据
├── gui/
│ ├── login_window.py # 登录窗口(深色渐变)
│ └── main_window.py # 主窗口(左侧导航+右侧堆叠+顶部栏)
├── modules/
│ ├── room_management/
│ │ ├── room_board.py # 房态看板(快捷入住/退房)
│ │ └── room_manage.py # 客房管理(楼层/房型/房间)
│ ├── reservation/
│ │ └── reservation_page.py # 预订管理
│ ├── check_in/
│ │ └── check_in_page.py # 入住管理
│ ├── check_out/
│ │ └── check_out_page.py # 退房管理
│ ├── billing/
│ │ └── billing_page.py # 账务管理(在住/历史/挂账)
│ ├── customer/
│ │ └── customer_page.py # 客户管理
│ ├── reports/
│ │ └── reports_page.py # 统计报表(图表)
│ ├── agreement/
│ │ └── agreement_page.py # 协议客户管理
│ └── system_management/
│ ├── system_page.py # 系统管理(用户/日志/设置/备份)
│ ├── donation_dialog.py # 赞赏二维码弹窗
│ └── about_dialog.py # 关于信息弹窗
├── utils/
│ ├── helpers.py # 工具函数(密码/脱敏/金额格式化)
│ ├── logger.py # 日志模块
│ ├── export.py # Excel/PDF 导出
│ └── printer.py # 打印模块(USB/串口/Windows RAW)
├── resources/ # 资源文件(图标、图片)
└── data/ # 运行时数据(自动创建)
├── hotel_management.db # SQLite 数据库
├── logs/ # 日志文件
└── backup/ # 数据库备份
```
---
## 数据库设计
### 数据表(共 16 张)
| 表名 | 说明 |
|------|------|
| users | 系统用户 |
| roles | 角色 |
| floors | 楼层 |
| room_types | 房型 |
| rooms | 房间 |
| guests | 客户档案 |
| reservations | 预订记录 |
| check_ins | 入住记录 |
| bills | 账单 |
| bill_items | 账单明细 |
| agreement_companies | 协议单位 |
| credit_payments | 挂账还款记录 |
| operation_logs | 操作日志 |
| settings | 系统设置 |
| member_levels | 会员等级 |
| customer_tags | 客户标签 |
### 数据安全机制
- **事务支持**:入住/退房/消费/还款等关键操作使用数据库事务,失败自动回滚
- **唯一索引**:同房间仅一条 active 入住记录、账单号/入住单号/预订单号唯一,防止重复数据
- **WAL 模式**:SQLite WAL 日志模式,读写并发性能更好
- **密码加密**:用户密码使用 bcrypt 加密存储,不可逆
- **数据备份**:一键备份,备份前执行 checkpoint 确保数据完整
- **操作日志**:关键操作全程记录,可追溯
---
## 打印功能
系统支持 **58mm 热敏小票打印机**,兼容多种连接方式:
### 支持的打印机类型
| 类型 | 说明 |
|------|------|
| USB 直连 | 未安装驱动的 usbprint 设备(如 VID_09C5&PID_58DE,美团同款) |
| Windows 打印机 | 已安装驱动的 USB/网络打印机(RAW 模式) |
| COM 串口 | 串口/蓝牙串口热敏打印机,波特率自动适配 |
| PDF 虚拟打印 | 保存为 58mm 宽度 PDF 小票 |
### 打印内容
- **入住小票**:酒店名称、入住凭证、单号、客人、房间、入住离店时间、房价、押金
- **退房小票**:酒店名称、退房结算、房费、消费、优惠、押金、应收、实付、找零、支付方式
- **历史账单**:支持从账务管理历史账单中打印结算凭证
### 打印特性
- 中文 GBK 编码,国产热敏打印机通用
- 标题和金额双倍宽高大字显示
- 行间距优化,阅读舒适
- 首次打印自动选择并保存打印机,后续无需重复选择
- 打印失败自动清除保存配置,重新选择
---
## 数据安全
### 事务机制
所有涉及金额和状态变更的操作均在数据库事务中执行:
- 办理入住(插入入住记录+创建账单+更新房间状态)
- 办理退房(更新入住状态+结算账单+更新房间状态)
- 录入消费(插入明细+更新账单金额)
- 还款操作(更新挂账余额+插入还款记录)
任何一步失败,整个事务回滚,数据保持一致。
### 防重复机制
- 唯一索引防止同一房间同时存在多条 active 入住
- 账单号、入住单号、预订单号全局唯一
- UI 层按钮防抖,防止重复点击提交
### 备份恢复
- 一键备份:WAL checkpoint 后复制数据库文件,确保数据完整
- 从备份恢复:选择备份文件即可恢复,恢复后需重启程序
---
## 毕设使用指南
本系统非常适合作为计算机科学与技术、软件工程、信息管理与信息系统等专业的**毕业设计项目**。
### 为什么适合做毕设
- ✅ **技术栈主流**:Python + PyQt5 + SQLite,易于理解和答辩
- ✅ **功能完整**:十大模块覆盖酒店运营全流程,工作量饱满
- ✅ **架构清晰**:MVC 分层,代码规范,便于讲解设计思路
- ✅ **亮点突出**:事务机制、数据安全、打印兼容、UI 统一设计
- ✅ **可演示性强**:界面美观,交互流畅,答辩演示效果好
- ✅ **文档齐全**:README、代码注释、数据库设计完整
### 毕设答辩要点建议
1. **需求分析**:酒店行业痛点、系统目标、用户角色
2. **系统设计**:架构图、功能模块图、数据库 ER 图
3. **关键技术**:
- PyQt5 信号槽机制、自定义对话框
- SQLite 事务与并发控制
- ESC/POS 热敏打印指令
- bcrypt 密码加密
4. **系统演示**:入住→消费→退房全流程演示,打印小票
5. **创新点**:房态看板快捷操作、多类型打印机兼容、数据安全机制
### 论文章节参考
- 第1章 绪论(研究背景、意义、国内外现状)
- 第2章 相关技术介绍(Python、PyQt5、SQLite)
- 第3章 系统需求分析(功能性需求、非功能性需求)
- 第4章 系统设计(总体架构、功能模块、数据库设计)
- 第5章 系统实现(各模块核心代码与界面)
- 第6章 系统测试(测试用例、测试结果)
- 第7章 总结与展望
---
## 商业使用指南
本系统可直接用于中小型酒店、宾馆、民宿的日常运营管理。
### 部署步骤
1. 将 EXE 拷贝到前台电脑(建议非系统盘目录)
2. 双击运行,系统自动初始化
3. 使用 admin 账号登录,进入「系统管理 → 系统设置」
4. 修改酒店名称、地址、联系方式等基础信息
5. 进入「客房管理」,设置楼层、房型、房间信息
6. 进入「系统管理 → 用户管理」,创建前台、财务等操作员账号
7. 连接 58mm 热敏打印机,办理入住时测试打印
### 日常操作流程
1. **客人到店**:房态看板点击空闲房间 → 办理入住 → 收押金 → 打印小票
2. **客人消费**:账务管理 → 在住账单 → 录入消费(minibar/餐饮等)
3. **客人退房**:房态看板点击已入住房间 → 办理退房 → 核算费用 → 收款找零 → 打印小票
4. **交接班**:统计报表查看当日营收,账务管理核对账单
### 数据维护
- 定期使用「系统管理 → 数据备份」功能备份数据库
- 建议每日备份一次,备份文件拷贝到 U 盘或云端
- 系统崩溃时,使用「从备份文件恢复」功能还原数据
---
## 默认账号
| 用户名 | 密码 | 角色 | 说明 |
|--------|------|------|------|
| `admin` | `admin123` | 超级管理员 | 全部权限,首次登录后请修改密码 |
---
## 开发者信息
- **创作者**:抖音博主 **@火鸡程序员**
- **共同开发**:@火鸡程序员 & 豆包 AI
- **技术支持**:抖音搜索「火鸡程序员」关注获取更新
- **项目版本**:v1.0.0
- **发布日期**:2026年
> 如果这个系统对您有帮助,欢迎扫码赞赏支持作者 ❤️
---
## 更新日志
### v1.0.0(2026-08)
- 🎉 首个正式版本发布
- 十大核心功能模块完整实现
- SQLite 嵌入式数据库,事务机制保障数据安全
- 58mm 热敏小票打印,支持 USB/串口/Windows RAW 多种方式
- 统一表单 UI 设计,两栏式布局,必填红星标注
- 房态看板快捷入住/退房
- 历史账单打印支持
- 数据库一键备份与恢复
- 酒店名称全局显示(窗口标题+左上角Logo+小票抬头)
- 程序图标自定义
- 关于与赞赏弹窗
---
## 常见问题
### Q: 启动时提示数据库文件不存在?
A: 首次启动会自动创建数据库,如遇权限问题,请将 EXE 放到非系统盘目录(如 D 盘)运行。
### Q: 打印机检测不到?
A: 请检查:
1. 打印机是否开机并连接电脑
2. 设备管理器中是否显示「USB 打印支持」或 COM 端口
3. USB 打印机无需安装驱动,系统会自动识别为 usbprint 设备
4. 首次打印会自动列出所有可用设备,选择对应打印机即可
### Q: 打印出来是乱码?
A: 请确认使用的是 58mm 热敏打印机,系统使用 GBK 编码和 ESC/POS 指令,国产热敏打印机(佳博、芯烨、商米等)均兼容。
### Q: 忘记管理员密码怎么办?
A: 可使用数据库工具(如 DB Browser for SQLite)打开 `data/hotel_management.db`,将 users 表中 admin 的 password 字段重置为 bcrypt 加密后的新密码。
### Q: 如何升级到新版本?
A: 直接替换 EXE 文件即可,`data/` 目录中的数据库和配置不会丢失。升级前建议先备份数据库。
### Q: 支持多台电脑联网使用吗?
A: 当前版本为单机版,数据库存储在本地。如需多机联网,可将数据库文件放到共享文件夹,或后续升级为 C/S 架构。
---
## 许可证
本项目仅供学习和商业使用,请勿用于非法用途。
© 2026 火鸡程序员. 保留所有权利。