飞机订票系统 c语言代码
时间: 2023-08-01 19:08:18 浏览: 44
以下是一个简单的飞机订票系统的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SEATS 5 // 每个航班的最大座位数
struct Passenger {
char name[20]; // 乘客姓名
int seat; // 座位号
};
struct Flight {
char number[10]; // 航班号
int num_seats; // 可用座位数
struct Passenger passengers[MAX_SEATS]; // 乘客列表
};
struct Flight flights[] = {
{"AC100", MAX_SEATS, {0}},
{"AC101", MAX_SEATS, {0}},
{"AC102", MAX_SEATS, {0}}
};
// 显示菜单
void display_menu() {
printf("\nMenu:\n");
printf("1. Show available flights\n");
printf("2. Book a seat\n");
printf("3. Cancel a booking\n");
printf("4. Exit\n");
}
// 显示航班信息
void display_flights() {
printf("\nAvailable flights:\n");
for (int i = 0; i < sizeof(flights) / sizeof(struct Flight); i++) {
printf("%d. %s (%d seats available)\n", i+1, flights[i].number, flights[i].num_seats);
}
}
// 预订座位
void book_seat() {
int flight_num, seat_num;
char name[20];
struct Flight *flight;
display_flights();
printf("\nEnter flight number: ");
scanf("%d", &flight_num);
flight = &flights[flight_num-1];
if (flight->num_seats == 0) {
printf("\nSorry, this flight is full.\n");
return;
}
printf("\nEnter your name: ");
scanf("%s", name);
for (int i = 0; i < MAX_SEATS; i++) {
if (flight->passengers[i].seat == 0) {
flight->passengers[i].seat = i+1;
flight->passengers[i].name[0] = '\0';
strcpy(flight->passengers[i].name, name);
flight->num_seats--;
printf("\nSeat %d booked for %s on flight %s.\n", i+1, name, flight->number);
return;
}
}
printf("\nSorry, no seats available.\n");
}
// 取消预订
void cancel_booking() {
int flight_num, seat_num;
struct Flight *flight;
display_flights();
printf("\nEnter flight number: ");
scanf("%d", &flight_num);
flight = &flights[flight_num-1];
printf("\nEnter seat number: ");
scanf("%d", &seat_num);
if (seat_num < 1 || seat_num > MAX_SEATS) {
printf("\nInvalid seat number.\n");
return;
}
if (flight->passengers[seat_num-1].seat == 0) {
printf("\nThere is no booking for seat %d on flight %s.\n", seat_num, flight->number);
return;
}
printf("\nBooking cancelled for seat %d on flight %s.\n", seat_num, flight->number);
flight->passengers[seat_num-1].seat = 0;
flight->passengers[seat_num-1].name[0] = '\0';
flight->num_seats++;
}
int main() {
int choice;
do {
display_menu();
printf("\nEnter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
display_flights();
break;
case 2:
book_seat();
break;
case 3:
cancel_booking();
break;
case 4:
printf("\nGoodbye!\n");
exit(0);
default:
printf("\nInvalid choice.\n");
}
} while (1);
return 0;
}
```
这个示例程序实现了一个简单的飞机订票系统,可以显示可用航班、预订座位和取消预订。在这个示例中,每个航班最大座位数为 5,可以通过更改 `MAX_SEATS` 宏定义来更改该值。