c语言实现汽车站售票系统源代码

以下程序实现了一个简单的汽车站售票系统,包括购票、退票、查询和退出等功能。其中,定义了一个Passenger结构体来存储乘客的信息,使用一个passengers数组来存储已售票的乘客信息。使用了while循环和switch语句来实现菜单的交互功能。购票时判断是否已售完和座位号是否已被占用,退票时判断座位号是否已售出,查询时遍历乘客列表输出已售票的乘客信息。
下面是一个简单的C语言程序,实现汽车站售票系统:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_TICKETS 100 // 最大票数

typedef struct {
    char name[50]; // 姓名
    int id;        // 身份证号
    int num;       // 购票数量
    int seat;      // 座位号
} Passenger;

int main() {
    Passenger passengers[MAX_TICKETS]; // 乘客列表
    int n = 0;                         // 已售票数

    while (1) {
        // 显示菜单
        printf("\n======== 汽车站售票系统 ========");
        printf("\n1. 购票");
        printf("\n2. 退票");
        printf("\n3. 查询");
        printf("\n4. 退出");
        printf("\n请选择操作:");

        int choice;
        scanf("%d", &choice);

        switch (choice) {
            case 1: { // 购票
                if (n >= MAX_TICKETS) { // 判断是否已售完
                    printf("\n对不起,已售完!");
                    break;
                }

                Passenger passenger;
                printf("\n请输入姓名:");
                scanf("%s", passenger.name);
                printf("请输入身份证号:");
                scanf("%d", &passenger.id);
                printf("请输入购票数量:");
                scanf("%d", &passenger.num);
                printf("请输入座位号(1-%d):", MAX_TICKETS);
                scanf("%d", &passenger.seat);

                // 判断座位号是否已被占用
                if (passenger.seat <= 0 || passenger.seat > MAX_TICKETS ||
                    passengers[passenger.seat - 1].id != 0) {
                    printf("\n对不起,座位号已被占用!");
                    break;
                }

                // 添加到乘客列表
                passengers[passenger.seat - 1] = passenger;
                n++;

                printf("\n购票成功!");
                break;
            }

            case 2: { // 退票
                int seat;
                printf("\n请输入座位号:");
                scanf("%d", &seat);

                // 判断座位号是否已售出
                if (seat <= 0 || seat > MAX_TICKETS ||
                    passengers[seat - 1].id == 0) {
                    printf("\n对不起,座位号未售出!");
                    break;
                }

                // 从乘客列表中删除
                passengers[seat - 1].id = 0;
                passengers[seat - 1].num = 0;
                passengers[seat - 1].seat = 0;
                memset(passengers[seat - 1].name, 0, sizeof(passengers[seat - 1].name));
                n--;

                printf("\n退票成功!");
                break;
            }

            case 3: { // 查询
                printf("\n已售票数:%d", n);
                printf("\n剩余票数:%d", MAX_TICKETS - n);
                printf("\n详细信息如下:\n");

                printf("\n姓名\t身份证号\t购票数量\t座位号");
                for (int i = 0; i < MAX_TICKETS; i
            {
                if (passengers[i].id != 0) {
                    printf("\n%s\t%d\t\t%d\t\t%d", passengers[i].name, passengers[i].id,
                           passengers[i].num, passengers[i].seat);
                }
            }

            break;
        }

        case 4: { // 退出
            printf("\n感谢使用,再见!");
            exit(0);
        }

        default: {
            printf("\n输入有误,请重新输入!");
            break;
        }
    }
}

return 0;
}

以下代码实现了一个简单的汽车站售票系统,具体需求如下:

  1. 实现购票功能,包括输入乘客的姓名、身份证号、购票数量和座位号,若座位号已被占用,则提示座位号已被占用,购票失败;否则,将乘客的信息添加到乘客列表中,并提示购票成功。
  2. 实现退票功能,包括输入要退票的座位号,若座位号未售出,则提示座位号未售出,退票失败;否则,从乘客列表中删除该座位号的乘客信息,并提示退票成功。
  3. 实现查询功能,包括输出已售票数、剩余票数和已售票的乘客信息。
  4. 实现退出功能,退出程序。

此外,程序还需要定义一个Passenger结构体来存储乘客的信息,使用一个passengers数组来存储已售票的乘客信息。程序使用了while循环和switch语句来实现菜单的交互功能,根据用户的输入选择相应的功能。

猜你喜欢: