酒店预约管理系统(开源 Fastapi+vue2)

「29-酒店预约系统」
链接:https://pan.quark.cn/s/a8ecca4f2be4

酒店预约管理系统

一个基于 FastAPI + Vanilla JS 的酒店预约管理系统,提供客房预订、入住管理、统计分析等功能。

项目简介

本系统采用前后端分离架构,后端使用 FastAPI 框架提供 RESTful API,前端使用原生 JavaScript 结合 Element UI 组件库。系统支持三种角色:管理员、前台和客人,分别拥有不同的权限和功能。

技术栈

后端

  • FastAPI - 高性能 Web 框架

  • SQLAlchemy - ORM 数据库操作

  • SQLite - 轻量级数据库

  • Pydantic - 数据验证

  • JWT - 用户认证

  • Uvicorn - ASGI 服务器

前端

  • Vanilla JavaScript - 原生 JS

  • Element UI - UI 组件库

  • Vue.js - 渐进式框架

  • ECharts - 数据可视化

  • Axios - HTTP 客户端

功能特性

管理员功能

  • 用户管理(增删改查、角色分配)

  • 房间管理(房间类型、状态、价格)

  • 预订管理(查看、确认、取消预订)

  • 统计分析(入住率、收入分析)

  • 系统设置

前台功能

  • 快速入住/退房

  • 预订查询与管理

  • 房态查看

  • 账单管理

客人功能

  • 在线预订房间

  • 查看我的预订

  • 个人信息管理

项目结构

复制代码
hospital/
├── backend/                    # 后端代码
│   ├── main.py                 # FastAPI 入口文件
│   ├── database.py             # 数据库配置
│   ├── models.py               # ORM 数据模型
│   ├── schemas.py              # Pydantic 验证模型
│   ├── auth.py                 # JWT 认证
│   ├── config.py               # 配置文件
│   ├── utils.py                # 工具函数
│   ├── seed_data.py            # 测试数据初始化
│   └── routers/                # API 路由
│       ├── auth.py             # 认证接口
│       ├── users.py            # 用户管理
│       ├── rooms.py            # 房间管理
│       ├── bookings.py         # 预订管理
│       └── stats.py            # 统计分析
├── frontend/                   # 前端代码
│   ├── index.html              # 登录页
│   ├── admin.html              # 管理端
│   ├── reception.html          # 前台端
│   ├── guest.html              # 客人端
│   └── asset/                  # 静态资源
│       ├── vue.js
│       ├── element-ui.js
│       ├── axios.min.js
│       ├── echarts.min.js
│       └── confetti.browser.min.js
├── hotel.db                    # SQLite 数据库(运行后生成)
├── requirements.txt            # Python 依赖
├── PROJECT_GUIDE.md            # 开发指南
└── README.md                   # 本文件

快速开始

环境要求

  • Python 3.8+

  • pip

安装步骤

  1. 克隆项目
复制代码
git clone <repository-url>
cd hospital
  1. 安装依赖
复制代码
pip install -r requirements.txt
  1. 初始化数据库
复制代码
cd backend
python seed_data.py
  1. 启动服务
复制代码
# 开发模式(带热重载)
python -m uvicorn main:app --host 0.0.0.0 --port 8000 --reload
​
# 生产模式
python -m uvicorn main:app --host 0.0.0.0 --port 8000
  1. 访问系统
复制代码
登录页: http://localhost:8000
管理员: http://localhost:8000/admin.html
前台:   http://localhost:8000/reception.html
客人:   http://localhost:8000/guest.html
API文档: http://localhost:8000/docs

默认账号

角色 用户名 密码
管理员 admin admin123
前台 reception reception123
客人 guest guest123

数据模型

用户 (User)

  • id - 用户ID

  • username - 用户名

  • password - 密码(加密)

  • real_name - 真实姓名

  • phone - 联系电话

  • email - 邮箱

  • role - 角色(admin/receptionist/guest)

房间 (Room)

  • id - 房间ID

  • room_number - 房间号

  • room_type - 类型(标准间/豪华间/套房/总统套房)

  • floor - 楼层

  • price_per_night - 每晚价格

  • capacity - 容纳人数

  • status - 状态(可用/已占用/维修中/清洁中)

  • amenities - 设施(JSON格式)

预订 (Booking)

  • id - 预订ID

  • booking_number - 预订号

  • user_id - 用户ID

  • room_id - 房间ID

  • check_in_date - 入住日期

  • check_out_date - 退房日期

  • guest_count - 客人数量

  • total_price - 总价

  • status - 状态(待确认/已确认/已入住/已退房/已取消)

服务 (Service)

  • id - 服务ID

  • name - 服务名称

  • description - 描述

  • price - 价格

  • is_active - 是否启用

服务记录 (ServiceRecord)

  • id - 记录ID

  • booking_id - 预订ID

  • service_id - 服务ID

  • quantity - 数量

  • total_price - 总价

  • notes - 备注

API 文档

启动服务后访问 http://localhost:8000/docs 查看完整的 Swagger API 文档。

主要接口

认证

  • POST /api/auth/register - 用户注册

  • POST /api/auth/login - 用户登录

  • GET /api/auth/me - 获取当前用户信息

用户管理

  • GET /api/users - 用户列表

  • GET /api/users/{id} - 用户详情

  • PUT /api/users/{id} - 更新用户

  • DELETE /api/users/{id} - 删除用户

房间管理

  • GET /api/rooms - 房间列表

  • GET /api/rooms/{id} - 房间详情

  • POST /api/rooms - 创建房间

  • PUT /api/rooms/{id} - 更新房间

  • DELETE /api/rooms/{id} - 删除房间

预订管理

  • GET /api/bookings - 预订列表

  • GET /api/bookings/{id} - 预订详情

  • POST /api/bookings - 创建预订

  • PUT /api/bookings/{id} - 更新预订

  • PUT /api/bookings/{id}/check-in - 入住

  • PUT /api/bookings/{id}/check-out - 退房

统计分析

  • GET /api/stats/overview - 总览统计

  • GET /api/stats/occupancy - 入住率统计

  • GET /api/stats/revenue - 收入统计

开发指南

详细的开发规范和最佳实践请参考 <PROJECT_GUIDE.md>,包含:

  • 项目架构选择

  • 前端开发规范(UI框架、静态资源、页面布局)

  • 后端开发规范(数据模型、API设计、认证)

  • 常见问题与解决方案

  • 开发流程建议

配置说明

配置文件位于 backend/config.py

复制代码
class Settings(BaseSettings):
    # JWT配置
    SECRET_KEY: str = "your-secret-key-change-in-production-2024"
    ALGORITHM: str = "HS256"
    ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 7  # 7天
​
    # 数据库配置
    DATABASE_URL: str = "sqlite:///./hotel.db"
​
    # 应用配置
    APP_NAME: str = "酒店预约管理系统"
    APP_VERSION: str = "1.0.0"

生产环境请修改 SECRET_KEY 为随机字符串。

许可证

MIT License

联系方式

如有问题或建议,请提交 Issue 或 Pull Request。

相关推荐
.小墨迹2 小时前
开源的自动驾驶框架
c++·人工智能·学习·算法·ubuntu·开源·自动驾驶
铁蛋AI编程实战12 小时前
大模型本地轻量化微调+端侧部署实战(免高端GPU/16G PC可运行)
人工智能·架构·开源
铁蛋AI编程实战12 小时前
最新版 Kimi K2.5 完整使用教程:从入门到实战(开源部署+API接入+多模态核心功能)
人工智能·开源
我的offer在哪里15 小时前
开源 AI 生成游戏平台:原理、开源项目与落地实战指南
人工智能·游戏·开源
开源能源管理系统16 小时前
MyEMS开源能源管理系统:赋能橡胶制品制造业绿色高效生产
开源·能源·能源管理系统·零碳工厂
梦梦代码精17 小时前
开源、免费、可商用:BuildingAI一站式体验报告
开发语言·前端·数据结构·人工智能·后端·开源·知识图谱
rundreamsFly20 小时前
从 Clawdbot 到 Moltbot,再到 OpenClaw:一场被“商标、定位和时代红利”反复暴击的开源实验
开源·openclaw·claw
大飞哥~BigFei1 天前
整数ID与短字符串互转思路及开源实现分享
java·开源