【C/C++】C/C++ 车票售票系统设计与实现(源码+课件)【独一无二】

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


【C/C++】C/C++ 车票售票系统设计与实现(源码+报告)【独一无二】


一、设计要求

  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 退出系统

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “车票” 获取。👈👈👈

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 13:42:07       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 13:42:07       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 13:42:07       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 13:42:07       18 阅读

热门阅读

  1. js方法 Array.prototype.slice()

    2024-05-12 13:42:07       10 阅读
  2. 中文域名有必要注册吗?

    2024-05-12 13:42:07       9 阅读
  3. 如何自定义双亲委派中类的加载器

    2024-05-12 13:42:07       10 阅读
  4. Elasticsearch安装

    2024-05-12 13:42:07       11 阅读
  5. react 屏幕信息滚动

    2024-05-12 13:42:07       11 阅读
  6. 安全架构设计理论与实践

    2024-05-12 13:42:07       10 阅读
  7. 【WPF】聊聊WPF中INotifyPropertyChanged [TOC]

    2024-05-12 13:42:07       10 阅读