C语言课程设计 —— 酒店客房管理系统 vibecoding 的C语言大作业
- 包含字段:房间号、房间类型(单人间/标准间/豪华间/套房)、楼层、床位数量、房间价格、房间状态(空闲/已预订/已入住/维修中)
- 以文本文件存储,初始录入 30 间客房
- 包含字段:身份证号、姓名、联系电话、性别、入住次数(自动累加)
- 以文本文件存储,初始录入 20 位客户(碧蓝档案角色)
- 包含字段:订单编号、客户身份证号、房间号、预订日期、入住日期、离店日期、订单状态(已预订/已入住/已退房/已取消)
- 支持房间预订、入住登记、退房、取消订单操作
- 按房间号 / 房间类型 / 楼层 / 价格 / 状态查询客房
- 按身份证号 / 姓名 / 手机号查询客户
- 按订单号 / 客户信息 / 客房信息 / 订单状态查询订单
- 所有查询结果支持方向键滚动浏览
- 添加 / 删除 / 修改客房信息
- 添加 / 修改客户信息
- 创建 / 查询 / 取消订单
- 程序退出时自动保存到文本文件
- 启动时从
test_data/自动加载数据 - 退出时自动保存所有修改
- 文件格式带
#行注释,易读易编辑 - 支持手动备份恢复
typedef struct RoomNode { Room data; struct RoomNode *next; } // 客房链表
typedef struct CustNode { Customer data; struct CustNode *next; } // 客户链表
typedef struct OrderNode { Order data; struct OrderNode *next; } // 订单链表- 带哨兵节点的单向链表,支持动态增删
- 自定义结构体包含所有业务字段
- 枚举类型定义房间状态 / 订单状态
src/
main.c — 入口 + 全局变量
modules/types.h — 数据结构定义
operations/manager — 链表 CRUD 操作
storage/store — 文件读写 + 内存释放
views/
tui — ncurses 底层绘制
common — 共享组件(滚动状态、安全输入)
menu — 菜单导航循环
room_view — 客房全部视图
customer_view — 客户全部视图
order_view — 订单全部视图
# 编译
cmake -B build -S . && cmake --build build
# 运行
./build/HotelManager
# 依赖:ncursesw (wide-char 支持中文)| 按键 | 功能 |
|---|---|
↑↓ / j k |
上下导航 |
Ctrl+B / Ctrl+F |
翻页 |
g / G |
跳到首行 / 末行 |
Enter |
确认 / 选择 |
ESC |
返回 / 取消 |
F2 |
保存录入 |
n |
查询结果中新增记录 |
test_data/rooms.txt— 30间客房(楼层1-4,含不同房型和状态)test_data/customers.txt— 20位碧蓝档案角色test_data/orders.txt— 15条订单(客房-客户-订单数据关联一致)
- GNU 代码风格,2空格缩进
- C11 标准,
-Wall -Wextra -O2 - 关键函数和复杂逻辑均有注释
- 模块化设计,按功能分离源文件
- 统一的命名规范