如何用C语言编写一个简单的机票订票系统教程

2026-10-25 0 阅读

在这个教程中,我们将一步一步地学习如何使用C语言编写一个简单的机票订票系统。这个系统将具备基本的功能,如查询机票信息、预订机票以及查看预订列表等。通过这个项目,你将巩固C语言的基础知识,并了解简单的系统设计。

准备工作

在开始之前,请确保你已经安装了C编译器,如GCC。此外,你还需要一个文本编辑器来编写代码,比如Notepad++或者Visual Studio Code。

系统设计

我们的机票订票系统将包括以下几个部分:

  1. 机票信息数据结构:存储每条机票信息。
  2. 查询机票功能:用户可以输入目的地和日期查询机票。
  3. 预订机票功能:用户可以选择机票并完成预订。
  4. 查看预订列表:用户可以查看自己的预订信息。
  5. 退出系统:用户可以选择退出系统。

机票信息数据结构

首先,我们定义一个结构体来存储机票信息:

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

#define MAX_FLIGHTS 10
#define MAX_CUSTOMERS 100
#define MAX_DEST 50

typedef struct {
    int flight_number;
    char source[MAX_DEST];
    char destination[MAX_DEST];
    int seats_available;
    float price;
} Flight;

typedef struct {
    int flight_number;
    char customer_name[50];
    char destination[MAX_DEST];
    float price;
} Booking;

主函数

主函数中我们将实现系统菜单和用户交互:

#include <stdlib.h>

Flight flights[MAX_FLIGHTS];
Booking bookings[MAX_CUSTOMERS];
int flight_count = 0;
int booking_count = 0;

int main() {
    int choice;
    do {
        printf("\n--- Flight Booking System ---\n");
        printf("1. Add Flight Information\n");
        printf("2. Display Flights\n");
        printf("3. Book a Flight\n");
        printf("4. Display Bookings\n");
        printf("5. Exit\n");
        printf("Enter your choice: ");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                // 添加航班信息
                break;
            case 2:
                // 显示所有航班信息
                break;
            case 3:
                // 预订航班
                break;
            case 4:
                // 显示预订信息
                break;
            case 5:
                printf("Exiting the system...\n");
                break;
            default:
                printf("Invalid choice. Please try again.\n");
        }
    } while (choice != 5);

    return 0;
}

添加航班信息

接下来,我们需要添加功能来存储航班信息:

void addFlight() {
    if (flight_count >= MAX_FLIGHTS) {
        printf("Flight list is full!\n");
        return;
    }

    Flight new_flight;
    printf("Enter flight number: ");
    scanf("%d", &new_flight.flight_number);
    printf("Enter source: ");
    scanf("%s", new_flight.source);
    printf("Enter destination: ");
    scanf("%s", new_flight.destination);
    printf("Enter available seats: ");
    scanf("%d", &new_flight.seats_available);
    printf("Enter price: ");
    scanf("%f", &new_flight.price);

    flights[flight_count++] = new_flight;
    printf("Flight added successfully!\n");
}

显示所有航班信息

现在我们来实现显示所有航班信息的功能:

void displayFlights() {
    printf("\nAvailable Flights:\n");
    printf("Flight Number\tSource\t\tDestination\tSeats Available\tPrice\n");
    for (int i = 0; i < flight_count; i++) {
        printf("%d\t\t%s\t\t%s\t\t%d\t\t\t%.2f\n",
               flights[i].flight_number,
               flights[i].source,
               flights[i].destination,
               flights[i].seats_available,
               flights[i].price);
    }
}

预订航班

用户预订航班的功能需要检查座位是否可用,并更新座位数:

void bookFlight() {
    int flight_num, seats, i;
    printf("Enter flight number: ");
    scanf("%d", &flight_num);
    for (i = 0; i < flight_count; i++) {
        if (flights[i].flight_number == flight_num) {
            break;
        }
    }
    if (i == flight_count) {
        printf("Flight not found!\n");
        return;
    }
    if (flights[i].seats_available > 0) {
        seats = flights[i].seats_available - 1;
        flights[i].seats_available = seats;

        Booking new_booking;
        strcpy(new_booking.customer_name, "John Doe");
        strcpy(new_booking.destination, flights[i].destination);
        new_booking.flight_number = flight_num;
        new_booking.price = flights[i].price;

        bookings[booking_count++] = new_booking;
        printf("Flight booked successfully!\n");
    } else {
        printf("No seats available for this flight.\n");
    }
}

查看预订信息

最后,我们需要一个功能来显示用户的预订信息:

void displayBookings() {
    printf("\nBookings:\n");
    printf("Customer Name\tFlight Number\tDestination\tPrice\n");
    for (int i = 0; i < booking_count; i++) {
        printf("%s\t\t%d\t\t%s\t\t%.2f\n",
               bookings[i].customer_name,
               bookings[i].flight_number,
               bookings[i].destination,
               bookings[i].price);
    }
}

编译和运行

将以上代码保存为一个名为 booking_system.c 的文件。在命令行中使用以下命令进行编译和运行:

gcc -o booking_system booking_system.c
./booking_system

总结

通过这个简单的机票订票系统教程,我们学习了如何使用C语言创建一个具有基本功能的小型应用程序。这个系统虽然功能有限,但它可以帮助你理解结构体、数组、用户输入和简单的文件I/O在编程中的应用。随着你技能的提高,你可以扩展这个系统,添加更多的功能,比如处理用户账户、搜索航班、打印收据等。

分享到: