C语言飞机票查询与销售系统

本人大一下哈,代码能力不是很强,希望各位大佬手下留情。有什么改进的可以在评论区讲讲。

飞机票查询与销售系统,小学期的大作业。昨天写了六七个小时,感觉还好。

 

放代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <windows.h>
int flightnum=0;
int maxflight=100;

struct Passenger
{
    char name[20];
    char ID[30];

};
struct Plane
{
    int planeID;//飞机ID
    char flightcompany[10];//航空公司
    char startplace[10];//起飞地
    char arriveplace[10];//目的地
    int seat;//座位数
    int ticket;//剩余票数
    int cost;//票价
    char starttime[10];//起飞时间
    struct Passenger person[1000];//储存乘客信息
}p[100];

int main()
{
    void menu(),Passenger_menu(),Admin(),_filefunction();
    menu();
    int n;
    a:scanf("%d",&n);
    switch(n)
    {
    case 1:
        Passenger_menu();
        break;
    case 2:
        Admin();
        break;
    default :
        printf("输入错误,请重新输入\n");
        goto a;
    }
    printf(" ");
    return 0;
}

void menu()
{
    printf("**********************\n");
    printf("**********************\n");
    printf("** 欢迎使用票务系统 **        \n");
    printf("\n");
    system("pause");
    printf("***  您的身份是?  ***\n");
    printf("***     1.乘客     ***\n");
    printf("***     2.管理     ***\n");
}

void Passenger_menu()
{   void searchplane(int x),researvation(),cancel();
    printf("***亲爱的乘客您好,欢迎使用票务系统!\n");
    f:printf("***输入1以查询航班信息\n");
    printf("***输入2以进行机票订购\n");
    printf("***输入3以进行机票退订\n");
    printf("***输入4以退出系统\n");
    int n;
    scanf("%d",&n);
    switch(n)
    {
         case 1:
            searchplane(2);
            break;
        case 2:
            researvation();
            break;
        case 3:
            cancel();
            break;
        case 4:
            printf("感谢您使用本系统,祝您旅途愉快,一路平安\n");
            break;
        default :
            printf("输入错误!!!\n请重新输入:");
            goto f;
    }


}


void Admin()
{   int main();
    void admin_menu();
    char s[10],*sadmin="admin";
    float num;
    printf("请输入管理员帐号:");
    scanf("%s",s);
    while(strcmp(s,sadmin)!=0)
    {
        printf("!!!账号错误!!!\n请重新输入管理员账号:");
        scanf("%s",s);
    }
    printf("请输入管理员密码:");
    scanf("%f",&num);
    while(num!=123456)
    {
        printf("!!!密码错误!!!\n请重新输入密码:");
        scanf("%f",&num);
    }
    admin_menu();
    system("cls");
    main();
}
void admin_menu()
{   void _flight(int choosenum),searchplane(int x),_filefunction();
    printf("***管理员您好,请问您需要什么服务?***\n");
    printf("***        1.增加航班信息        ***\n");
    printf("***        2.删除航班信息        ***\n");
    printf("***        3.查询航班信息        ***\n");
    printf("***        4.读取信息文件        ***\n");
    printf("***        5.退出管理系统        ***\n");
    printf("***\t\t\t\t ***\n");
    int n;
    b:scanf("%d",&n);
    switch(n)
    {
    case 1:
        system("cls");
        _flight(n);
        break;
    case 2:
        if(flightnum==0)
        {
            printf("无任何航班信息,现为您选择增加航班信息服务");
            system("pause");
            system("cls");
            _flight(1);
        }
        system("cls");
        _flight(n);
        break;
    case 3:
        if(flightnum==0)
        {
            printf("无任何航班信息,现为您选择增加航班信息服务");
            system("pause");
            system("cls");
            _flight(1);
        }
        printf("正在载入航班信息,请稍后");
        for(int i=0;i<3;i++)
        {
            printf(".");
            Sleep(500);
            system("pause");
            system("cls");
            searchplane(1);
        }
        break;
    case 5:
        printf("欢迎您下次使用,正在退出系统");
        {
            for(int i=0;i<6;i++)
            {
                printf(".");
                Sleep(500);
            }
        }

        system("pause");
        break;
    case 4:
        _filefunction();
        break;
    default :
        printf("输入错误!!!请重新输入\n");
        goto b;
    }
}
void _flight(int choosenum)
{
    if(choosenum==1)
    {//增加航班信息
        int n;
    c:printf("请输入要增加的航班个数:");
    scanf("%d",&n);
    if(n>100)
    {
        printf("超出最大航班数量,请重新输入!!!\n");
        goto c;
    }
    else if(n<=0)
    {
        printf("输入错误!!!\n");
        goto c;
    }
    else
    {
    flightnum+=n;
    printf("请输入:航班ID  航空公司  起飞地  目的地  座位数  票价  预期起飞时间\n");
    for(int i=0;i<n;i++)
    {
        scanf("%d  %s  %s  %s  %d  %d  %s",&p[i].planeID,p[i].flightcompany,p[i].startplace,p[i].arriveplace,&p[i].seat,&p[i].cost,p[i].starttime);
        p[i].ticket=p[i].seat;
    }
    printf("输入完毕!!\n");
    printf("系统将打印航班信息,请确认!\n");
    for(int i=0;i<n;i++)
    {
        printf("%d  %s  %s  %s  %d  %d  %s\n",p[i].planeID,p[i].flightcompany,p[i].startplace,p[i].arriveplace,p[i].seat,p[i].cost,p[i].starttime);
    }
    printf("确认完毕请输入1\n");
    int temp;
    scanf("%d",&temp);
    while(temp!=1)
    {
        printf("请输入错误的航班序号(以0为结束序号)");
        int wrrong[maxflight];
        int i=0,wrrongnum=0;
        while(scanf("%d",&wrrong[i]))
        {
            if(wrrong[i]==0)break;
            wrrong[i]-=1;
            i++;
            wrrongnum++;
        }
        for(i=0;i<wrrongnum;i++)
        {
            printf("错误航班信息为:\n");
            printf("航班ID:%d\n",p[wrrong[i]].planeID);
            printf("航空公司:%s\n",p[wrrong[i]].flightcompany);
            printf("起飞地:%s\n",p[wrrong[i]].startplace);
            printf("目的地:%s\n",p[wrrong[i]].arriveplace);
            printf("座位数:%d\n",p[wrrong[i]].seat);
            printf("票价:%d\n",p[wrrong[i]].cost);
            printf("预期起飞时间:%s\n",p[wrrong[i]].starttime);

            printf("请输入完整正确的航班信息:\n");
            printf("航班ID  航空公司  起飞地  目的地  座位数  票价  预期起飞时间\n");
            scanf("%d  %s  %s  %s  %d  %d  %s",&p[i].planeID,p[i].flightcompany,p[i].startplace,p[i].arriveplace,&p[i].seat,&p[i].cost,p[i].starttime);
        }
        printf("修改完毕!");
        system("pause");
        printf("系统将打印最终航班信息!\n");
        for(int i=0;i<n;i++)
        {
            printf("%d  %s  %s  %s  %d  %d  %s\n",p[i].planeID,p[i].flightcompany,p[i].startplace,p[i].arriveplace,p[i].seat,p[i].cost,p[i].starttime);
        }
        system("pause");
        system("cls");
        break;
    }
    printf("航班信息增加完毕,欢迎您的使用!!!\n");
    admin_menu();
    }
    }
    else
    {//删除航班信息

    int deleteID;

    d:printf("请输入您需要删除的航班ID:");
    int flag=0;
    scanf("%d",&deleteID);
    for(int i=0;i<flightnum;i++)
    {
        if(deleteID==p[i].planeID)
        {
            for(int j=i; j<flightnum-1; j++)
            {
                p[j]=p[j+1];
            }
            flag++;

        }
        if(flag)
        {
            printf("删除成功!\n");
        }
        else
        {
            printf("查无此航班!!\n");
        }
        printf("请输入1以继续删除!!输入2以结束删除\n");
        int n;
        scanf("%d",&n);
        if(n==1)
        {
            goto d;
        }
        else
        {
            printf("删除完毕!\n");
        }
        system("cls");
    }
    admin_menu();
    }

}


void searchplane(int x)
{   void aftersearch(int choosenum);
    int main();
    if(flightnum==0)
{
    printf("暂无任何航班信息\n");
    if(x==1)
    {
        printf("正为您载入航班信息增加服务");
        for(int i=0;i<3;i++)
        {
            printf(".");
            Sleep(500);
        }
        _flight(1);
    }
    else if(x==2)
    {
        printf("请等待管理人员增加航班信息后查询!\n");
        system("pause");
        system("cls");
        main();
    }
}
else
{
    printf("***请按以下要求输入***\n");
    printf("*** 1.以航班ID查询 ***\n");
    printf("***2.以航空公司查询***\n");
    printf("***3.以起飞时间查询***\n");
    printf("***4.以航班起飞地目的地查询***\n");
    printf("***5.以乘客信息查找***\n");
    int n;
    scanf("%d",&n);
    system("cls");
    if(n==1)
    {   int searchID;
        printf("请输入航班ID号:");
        scanf("%d",&searchID);
        int account=0;
        for(int i=0;i<flightnum;i++)
        {
            if(p[i].planeID==searchID)
            {   account++;
                printf("航班ID:%d  航空公司:%s  起飞地:%s  目的地:%s  剩余票数:%d  票价:%d  起飞时间:%s\n",p[i].planeID,p[i].flightcompany,p[i].startplace,p[i].arriveplace,p[i].ticket,p[i].cost,p[i].starttime);

            }
        }
        printf("已查询到:%d个航班信息\n",account);
        system("pause");
        aftersearch(x);
    }
    else if(n==4)
    {   char search_start[10],search_arrive[10];
        int account=0;
        printf("请输入起飞地:");
        scanf("%s",search_start);
        printf("请输入目的地:");
        scanf("%s",search_arrive);
        for(int i=0;i<flightnum;i++)
        {
            if(strcmp(search_start,p[i].startplace)==0)
            {
                if(strcmp(search_arrive,p[i].arriveplace)==0)
                {
                    account++;
                    printf("航班ID:%d  航空公司:%s  起飞地:%s  目的地:%s  剩余票数:%d  票价:%d  起飞时间:%s\n",p[i].planeID,p[i].flightcompany,p[i].startplace,p[i].arriveplace,p[i].ticket,p[i].cost,p[i].starttime);
                }
            }

        }
        if(account==0)
            {
                printf("未查询到任何起飞地:%s目的地:%s的航班!",search_start,search_arrive);
            }
        else
        {
            printf("已查询到以上有关航班%d个\n",account);
        }
        system("pause");
        aftersearch(x);
    }
    else if(n==2)
    {
        char searchcompany[10];
        printf("请输入您需要查询的航空公司:");
        scanf("%s",searchcompany);
        int account =0;
        for(int i=0;i<flightnum;i++)
        {
            if(strcmp(searchcompany,p[i].flightcompany)==0)
            {
                account++;
                printf("航班ID:%d  航空公司:%s  起飞地:%s  目的地:%s  剩余票数:%d  票价:%d  起飞时间:%s\n",p[i].planeID,p[i].flightcompany,p[i].startplace,p[i].arriveplace,p[i].ticket,p[i].cost,p[i].starttime);
            }
        }
        printf("以为您查询到航空公司%s相关航班%d个\n",searchcompany,account);
        system("pause");
        aftersearch(x);
    }
    else if(n==3)
    {
        int account=0;
        char searchtime[10];
        e:printf("请输入您要查询的起飞时间:");
        scanf("%s",searchtime);
        for(int i=0;i<flightnum;i++)
        {
            if(strcmp(searchtime,p[i].starttime)==0)
            {
                account++;
                printf("航班ID:%d  航空公司:%s  起飞地:%s  目的地:%s  剩余票数:%d  票价:%d  起飞时间:%s\n",p[i].planeID,p[i].flightcompany,p[i].startplace,p[i].arriveplace,p[i].ticket,p[i].cost,p[i].starttime);
            }
        }
        printf("已为您查询到%d个%s起飞的航班\n",account,searchtime);
        system("pause");
        aftersearch(x);
    }
    else if(n==5)
    { int flag=0;
        printf("请输入乘客姓名:");
        char tname[10];
        i:scanf("%s",tname);
        for(int i=0;i<flightnum;i++)
        {
            if(p[i].ticket<p[i].seat)
            {
                for(int j=0;j<p[i].seat-p[i].ticket;j++)
                {
                    if(strcmp(tname,p[i].person[j].name)==0)
                    {
                        flag=1;
                        printf("已查询到航班信息:\n");
                        printf("航班ID:%d  航空公司:%s  起飞地:%s  目的地:%s    票价:%d  起飞时间:%s\n",p[i].planeID,p[i].flightcompany,p[i].startplace,p[i].arriveplace,p[i].cost,p[i].starttime);
                        printf("乘客姓名:%s\n乘客身份ID:%s\n",p[i].person[j].name,p[i].person[j].ID);
                    }
                }
            }
        }
        if(!flag)
        {
            printf("查无此人机票信息!!!请重新输入:");
            goto i;
        }
    }
    else
    {
        printf("输入错误!!");
        printf("若想退出查询,请输入0,若想继续查询,请输入1");
        int num;
        scanf("%d",&num);
        if(num==1)goto e;
        else aftersearch(x);
    }
}

}

void aftersearch(int choosenum)
{   void researvation(),cancel();
    if(choosenum==1)
    {
        admin_menu();
    }
    else
    {
        if(choosenum==2)
        {
            printf("尊贵的乘客您好,若需要订票请输入1,退票请输入2,退出请输入3\n");
        int n;
        scanf("%d",&n);
        if(n==1)researvation();
        else if(n==2)cancel();
        else if(n==3)
        {
            printf("欢迎您的使用,祝您一路平安!\n");
        }
        }
        else if(choosenum==1)
        {
            Passenger_menu();
        }


    }
}

void researvation()
{   int rplaneID;
    int main();
    char rstartplace[10],rarriveplace[10],rstarttime[10];
    if(flightnum==0)
    {
        printf("暂无航班信息!请等待管理员增加信息后使用!\n");
        system("pause");
        system("cls");
        main();
    }
    else
    {
    g:printf("请输入您需要预定的航班ID:");
    scanf("%d",&rplaneID);
    printf("请输入您需要预定的航班起飞地与目的地:");
    scanf("%s %s",rstartplace,rarriveplace);
    printf("请输入您需要预定的航班时间:");
    scanf("%s",rstarttime);
    int flag=0;
    for(int i=0;i<flightnum;i++)
    {
        if(strcmp(rstartplace,p[i].startplace)==0)
        {
            if(strcmp(rarriveplace,p[i].arriveplace)==0)
            {
                if(strcmp(rstarttime,p[i].starttime)==0)
                {   flag=1;
                    printf("该航班剩余票数:");
                    printf("%d \n",p[i].ticket);
                    if(p[i].ticket>0)
                    {
                        printf("确认订购请输入1\n");
                    int n;
                    scanf("%d",&n);
                    if(n==1)
                    {
                        h:printf("请输入您的姓名:");
                        scanf("%s",p[i].person[p[i].seat-p[i].ticket].name);
                        printf("请输入您的身份ID:");
                        scanf("%s",p[i].person[p[i].seat-p[i].ticket].ID);
                        p[i].ticket--;
                        printf("贵宾%s您好,您所订的航班信息为\n",p[i].person[p[i].seat-p[i].ticket].name);
                        printf("航班ID:%d  航空公司:%s  起飞地:%s  目的地:%s    票价:%d  起飞时间:%s\n",p[i].planeID,p[i].flightcompany,p[i].startplace,p[i].arriveplace,p[i].cost,p[i].starttime);
                        printf("机票订购成功!");
                        system("pause");
                        system("cls");
                        Passenger_menu();
                    }
                    else
                    {
                        printf("???\n");
                        printf("需要重新查询请输入1,确认订购请输入2\n");
                        int temp;
                        scanf("%d",&temp);
                        if(temp==2)goto g;
                        else goto h;
                    }
                    }
                    else
                    {
                        printf("该航班无剩余机票!!!\n现为您转接机票查询系统");
                        for(int i=0;i<3;i++)
                        {
                            printf(".");
                            Sleep(500);
                        }
                        searchplane(2);
                    }

                }
            }
        }
    }
    if(!flag)
    {
        printf("未查询到您的航班信息!!!请检查您的信息是否有误?\n");
        printf("现为您转接机票查询系统");
        for(int i=0;i<3;i++)
                        {
                            printf(".");
                            Sleep(500);
                        }
                        searchplane(2);
    }
    }
}
void cancel()
{
    int cplaneID;
    char cstartplace[10],carriveplace[10],cstarttime[10],cname[10];
    int main();
    if(flightnum==0)
    {
        printf("暂无航班信息!请等待管理员增加信息后使用!\n");
        system("pause");
        system("cls");
        main();
    }
    else
    {
       printf("请输入您需要退订的航班ID:");
    scanf("%d",&cplaneID);
    printf("请输入您需要退订的航班起飞地与目的地:");
    scanf("%s %s",cstartplace,carriveplace);
    printf("请输入您需要退订的航班时间:");
    scanf("%s",cstarttime);
    printf("请输入您的姓名:");
    scanf("%s",cname);
    int flag=0;
    for(int i=0;i<flightnum;i++)
    {
        if(strcmp(cstartplace,p[i].startplace)==0)
        {
            if(strcmp(carriveplace,p[i].arriveplace)==0)
            {
                if(strcmp(cstarttime,p[i].starttime)==0)
                {
                    for(int j=0;j<p[i].seat-p[i].ticket;j++)
                    {
                        if(strcmp(cname,p[i].person[j].name)==0)
                        {   flag=1;
                            printf("确认退票请输入1\n");
                            int temp;
                            scanf("%d",&temp);
                            if(temp)
                            {
                                printf("退票成功!\n");
                                p[i].person[j]=p[i].person[j+1];
                                p[i].ticket++;
                                Passenger_menu();
                            }
                            else
                            {
                                printf("贵宾%s退票失败,现为您转接乘客票务系统",cname);
                                for(int t=0;t<3;t++)
                                {
                                    printf(".");
                                    Sleep(500);
                                    Passenger_menu();
                                }

                            }
                        }
                    }


                }
            }
        }
    }
    if(!flag)
    {
        printf("未查询到您的航班信息!!!请检查您的信息是否有误?\n");
        system("pause");
        printf("现为您转接机票查询系统");
        for(int i=0;i<3;i++)
                        {
                            printf(".");
                            Sleep(500);
                        }
                        searchplane(2);
    }
    }

}
void _filefunction()
{
    FILE *fp;
    fp=fopen("information.txt","r+");
    printf("需要写入航班信息请输入1,需要读入航班信息请输入2\n");
    int n;
    scanf("%d",&n);
    if(n==1)
    {
        for(int i=0;i<flightnum;i++)
        {
            fprintf(fp,"航班ID:%d  航空公司:%s  起飞地:%s  目的地:%s  剩余票数:%d  票价:%d  起飞时间:%s\n",p[i].planeID,p[i].flightcompany,p[i].startplace,p[i].arriveplace,p[i].ticket,p[i].cost,p[i].starttime);
        }
        printf("写入完毕!\n");
    }
    if(n==2)
    {
        for(int i=0;i<100;i++)
        {
            fscanf(fp,"航班ID:%d  航空公司:%s  起飞地:%s  目的地:%s  剩余票数:%d  票价:%d  起飞时间:%s",&p[i].planeID,p[i].flightcompany,p[i].startplace,p[i].arriveplace,&p[i].ticket,&p[i].cost,p[i].starttime);
        }
        printf("读入完毕!\n");
    }
    fclose(fp);
    admin_menu();

}
 

有些bug,改不动了,累死.....

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值