Init Repo

This commit is contained in:
2026-06-26 19:58:32 +08:00
commit 502fad1128
22 changed files with 1626 additions and 0 deletions
+63
View File
@@ -0,0 +1,63 @@
# TODO List — 组员B
**负责模块**: 订单管理 + 撤销栈
**核心数据结构**: 候补队列 `WaitQueue`(循环队列)、撤销栈 `OpStack`(顺序栈)
**文件**: `src/order.h``src/order.cpp``src/stack.h``src/stack.cpp`
**分支**: `feature/order`
---
## 一、候补队列(循环队列)
- [ ] `InitQueue` — 初始化队列(front = rear = count = 0
- [ ] `EnQueue` — 候补入队(循环队列,检查队满)
- [ ] `DeQueue` — 候补转正出票(循环队列,检查队空)
- [ ] `QueueEmpty` — 判空
- [ ] `QueueFull` — 判满
## 二、订单操作
- [ ] `GenerateOrderId` — 生成 O00001 格式自增订单号
- [ ] `BuyTicket` — 购票核心逻辑
- 查找车次 → 判断余票
- 有余票:`remainSeats--`,生成订单,`Push` 到撤销栈
- 无余票:询问是否进入候补队列 → `EnQueue`
- [ ] `RefundTicket` — 退票核心逻辑
- 订单状态改为 `REFUNDED`,车次 `remainSeats++`
- 检查候补队列是否非空 → 自动 `DeQueue` 补票
- `Push` 到撤销栈
- [ ] `ChangeTicket` — 改签核心逻辑
- 退原票 + 购新票,更新订单车次号和座位号
- `Push` 到撤销栈
- [ ] `SearchOrdersByIdCard` — 按身份证号查询订单(遍历数组)
- [ ] `SearchOrderById` — 按订单号精确查找
## 三、文件读写
- [ ] `loadOrdersFromFile` — 从 `data/orders.csv` 读取订单数据
- [ ] `saveOrdersToFile` — 将订单数据写回 `data/orders.csv`
## 四、撤销栈(顺序栈)
- [ ] `InitStack` — 初始化(top = -1
- [ ] `Push` — 入栈记录操作日志
- [ ] `Pop` — 出栈获取最近操作
- [ ] `StackEmpty` — 判空
- [ ] `StackFull` — 判满
- [ ] `ExecuteUndo` — 执行撤销
- 购票 → 退票、退票 → 恢复购票、改签 → 改回原车次
- 撤销操作本身不再次入栈
## 五、乘客交互接口
- [ ] `passengerBuyTicket` — 购票菜单交互(选择车次 → 输入姓名/身份证 → 确认购票)
- [ ] `passengerRefundTicket` — 退票菜单交互(输入订单号 → 确认退票)
- [ ] `passengerChangeTicket` — 改签菜单交互(输入订单号 + 新车次号 → 确认改签)
- [ ] `passengerViewOrders` — 查看我的订单(输入身份证号 → 显示所有订单)
- [ ] `passengerUndo` — 撤销菜单交互(显示最近操作 → 确认撤销 → `ExecuteUndo`
---
> **依赖关系**: `order.cpp` 需要 `#include "train.h"`(操作余票)和 `#include "stack.h"`(记录操作)
> **时序关键**: 购票扣减余票 / 退票释放余票 / 候补自动转正 这三个联动的正确性最重要
> **验收标准**: 乘客能完成购票→退票→撤销→候补自动补票全流程,队列 FIFO 顺序正确