C语言实现简单航班管理系统

C语言实现简单航班管理系统攻略

前言

本攻略会从需求分析、设计思路、代码编写三个方面来讲解如何实现简单的航班管理系统,希望能为大家提供一些帮助。

需求分析

首先,我们需要明确航班管理系统的功能需求,本系统需要实现以下功能:
1. 查看所有航班的信息,包括航班号、起飞时间、起飞地点、目的地、可用座位等;
2. 根据起飞地点和目的地筛选航班信息;
3. 预订座位,成功预订后可查看已定航班信息。

设计思路

根据需求分析,我们可以设计以下几个模块:输入模块、查询模块、预订模块和输出模块。其中,输入模块用于接收用户的输入;查询模块用于根据输入的条件查询航班信息;预订模块用于预订座位;输出模块用于将查询结果和预订信息输出给用户。

在具体实现时,我们可以采用结构体和链表来存储和管理航班信息。具体代码结构如下:

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

// 航班信息结构体
typedef struct Flight {
    char no[20]; // 航班号
    char start[20]; // 起飞地点
    char end[20]; // 目的地
    char time[20]; // 起飞时间
    int seats; // 座位数
    int used; // 已订座位数
    struct Flight* next; // 指向下一个节点的指针
} Flight;

// 添加航班信息
void add_flight(Flight* head, Flight* flight) {
    Flight* p = head;
    while (p->next) p = p->next;
    p->next = flight;
}

// 初始化航班信息链表
Flight* init_flights() {
    Flight* head = (Flight*)malloc(sizeof(Flight));
    strcpy(head->no, "0000");
    strcpy(head->start, "null");
    strcpy(head->end, "null");
    strcpy(head->time, "00:00");
    head->seats = 0;
    head->used = 0;
    head->next = NULL;
    return head;
}

// 查询航班信息
void query_flights(Flight* head, char* start, char* end) {
    Flight* p = head->next;
    int count = 0;
    while (p) {
        if (strcmp(p->start, start) == 0 && strcmp(p->end, end) == 0) {
            printf("%s %s %s %s %d %d\n", p->no, p->start, p->end, p->time, p->seats, p->used);
            count++;
        }
        p = p->next;
    }
    if (count == 0) printf("No flight available.\n");
}

// 预订座位
void book_seat(Flight* head, char* no, int count) {
    Flight* p = head->next;
    while (p) {
        if (strcmp(p->no, no) == 0) {
            if (p->used + count > p->seats) {
                printf("No enough seat.\n");
            } else {
                p->used += count;
                printf("Success.\n");
            }
            return;
        }
        p = p->next;
    }
    printf("Flight not found.\n");
}

// 输出航班信息
void print_flights(Flight* head) {
    Flight* p = head->next;
    while (p) {
        printf("%s %s %s %s %d %d\n", p->no, p->start, p->end, p->time, p->seats, p->used);
        p = p->next;
    }
}

// 主函数
int main() {
    Flight* flights = init_flights();
    Flight* f1 = (Flight*)malloc(sizeof(Flight));
    strcpy(f1->no, "CA888");
    strcpy(f1->start, "Beijing");
    strcpy(f1->end, "Shanghai");
    strcpy(f1->time, "09:00");
    f1->seats = 100;
    f1->used = 0;
    f1->next = NULL;
    add_flight(flights, f1);
    Flight* f2 = (Flight*)malloc(sizeof(Flight));
    strcpy(f2->no, "MU520");
    strcpy(f2->start, "Shanghai");
    strcpy(f2->end, "Beijing");
    strcpy(f2->time, "12:00");
    f2->seats = 120;
    f2->used = 0;
    f2->next = NULL;
    add_flight(flights, f2);

    printf("All flights:\n");
    print_flights(flights);

    printf("Flights from Beijing to Shanghai:\n");
    query_flights(flights, "Beijing", "Shanghai");

    printf("Book 2 seats for MU520:\n");
    book_seat(flights, "MU520", 2);
    printf("After booking:\n");
    print_flights(flights);

    return 0;
}

以上代码实现了以上所述的航班信息的增、查、改三个功能,并在主函数中对其进行了测试。可以看到,我们通过结构体和链表的方式,成功地实现了一个简单的航班管理系统。

示例说明

我们通过以下两个示例来进一步说明这个系统的运行情况:

示例一

用户需要查询所有航班的信息,可以输入以下命令:

printf("All flights:\n");
print_flights(flights);

系统将会输出如下结果:

All flights:
CA888 Beijing Shanghai 09:00 100 0
MU520 Shanghai Beijing 12:00 120 0

示例二

用户需要预订航班MU520的定座位,可以输入以下命令:

printf("Book 2 seats for MU520:\n");
book_seat(flights, "MU520", 2);
printf("After booking:\n");
print_flights(flights);

系统将会输出如下结果:

Book 2 seats for MU520:
Success.
After booking:
CA888 Beijing Shanghai 09:00 100 0
MU520 Shanghai Beijing 12:00 120 2

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现简单航班管理系统 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C++实现xml解析器示例详解

    C++实现xml解析器示例详解 什么是XML XML是一种标记语言,用于存储和传输数据。它具有可扩展性、可读性好、结构化等特点,被广泛应用于互联网、移动设备、桌面应用程序等场合。 XML的结构如下: <?xml version="1.0" encoding="UTF-8"?> <root> &l…

    C 2023年5月23日
    00
  • IOS-MVC层读取服务器接口JSON数据

    首先,在IOS中采用MVC设计模式可以有效地解耦、优化代码结构以及方便代码管理。在读取服务器接口JSON数据时,我们可以采用以下步骤: 创建一个Model类:定义与服务器端数据对应的模型,一般以属性的形式表示。 @interface User : NSObject @property (nonatomic, strong) NSString *name; @…

    C 2023年5月23日
    00
  • C++OOP对象和类的详细讲解

    C++OOP对象和类的详细讲解 什么是对象和类? 在C++中,对象是指一个特定类的实例,其定义中包含了类的数据成员和函数成员。类是一种用户自定义的数据类型,可以定义包括数据成员和函数成员在内的各种内容,表示某一类似真实世界中的实体。 如何定义类和对象? 定义一个类,需要使用class关键字,紧接着是类名和一对大括号,“{}”内部定义类的数据成员和函数成员。 …

    C 2023年5月22日
    00
  • Linux/Nginx如何查看搜索引擎蜘蛛爬虫的行为

    要查看搜索引擎蜘蛛爬虫的行为,可以使用Linux系统中的命令行工具,例如使用Nginx的access日志。下面是查看蜘蛛爬虫行为的步骤: 1. 确定Nginx日志路径 默认情况下,Nginx的日志路径为 /var/log/nginx/access.log。但如果在安装Nginx时修改了日志路径,则需要确定正确的路径。 2. 查看日志内容 使用以下命令查看Ng…

    C 2023年5月22日
    00
  • C++使用宏函数实现单例模板详解

    下面就为你详细讲解“C++使用宏函数实现单例模板详解”的完整攻略。 1. 单例模式简介 单例模式是一种创建型设计模式,它确保某个类只有一个实例,并提供一个全局访问点,使得该实例能够被访问。单例模式在很多场景下都有非常重要的作用,例如线程池、配置文件读取等。 2. 使用宏函数实现单例模板 C++中使用宏函数可以方便地实现单例模板。具体实现步骤如下: 定义一个模…

    C 2023年5月23日
    00
  • C语言基于EasyX绘制时钟

    下面是C语言基于EasyX绘制时钟的完整攻略: 准备工作 首先,需要安装EasyX图形库。EasyX是一个图形界面库,可以方便地在Windows平台上进行图形编程。EasyX官网提供了安装包以及一些基本的教程和案例,可以前往 https://easyx.cn/ 下载并安装。 绘制时钟的基本原理 绘制时钟需要用到EasyX封装的一些图形函数,包括绘制圆形、矩形…

    C 2023年5月23日
    00
  • C++实现折半查找

    实现折半查找的过程可以分为以下几步: 步骤一:准备有序数组 折半查找需要在一个有序数组中进行查找,因此首先需要准备一个有序数组,可以使用C++中的std::sort来进行排序。 #include <iostream> #include <algorithm> int main() { int arr[] = {2, 3, 4, 5, …

    C 2023年5月22日
    00
  • C++ 中回调函数详解及简单实例

    C++ 中回调函数详解及简单实例 什么是回调函数 在C++中,回调函数是一种以函数指针的形式实现的编程技巧。简而言之,回调函数就是一种通过在函数参数中传递函数指针的形式,来实现在需要时调用这个函数的一种方式。 回调函数的用途 回调函数最常见的使用场景是在异步和事件驱动编程中,当一个事件触发时,需要某个函数处理该事件。由于该事件的触发时间不确定,因此需要把该函…

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