C语言数组实现公交车管理系统

下面是“C语言数组实现公交车管理系统”的完整攻略:

1. 设计思路

公交车管理系统需要对公交路线、车辆和乘客信息进行管理,我们可以设计三个数组来存储这些信息:

  • bus_line[]数组:存储公交路线信息,每个元素表示一条公交路线,包括路线编号、起始站点、终点站点和票价等信息。
  • bus[]数组:存储车辆信息,每个元素表示一辆车,包括车牌号、所属路线、座位数和已售座位数等信息。
  • passenger[]数组:存储乘客信息,每个元素表示一个乘客,包括姓名、性别、电话和所购车票等信息。

针对公交车管理系统的不同功能,我们可以设计不同的函数来实现:

  • add_bus_line()函数:添加一条新的公交路线。
  • add_bus()函数:添加一辆新的车辆。
  • sell_ticket()函数:售出一张车票。
  • show_bus_line()函数:显示所有的公交路线信息。
  • show_bus()函数:显示所有的车辆信息。
  • show_passenger()函数:显示所有的乘客信息。

2. 代码实现

下面是示例代码,仅供参考。

#include <stdio.h>
#include <string.h>

// 公交路线结构体
struct BusLine
{
    int id;
    char start[20];
    char end[20];
    float price;
};

// 车辆结构体
struct Bus
{
    char plate[10];
    int line_id;
    int seat_count;
    int sold_count;
};

// 乘客结构体
struct Passenger
{
    char name[10];
    char gender[3];
    char phone[12];
    char plate[10];
};

// 公交路线数组
struct BusLine bus_line[10];
int bus_line_count = 0;

// 车辆数组
struct Bus bus[50];
int bus_count = 0;

// 乘客数组
struct Passenger passenger[100];
int passenger_count = 0;

// 添加一条新公交路线
void add_bus_line()
{
    struct BusLine new_line;
    printf("请输入公交路线编号:");
    scanf("%d", &new_line.id);
    printf("请输入起始站点:");
    scanf("%s", new_line.start);
    printf("请输入终点站点:");
    scanf("%s", new_line.end);
    printf("请输入票价:");
    scanf("%f", &new_line.price);
    bus_line[bus_line_count++] = new_line;
}

// 添加一辆新车辆
void add_bus()
{
    struct Bus new_bus;
    printf("请输入车牌号:");
    scanf("%s", new_bus.plate);
    printf("请输入所属公交路线编号:");
    scanf("%d", &new_bus.line_id);
    printf("请输入座位数:");
    scanf("%d", &new_bus.seat_count);
    new_bus.sold_count = 0;
    bus[bus_count++] = new_bus;
}

// 售出一张车票
void sell_ticket()
{
    struct Passenger new_passenger;
    printf("请输入乘客姓名:");
    scanf("%s", new_passenger.name);
    printf("请输入乘客性别:");
    scanf("%s", new_passenger.gender);
    printf("请输入乘客电话:");
    scanf("%s", new_passenger.phone);
    printf("请输入所购车辆牌号:");
    scanf("%s", new_passenger.plate);
    passenger[passenger_count++] = new_passenger;

    // 在车辆数组中查找对应的车辆,增加售票数
    for (int i = 0; i < bus_count; i++)
    {
        if (strcmp(bus[i].plate, new_passenger.plate) == 0)
        {
            bus[i].sold_count++;
            break;
        }
    }
}

// 显示所有公交路线信息
void show_bus_line()
{
    printf("公交路线信息如下:\n");
    printf("%-10s%-20s%-20s%s\n", "编号", "起始站点", "终点站点", "票价");
    for (int i = 0; i < bus_line_count; i++)
    {
        printf("%-10d%-20s%-20s%.2f\n", bus_line[i].id, bus_line[i].start, 
            bus_line[i].end, bus_line[i].price);
    }
}

// 显示所有车辆信息
void show_bus()
{
    printf("车辆信息如下:\n");
    printf("%-10s%-10s%-10s%s\n", "车牌号", "编号", "座位数", "已售座位数");
    for (int i = 0; i < bus_count; i++)
    {
        printf("%-10s%-10d%-10d%d\n", bus[i].plate, bus[i].line_id,
            bus[i].seat_count, bus[i].sold_count);
    }
}

// 显示所有乘客信息
void show_passenger()
{
    printf("乘客信息如下:\n");
    printf("%-10s%-10s%-15s%s\n", "姓名", "性别", "电话", "车辆牌号");
    for (int i = 0; i < passenger_count; i++)
    {
        printf("%-10s%-10s%-15s%s\n", passenger[i].name, passenger[i].gender,
            passenger[i].phone, passenger[i].plate);
    }
}

int main()
{
    int choice;
    do
    {
        printf("请输入功能选项:\n");
        printf("1. 添加公交路线\n");
        printf("2. 添加车辆\n");
        printf("3. 售票\n");
        printf("4. 显示公交路线信息\n");
        printf("5. 显示车辆信息\n");
        printf("6. 显示乘客信息\n");
        printf("0. 退出程序\n");
        scanf("%d", &choice);

        switch (choice)
        {
            case 1:
                add_bus_line();
                break;
            case 2:
                add_bus();
                break;
            case 3:
                sell_ticket();
                break;
            case 4:
                show_bus_line();
                break;
            case 5:
                show_bus();
                break;
            case 6:
                show_passenger();
                break;
            case 0:
                printf("程序结束,感谢使用!\n");
                break;
            default:
                printf("无效选项,请重新输入!\n");
                break;
        }
    } while (choice != 0);

    return 0;
}

示例一:添加一条公交路线

请输入功能选项:
1. 添加公交路线
2. 添加车辆
3. 售票
4. 显示公交路线信息
5. 显示车辆信息
6. 显示乘客信息
0. 退出程序
1
请输入公交路线编号:1
请输入起始站点:学院路
请输入终点站点:人民广场
请输入票价:2.5
请输入功能选项:
1. 添加公交路线
2. 添加车辆
3. 售票
4. 显示公交路线信息
5. 显示车辆信息
6. 显示乘客信息
0. 退出程序
4
公交路线信息如下:
编号      起始站点            终点站点            票价
1         学院路              人民广场            2.50
请输入功能选项:
1. 添加公交路线
2. 添加车辆
3. 售票
4. 显示公交路线信息
5. 显示车辆信息
6. 显示乘客信息
0. 退出程序

示例二:售出一张车票

请输入功能选项:
1. 添加公交路线
2. 添加车辆
3. 售票
4. 显示公交路线信息
5. 显示车辆信息
6. 显示乘客信息
0. 退出程序
2
请输入车牌号:沪A12345
请输入所属公交路线编号:1
请输入座位数:50
请输入功能选项:
1. 添加公交路线
2. 添加车辆
3. 售票
4. 显示公交路线信息
5. 显示车辆信息
6. 显示乘客信息
0. 退出程序
3
请输入乘客姓名:张三
请输入乘客性别:男
请输入乘客电话:13812345678
请输入所购车辆牌号:沪A12345
请输入功能选项:
1. 添加公交路线
2. 添加车辆
3. 售票
4. 显示公交路线信息
5. 显示车辆信息
6. 显示乘客信息
0. 退出程序
5
车辆信息如下:
车牌号    编号      座位数    已售座位数
沪A12345  1        50       1
请输入功能选项:
1. 添加公交路线
2. 添加车辆
3. 售票
4. 显示公交路线信息
5. 显示车辆信息
6. 显示乘客信息
0. 退出程序
6
乘客信息如下:
姓名      性别      电话         车辆牌号
张三      男        13812345678  沪A12345

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言数组实现公交车管理系统 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C++超详细分析函数重载的使用

    C++超详细分析函数重载的使用 什么是函数重载? 函数重载是指在一个类中定义多个同名函数,但它们的参数列表或类型不同。这些函数之间进行重载时,它们的函数名相同且在调用时需要区分它们。 函数重载的目的是增加代码复用和可读性,使得在不同场合下使用相同的函数名来执行不同的操作成为可能。 函数重载示例 以下是一些构成函数重载的示例: int add(int a, i…

    C 2023年5月23日
    00
  • C语言中字符和字符串处理(ANSI字符和Unicode字符)

    C语言中字符和字符串处理(ANSI字符和Unicode字符) 字符处理 在C语言中,字符是采用ANSI编码方式表示的,ANSI编码是一个字符编码标准,定义了128个字符,包括数字、大小写字母、标点符号、控制字符等,使用一个字节表示一个字符。使用字符类型(char)来存储一个字符。 基本字符类型 在C语言中,基本的字符类型是char,在头文件和中还定义了字符类…

    C 2023年5月23日
    00
  • C指针原理教程之Ncurses介绍

    下面是关于“C指针原理教程之Ncurses介绍”的完整攻略。 Ncurses介绍 什么是Ncurses? NCurses 是新版 PDCurses 的一个分支 (PDCurses 的原版是依据 System V 版本的 Curses 改写而成)。Ncurses 是一个在 Linux 和 BSD 上运行的开源库,可用于创建终端用户界面 (TUI: Text U…

    C 2023年5月23日
    00
  • Linux管道通信C语言编程示例

    我们来详细讲解一下“Linux管道通信C语言编程示例”的完整攻略。 什么是Linux管道通信 Linux管道通信是一种进程间通信方式,它通过特殊的管道文件连接两个或多个进程,使数据在进程之间传递。简单来说,就是在两个进程之间建立一个管道,让它们可以通过这个管道进行数据交换。 管道通信C语言编程示例 下面我们就来看一下管道通信的C语言编程示例。这里我们介绍两个…

    C 2023年5月23日
    00
  • 详解C++句柄类

    详解C++句柄类 在C++中,句柄类是一种将资源管理委托给类实例的方法,以确保正确地释放使用的资源。本篇文章将详细讲解什么是C++句柄类,并展示了如何创建和使用句柄类。 什么是句柄类? 句柄类是一种 C++ 类,主要用于管理资源,通过封装对资源的访问来确保资源有效使用。句柄类通常用于管理底层的操作系统资源,例如文件、网络套接字、设备上下文、数据库连接等。在释…

    C 2023年5月22日
    00
  • C语言一维数组

    下面是关于 C 语言一维数组的完整使用攻略。 一维数组定义 在C语言中定义一维数组需要指定数组的类型和数组的长度,例如: int arr1[10]; //声明一个长度为10的整型数组 char arr2[5]; //声明一个长度为5的字符型数组 double arr3[8]; //声明一个长度为8的双浮点型数组 在上述代码中分别定义了三个不同类型的数组,并指…

    C 2023年5月9日
    00
  • 如何快速辨别USB Type-C数据线的好与坏?

    当购买USB Type-C数据线时,要注意以下几点: 步骤一:看外观 数据线的外观可以直接反映其质量。一般而言,好的USB Type-C数据线的线材会采用高质量的材料,比如高纯度铜线或高密度尼龙编织线,手感较为舒适,并且线料表面会进行人性化的设计,如添加防滑纹路。此外,好的USB Type-C数据线会采用高质量的接头,面料通常会采用金属材质,防止耐用性下降。…

    C 2023年5月23日
    00
  • Windows10配置VSCode C++环境(超详细,面向小白以及大佬们)

    Windows10配置VSCode C++环境(超详细,面向小白以及大佬们) 1. 安装Visual Studio Code 首先需要安装Visual Studio Code(VSCode),可以到官网 https://code.visualstudio.com/ 下载安装包进行安装。安装完成后打开VSCode,点击左侧扩展图标,搜索”Code Runner…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部