Files
TrainTicketManagementSystem/TODO_组员B.md
T
2026-06-26 19:58:32 +08:00

64 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 顺序正确