航班订票系统,录入航班,列出航班,在重新启动代码时还保存着上一次运行代码所录入的航班信息
时间: 2024-04-02 12:31:15 浏览: 9
这个问题涉及到数据的持久化,一种简单的实现方式是使用文件存储航班信息。在程序启动时,读取文件中保存的航班信息,然后在程序运行过程中进行航班的录入和列出操作。每次有新的航班信息录入时,将其追加到文件中。这样,在重新启动代码时,就可以再次读取到上一次保存的航班信息。当然,这种方式还需要考虑如何处理文件读写的异常情况,例如文件不存在或者不可读写等。
相关问题
航班订票系统,录入航班,列出航班,在重新启动代码时还保存着上一次运行代码所录入的航班信息,c语言代码
下面是一个简单的基于文件存储的航班订票系统的C语言代码,可以实现录入航班、列出航班、保存航班信息和重新读取航班信息等功能。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_FLIGHTS 100
struct flight {
char flight_num[10]; // 航班号
char departure[20]; // 出发地
char destination[20]; // 目的地
int seats; // 座位数
};
void save_flights(struct flight flights[], int num_flights) {
FILE *fp = fopen("flights.dat", "wb");
if (fp == NULL) {
printf("Error: cannot open file.\n");
return;
}
fwrite(flights, sizeof(struct flight), num_flights, fp);
fclose(fp);
}
int load_flights(struct flight flights[]) {
FILE *fp = fopen("flights.dat", "rb");
if (fp == NULL) {
return 0;
}
int num_flights = fread(flights, sizeof(struct flight), MAX_FLIGHTS, fp);
fclose(fp);
return num_flights;
}
void list_flights(struct flight flights[], int num_flights) {
printf("Flight Number\tDeparture\tDestination\tSeats\n");
printf("---------------------------------------------------\n");
for (int i = 0; i < num_flights; i++) {
printf("%s\t%s\t\t%s\t\t%d\n", flights[i].flight_num, flights[i].departure, flights[i].destination, flights[i].seats);
}
}
void add_flight(struct flight flights[], int *num_flights) {
if (*num_flights >= MAX_FLIGHTS) {
printf("Error: too many flights.\n");
return;
}
struct flight f;
printf("Enter flight number: ");
scanf("%s", f.flight_num);
printf("Enter departure: ");
scanf("%s", f.departure);
printf("Enter destination: ");
scanf("%s", f.destination);
printf("Enter number of seats: ");
scanf("%d", &f.seats);
flights[*num_flights] = f;
(*num_flights)++;
}
int main() {
struct flight flights[MAX_FLIGHTS];
int num_flights = load_flights(flights);
char choice;
do {
printf("\nFlight Reservation System:\n");
printf("1. List flights\n");
printf("2. Add a flight\n");
printf("3. Quit\n");
printf("Enter choice: ");
scanf(" %c", &choice);
switch (choice) {
case '1':
list_flights(flights, num_flights);
break;
case '2':
add_flight(flights, &num_flights);
break;
case '3':
save_flights(flights, num_flights);
printf("Exiting...\n");
break;
default:
printf("Invalid choice. Try again.\n");
}
} while (choice != '3');
return 0;
}
```
在程序启动时,我们先调用`load_flights`函数从文件中读取保存的航班信息。在录入新的航班信息时,将其添加到`flights`数组中,同时更新`num_flights`变量来记录航班数量。在程序退出前,我们调用`save_flights`函数将`flights`数组中的航班信息写入文件中,以便下次启动程序时可以重新读取。
航班订票系统同时录入几个航班信息,并可列出,可删除c语言代码
以下是一个简单的航班订票系统的C语言代码,可以同时录入多个航班信息,列出所有航班信息并删除指定航班信息。请注意,本代码仅作为示例,可能需要根据实际需求进行修改和完善。
```c
#include <stdio.h>
#include <string.h>
// 定义航班信息结构体
struct Flight {
char flight_no[10]; // 航班号
char departure[20]; // 出发地
char destination[20]; // 目的地
int seats_left; // 剩余座位数
};
// 定义航班信息数组和当前航班数
struct Flight flights[100];
int num_flights = 0;
// 函数声明
void add_flight();
void list_flights();
void delete_flight();
int main() {
int choice;
do {
// 显示菜单并读取用户选择
printf("\n航班订票系统\n");
printf("1. 录入航班信息\n");
printf("2. 列出所有航班信息\n");
printf("3. 删除指定航班信息\n");
printf("4. 退出\n");
printf("请选择:");
scanf("%d", &choice);
// 根据用户选择执行相应操作
switch (choice) {
case 1:
add_flight();
break;
case 2:
list_flights();
break;
case 3:
delete_flight();
break;
case 4:
printf("谢谢使用!\n");
break;
default:
printf("无效选择,请重新输入!\n");
break;
}
} while (choice != 4);
return 0;
}
// 录入航班信息
void add_flight() {
// 判断航班数是否达到上限
if (num_flights >= 100) {
printf("航班数已达到上限,无法继续录入!\n");
return;
}
// 读取航班信息
printf("\n录入航班信息:\n");
printf("航班号:");
scanf("%s", flights[num_flights].flight_no);
printf("出发地:");
scanf("%s", flights[num_flights].departure);
printf("目的地:");
scanf("%s", flights[num_flights].destination);
printf("剩余座位数:");
scanf("%d", &flights[num_flights].seats_left);
// 增加航班数
num_flights++;
printf("航班信息已录入!\n");
}
// 列出所有航班信息
void list_flights() {
printf("\n航班信息如下:\n");
printf("%-10s%-20s%-20s%-10s\n", "航班号", "出发地", "目的地", "剩余座位数");
for (int i = 0; i < num_flights; i++) {
printf("%-10s%-20s%-20s%-10d\n", flights[i].flight_no, flights[i].departure, flights[i].destination, flights[i].seats_left);
}
}
// 删除指定航班信息
void delete_flight() {
// 读取要删除的航班号
printf("\n请输入要删除的航班号:");
char flight_no[10];
scanf("%s", flight_no);
// 查找航班号对应的航班信息
int index = -1;
for (int i = 0; i < num_flights; i++) {
if (strcmp(flight_no, flights[i].flight_no) == 0) {
index = i;
break;
}
}
// 如果找到了要删除的航班信息,则删除它
if (index >= 0) {
for (int i = index; i < num_flights - 1; i++) {
flights[i] = flights[i + 1];
}
num_flights--;
printf("航班信息已删除!\n");
} else {
printf("未找到对应的航班信息!\n");
}
}
```
在上述代码中,航班信息使用结构体来表示,航班信息数组保存所有录入的航班信息,当前航班数保存当前已经录入的航班数。`add_flight()`函数用于录入新的航班信息,`list_flights()`函数用于列出所有航班信息,`delete_flight()`函数用于删除指定航班信息。在主函数中,使用循环显示菜单并读取用户选择,根据用户选择执行相应操作,直到用户选择退出。