飞机订票系统是现代航空业的重要组成部分,它不仅方便了旅客的出行,也提高了航空公司的运营效率。本文将带您一起了解如何使用C语言实现一个简单的飞机订票系统,让您轻松掌握航空购票流程。
1. 系统设计
在设计飞机订票系统时,我们需要考虑以下几个要素:
- 用户界面:简洁明了,易于操作。
- 数据存储:存储航班信息、乘客信息、订单信息等。
- 功能模块:查询航班、预订机票、支付、退改签等。
2. 数据结构
为了实现飞机订票系统,我们需要定义以下数据结构:
2.1 航班信息
typedef struct {
int flight_number; // 航班号
char departure_city[50]; // 出发城市
char arrival_city[50]; // 目的地城市
char departure_time[20]; // 出发时间
char arrival_time[20]; // 到达时间
int available_seats; // 可用座位数
} Flight;
2.2 乘客信息
typedef struct {
int passenger_id; // 乘客ID
char name[50]; // 姓名
char id_card_number[20]; // 身份证号
char phone_number[20]; // 手机号
} Passenger;
2.3 订单信息
typedef struct {
int order_id; // 订单ID
int flight_number; // 航班号
int passenger_id; // 乘客ID
int seat_number; // 座位号
float price; // 价格
} Order;
3. 功能实现
3.1 查询航班
void query_flight(Flight flights[], int flight_count) {
printf("请输入出发城市:");
char departure_city[50];
scanf("%s", departure_city);
printf("请输入目的地城市:");
char arrival_city[50];
scanf("%s", arrival_city);
for (int i = 0; i < flight_count; i++) {
if (strcmp(flights[i].departure_city, departure_city) == 0 && strcmp(flights[i].arrival_city, arrival_city) == 0) {
printf("航班号:%d\n", flights[i].flight_number);
printf("出发城市:%s\n", flights[i].departure_city);
printf("目的地城市:%s\n", flights[i].arrival_city);
printf("出发时间:%s\n", flights[i].departure_time);
printf("到达时间:%s\n", flights[i].arrival_time);
printf("可用座位数:%d\n", flights[i].available_seats);
}
}
}
3.2 预订机票
void book_ticket(Flight flights[], int flight_count, Passenger passengers[], int passenger_count, Order orders[], int order_count) {
printf("请输入乘客姓名:");
char name[50];
scanf("%s", name);
printf("请输入身份证号:");
char id_card_number[20];
scanf("%s", id_card_number);
printf("请输入手机号:");
char phone_number[20];
scanf("%s", phone_number);
// 查找乘客
int passenger_index = -1;
for (int i = 0; i < passenger_count; i++) {
if (strcmp(passengers[i].id_card_number, id_card_number) == 0) {
passenger_index = i;
break;
}
}
if (passenger_index == -1) {
printf("乘客信息不存在,请先注册。\n");
return;
}
// 查找航班
int flight_index = -1;
for (int i = 0; i < flight_count; i++) {
if (flights[i].available_seats > 0) {
flight_index = i;
break;
}
}
if (flight_index == -1) {
printf("没有可用航班。\n");
return;
}
// 创建订单
Order order;
order.order_id = order_count + 1;
order.flight_number = flights[flight_index].flight_number;
order.passenger_id = passengers[passenger_index].passenger_id;
order.seat_number = flights[flight_index].available_seats;
order.price = 1000.0; // 假设票价为1000元
// 更新航班信息
flights[flight_index].available_seats--;
// 打印订单信息
printf("订单号:%d\n", order.order_id);
printf("航班号:%d\n", order.flight_number);
printf("乘客姓名:%s\n", passengers[passenger_index].name);
printf("身份证号:%s\n", passengers[passenger_index].id_card_number);
printf("手机号:%s\n", passengers[passenger_index].phone_number);
printf("座位号:%d\n", order.seat_number);
printf("价格:%f\n", order.price);
}
3.3 支付
void pay(Order orders[], int order_count) {
printf("请输入订单号:");
int order_id;
scanf("%d", &order_id);
// 查找订单
int order_index = -1;
for (int i = 0; i < order_count; i++) {
if (orders[i].order_id == order_id) {
order_index = i;
break;
}
}
if (order_index == -1) {
printf("订单不存在。\n");
return;
}
// 打印订单信息
printf("订单号:%d\n", orders[order_index].order_id);
printf("航班号:%d\n", orders[order_index].flight_number);
printf("乘客姓名:%s\n", orders[order_index].passengers[orders[order_index].passenger_id].name);
printf("身份证号:%s\n", orders[order_index].passengers[orders[order_index].passenger_id].id_card_number);
printf("手机号:%s\n", orders[order_index].passengers[orders[order_index].passenger_id].phone_number);
printf("座位号:%d\n", orders[order_index].seat_number);
printf("价格:%f\n", orders[order_index].price);
printf("请输入支付密码:");
char password[20];
scanf("%s", password);
// 验证支付密码
if (strcmp(password, "123456") == 0) { // 假设支付密码为123456
printf("支付成功。\n");
} else {
printf("支付失败。\n");
}
}
3.4 退改签
void refund_or_change_ticket(Order orders[], int order_count) {
printf("请输入订单号:");
int order_id;
scanf("%d", &order_id);
// 查找订单
int order_index = -1;
for (int i = 0; i < order_count; i++) {
if (orders[i].order_id == order_id) {
order_index = i;
break;
}
}
if (order_index == -1) {
printf("订单不存在。\n");
return;
}
// 打印订单信息
printf("订单号:%d\n", orders[order_index].order_id);
printf("航班号:%d\n", orders[order_index].flight_number);
printf("乘客姓名:%s\n", orders[order_index].passengers[orders[order_index].passenger_id].name);
printf("身份证号:%s\n", orders[order_index].passengers[orders[order_index].passenger_id].id_card_number);
printf("手机号:%s\n", orders[order_index].passengers[orders[order_index].passenger_id].phone_number);
printf("座位号:%d\n", orders[order_index].seat_number);
printf("价格:%f\n", orders[order_index].price);
printf("请选择操作类型(1:退票,2:改签):");
int type;
scanf("%d", &type);
if (type == 1) {
// 退票
orders[order_index].price = 0.0;
printf("退票成功。\n");
} else if (type == 2) {
// 改签
printf("请输入新的航班号:");
int new_flight_number;
scanf("%d", &new_flight_number);
// 查找新航班
int new_flight_index = -1;
for (int i = 0; i < order_count; i++) {
if (orders[i].flight_number == new_flight_number) {
new_flight_index = i;
break;
}
}
if (new_flight_index == -1) {
printf("新航班不存在。\n");
return;
}
// 更新订单信息
orders[order_index].flight_number = new_flight_number;
orders[order_index].price = 1000.0; // 假设票价为1000元
printf("改签成功。\n");
} else {
printf("无效的操作类型。\n");
}
}
4. 总结
通过以上代码,我们实现了一个简单的飞机订票系统。当然,实际应用中的飞机订票系统会更加复杂,需要考虑更多因素,如多用户并发、数据安全等。但本文所提供的代码和思路,相信对您了解和实现飞机订票系统会有所帮助。
