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技术站