轻松上手!C语言打造实用订票系统,教你一步步实现在线购票功能

2026-10-25 0 阅读

在这个数字化时代,订票系统已经成为人们日常生活中不可或缺的一部分。C语言作为一种历史悠久且功能强大的编程语言,非常适合用来开发订票系统。本文将带你轻松上手,一步步实现在线购票功能。

一、项目概述

本订票系统采用C语言编写,主要实现以下功能:

  1. 用户注册与登录:用户可以注册账号,登录后进行购票操作。
  2. 航班查询:用户可以查询不同航班的详细信息。
  3. 在线购票:用户可以在线购买机票,并查看订单信息。
  4. 订单管理:用户可以查看、修改和取消订单。

二、系统设计

2.1 数据库设计

本系统采用内存数据库,存储用户信息、航班信息和订单信息。数据库结构如下:

  • 用户表:包含用户ID、用户名、密码、邮箱等字段。
  • 航班表:包含航班号、出发地、目的地、起飞时间、票价等字段。
  • 订单表:包含订单号、用户ID、航班号、购买数量、总价等字段。

2.2 系统架构

本系统采用模块化设计,主要模块如下:

  • 用户模块:负责用户注册、登录、信息查询等操作。
  • 航班模块:负责航班信息查询、航班详情展示等操作。
  • 订单模块:负责订单创建、订单查询、订单修改、订单取消等操作。

三、实现步骤

3.1 用户模块

  1. 注册功能:
#include <stdio.h>
#include <string.h>

#define MAX_USER 100

typedef struct {
    int id;
    char username[50];
    char password[50];
    char email[100];
} 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.email);

    user.id = user_count;
    strcpy(users[user_count], user);
    user_count++;

    printf("注册成功!\n");
}
  1. 登录功能:
int 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) {
            return users[i].id;
        }
    }

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

3.2 航班模块

  1. 查询航班信息:
#include <stdio.h>
#include <string.h>

#define MAX_FLIGHT 100

typedef struct {
    int id;
    char flight_number[20];
    char departure[50];
    char destination[50];
    char departure_time[50];
    int price;
} 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("%d", &flight.price);

    flight.id = flight_count;
    strcpy(flights[flight_count], flight);
    flight_count++;

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

void query_flights() {
    printf("航班号\t出发地\t目的地\t起飞时间\t票价\n");
    for (int i = 0; i < flight_count; i++) {
        printf("%s\t%s\t%s\t%s\t%d\n", flights[i].flight_number, flights[i].departure, flights[i].destination, flights[i].departure_time, flights[i].price);
    }
}

3.3 订单模块

  1. 创建订单:
#include <stdio.h>
#include <string.h>

#define MAX_ORDER 100

typedef struct {
    int id;
    int user_id;
    int flight_id;
    int quantity;
    int total_price;
} Order;

Order orders[MAX_ORDER];
int order_count = 0;

void create_order() {
    int user_id = login_user();
    if (user_id == -1) {
        return;
    }

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

    for (int i = 0; i < flight_count; i++) {
        if (strcmp(flights[i].flight_number, flight_id) == 0) {
            printf("航班信息:\n");
            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("票价:%d\n", flights[i].price);

            int quantity;
            printf("请输入购买数量:");
            scanf("%d", &quantity);

            Order order;
            order.id = order_count;
            order.user_id = user_id;
            order.flight_id = flights[i].id;
            order.quantity = quantity;
            order.total_price = flights[i].price * quantity;

            strcpy(orders[order_count], order);
            order_count++;

            printf("订单创建成功!\n");
            return;
        }
    }

    printf("航班号不存在!\n");
}
  1. 查询订单:
void query_orders() {
    printf("订单号\t用户名\t航班号\t购买数量\t总价\n");
    for (int i = 0; i < order_count; i++) {
        printf("%d\t%s\t%s\t%d\t%d\n", orders[i].id, users[orders[i].user_id].username, flights[orders[i].flight_id].flight_number, orders[i].quantity, orders[i].total_price);
    }
}

四、总结

通过以上步骤,我们成功实现了一个简单的在线订票系统。当然,这只是一个基础版本,实际应用中还需要考虑更多功能,如支付接口、航班状态查询等。希望本文能帮助你轻松上手C语言订票系统开发。

分享到: