一、设计要求
1.添加车次功能:
- 用户可以添加新的车次信息。
- 用户需输入车次编号和发车时间。
- 车次的起点站和终点站预设为“保定”和“北京机场”。
- 车次的乘客限制设定为预先定义的容量。
2.修改发车时间功能:
- 用户可以修改已添加车次的发车时间。
- 只有当该车次未售票时,才允许修改发车时间。
- 用户需输入需要修改的车次编号和新的发车时间。
3.删除车次功能:
- 用户可以删除已添加的车次。
- 只有当该车次未售票时,才允许删除。
- 用户需输入需要删除的车次编号。
4.查询车次功能:
- 用户可以根据发车时间查询车次信息。
- 显示符合查询条件的车次信息,包括车次编号、已售票数和剩余票数。
- 如果剩余票数大于 0,提示用户仍有余票可购买。
5.售票功能:
- 用户可以购买指定车次的车票。
- 只有当该车次尚有余票时,才允许购买。
- 购票成功后,显示已售票数。
6.显示所有车次功能:
- 用户可以查看系统中所有车次的信息。
- 显示每个车次的车次编号、发车时间、已售票数和剩余票数。
7.退出系统功能:
- 用户可以选择退出系统。
二、代码设计思路
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。👈👈👈
1. 定义和声明
- #define 指令: 用于定义预处理器宏,这些宏包括最大车次数 MAX_FLIGHTS 和车次的乘客容量 CAPACITY。
- 结构体 BusTicket: 定义了车票的数据结构,包括车次编号、发车时间、起点站、终点站、乘客限制以及已售票数。
- tickets: 定义了一个结构体数组,用于存储车票信息。
- num_tickets: 记录当前已经添加的车次数量。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。👈👈👈
2. 函数实现
addTicket()
: 添加车次函数,通过用户输入添加新的车次信息。
void addTicket() { if (num_tickets >= MAX_FLIGHTS) { printf("车次已满,无法添加更多车次。\n"); return; } // 略... 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。👈👈👈 // 略... 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。👈👈👈 // 略... 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。👈👈👈 // 略... 👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。👈👈👈 printf("车次添加成功。\n"); }
- modifyTicketTime(): 修改车次发车时间函数,允许用户修改指定车次的发车时间,前提是该车次未售票。
- deleteTicket(): 删除车次函数,允许用户删除指定车次,前提是该车次未售票。
- queryTicket(): 查询车次函数,允许用户根据发车时间查询车次信息,显示已售票数和剩余票数。
- sellTicket(): 售票函数,允许用户购买指定车次的车票,前提是尚有余票。
void sellTicket() { char flight_num[10]; printf("输入购买票的班次编号:"); scanf("%s", flight_num); for (int i = 0; i < num_tickets; i++) { // 代码 略... 👉源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。 // 代码 略... 👉源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。 return; } else { printf("票已售完。\n"); return; } } } printf("找不到指定班次。\n"); }
displayTickets()
: 显示所有车次函数,将所有车次信息显示在屏幕上。
void displayTickets() { for (int i = 0; i < num_tickets; i++) { printf("班次:%s, 发车时间:%s, 已售票数:%d, 剩余票数:%d\n", // 代码 略... 👉源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。 } }
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。👈👈👈
3. 主函数 main()
- 菜单循环: 使用
do-while
循环,显示菜单选项并根据用户选择执行相应的功能函数。 switch-case
语句: 根据用户输入的选项执行相应的功能函数。
int main01() { int choice; do { printf("\n车票售票系统菜单:\n"); printf("1. 添加车次\n"); printf("2. 修改发车时间\n"); printf("3. 删除车次\n"); printf("4. 查询车次\n"); printf("5. 售票\n"); printf("6. 显示所有车次\n"); printf("7. 退出\n"); printf("选择操作:"); scanf("%d", &choice); switch (choice) { case 1: addTicket(); break; case 2: modifyTicketTime(); break; case 3: deleteTicket(); break; case 4: queryTicket(); break; case 5: sellTicket(); break; case 6: displayTickets(); break; case 7: printf("退出系统。\n"); break; default: printf("无效选择,请重新输入。\n"); break; } } while (choice != 7); return 0; }
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。👈👈👈
三、运行结果
3.1 主菜单设思路
3.2 添加车次功能
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。👈👈👈
3.3 查询车次功能
3.4 显示所有车次
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。👈👈👈
3.5 售票功能
3.6 修改发车时间
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。👈👈👈
3.7 退出系统
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。👈👈👈