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语言运算符优先级实例解析

    壹:    对于优先级:算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符。逻辑运算符中“逻辑非 !”除外。这是程序员总结出来的最快的学习方式。 可在实战中,还是经常遇到一些让人困惑的问题。下面看一个实例。   贰:    代码很简单,直接上源码: #include <stdio.h> typedef unsigned …

    C语言 2023年4月18日
    00
  • 魔兽世界H黑石铸造厂武僧T心得分享

    魔兽世界H黑石铸造厂武僧T心得分享 简介 魔兽世界H黑石铸造厂(Blackrock Foundry)是一项难度较高的副本任务,需要玩家掌握高级操作技巧和相应战术,才能完成。本文介绍了在该副本中,武僧T队员的心得体会和策略分享。具体内容如下: 副本简介 H黑石铸造厂副本一共有10个大Boss,其中武僧T团队需要面对的有:- 炉渣工匠- 爆裂熔炉- 钢铁女武神-…

    C 2023年5月22日
    00
  • C语言 for循环

    下面我来详细讲解“C语言 for循环”的完整使用攻略。 for循环使用 在C语言中,for循环语句可以用来重复执行某个代码块,它的语法结构如下: for (初始化表达式; 判断表达式; 计数器更新表达式) { // 循环执行的语句 } 其中,初始化表达式仅在循环开始前执行一次,通常用于初始化循环控制变量;判断表达式用于判断是否继续执行循环,如果为真,则继续循…

    C 2023年5月9日
    00
  • C语言实现求解素数的N种方法总结

    C语言实现求解素数的N种方法总结 简介 本文将总结C语言实现求解素数的N种方法。素数是只能被1和本身整除的正整数,对于计算机编程而言,求解素数是一个常见的问题。本文将介绍7种解决大约从100以内寻找素数至大约1百万以内寻找素数的方法。 方法一:暴力枚举 对于一个数n,从2开始枚举到sqrt(n)为止,判断n是否能被2~sqrt(n)中的任一数整除。如果n不能…

    C 2023年5月22日
    00
  • C语言实现家庭理财系统

    C语言实现家庭理财系统 简介 家庭理财系统是一款针对家庭财务管理的软件,可以记录家庭的收入和支出情况,帮助用户实现对家庭财务的有效管理和实时监控。本文介绍如何使用C语言实现一个家庭理财系统。 系统设计 家庭理财系统可以分为三个模块:界面模块、数据管理模块和报表模块。 界面模块 界面模块是用户与系统交互的界面。在本系统中,可以通过命令行界面输入和输出数据。 界…

    C 2023年5月23日
    00
  • Qt QDateTime计算时间差的实现示例

    针对“Qt QDateTime计算时间差的实现示例”的完整攻略,我将从以下几个部分进行讲解: QDateTime类的概述 计算时间差的方法 示例说明 1. QDateTime类的概述 QDateTime是Qt中用来提供日期和时间值的类,它继承自QDate和QTime类。QDateTime类的主要成员函数有date(),time(),addSecs()等,可以…

    C 2023年5月23日
    00
  • TPLINK TLR5408PE-AC一体VPN路由器怎么样? tpr5408pe测评

    TPLINK TLR5408PE-AC一体VPN路由器怎么样? 简介 TPLINK TLR5408PE-AC是一款集成了VPN功能的路由器。它支持IEEE802.11ac无线网络标准,最高可达1300Mbps,同时支持IPv4和IPv6协议,提供了4个Gigabit以太网口和2个USB接口。另外,它还支持PPTP、L2TP、IPSec和SSL VPN等多种安…

    C 2023年5月23日
    00
  • C语言声明函数指针

    C语言中,函数指针是非常重要的概念之一,它可以用于动态地调用函数、传递在运行时确定的函数等。本文将详细讲解如何在C程序中声明函数指针。 声明函数指针的语法 函数指针的语法如下: return_type (*pointer_name)(arg_type1, arg_type2, …, arg_typeN); 其中,return_type 表示函数返回值的类…

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