飞机票订票系统代码
时间: 2023-08-06 17:15:38 浏览: 651
好的,以下是一个简单的飞机票订票系统的C语言代码,包括订票、退票、查询航班信息和查询订票信息等功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义航班信息结构体
typedef struct {
char flight_no[10]; // 航班号
char departure[20]; // 出发地
char destination[20]; // 目的地
char departure_time[20]; // 起飞时间
char arrival_time[20]; // 到达时间
float price; // 票价
} Flight;
// 定义乘客信息结构体
typedef struct {
char name[20]; // 姓名
char gender[10]; // 性别
char id[20]; // 身份证号
char phone[20]; // 联系方式
} Passenger;
// 定义订票信息结构体
typedef struct {
Flight flight; // 航班信息
Passenger passenger; // 乘客信息
} Ticket;
// 定义订票信息文件名
const char ticket_file[] = "ticket.dat";
// 定义航班信息数组和航班数目
Flight flights[10];
int num_flights = 0;
// 函数声明
void print_menu();
void add_flight();
void print_flights();
void book_ticket();
void print_tickets();
void cancel_ticket();
int main() {
// 读取航班信息文件
FILE *fp;
if ((fp = fopen("flight.dat", "r")) == NULL) {
printf("Failed to open file flight.dat.\n");
exit(1);
}
while (fscanf(fp, "%s%s%s%s%s%f", flights[num_flights].flight_no, flights[num_flights].departure, flights[num_flights].destination, flights[num_flights].departure_time, flights[num_flights].arrival_time, &flights[num_flights].price) == 6) {
num_flights++;
}
fclose(fp);
int choice;
do {
print_menu();
scanf("%d", &choice);
switch (choice) {
case 1:
add_flight();
break;
case 2:
print_flights();
break;
case 3:
book_ticket();
break;
case 4:
print_tickets();
break;
case 5:
cancel_ticket();
break;
case 6:
printf("Goodbye!\n");
break;
default:
printf("Invalid choice. Please try again.\n");
break;
}
} while (choice != 6);
return 0;
}
// 打印菜单
void print_menu() {
printf("------------------------------\n");
printf("Airline Ticket Booking System\n");
printf("------------------------------\n");
printf("1. Add a flight\n");
printf("2. Print flights\n");
printf("3. Book a ticket\n");
printf("4. Print tickets\n");
printf("5. Cancel a ticket\n");
printf("6. Quit\n");
printf("Please enter your choice: ");
}
// 添加航班信息
void add_flight() {
if (num_flights >= 10) {
printf("Cannot add more flights.\n");
return;
}
printf("Please enter flight information:\n");
printf("Flight No.: ");
scanf("%s", flights[num_flights].flight_no);
printf("Departure: ");
scanf("%s", flights[num_flights].departure);
printf("Destination: ");
scanf("%s", flights[num_flights].destination);
printf("Departure time: ");
scanf("%s", flights[num_flights].departure_time);
printf("Arrival time: ");
scanf("%s", flights[num_flights].arrival_time);
printf("Price: ");
scanf("%f", &flights[num_flights].price);
num_flights++;
printf("Flight added successfully.\n");
}
// 打印航班信息
void print_flights() {
printf("Flights:\n");
printf("Flight No.\tDeparture\tDestination\tDeparture time\tArrival time\tPrice\n");
for (int i = 0; i < num_flights; i++) {
printf("%s\t%s\t%s\t%s\t%s\t%.2f\n", flights[i].flight_no, flights[i].departure, flights[i].destination, flights[i].departure_time, flights[i].arrival_time, flights[i].price);
}
}
// 订票
void book_ticket() {
// 读取订票信息文件
FILE *fp;
if ((fp = fopen(ticket_file, "a+")) == NULL) {
printf("Failed to open file %s.\n", ticket_file);
exit(1);
}
// 输入航班号
char flight_no[10];
printf("Please enter flight No.: ");
scanf("%s", flight_no);
// 查找航班信息
int index = -1;
for (int i = 0; i < num_flights; i++) {
if (strcmp(flights[i].flight_no, flight_no) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("Flight not found.\n");
return;
}
Flight flight = flights[index];
// 输入乘客信息
Passenger passenger;
printf("Please enter passenger information:\n");
printf("Name: ");
scanf("%s", passenger.name);
printf("Gender: ");
scanf("%s", passenger.gender);
printf("ID: ");
scanf("%s", passenger.id);
printf("Phone: ");
scanf("%s", passenger.phone);
// 生成订票信息
Ticket ticket = { flight, passenger };
// 写入订票信息文件
fprintf(fp, "%s %s %s %s %s %.2f %s %s %s %s\n", flight.flight_no, flight.departure, flight.destination, flight.departure_time, flight.arrival_time, flight.price, passenger.name, passenger.gender, passenger.id, passenger.phone);
fclose(fp);
printf("Ticket booked successfully.\n");
}
// 打印订票信息
void print_tickets() {
// 读取订票信息文件
FILE *fp;
if ((fp = fopen(ticket_file, "r")) == NULL) {
printf("Failed to open file %s.\n", ticket_file);
exit(1);
}
// 打印订票信息
printf("Tickets:\n");
printf("Flight No.\tDeparture\tDestination\tDeparture time\tArrival time\tPrice\tName\tGender\tID\tPhone\n");
char flight_no[10], departure[20], destination[20], departure_time[20], arrival_time[20], name[20], gender[10], id[20], phone[20];
float price;
while (fscanf(fp, "%s%s%s%s%s%f%s%s%s%s", flight_no, departure, destination, departure_time, arrival_time, &price, name, gender, id, phone) == 10) {
printf("%s\t%s\t%s\t%s\t%s\t%.2f\t%s\t%s\t%s\t%s\n", flight_no, departure, destination, departure_time, arrival_time, price, name, gender, id, phone);
}
fclose(fp);
}
// 退票
void cancel_ticket() {
// 读取订票信息文件
FILE *fp;
if ((fp = fopen(ticket_file, "r")) == NULL) {
printf("Failed to open file %s.\n", ticket_file);
exit(1);
}
// 读取所有订票信息
Ticket tickets[100];
int num_tickets = 0;
char flight_no[10], departure[20], destination[20], departure_time[20], arrival_time[20], name[20], gender[10], id[20], phone[20];
float price;
while (fscanf(fp, "%s%s%s%s%s%f%s%s%s%s", flight_no, departure, destination, departure_time, arrival_time, &price, name, gender, id, phone) == 10) {
Flight flight = { flight_no, departure, destination, departure_time, arrival_time, price };
Passenger passenger = { name, gender, id, phone };
Ticket ticket = { flight, passenger };
tickets[num_tickets++] = ticket;
}
fclose(fp);
// 打印所有订票信息
printf("Please select a ticket to cancel:\n");
printf("No.\tFlight No.\tDeparture\tDestination\tDeparture time\tArrival time\tPrice\tName\tGender\tID\tPhone\n");
for (int i = 0; i < num_tickets; i++) {
printf("%d\t%s\t%s\t%s\t%s\t%s\t%.2f\t%s\t%s\t%s\t%s\n", i + 1, tickets[i].flight.flight_no, tickets[i].flight.departure, tickets[i].flight.destination, tickets[i].flight.departure_time, tickets[i].flight.arrival_time, tickets[i].flight.price, tickets[i].passenger.name, tickets[i].passenger.gender, tickets[i].passenger.id, tickets[i].passenger.phone);
}
// 选择需要退票的订票信息
int ticket_no;
printf("Please enter the ticket No.: ");
scanf("%d", &ticket_no);
if (ticket_no < 1 || ticket_no > num_tickets) {
printf("Invalid ticket No.\n");
return;
}
// 从文件中删除订票信息
if ((fp = fopen(ticket_file, "w")) == NULL) {
printf("Failed to open file %s.\n", ticket_file);
exit(1);
}
for (int i = 0; i < num_tickets; i++) {
if (i + 1 != ticket_no) {
fprintf(fp, "%s %s %s %s %s %.2f %s %s %s %s\n", tickets[i].flight.flight_no, tickets[i].flight.departure, tickets[i].flight.destination, tickets[i].flight.departure_time, tickets[i].flight.arrival_time, tickets[i].flight.price, tickets[i].passenger.name, tickets[i].passenger.gender, tickets[i].passenger.id, tickets[i].passenger.phone);
}
}
fclose(fp);
printf("Ticket cancelled successfully.\n");
}
```
上述代码仅供参考,具体实现方式和细节可以根据项目需求进行修改和完善。