在这个教程中,我们将一步一步地学习如何使用C语言编写一个简单的机票订票系统。这个系统将具备基本的功能,如查询机票信息、预订机票以及查看预订列表等。通过这个项目,你将巩固C语言的基础知识,并了解简单的系统设计。
准备工作
在开始之前,请确保你已经安装了C编译器,如GCC。此外,你还需要一个文本编辑器来编写代码,比如Notepad++或者Visual Studio Code。
系统设计
我们的机票订票系统将包括以下几个部分:
- 机票信息数据结构:存储每条机票信息。
- 查询机票功能:用户可以输入目的地和日期查询机票。
- 预订机票功能:用户可以选择机票并完成预订。
- 查看预订列表:用户可以查看自己的预订信息。
- 退出系统:用户可以选择退出系统。
机票信息数据结构
首先,我们定义一个结构体来存储机票信息:
#include <stdio.h>
#include <string.h>
#define MAX_FLIGHTS 10
#define MAX_CUSTOMERS 100
#define MAX_DEST 50
typedef struct {
int flight_number;
char source[MAX_DEST];
char destination[MAX_DEST];
int seats_available;
float price;
} Flight;
typedef struct {
int flight_number;
char customer_name[50];
char destination[MAX_DEST];
float price;
} Booking;
主函数
主函数中我们将实现系统菜单和用户交互:
#include <stdlib.h>
Flight flights[MAX_FLIGHTS];
Booking bookings[MAX_CUSTOMERS];
int flight_count = 0;
int booking_count = 0;
int main() {
int choice;
do {
printf("\n--- Flight Booking System ---\n");
printf("1. Add Flight Information\n");
printf("2. Display Flights\n");
printf("3. Book a Flight\n");
printf("4. Display Bookings\n");
printf("5. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
// 添加航班信息
break;
case 2:
// 显示所有航班信息
break;
case 3:
// 预订航班
break;
case 4:
// 显示预订信息
break;
case 5:
printf("Exiting the system...\n");
break;
default:
printf("Invalid choice. Please try again.\n");
}
} while (choice != 5);
return 0;
}
添加航班信息
接下来,我们需要添加功能来存储航班信息:
void addFlight() {
if (flight_count >= MAX_FLIGHTS) {
printf("Flight list is full!\n");
return;
}
Flight new_flight;
printf("Enter flight number: ");
scanf("%d", &new_flight.flight_number);
printf("Enter source: ");
scanf("%s", new_flight.source);
printf("Enter destination: ");
scanf("%s", new_flight.destination);
printf("Enter available seats: ");
scanf("%d", &new_flight.seats_available);
printf("Enter price: ");
scanf("%f", &new_flight.price);
flights[flight_count++] = new_flight;
printf("Flight added successfully!\n");
}
显示所有航班信息
现在我们来实现显示所有航班信息的功能:
void displayFlights() {
printf("\nAvailable Flights:\n");
printf("Flight Number\tSource\t\tDestination\tSeats Available\tPrice\n");
for (int i = 0; i < flight_count; i++) {
printf("%d\t\t%s\t\t%s\t\t%d\t\t\t%.2f\n",
flights[i].flight_number,
flights[i].source,
flights[i].destination,
flights[i].seats_available,
flights[i].price);
}
}
预订航班
用户预订航班的功能需要检查座位是否可用,并更新座位数:
void bookFlight() {
int flight_num, seats, i;
printf("Enter flight number: ");
scanf("%d", &flight_num);
for (i = 0; i < flight_count; i++) {
if (flights[i].flight_number == flight_num) {
break;
}
}
if (i == flight_count) {
printf("Flight not found!\n");
return;
}
if (flights[i].seats_available > 0) {
seats = flights[i].seats_available - 1;
flights[i].seats_available = seats;
Booking new_booking;
strcpy(new_booking.customer_name, "John Doe");
strcpy(new_booking.destination, flights[i].destination);
new_booking.flight_number = flight_num;
new_booking.price = flights[i].price;
bookings[booking_count++] = new_booking;
printf("Flight booked successfully!\n");
} else {
printf("No seats available for this flight.\n");
}
}
查看预订信息
最后,我们需要一个功能来显示用户的预订信息:
void displayBookings() {
printf("\nBookings:\n");
printf("Customer Name\tFlight Number\tDestination\tPrice\n");
for (int i = 0; i < booking_count; i++) {
printf("%s\t\t%d\t\t%s\t\t%.2f\n",
bookings[i].customer_name,
bookings[i].flight_number,
bookings[i].destination,
bookings[i].price);
}
}
编译和运行
将以上代码保存为一个名为 booking_system.c 的文件。在命令行中使用以下命令进行编译和运行:
gcc -o booking_system booking_system.c
./booking_system
总结
通过这个简单的机票订票系统教程,我们学习了如何使用C语言创建一个具有基本功能的小型应用程序。这个系统虽然功能有限,但它可以帮助你理解结构体、数组、用户输入和简单的文件I/O在编程中的应用。随着你技能的提高,你可以扩展这个系统,添加更多的功能,比如处理用户账户、搜索航班、打印收据等。