民航票务管理系统-C语言--录入,查询,订票,退票,修改航班信息以及主菜单和子菜单。

概述:

我的课程设计题目为民航票务管理系统,其目的是为了便利人们购买飞机票的过程为广大人民群众提供便利,本系统主要为订票者提供订票服务以及相关的信息服务。同时增加了我对于程序设计的理解以及对于 C 语言的熟练度。

  1. 录入:可以录入已知航班情况;
  2. 查询:可以查询某个航班情况:
    1. 通过航班号查询;
    2. 通过起飞城市查询;
    3. 通过抵达城市查询;

         然后显示航班信息(航班号,航班的起降时间、起飞抵达城市、航班票 价、票价折扣、                 以及所剩余的票数);

    3.订票:通过起飞城市和抵达城市选择合适的航班并生成订单编号,如果该航班已经无票可 订,系统会提示选择其他航班并提供相关信息;

    4.退票:退票时要求客户提供姓名、证件号,并返回该退票航班现航班信息(航班号,航班的起降时间、起飞抵达城市、航班票价、票价折扣、以及所剩余的票数);

    5.修改:修改航班的数据信息:

  1. 修改航班的起飞时间;
  2. 修改航班的降落时间;
  3. 修改航班的起飞城市;
  4. 修改航班的降落城市;
  5. 修改航班的机票价格;
  6. 修改航班的票价折扣;

     6.退出:退出民航票务管理系统;

 全部代码的实现:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>//注意所写函数需要的头函数;
#define N 10//n为航班数;
void Menu();//总菜单;
void input();//录入航班信息;
void seek();//查寻航班信息;
void booking();//订票
void refund();//退票
void revamp();//修改航班信息;
void exit();//退出程序;
int n,i;
struct Flight
{
    int number;//航班号
    char departureTime[20];//起飞时间
    char landingTime[20];//降落时间
    char takeoffCity[40];//起飞城市
    char arriveCity[40];//降落城市
    int price;//飞机票价
    float discount;//票价折扣
    int seat;//座位数量
} fly[N];
struct Flight t;
typedef struct idcard
{
    long long int sfz;//身份证号
    char name[20];//姓名
    int count;//购票数量
    int number;//航班号
} idcard;

int main()
{
    printf("请输入当前航班总数:");
    scanf("%d",&n);
    int *p;
    p=(int *)malloc(n*sizeof(int));
    if(p==NULL)exit(0);
    else while(1)
        {
            Menu();
        }
    system("pause");
    free(p);
    return 0;
}
void Menu()//总菜单;
{
    printf("\n");
    printf("\t欢迎来到民航票务管理系统\n\n");
    printf("\t    民航主系统菜单 \n");
    printf("\t   1.录入航班信息\n");
    printf("\t   2.查询航班信息\n");
    printf("\t   3.航班订票    \n");
    printf("\t   4.航班退票    \n");
    printf("\t   5.修改航班信息\n");
    printf("\t   6.退出航班系统\n");
    printf("\n");
    printf("请输入你所需要的菜单编号:");
    printf("\n");
    int menu;
    scanf("%d",&menu);
    switch(menu)
    {
    case 1:
        input();
        break;
    case 2:
        seek();
        break;
    case 3:
        booking();
        break;
    case 4:
        refund();
        break;
    case 5:
        revamp();
        break;
    case 6:
        printf("即将退出程序\n");
        exit(0);
        break;
    default:
        printf("请在1-6之间选择正确的菜单编号!\n");
    }
}
void input()//录入全部航班信息;
{

    for(i=0; i<n; i++)
    {
        printf("录入的第%d趟航班的信息\n",i+1);

        printf("航班号:");
        scanf("%d",&fly[i].number);

        printf("起飞时间:");
        scanf("%s",fly[i].departureTime);

        printf("降落时间:");
        scanf("%s",fly[i].landingTime);

        printf("起飞城市:");
        scanf("%s",fly[i].takeoffCity);

        printf("降落城市:");
        scanf("%s",fly[i].arriveCity);

        printf("飞机票价:");
        scanf("%d",&fly[i].price);

        printf("票价折扣:");
        scanf("%f",&fly[i].discount);

        printf("剩余座位:");
        scanf("%d",&fly[i].seat);
        printf("\n");
    }
    printf("\n");
    system("pause");
}
void booking()//订票
{
    char x[20];
    char y[20];
    int k=0;
    long long int m;
    printf("请输入你的航班起飞城市\n");
    scanf("%s",x);
    printf("请输入你的航班抵达城市\n");
    scanf("%s",y);
    for(i=0; i<n; i++)
    {
        if(strcmp(fly[i].takeoffCity,x)&&strcmp(fly[i].arriveCity,y))
        {
            i=i-1;
            printf("订票成功");
            m=202215060123+i;
            printf("你的订单编号为:%lld\n",m);//当整数较大时输入要用long long
            printf("你选择的航班信息为\n");
            fly[i].seat=fly[i].seat-1;
            printf(" 航班编号为:%d \n 航班起飞时间为:%s \n 航班降落时间为:%s \n 航班起飞城市为:%s \n 航班降落城市为: %s \n 航班票价为:%d \n 航班票价折扣为:%f \n 航班剩余位置为:%d \n",fly[i].number,fly[i].departureTime,fly[i].landingTime,
                   fly[i].takeoffCity,fly[i].arriveCity,fly[i].price,fly[i].discount,fly[i].seat);
            k=1;
            break;
        }
    }
    if(k==0)
    {
        printf("没有合适航班,请耐心等待或选择其他航班");
    }
    system("pause");
}
void refund()//退票
{
    int g;
    int k;
    char h[20];
    long long int j;
    printf("请输入你的航班班号\n");
    scanf("%d",&g);
    for(i=0; i<n; i++)
    {
        if(fly[i].number==g)
        {
            printf("请输入你的资料");
            printf("姓名:");
            scanf("%s",h);
            printf("身份证号:");
            scanf("%lld",&j);
            fly[i].seat=fly[i].seat+1;
            printf("你所要退订的航班信息现在为\n");
            printf("航班编号为:%d \n 航班起飞时间为:%s \n 航班降落时间为:%s \n 航班起飞城市为:%s \n 航班降落城市为: %s \n 航班票价为:%d \n 航班票价折扣为:%f \n 航班剩余位置为:%d \n",fly[i].number,fly[i].departureTime,fly[i].landingTime,
                   fly[i].takeoffCity,fly[i].arriveCity,fly[i].price,fly[i].discount,fly[i].seat);
            printf("退票成功!");
            k=1;
            break;
        }
    }
    if(k==0)
    {
        printf("请输入正确的航班班号!");
    }
    system("pause");
}

void seek()//查询航班信息;
{
    int m;
    int k=0;
    int a;
    char b[20];
    char c[20];
    printf("------------查询航班信息--子菜单----------\n");
    printf("-----------1.通过航班的航班号查询-----------\n");
    printf("-----------2.通过航班起飞城市查询-----------\n");
    printf("-----------3.通过航班抵达城市查询-----------\n");
    printf("-----------4.退出航班信息子菜单-----------\n");
    printf("请输入你所需要的子菜单编号:");
    scanf("%d",&m);
    switch(m)
{

    case 1:
        printf("请输入待查询的航班号:");
        scanf("%d",&a);
        for(i=0; i<n; i++)
        {
            if(fly[i].number==a)
            {
                printf("航班编号为:%d \n 航班起飞时间为:%s \n 航班降落时间为:%s \n 航班起飞城市为:%s \n 航班降落城市为: %s \n 航班票价为:%d \n 航班票价折扣为:%f \n 航班剩余位置为:%d \n",fly[i].number,fly[i].departureTime,fly[i].landingTime,
    fly[i].takeoffCity,fly[i].arriveCity,fly[i].price,fly[i].discount,fly[i].seat);
                k=1;
                break;
            }
        };
        if(k==0)
        {
            printf("该航班号不存在,请重新输入!\n");
        }
        break;
    case 2:
        printf("请输入航班起飞城市:");
        scanf("%s",b);
        for(i=0; i<n; i++)
        {
            if(strcmp (fly[i].takeoffCity,b)==0)//要注意int型和char型的比较方法完全不同;
            {
                printf("航班编号为:%d \n 航班起飞时间为:%s \n 航班降落时间为:%s \n 航班起飞城市为:%s \n 航班降落城市为: %s \n 航班票价为:%d \n 航班票价折扣为:%f \n 航班剩余位置为:%d \n",fly[i].number,fly[i].departureTime,fly[i].landingTime,
                       fly[i].takeoffCity,fly[i].arriveCity,fly[i].price,fly[i].discount,fly[i].seat);
            }
        };
        if(k==0)
        {

            printf("该航班起飞城市不存在,请重新输入!\n");
        }
        break;
    case 3:
        printf("请输入航班抵达城市:");
        scanf("%s",c);
        for(i=0; i<n; i++)
        {
            if(strcmp (fly[i].arriveCity,c)==0)//要注意int型和char型的比较方法完全不同;
            {
                printf("航班编号为:%d \n 航班起飞时间为:%s \n 航班降落时间为:%s \n 航班起飞城市为:%s \n 航班降落城市为: %s \n 航班票价为:%d \n 航班票价折扣为:%f \n 航班剩余位置为:%d \n",fly[i].number,fly[i].departureTime,fly[i].landingTime,
                       fly[i].takeoffCity,fly[i].arriveCity,fly[i].price,fly[i].discount,fly[i].seat);
                k=1;
                break;
            }
        };
        if(k==0)
        {
            printf("该航班抵达城市不存在,请重新输入!\n");
        }
        break;

    case 4:
        break;
    default:
        printf("请在1-6之间选择正确的菜单编号!\n");

    }
    system("pause");
}
void revamp()//修改航班信息;
{
    int t,a;
    int k=0;
    char s[20];
    char q[20];
    char l[20];
    char w[20];
    float p;
    int b;
    printf("请输入你想要修改航班信息的航班号:");
    scanf("%d",&b);
    for(i=0; i<n; i++)
    {
        if(fly[i].number==b)
        {

            printf("-------------修改航班信息--子菜单------------\n");
            printf("-------------1.修改航班的起飞时间------------\n");
            printf("-------------2.修改航班的降落时间------------\n");
            printf("-------------3.修改航班的起飞城市------------\n");
            printf("-------------4.修改航班的降落城市------------\n");
            printf("-------------5.修改航班的机票价格------------\n");
            printf("-------------6.修改航班的票价折扣------------\n");
            printf("-------------7.退出航班信息子菜单------------\n");

            while(a!=7)
            {
                printf("请输入你所需要的子菜单序号:");
                scanf("%d",&a);
                switch(a)
                {

                case 1:
                    printf("请输入所要替换的起飞时间:");
                    scanf("%s",s);
                    strcpy( fly[i].departureTime,s);
                    printf("修改成功");
                    break;
                case 2:
                    printf("请输入所要替换的降落时间:");
                    scanf("%s",q);
                    strcpy(fly[i].landingTime,q);
                    printf("修改成功");
                    break;
                case 3:
                    printf("请输入所要替换的起飞城市:");
                    scanf("%s",l);
                    strcpy( fly[i].takeoffCity,l);
                    printf("修改成功");
                    break;
                case 4:
                    printf("请输入所要替换的降落城市:");
                    scanf("%s",w);
                    strcpy(fly[i].departureTime,w);
                    printf("修改成功");
                    break;
                case 5:
                    printf("请输入所要替换的机票价格:");
                    scanf("%d",&t);
                    fly[i].discount=t;
                    printf("修改成功");
                    break;
                case 6:
                    printf("请输入所要替换的机票折扣:");
                    scanf("%f",&p);
                    fly[i].discount=p;
                    printf("修改成功");
                    break;
                case 7:
                    printf("即将退出航班信息子菜单");
                    break;
                default:
                    printf("请正确输入你所需要的选项!\n");

                }
                k=1;
            }
            break;
        }
    }
    if(k==0)
    {
        printf("请输入正确的航班信息!\n");
    }
    system("pause");
}

ADM的定义:

int number;//航班号

char departureTime[20];//起飞时间

char landingTime[20];//降落时间

char takeoffCity[40];//起飞城市

char arriveCity[40];//降落城市

int price;//飞机票价

float discount;//票价折扣

int seat;//座位数量

long long int sfz;//身份证号

char name[20];//姓名

int count;//购票数量

int number;//航班号

  • 20
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
好的,一个基本的民航信息管理系统可以包括以下功能: 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; } ``` 以上是一个非常简单的民航信息管理系统,实际开发中可能需要考虑更多的功能和复杂的业务流程,建议根据实际情况进行扩展和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小孙同志在学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值