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

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

一、设计要求

1.添加车次功能:

  • 用户可以添加新的车次信息。
  • 用户需输入车次编号和发车时间。
  • 车次的起点站和终点站预设为“保定”和“北京机场”。
  • 车次的乘客限制设定为预先定义的容量。


2.修改发车时间功能:

  • 用户可以修改已添加车次的发车时间。
  • 只有当该车次未售票时,才允许修改发车时间。
  • 用户需输入需要修改的车次编号和新的发车时间。


3.删除车次功能:

  • 用户可以删除已添加的车次。
  • 只有当该车次未售票时,才允许删除。
  • 用户需输入需要删除的车次编号。


4.查询车次功能:

  • 用户可以根据发车时间查询车次信息。
  • 显示符合查询条件的车次信息,包括车次编号、已售票数和剩余票数。
  • 如果剩余票数大于 0,提示用户仍有余票可购买。


5.售票功能:

  • 用户可以购买指定车次的车票。
  • 只有当该车次尚有余票时,才允许购买。
  • 购票成功后,显示已售票数。


6.显示所有车次功能:

  • 用户可以查看系统中所有车次的信息。
  • 显示每个车次的车次编号、发车时间、已售票数和剩余票数。


7.退出系统功能:

  • 用户可以选择退出系统。

二、代码设计思路

315ba7ec0a634ee98a659c7610a51a33.png


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


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


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

相关文章
|
2月前
|
编译器 C语言 C++
【c++丨STL】list模拟实现(附源码)
本文介绍了如何模拟实现C++中的`list`容器。`list`底层采用双向带头循环链表结构,相较于`vector`和`string`更为复杂。文章首先回顾了`list`的基本结构和常用接口,然后详细讲解了节点、迭代器及容器的实现过程。 最终,通过这些步骤,我们成功模拟实现了`list`容器的功能。文章最后提供了完整的代码实现,并简要总结了实现过程中的关键点。 如果你对双向链表或`list`的底层实现感兴趣,建议先掌握相关基础知识后再阅读本文,以便更好地理解内容。
46 1
|
3月前
|
C语言 C++ 容器
【c++丨STL】string模拟实现(附源码)
本文详细介绍了如何模拟实现C++ STL中的`string`类,包括其构造函数、拷贝构造、赋值重载、析构函数等基本功能,以及字符串的插入、删除、查找、比较等操作。文章还展示了如何实现输入输出流操作符,使自定义的`string`类能够方便地与`cin`和`cout`配合使用。通过这些实现,读者不仅能加深对`string`类的理解,还能提升对C++编程技巧的掌握。
141 5
|
4月前
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
103 2
|
6月前
|
存储 数据可视化 C++
【C++】C++-学生考试题库管理系统(源码)
本系统设计了一个选题管理流程,包括读取题目信息、随机抽取题目、保存及查询选题结果等功能。使用 `readProjects` 从文件读取题目信息,`drawProject` 随机抽取未选中的题目,`saveSelection` 保存选题结果至文件,`querySelection` 查询并显示所有选题结果。主函数提供菜单界面,支持学生信息输入、抽题及结果查询。关注【测试开发自动化】公众号,回复“题库”获取源码。
55 0
|
6月前
|
存储 算法 数据可视化
【C++】C++旅游管理系统(源码+论文)【独一无二】
【C++】C++旅游管理系统(源码+论文)【独一无二】
|
6月前
|
存储 数据可视化 C++
【C++】C++-学生考试题库管理系统(源码)【独一无二】
【C++】C++-学生考试题库管理系统(源码)【独一无二】
215 0
|
6月前
|
算法 数据可视化 C++
【C++】C++ 学生信息管理系统(源码+面向对象)【独一无二】
【C++】C++ 学生信息管理系统(源码+面向对象)【独一无二】
127 0
|
6月前
|
存储 数据可视化 C++
【C++】C++ 职工信息管理系统(源码)【独一无二】
【C++】C++ 职工信息管理系统(源码)【独一无二】
138 3
|
6月前
|
存储 数据可视化 C++
【C++】C++-机房收费管理系统(源码+注释)【独一无二】
【C++】C++-机房收费管理系统(源码+注释)【独一无二】
104 1
|
6月前
|
数据可视化 C++
【C++】C++商店销售管理系统(源码+论文)【独一无二】
【C++】C++商店销售管理系统(源码+论文)【独一无二】
131 1