数据结构飞机订票系统C语言
时间: 2023-11-26 19:48:20 浏览: 167
飞机订票系统是一个复杂的系统,需要使用多种数据结构来存储不同的信息。以下是一些常用的数据结构及其用途:
1. 链表:用于存储航班信息、旅客信息、订票信息等不同数据。可以使用不同的链表节点来封装不同的实体信息,并使用多个链表结构来管理不同实体的若干记录。链表操作包括创建、插入、查找、修改和删除等基本操作。
2. 数组:用于存储机票信息,包括航班号、起飞降落时间、目的地、出发地、票价、可定的剩余票数以及折扣信息等。可以使用二维数组来存储多条机票信息。
3. 栈:用于实现订票和退票功能。订票时将旅客信息入栈,退票时将旅客信息出栈。
4. 队列:用于存储等待订票的旅客信息。当有机票可用时,从队列中取出旅客信息进行订票。
以下是一个简单的飞机订票系统的C语言代码示例,其中使用了链表和数组来存储数据:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义航班信息结构体
typedef struct Flight {
char flight_no[10]; // 航班号
char departure_time[20]; // 起飞时间
char arrival_time[20]; // 降落时间
char destination[20]; // 目的地
char departure_city[20]; // 出发城市
float price; // 票价
int remaining_tickets; // 剩余票数
float discount; // 折扣
struct Flight *next; // 指向下一个航班信息的指针
} Flight;
// 定义航班信息链表
Flight *flight_list = NULL;
// 添加航班信息
void add_flight() {
Flight *new_flight = (Flight *)malloc(sizeof(Flight));
printf("请输入航班号:");
scanf("%s", new_flight->flight_no);
printf("请输入起飞时间:");
scanf("%s", new_flight->departure_time);
printf("请输入降落时间:");
scanf("%s", new_flight->arrival_time);
printf("请输入目的地:");
scanf("%s", new_flight->destination);
printf("请输入出发城市:");
scanf("%s", new_flight->departure_city);
printf("请输入票价:");
scanf("%f", &new_flight->price);
printf("请输入剩余票数:");
scanf("%d", &new_flight->remaining_tickets);
printf("请输入折扣:");
scanf("%f", &new_flight->discount);
new_flight->next = flight_list;
flight_list = new_flight;
printf("航班信息添加成功!\n");
}
// 查询航班信息
void query_flight() {
int choice;
printf("请选择查询方式:\n");
printf("1. 根据航班号查询\n");
printf("2. 根据目的地查询\n");
scanf("%d", &choice);
if (choice == 1) {
char flight_no[10];
printf("请输入航班号:");
scanf("%s", flight_no);
Flight *p = flight_list;
while (p != NULL) {
if (strcmp(p->flight_no, flight_no) == 0) {
printf("航班号:%s\n", p->flight_no);
printf("起飞时间:%s\n", p->departure_time);
printf("降落时间:%s\n", p->arrival_time);
printf("目的地:%s\n", p->destination);
printf("出发城市:%s\n", p->departure_city);
printf("票价:%.2f\n", p->price);
printf("剩余票数:%d\n", p->remaining_tickets);
printf("折扣:%.2f\n", p->discount);
}
p = p->next;
}
} else if (choice == 2) {
char destination[20];
printf("请输入目的地:");
scanf("%s", destination);
Flight *p = flight_list;
while (p != NULL) {
if (strcmp(p->destination, destination) == 0) {
printf("航班号:%s\n", p->flight_no);
printf("起飞时间:%s\n", p->departure_time);
printf("降落时间:%s\n", p->arrival_time);
printf("目的地:%s\n", p->destination);
printf("出发城市:%s\n", p->departure_city);
printf("票价:%.2f\n", p->price);
printf("剩余票数:%d\n", p->remaining_tickets);
printf("折扣:%.2f\n", p->discount);
}
p = p->next;
}
} else {
printf("输入有误!\n");
}
}
// 订票
void book_ticket() {
char flight_no[10];
printf("请输入航班号:");
scanf("%s", flight_no);
Flight *p = flight_list;
while (p != NULL) {
if (strcmp(p->flight_no, flight_no) == 0) {
if (p->remaining_tickets > 0) {
printf("请输入姓名:");
char name[20];
scanf("%s", name);
printf("请输入身份证号:");
char id[20];
scanf("%s", id);
printf("订票成功!\n");
p->remaining_tickets--;
} else {
printf("该航班已无余票!\n");
}
return;
}
p = p->next;
}
printf("未找到该航班!\n");
}
// 退票
void return_ticket() {
printf("请输入姓名:");
char name[20];
scanf("%s", name);
printf("请输入身份证号:");
char id[20];
scanf("%s", id);
printf("退票成功!\n");
}
// 推荐机票
void recommend_flight() {
char destination[20];
char earliest_time[20];
printf("请输入目的地:");
scanf("%s", destination);
printf("请输入最早出发时间:");
scanf("%s", earliest_time);
Flight *p = flight_list;
while (p != NULL) {
if (strcmp(p->destination, destination) == 0 && strcmp(p->departure_time, earliest_time) >= 0) {
printf("航班号:%s\n", p->flight_no);
printf("起飞时间:%s\n", p->departure_time);
printf("降落时间:%s\n", p->arrival_time);
printf("目的地:%s\n", p->destination);
printf("出发城市:%s\n", p->departure_city);
printf("票价:%.2f\n", p->price);
printf("剩余票数:%d\n", p->remaining_tickets);
printf("折扣:%.2f\n", p->discount);
}
p = p->next;
}
}
// 显示当前时间
void show_time() {
time_t t = time(NULL);
printf("当前时间:%s", ctime(&t));
}
int main() {
int choice;
while (1) {
printf("请选择操作:\n");
printf("1. 添加航班信息\n");
printf("2. 查询航班信息\n");
printf("3. 订票\n");
printf("4. 退票\n");
printf("5. 推荐机票\n");
printf("6. 显示当前时间\n");
printf("7. 退出系统\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_flight();
break;
case 2:
query_flight();
break;
case 3:
book_ticket();
break;
case 4:
return_ticket();
break;
case 5:
recommend_flight();
break;
case 6:
show_time();
break;
case 7:
exit(0);
default:
printf("输入有误!\n");
}
}
return 0;
}
```
阅读全文