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语言趣味题目

    下面是“非常经典的C语言趣味题目”的完整攻略。 1.题目描述 题目描述:输入一个正整数n,按十进制输出n的二进制表示,并输出其中1的个数。 2.思路分析 1.输入一个正整数n;2.将n转换成二进制表示。对于十进制数,可以不断对2取余数和商,然后将余数倒序排列起来就可以得到二进制表示,具体可以使用循环实现;3.遍历二进制表示,数出其中1的个数。 3.代码实现 …

    C 2023年5月23日
    00
  • 逍遥自在学C语言 | 位运算符^的高级用法

    前言 在上一篇文章中,我们介绍了|运算符的高级用法,本篇文章,我们将介绍^ 运算符的一些高级用法。 一、人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。 二、交换两个变量的值 #include <stdio.h> int main() { int a = 10; in…

    C语言 2023年4月17日
    00
  • C语言代码实现猜数字游戏

    下面是C语言代码实现猜数字游戏的完整攻略。 1. 题目要求 猜数字游戏是一款非常简单的游戏,游戏的规则如下: 程序会随机生成一个数字,数字的范围为1-100; 玩家可以输入一个数字,程序会告诉玩家这个数字是正确的、偏大还是偏小; 如果玩家猜对了数字,游戏结束,否则会提示玩家再次输入数字继续猜。 我们要在C语言中实现这个游戏。 2. 代码实现 代码实现分为以下…

    C 2023年5月22日
    00
  • C 预处理器

    C预处理器是C语言编译过程的预处理阶段的一部分。它可以处理一些C程序的复杂性,并在编译之前执行一些宏替换和条件编译等预处理操作。本文将详细讲解C预处理器的完整使用攻略。 C预处理器的指令格式 C预处理器的指令以井号(#)开头,后跟指令名称和指令参数。指令名称和指令参数之间可以使用空格或制表符来分隔。指令名称不区分大小写,指令参数可以是任何有效的标识符或字符串…

    C 2023年5月10日
    00
  • 详解C语言中sizeof如何在自定义函数中正常工作

    当在C语言中定义一个结构体或是自定义的类型时,可以使用sizeof关键字来计算该类型所占的字节数。但是,在自定义函数中使用sizeof有些时候可能不会正常工作,这是由于sizeof是在编译时计算的,而不是运行时计算的。 为了解决这个问题,我们可以使用指针来传递数据。我们可以将指针的大小视为常量,这样在编译时就可以正确计算大小。下面,我来详细讲解在自定义函数中…

    C 2023年5月23日
    00
  • C和C++的区别详解

    C和C++的区别详解 C和C++是两种非常常见的编程语言,在很多领域都有广泛的应用。虽然在某些方面它们很相似,但在许多方面它们也存在很大的差异。下面我们将详细说明C和C++之间的区别。 1. 语言的起源和发展历史 C语言是由Dennis Ritchie在20世纪70年代初创造的,最初是为了在Unix操作系统上编写系统级应用程序而设计的。C++语言则是由Bja…

    C 2023年5月22日
    00
  • C语言实现的猴子偷桃之类算法

    C语言实现的猴子偷桃之类算法 算法思路 猴子偷桃是一个经典的算法问题,其思路如下: 有一堆桃子,猴子第一天吃掉一半,发现还不过瘾,就又吃了一个;第二天又吃掉剩下的一半,发现还不过瘾,又吃了一个;以后每天都这样吃,直到最后只剩一个桃子为止。求原来有多少桃子。 为了方便解题,我们可以反向思考,即从最后一天向前推断。假设在第N天时只剩下一个桃子,那么在第N-1天时…

    C 2023年5月22日
    00
  • word文章中怎么插入数学公式?

    下面是关于在 Word 文章中插入数学公式的完整攻略: 步骤一:安装 Microsoft Office 公式编辑器 可以通过以下步骤进行操作: 打开 Word 文档,从“文件”菜单中选择“选项”。 在弹出的对话框中选择“自定义功能区”选项,并在右侧列表中选择“开发工具”复选框,点击“确定”按钮。 点击“开发工具”菜单,选择“COM 加载项”按钮,在弹出的对话…

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