「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
安装步骤
- 克隆项目
git clone <repository-url> cd hospital
- 安装依赖
pip install -r requirements.txt
- 初始化数据库
cd backend python seed_data.py
- 启动服务
# 开发模式(带热重载) 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
- 访问系统
登录页: 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。
酒店预约管理系统(开源 Fastapi+vue2)
a1117762026-02-04 8:19
相关推荐
.小墨迹2 小时前
开源的自动驾驶框架铁蛋AI编程实战12 小时前
大模型本地轻量化微调+端侧部署实战(免高端GPU/16G PC可运行)铁蛋AI编程实战12 小时前
最新版 Kimi K2.5 完整使用教程:从入门到实战(开源部署+API接入+多模态核心功能)我的offer在哪里15 小时前
开源 AI 生成游戏平台:原理、开源项目与落地实战指南开源能源管理系统16 小时前
MyEMS开源能源管理系统:赋能橡胶制品制造业绿色高效生产梦梦代码精17 小时前
开源、免费、可商用:BuildingAI一站式体验报告rundreamsFly20 小时前
从 Clawdbot 到 Moltbot,再到 OpenClaw:一场被“商标、定位和时代红利”反复暴击的开源实验大飞哥~BigFei1 天前
整数ID与短字符串互转思路及开源实现分享