c语言编写一个民航信息管理系统
时间: 2023-08-25 15:12:08 浏览: 180
好的,一个基本的民航信息管理系统可以包括以下功能:
1. 航班信息查询:可以根据航班号、出发地、目的地、日期等信息查询航班的基本信息。
2. 航班订票:可以根据乘客的姓名、身份证号、联系方式等信息进行航班订票。
3. 航班改签:可以根据乘客的航班号、日期等信息进行航班改签。
4. 航班退票:可以根据乘客的航班号、日期等信息进行航班退票。
下面是一个简单的民航信息管理系统的 C 语言代码示例,仅供参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义航班结构体
typedef struct {
char no[10]; // 航班号
char from[20]; // 出发地
char to[20]; // 目的地
char date[10]; // 日期
int seats; // 座位数
} Flight;
// 定义乘客结构体
typedef struct {
char name[20]; // 姓名
char id[20]; // 身份证号
char phone[20]; // 联系电话
char no[10]; // 航班号
char date[10]; // 日期
int status; // 状态:0-未订票,1-已订票,2-已改签,3-已退票
} Passenger;
// 定义航班数组和乘客数组
Flight flights[100];
Passenger passengers[1000];
int flight_count = 0;
int passenger_count = 0;
// 初始化航班信息
void init_flights() {
Flight f1 = {"CA123", "北京", "上海", "2022-01-01", 100};
Flight f2 = {"MU456", "上海", "广州", "2022-01-02", 50};
Flight f3 = {"CZ789", "广州", "深圳", "2022-01-03", 80};
flights[0] = f1;
flights[1] = f2;
flights[2] = f3;
flight_count = 3;
}
// 显示航班信息
void show_flights() {
printf("航班号\t出发地\t目的地\t日期\t\t座位数\n");
for (int i = 0; i < flight_count; i++) {
printf("%s\t%s\t%s\t%s\t%d\n", flights[i].no, flights[i].from, flights[i].to, flights[i].date, flights[i].seats);
}
}
// 查询航班信息
void query_flight() {
char no[10], from[20], to[20], date[10];
printf("请输入查询信息:\n");
printf("航班号(输入0表示不限):");
scanf("%s", no);
printf("出发地(输入0表示不限):");
scanf("%s", from);
printf("目的地(输入0表示不限):");
scanf("%s", to);
printf("日期(格式为yyyy-mm-dd,输入0表示不限):");
scanf("%s", date);
printf("查询结果:\n");
printf("航班号\t出发地\t目的地\t日期\t\t座位数\n");
for (int i = 0; i < flight_count; i++) {
if ((strcmp(no, "0") == 0 || strcmp(flights[i].no, no) == 0)
&& (strcmp(from, "0") == 0 || strcmp(flights[i].from, from) == 0)
&& (strcmp(to, "0") == 0 || strcmp(flights[i].to, to) == 0)
&& (strcmp(date, "0") == 0 || strcmp(flights[i].date, date) == 0)) {
printf("%s\t%s\t%s\t%s\t%d\n", flights[i].no, flights[i].from, flights[i].to, flights[i].date, flights[i].seats);
}
}
}
// 订票
void book_ticket() {
char name[20], id[20], phone[20], no[10], date[10];
printf("请输入订票信息:\n");
printf("姓名:");
scanf("%s", name);
printf("身份证号:");
scanf("%s", id);
printf("联系电话:");
scanf("%s", phone);
printf("航班号:");
scanf("%s", no);
printf("日期(格式为yyyy-mm-dd):");
scanf("%s", date);
for (int i = 0; i < flight_count; i++) {
if (strcmp(flights[i].no, no) == 0 && strcmp(flights[i].date, date) == 0) {
if (flights[i].seats > 0) {
Passenger p = {name, id, phone, no, date, 1};
passengers[passenger_count] = p;
passenger_count++;
flights[i].seats--;
printf("订票成功!\n");
return;
} else {
printf("该航班座位已满!\n");
return;
}
}
}
printf("没有找到对应的航班!\n");
}
// 改签
void change_ticket() {
char name[20], no[10], date[10], new_no[10], new_date[10];
printf("请输入改签信息:\n");
printf("姓名:");
scanf("%s", name);
printf("原航班号:");
scanf("%s", no);
printf("原日期(格式为yyyy-mm-dd):");
scanf("%s", date);
printf("新航班号:");
scanf("%s", new_no);
printf("新日期(格式为yyyy-mm-dd):");
scanf("%s", new_date);
for (int i = 0; i < passenger_count; i++) {
if (strcmp(passengers[i].name, name) == 0 && strcmp(passengers[i].no, no) == 0 && strcmp(passengers[i].date, date) == 0 && passengers[i].status == 1) {
for (int j = 0; j < flight_count; j++) {
if (strcmp(flights[j].no, new_no) == 0 && strcmp(flights[j].date, new_date) == 0) {
if (flights[j].seats > 0) {
passengers[i].no = new_no;
passengers[i].date = new_date;
passengers[i].status = 2;
flights[j].seats--;
flights[j].seats++;
printf("改签成功!\n");
return;
} else {
printf("新航班座位已满!\n");
return;
}
}
}
printf("没有找到对应的新航班!\n");
return;
}
}
printf("没有找到对应的乘客或订单状态不正确!\n");
}
// 退票
void refund_ticket() {
char name[20], no[10], date[10];
printf("请输入退票信息:\n");
printf("姓名:");
scanf("%s", name);
printf("航班号:");
scanf("%s", no);
printf("日期(格式为yyyy-mm-dd):");
scanf("%s", date);
for (int i = 0; i < passenger_count; i++) {
if (strcmp(passengers[i].name, name) == 0 && strcmp(passengers[i].no, no) == 0 && strcmp(passengers[i].date, date) == 0 && (passengers[i].status == 1 || passengers[i].status == 2)) {
for (int j = 0; j < flight_count; j++) {
if (strcmp(flights[j].no, no) == 0 && strcmp(flights[j].date, date) == 0) {
flights[j].seats++;
if (passengers[i].status == 1) {
passengers[i].status = 3;
} else if (passengers[i].status == 2) {
passengers[i].status = 1;
}
printf("退票成功!\n");
return;
}
}
printf("没有找到对应的航班!\n");
return;
}
}
printf("没有找到对应的乘客或订单状态不正确!\n");
}
int main() {
init_flights();
while (1) {
printf("\n请选择操作:\n");
printf("1. 显示航班信息\n");
printf("2. 查询航班信息\n");
printf("3. 订票\n");
printf("4. 改签\n");
printf("5. 退票\n");
printf("0. 退出系统\n");
int op;
scanf("%d", &op);
switch (op) {
case 1:
show_flights();
break;
case 2:
query_flight();
break;
case 3:
book_ticket();
break;
case 4:
change_ticket();
break;
case 5:
refund_ticket();
break;
case 0:
printf("退出系统!\n");
exit(0);
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
以上是一个非常简单的民航信息管理系统,实际开发中可能需要考虑更多的功能和复杂的业务流程,建议根据实际情况进行扩展和优化。
阅读全文