飞机购票系统C语言实现全攻略

2026-08-24 0 阅读

引言

飞机购票系统是航空业的重要组成部分,它不仅方便了旅客的出行,也提高了航空公司的运营效率。使用C语言实现一个飞机购票系统,不仅能够锻炼编程能力,还能深入了解软件开发的流程。本文将详细讲解如何使用C语言实现一个基本的飞机购票系统。

系统设计

1. 系统功能

  • 用户注册与登录
  • 飞行航班查询
  • 舱位预订
  • 支付与订单管理
  • 用户信息管理

2. 数据结构设计

  • 用户信息结构体:包含用户名、密码、联系方式等。
  • 航班信息结构体:包含航班号、出发地、目的地、起飞时间、到达时间、舱位信息等。
  • 订单信息结构体:包含订单号、用户名、航班号、舱位类型、价格、支付状态等。

关键技术

1. 数据存储

使用文件存储用户信息、航班信息和订单信息。可以使用文本文件或二进制文件进行存储。

2. 数据结构

  • 使用链表存储航班信息和订单信息,方便插入和删除操作。
  • 使用哈希表存储用户信息,提高查询效率。

3. 接口设计

  • 用户注册与登录接口
  • 航班查询接口
  • 舱位预订接口
  • 支付与订单管理接口
  • 用户信息管理接口

代码实现

1. 用户注册与登录

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

#define MAX_USER 100

typedef struct {
    char username[50];
    char password[50];
    char phone[20];
} User;

User users[MAX_USER];
int user_count = 0;

void register_user() {
    if (user_count >= MAX_USER) {
        printf("用户数量已达上限!\n");
        return;
    }

    User user;
    printf("请输入用户名:");
    scanf("%s", user.username);
    printf("请输入密码:");
    scanf("%s", user.password);
    printf("请输入联系方式:");
    scanf("%s", user.phone);

    strcpy(users[user_count].username, user.username);
    strcpy(users[user_count].password, user.password);
    strcpy(users[user_count].phone, user.phone);

    user_count++;
    printf("注册成功!\n");
}

void login_user() {
    char username[50];
    char password[50];

    printf("请输入用户名:");
    scanf("%s", username);
    printf("请输入密码:");
    scanf("%s", password);

    for (int i = 0; i < user_count; i++) {
        if (strcmp(users[i].username, username) == 0 && strcmp(users[i].password, password) == 0) {
            printf("登录成功!\n");
            return;
        }
    }

    printf("用户名或密码错误!\n");
}

2. 航班查询

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

#define MAX_FLIGHT 100

typedef struct {
    char flight_number[10];
    char departure[50];
    char destination[50];
    char departure_time[20];
    char arrival_time[20];
    char cabin[10];
} Flight;

Flight flights[MAX_FLIGHT];
int flight_count = 0;

void add_flight() {
    if (flight_count >= MAX_FLIGHT) {
        printf("航班数量已达上限!\n");
        return;
    }

    Flight flight;
    printf("请输入航班号:");
    scanf("%s", flight.flight_number);
    printf("请输入出发地:");
    scanf("%s", flight.departure);
    printf("请输入目的地:");
    scanf("%s", flight.destination);
    printf("请输入起飞时间:");
    scanf("%s", flight.departure_time);
    printf("请输入到达时间:");
    scanf("%s", flight.arrival_time);
    printf("请输入舱位:");
    scanf("%s", flight.cabin);

    strcpy(flights[flight_count].flight_number, flight.flight_number);
    strcpy(flights[flight_count].departure, flight.departure);
    strcpy(flights[flight_count].destination, flight.destination);
    strcpy(flights[flight_count].departure_time, flight.departure_time);
    strcpy(flights[flight_count].arrival_time, flight.arrival_time);
    strcpy(flights[flight_count].cabin, flight.cabin);

    flight_count++;
    printf("添加航班成功!\n");
}

void search_flight() {
    char flight_number[10];

    printf("请输入航班号:");
    scanf("%s", flight_number);

    for (int i = 0; i < flight_count; i++) {
        if (strcmp(flights[i].flight_number, flight_number) == 0) {
            printf("航班号:%s\n", flights[i].flight_number);
            printf("出发地:%s\n", flights[i].departure);
            printf("目的地:%s\n", flights[i].destination);
            printf("起飞时间:%s\n", flights[i].departure_time);
            printf("到达时间:%s\n", flights[i].arrival_time);
            printf("舱位:%s\n", flights[i].cabin);
            return;
        }
    }

    printf("未找到航班!\n");
}

3. 舱位预订

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

#define MAX_USER 100
#define MAX_FLIGHT 100
#define MAX_ORDER 100

typedef struct {
    char username[50];
    char flight_number[10];
    char cabin[10];
    float price;
    int pay_status;
} Order;

Order orders[MAX_ORDER];
int order_count = 0;

void book_ticket() {
    char username[50];
    char flight_number[10];
    char cabin[10];

    printf("请输入用户名:");
    scanf("%s", username);
    printf("请输入航班号:");
    scanf("%s", flight_number);
    printf("请输入舱位:");
    scanf("%s", cabin);

    for (int i = 0; i < flight_count; i++) {
        if (strcmp(flights[i].flight_number, flight_number) == 0 && strcmp(flights[i].cabin, cabin) == 0) {
            printf("航班号:%s\n", flights[i].flight_number);
            printf("出发地:%s\n", flights[i].departure);
            printf("目的地:%s\n", flights[i].destination);
            printf("起飞时间:%s\n", flights[i].departure_time);
            printf("到达时间:%s\n", flights[i].arrival_time);
            printf("舱位:%s\n", flights[i].cabin);
            printf("价格:%f\n", flights[i].price);

            Order order;
            strcpy(order.username, username);
            strcpy(order.flight_number, flight_number);
            strcpy(order.cabin, cabin);
            order.price = flights[i].price;
            order.pay_status = 0;

            strcpy(orders[order_count].username, order.username);
            strcpy(orders[order_count].flight_number, order.flight_number);
            strcpy(orders[order_count].cabin, order.cabin);
            orders[order_count].price = order.price;
            orders[order_count].pay_status = order.pay_status;

            order_count++;
            printf("预订成功!\n");
            return;
        }
    }

    printf("未找到航班或舱位不足!\n");
}

4. 支付与订单管理

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

#define MAX_USER 100
#define MAX_FLIGHT 100
#define MAX_ORDER 100

typedef struct {
    char username[50];
    char flight_number[10];
    char cabin[10];
    float price;
    int pay_status;
} Order;

Order orders[MAX_ORDER];
int order_count = 0;

void pay_order() {
    char username[50];
    char flight_number[10];

    printf("请输入用户名:");
    scanf("%s", username);
    printf("请输入航班号:");
    scanf("%s", flight_number);

    for (int i = 0; i < order_count; i++) {
        if (strcmp(orders[i].username, username) == 0 && strcmp(orders[i].flight_number, flight_number) == 0) {
            orders[i].pay_status = 1;
            printf("支付成功!\n");
            return;
        }
    }

    printf("未找到订单或订单已支付!\n");
}

void manage_orders() {
    for (int i = 0; i < order_count; i++) {
        printf("订单号:%d\n", i + 1);
        printf("用户名:%s\n", orders[i].username);
        printf("航班号:%s\n", orders[i].flight_number);
        printf("舱位:%s\n", orders[i].cabin);
        printf("价格:%f\n", orders[i].price);
        printf("支付状态:%s\n", orders[i].pay_status ? "已支付" : "未支付");
        printf("\n");
    }
}

5. 用户信息管理

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

#define MAX_USER 100

typedef struct {
    char username[50];
    char password[50];
    char phone[20];
} User;

User users[MAX_USER];
int user_count = 0;

void add_user() {
    if (user_count >= MAX_USER) {
        printf("用户数量已达上限!\n");
        return;
    }

    User user;
    printf("请输入用户名:");
    scanf("%s", user.username);
    printf("请输入密码:");
    scanf("%s", user.password);
    printf("请输入联系方式:");
    scanf("%s", user.phone);

    strcpy(users[user_count].username, user.username);
    strcpy(users[user_count].password, user.password);
    strcpy(users[user_count].phone, user.phone);

    user_count++;
    printf("添加用户成功!\n");
}

void delete_user() {
    char username[50];

    printf("请输入用户名:");
    scanf("%s", username);

    for (int i = 0; i < user_count; i++) {
        if (strcmp(users[i].username, username) == 0) {
            for (int j = i; j < user_count - 1; j++) {
                users[j] = users[j + 1];
            }
            user_count--;
            printf("删除用户成功!\n");
            return;
        }
    }

    printf("未找到用户!\n");
}

总结

本文详细讲解了如何使用C语言实现一个基本的飞机购票系统。通过学习本文,读者可以了解到系统设计、关键技术、代码实现等方面的知识。在实际开发过程中,可以根据需求对系统进行扩展和优化。希望本文对读者有所帮助。

分享到: