面向酒店前台的客房预订与房态管理系统:房型房价、客房与房态、预订登记、办理入住、退房结算、房态日历与经营统计。核心是「同一房间的有效占用区间不能相交」——占用区间取左闭右开 [入住日, 离店日),用一条 JPQL 在事务内做相交检测,从源头杜绝超售。后端 Spring Boot 3 + JPA 分层架构,前端 Vue 3 无需构建,默认 H2 文件库免安装、可一键切换 MySQL。
视频也可在 B 站视频页 观看
| 编程语言 | Java 17(编译目标;JDK 20 运行正常) |
|---|---|
| 后端框架 | Spring Boot 3.2.5 + Spring Data JPA / Hibernate |
| 参数校验 | Jakarta Bean Validation |
| 构建工具 | Maven 3.6+(附 Maven Wrapper,无需预装) |
| 前端 | Vue 3(本地 vue.global.prod.js,无需 Node 构建)+ Bootstrap Icons + ECharts 5 |
| 数据库 | MySQL 8.0(交付默认 H2 文件库,免安装,可一键切换) |
| 会话与安全 | HttpSession + 自定义 AuthInterceptor;口令 SHA-256 加盐摘要 |
| 操作系统 | Windows / macOS / Linux |
| 启动方式 | 双击一键脚本,或 java -jar hotel-system.jar(端口 8081) |
下面是交付包里的真实目录,共 81 个文件。只展示文件名,不含文件内容; 点击文件夹可逐层展开,看到每个模块是怎么拆分的。
点击任意一张可放大,支持左右切换(也可用键盘 ← → 键)










交付的任务书、开题报告与论文均为 Word 文档,下面是真实页面预览;点击可放大并左右切换:



能。交付包内带 H2 演示数据库与 Maven Wrapper,安装 JDK 17+ 后双击一键脚本会自动构建并启动(端口 8081),首次启动自动建表并写入演示数据。
系统把「房间被占用」建模为时间区间 [入住日, 离店日)(左闭右开),下单时用一条 JPQL 做相交检测(已有.入住日 < 目标.离店日 且 已有.离店日 > 目标.入住日),并在数据库事务内先查后写,从源头杜绝超售。
因为客人在离店日当天退房后,当晚房间即可再次售出。若用左闭右闭,紧邻的两个预订(如 1 号退、1 号入)会被误判为冲突,房间白白空置一晚。
不算。房态以「今晚是否被占用」为准:今日离店客人在 12:00 前占房,但当晚房间可再次售出,因此不重复计入出租率,工作台、房态日历与统计三处口径一致。
按实际间夜计算房费(实际间夜 × 房价),押金原路退还,超过预订天数补收差额,结算说明写入单据备注。押金默认 200 元/间夜。
后端一次性返回区间内每个房间的占用段,前端用 CSS Grid 渲染「日期 × 房间」网格,占用段通过 grid-column 跨列,蓝色表示在住、金色表示已预订,与冲突检测共用同一套区间语义。
论文与部署口径是 MySQL 8.0,交付默认 H2 文件库是为了免安装、解压即可运行;两者共用同一套 JPA 映射与业务代码,加 --spring.profiles.active=mysql 即可切换。
房型、房价、房号规则参照常见快捷酒店设定;客人姓名、证件号、电话与预订记录为程序生成(固定随机种子可复现),证件号为伪造,不对应任何真实个人,系统内不含真实客人隐私数据。