系统实现了完整的汽车站票务管理功能,包括车次的增删改查、 购票与退票、用户登录与权限控制等核心功能。 数据通过文件I/O持久化存储,支持程序重启后数据恢复。
功能概览
功能模块详情
| 功能 | 函数 | 说明 | 权限 |
|---|---|---|---|
| 查看所有车次 | showAllCar() | 遍历输出全部车次信息 | 全部 |
| 添加车次 | addCar() | 管理员录入新车次,校验重复 | 管理员 |
| 删除车次 | deleteCar() | 按车次号删除,数组前移压缩 | 管理员 |
| 修改车次信息 | changeCar() | 逐字段修改,支持跳过保留原值 | 管理员 |
| 购票 | buy() | 选择车次购票,余票自动减1 | 全部 |
| 退票 | refund() | 按车次号退票,余票自动加1 | 全部 |
| 查询车次 | searchCar() | 按车次号/起点/终点查询 | 全部 |
| 用户登录 | login() | 验证用户名密码,区分角色 | 全部 |
| 数据保存 | saveData() | 将内存数据写入文件持久化 | 自动 |
| 数据加载 | loadData() | 程序启动时从文件恢复数据 | 自动 |
核心代码片段
// 购票函数 —— 选择车次并完成购票,余票自动减1 void buy(User& user, Train trains[], int& trainCount) { if (trainCount == 0) { cout << "暂无车次信息!" << endl; return; } showAllCar(trains, trainCount); string trainId; cout << "请输入要购买的车次号:"; cin >> trainId; for (int i = 0; i < trainCount; i++) { if (trains[i].id == trainId) { if (trains[i].tickets <= 0) { cout << "该车次已无余票!" << endl; return; } trains[i].tickets--; cout << "购票成功!" << endl; saveData(trains, trainCount); return; } } cout << "未找到该车次!" << endl; }
数据结构设计
Train 结构体:存储车次信息,包含车次号(id)、起点站(start)、 终点站(end)、发车时间(departTime)、到达时间(arriveTime)、 票价(price)、余票数(tickets)等字段。
User 结构体:存储用户信息,包含用户名(username)、 密码(password)、角色(role: admin/user)等字段。 系统预设管理员账户,普通用户可通过注册创建。
数据持久化:采用文本文件存储,程序启动时自动加载数据, 每次操作后自动保存,确保数据不丢失。
项目成果
通过本项目系统练习了C++的面向过程编程能力, 包括结构体设计、数组操作、文件I/O、函数模块化等核心知识点。 双角色权限体系的设计培养了权限控制意识, 数据持久化方案保证了系统的实用性。