航班管理系统(国内航班)

【功能需求】

程序启动后显示主菜单,包括下面的选项:

1. 显示航班列表

2. 增加航班

3. 删除航班

4. 航班订票

5. 航班退票

6. 航班乘客显示

7. 航班存盘

8. 从文件调入航班信息

9. 退出

  按下相应的数字键后进入各自的子功能,每个子功能执行完毕后,返回并

  显示主菜单

【功能说明】

1. 显示航班列表:在屏幕显示已登记的航班总数,及各航班的信息,包括航班号,出发地和目的地,起飞时间,落地时间,所用机型,座位数,价格。(假设航班为每日一次)

2. 增加航班:输入航班信息,包括航班号,出发地和目的地,起飞时间,落地时间,所用机型,座位数,价格。

3. 删除航班:输入要删除的航班号,删除该航班信息。

4. 航班订票:输入航班名,日期,乘客姓名,身份证号。

5. 航班退票:输入航班名,日期,身份证号,删除乘客信息。

6. 航班乘客显示:输入航班号和日期,显示该航班的座位号及乘客姓名,以及空余座位数。

7. 航班存盘:输入文件名,将航班信息存入文件。

8. 从文件调入:输入文件名,读取文件将数据调入,重新生成航班信息

9. 退出:退出程序,返回操作系统

课程设计成绩评定的依据有设计文档资料、具体实现设计方案的程序,采用百分制,不设平时分。

优(90分以上):必须要有一定的创意,有自己独特的算法。按要求完成课题的

全部功能,有完整的符合标准的文档,文档有条理、文笔通顺,

格式正确,其中有总体设计思想的论述,有正确的流程图,程序

完全实现设计方案,设计方案先进,软件可靠性好;

最终实现代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <iostream>
using namespace std;#define PERSON_MAXNUM 100     //记录乘客信息的空间
#define PERSONNOTICKET_MAX 20  //记录乘客候补名单数量
//航班数量 ,可更改航班数量
#define MAXsizeNumber 50
int sizeNumber = 0;   //记录添加的航班数量
int passengerSizeNumber = 0;  //记录订票乘客数量
int _personnoticketsizeNumber = 0;  //记录候补人数 //定义航班信息结构体
typedef struct Flight
{/*已登记的航班总数及各航班的信息,包括航班号,出发地和目的地,起飞时间,落地时间,所用机型,座位数,价格*/ char ID[10];           //航班编号 char takeOffPlace[10]; //出发地 char Destination[10];  //目的地 char dateTime[20];     //起飞时间 char dateTime1[20];    //落地时间 char flightStyle[10];  //航班机型 float Price;           //价格 int buyTicketNum;       //卖出机票数量 int MaxTicketNum;       //最大机票数量
}Flight;//定义乘客信息结构体
typedef struct Person
{int AirFlight_Num;   //飞机编号 char person_name[20];//乘客姓名 char person_id[18];  //乘客身份证char date[10]; }Person;void home(Flight* p,Person* person, Person* person_noticket);//1、初始页面void initFlight(Flight** p);//2、初始化航班信息内存void InputFlightDate(Flight* p);//3、添加航班信息void FlightDateShow(Flight* p);//4、查看航班信息void DelFlightDate(Flight* p);//5、删除航班信息void FlightDateShowOrder(Flight* p,Person* person);//6、查看航班订单void PrintPassengers(Flight* p, Person* person, int i);//7、打印航班乘客void InitPassenger(Person** person);//8、初始化乘客信息内存void BookFlightTicket(Flight* p, Person* person,Person* person_noticket);//预定航班int CheckPerson(Flight* p, Person* person);//查看乘客订单信息void ChangeAirFlight(Flight* p, Person* person);//修改订票信息 void CancelTicket(Flight* p, Person* person);//退票void PrintPassengers(Flight* p, Person* person, int i);//输出乘客信息 void CheckPersonNoTicket(Flight* p, Person* person_noticket);//查看候补名单//7、航班信息存盘
void FlightSaveFile(Flight* p);
//8、从文件中调入航班信息
void FlightFindFile(void);void home(Flight* p, Person* person, Person* person_noticket)
{int a, i, j;printf("\n*****************************欢迎来到五邑航班管理系统*****************************\n");printf("\n*******************请登录身份!管理员请按1;乘客请按2;退出系统请按0*****************\n");printf("请选择:");scanf("%d", &a);//航班管理人员操作if (a == 1)do{printf("\n****************** 1.添加航班信息 *******************\n");printf("\n****************** 2.删除航班信息 *******************\n");printf("\n****************** 3.显示航班列表 *******************\n");printf("\n****************** 4.查询已订票信息 *************\n");printf("\n****************** 5.查看候补名单 *******************\n");printf("\n****************** 6.航班信息存盘 *******************\n");printf("\n****************** 7.从文件中调入航班信息 ***********\n");printf("\n****************** 0.退出管理员登录********************\n");printf("请选择:");scanf("%d", &i);switch (i){case 0: break;case 1:InputFlightDate(p);break;case 2:DelFlightDate(p);break;case 3:FlightDateShow(p);break;case 4:FlightDateShowOrder(p, person); break;case 5:CheckPersonNoTicket(p, person_noticket); break;case 6:FlightSaveFile(p); break;case 7:FlightFindFile(); break;default:printf("输入错误!\n");break;}} while (i != 0);//乘客操作if (a == 2)do{printf("\n*********************** 1.乘客订票 ***********************\n");printf("\n*********************** 2.更改订票信息 *******************\n");printf("\n*********************** 3.乘客退票 ***********************\n");printf("\n*********************** 4.查询航班信息 *******************\n");printf("\n*********************** 5.查询个人订票信息 ***************\n");printf("\n*********************** 0.退出乘客登录 *******************\n");printf("请选择:");scanf("%d", &j);switch (j){case 0:break;case 1:BookFlightTicket(p, person,person_noticket);break;case 2:ChangeAirFlight(p, person);break;case 3:CancelTicket(p, person);break;case 4:FlightDateShow(p);break;case 5:CheckPerson(p, person);break;}} while (j != 0);if( a==0 ){printf("感谢你的体验!欢迎下次光临哦!!");exit(0);   //结束进程,退出系统。 }
}//初始化航班信息
void initFlight(Flight** p)
{assert(p);//清除缓冲区,准备声请空 //申请空间*p = (Flight*)malloc(sizeof(Flight)*MAXsizeNumber);if (NULL == *p){printf("开辟空间失败!\n");return;}(*p)->buyTicketNum = 0;
}
//输入航班信息
void InputFlightDate(Flight* p)
{if (sizeNumber <= MAXsizeNumber){printf("航班编号:%d\n", sizeNumber);printf("请输入航班ID:");scanf("%s", (p+sizeNumber)->ID);printf("请输入航班出发地:");scanf("%s", (p + sizeNumber)->takeOffPlace);printf("请输入航班目的地:");scanf("%s", (p + sizeNumber)->Destination);printf("请输入航班起飞时间:");scanf("%s", (p + sizeNumber)->dateTime);printf("请输入航班到达时间:");scanf("%s", (p + sizeNumber)->dateTime1);printf("请输入航班机型:");scanf("%s", (p + sizeNumber)->flightStyle);printf("请输入航班订票价格:");scanf("%f", &(p + sizeNumber)->Price);printf("输入航班可乘坐最大人数:");scanf("%d", &(p + sizeNumber)->MaxTicketNum);do{printf("目前卖出机票数量:");scanf("%d", &(p + sizeNumber)->buyTicketNum);if ((p + sizeNumber)->buyTicketNum > (p + sizeNumber)->MaxTicketNum){printf("输入已卖出机票数量错误!\n");printf("请重新输入!\n\n");}} while ((p + sizeNumber)->buyTicketNum > (p + sizeNumber)->MaxTicketNum);sizeNumber++;printf("添加航班信息成功!\n\n");}else{printf("内存已满!\n");return;}
}void FlightDateShow(Flight* p)
{int i = 0;printf("目前在售的航班信息:\n\n");printf("\n******************五邑国际机场航班信息*********************\n");printf("航班编号\t航班ID\t出发地\t目的地\t起飞时间\t落地时间\t飞机机型\t剩余座位数\t价格\n");printf("-------------------------------------------------------------------------------------------------------\n");for (i = 0; i < sizeNumber; i++){printf("%d\t%s\t%s\t%s\t%s\t%s\t%s\t%d\t%.2f\n",i,(p+i)->ID,(p + i)->takeOffPlace,(p + i)->Destination,(p + i)->dateTime,(p + i)->dateTime1,(p + i)->flightStyle,((p + i)->MaxTicketNum - (p + i)->buyTicketNum),(p + i)->Price); }printf("已登记航班总数:");printf("%d\n",sizeNumber);printf("------------------------------------------------------------------------------------------------------\n");
}
//删除航班信息
void DelFlightDate(Flight* p)
{int j = 0;int i = -1;assert(p);printf("请输入要删除的航班编号:");scanf("%d", &i);for (j = i; j < sizeNumber; j++){strcpy((p + j)->ID, (p + j + 1)->ID);strcpy((p + j)->takeOffPlace, (p + j + 1)->takeOffPlace);strcpy((p + j)->Destination, (p + j)->Destination);strcpy((p + j)->dateTime, (p + j + 1)->dateTime);(p + j)->Price = (p + j + 1)->Price;(p + j)->MaxTicketNum = (p + j + 1)->MaxTicketNum;(p + j)->buyTicketNum = (p + j + 1)->buyTicketNum;}sizeNumber--;
}
//初始化乘客信息
void InitPassenger(Person** person)
{assert(person);*person = (Person*)malloc(sizeof(Person)*PERSON_MAXNUM);if (NULL == *person){printf("开辟空间失败!\n");return;}
}//订票
void BookFlightTicket(Flight* p, Person* person, Person* person_noticket)
{int i = -1;FlightDateShow(p);printf("请选择你要预定的航班编号:");scanf("%d", &i);if ((p + i)->MaxTicketNum == (p + i)->buyTicketNum){printf("对不起,该航班机票已售完!\n");printf("请输入您的姓名(我们将把您添加进候补名单):");scanf("%s", (person_noticket+_personnoticketsizeNumber)->person_name);(person_noticket + _personnoticketsizeNumber)->AirFlight_Num = i;_personnoticketsizeNumber++;printf("添加候补名单成功!\n\n");return;}else{if (passengerSizeNumber > PERSON_MAXNUM){printf("存储容量不足!\n");return;}printf("请输入姓名:");scanf("%s", (person + passengerSizeNumber)->person_name);printf("请输入日期:"); scanf("%s",(person + passengerSizeNumber)->date);printf("请输入你的身份证号:");scanf("%s",(person + passengerSizeNumber)->person_id);(person + passengerSizeNumber)->AirFlight_Num = i;passengerSizeNumber++;(p + i)->buyTicketNum++;printf("订票成功!\n");}
}
//查看个人订票信息
int CheckPerson(Flight* p, Person* person)
{int flag = 0;int i = 0;char _name[20] = { 0 };printf("请输入您的姓名:");scanf("%s", &_name);printf("您的个人订票信息:\n\n");printf("\n订单编号 姓名 航班编号 航班ID 始发地 目的地 起飞时间 机票价格\n") ;printf("-----------------------------------------------------------------------------\n");for (i = 0; i < passengerSizeNumber; i++){if (0 == strcmp(_name, (person + i)->person_name)){flag = 1;printf("%d\t%s\t%d\t%s\t%s\t%s\t%s\t%0.2f\n",i, (person + i)->person_name, (person + i)->AirFlight_Num,(p + (person + i)->AirFlight_Num)->ID, (p + (person + i)->AirFlight_Num)->takeOffPlace,(p + (person + i)->AirFlight_Num)->Destination,(p + (person + i)->AirFlight_Num)->dateTime,(p + (person + i)->AirFlight_Num)->Price);}}if (0 == flag){printf("未找到该乘客订票信息!\n");return 0;}return 1;
}
//改签
void ChangeAirFlight(Flight* p, Person* person)
{int i = -1;int j = -1;if (0 == CheckPerson(p, person)){return;}printf("请输入要改签的订单编号:");printf("\n");scanf("%d", &i);(p + i)->buyTicketNum--;FlightDateShow(p);do{printf("请输入要改签的航班编号:");scanf("%d", &j);if ((p + j)->buyTicketNum >= (p + j)->MaxTicketNum){printf("该次航班已满员,请重新选择!\n");}} while ((p + j)->buyTicketNum >= (p + j)->MaxTicketNum);(person + i)->AirFlight_Num = j;(p + j)->buyTicketNum++;printf("改签成功!\n\n");
}//删除订单,输入航班名,日期,身份证号,删除乘客信息
void CancelTicket(Flight* p, Person* person)
{int i = -1;int j = 0;int n=0;char L_date[10];char L_person_id[18];int flag1;int flag2;CheckPerson(p, person);printf("\n请输入要删除的订单编号:");scanf("%d", &i);printf("请输入订票日期:");scanf("%s", &L_date);printf("请输入你的身份证:");scanf("%s", &L_person_id);//做判断for(int k=0; k<passengerSizeNumber;k++){flag1 = strcmp(L_date, (person+k)->date);flag2 = strcmp(L_person_id,(person+k)->person_id);if((!flag1) && (!flag2)){for (j = i; j < passengerSizeNumber; j++){(person + j)->AirFlight_Num = (person + j + 1)->AirFlight_Num;strcpy((person + j)->person_name, (person + j + 1)->person_name);}n++;break;}}if(n){printf("退票成功!\n");    }else{printf("你输入的信息有误,请退出选择重新输入哦!");}
}//查看目前订票信息
void FlightDateShowOrder(Flight* p, Person* person)
{int i = -1;for (i = 0; i < sizeNumber; i++){printf("航班编号:%d\n", i);printf("ID:%s\n", (p + i)->ID);printf("始发地:%s\n", (p + i)->takeOffPlace);printf("目的地:%s\n", (p + i)->Destination);printf("起飞时间:%s\n", (p + i)->dateTime);printf("机票价格:%2f\n", (p + i)->Price);printf("剩余机票:%d\n", ((p + i)->MaxTicketNum - (p + i)->buyTicketNum));printf("买票人信息:"); PrintPassengers(p,person, i);}
}
void PrintPassengers(Flight* p, Person* person,int i)
{int ticket_num = 0;int j = 0;for (j = 0; j < passengerSizeNumber; j++){if ((person + j)->AirFlight_Num == i){printf("%s ,", (person + j)->person_name);ticket_num++;}}printf("\n\n");
}//候补名单初始化
void InitPassengerNoTicket(Person** person_noticket)
{assert(person_noticket);*person_noticket = (Person*)malloc(sizeof(Person)*PERSONNOTICKET_MAX);if (NULL == *person_noticket){printf("开辟空间失败!\n");return;}
}//查看候补名单
void CheckPersonNoTicket(Flight* p, Person* person_noticket)
{int i = 0;printf("候补名单:\n\n");if (0 == _personnoticketsizeNumber){printf("候补名单为空!\n\n");return;}for (i = 0; i < _personnoticketsizeNumber; i++){printf("姓名:%s\n", (person_noticket + i)->person_name);printf("所需要航班编号:%d\n", (person_noticket + i)->AirFlight_Num);printf("航班ID:%s\n", (p + ((person_noticket + i)->AirFlight_Num))->ID);printf("始发地:%s\n", ((p + ((person_noticket + i)->AirFlight_Num))->takeOffPlace));printf("目的地:%s\n", (p + ((person_noticket + i)->AirFlight_Num))->Destination);}
}
//7、航班信息存盘
void FlightSaveFile(Flight* p)
{int n=0;FILE *fp = NULL;char fileName[100];printf("请输入文件名:");//scanf("%s",&fileName);//scanf(fileName);为什么用这个输入就不行? cin>>fileName;fp = fopen(fileName , "wb" ); fprintf(fp,"五邑机场航班信息\n航班号,出发地,目的地,起飞时间,落地时间,飞机机型,剩余座位数,价格\n");for(int i=0;i<sizeNumber;i++){      fprintf(fp,"%s,%s,%s,%s,%s,%s,%d,%.2f;\n",(p+i)->ID,(p + i)->takeOffPlace,(p + i)->Destination,(p + i)->dateTime,(p + i)->dateTime1,(p + i)->flightStyle,((p + i)->MaxTicketNum - (p + i)->buyTicketNum),(p + i)->Price);n++;}if(n>0){printf("航班信息存盘成功!"); }else{printf("航班信息存盘失败!");}fclose(fp);}//8、从文件调入航班信息
void FlightFindFile(void)
{FILE *fp = NULL;char ch;char fileName[100];printf("请输入文件名:");//scanf("%s",&fileName);cin>>fileName;fp = fopen(fileName , "r" ); while((ch=fgetc(fp))!=EOF)cout<<ch;while(!(feof(fp))){cout<<fgetc(fp);}} //主函数
int main()
{Flight* p=NULL;Person* person=NULL;Person* person_noticket = NULL;InitPassengerNoTicket(&person_noticket);initFlight(&p);InitPassenger(&person);while (1){home(p, person, person_noticket);}system("pause");return 0;
}

代码执行局部情况:

菜单页面展示

局部具体功能执行:
添加航班信息

 航班信息列表:

更多功能等你发现哦!听说点赞关注的都会幸运满满哦!

航班管理系统(最全最细)相关推荐

  1. 基于单向循环链表及内核链表的航班管理系统

    该项目使用单向循环链表存放客户端登录信息,用内核链表存放航班信息.通过在单链表中定义指针数组成员来关联两个链表的信息: 功能:有登录及注册界面,如果没有账号则需要注册.登录模块分为普通用户登录以及管理 ...

  2. json动态生成复杂表头excel_Excel办公用品管理系统,全函数统算,图表动态展示高效轻松...

    Hello大家好,我是帮帮.今天跟大家分享一张Excel办公用品管理系统,全函数统算,图表动态展示,高效轻松. 有个好消息!为了方便大家更快的掌握技巧,寻找捷径.请大家点击文章末尾的"了解更 ...

  3. 【肝帝一周总结:全网最全最细】☀️Mysql 索引数据结构详解与索引优化☀️《❤️记得收藏❤️》

    [肝帝一周总结:全网最全最细]☀️Mysql 索引数据结构详解与索引优化☀️<❤️记得收藏❤️> 目录

  4. c语言航班管理系统报告,c航班管理系统课程设计报告.doc

    c航班管理系统课程设计报告 北华航天工业学院课程设计报告 PAGE 课程设计报告 报告(论文)题目: 1航班信息查询系统 2迷宫问题 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技 ...

  5. 航班管理系统-机票预订

    摘要 该系统为航班管理系统,本系统是基于Python语言,通过对航班管理工作的日常分析,确定了具体的研究目标以及业务功能.采用了结构化的设计方法设计了一个简单的框架,通过编程实现了对航班信息的添加.修 ...

  6. 基于Linux的航班管理系统

    该系统用了三个文件来写,main.c文件Flight_system.h头文件Flight_system.c文件. mian.c文件主要调用Fligth_system.c文件的各个函数功能: Fligh ...

  7. 航班管理系统(C语言)

    航班管理系统 要求: 账号注册与登录 普通用户:查看航班信息,查看已购买的航班信息,退票 管理员:增.删.改.查 航班信息 航班信息: 起始点,目的地,航班时间,剩余票数,价格 已完成: 只能注册一个 ...

  8. 船舶设计图纸管理系统_全方面设计图纸管理方案

    ​船舶设计图纸管理系统: 全方面设计图纸管理方案: 彩虹图纸管理系统_图纸管理信息化管理.无纸化管理.集中管理.协同设计.数据共享.图纸借用重用等. 彩虹图纸管理系统功能: 设计图纸管理: 设计图纸使 ...

  9. java springcloud微服务航班管理系统源码+课程报告

    下载地址:https://download.csdn.net/download/qq_31293575/10728702 项目介绍 java springcloud微服务航班管理系统源码+课程报告 主 ...

最新文章

  1. c语言和python哪个自学好-有c语言基础 自学python 应该选什么书来看?
  2. 内核驱动漏洞与攻击预防--by MJ0011
  3. ftp linux 开启验证_在linux中开启ftp服务
  4. AT4505-[AGC029F]Construction of a tree【构造题,hall定理,网络流】
  5. Struts2从一个action转到另一个action的两种方法
  6. oracle以10个记录为一页查询,SQL查询前10条记录(SqlServermysqloracle)语法分析
  7. lc300.最长递增子序列
  8. python 写xml_使用python 写xml文件
  9. 从数据库索引到数据库优化
  10. ★【博弈论】【贝蒂定理】取棋子游戏
  11. Python xlrd、xlwt 用法说明
  12. 顺序结构程序设计(顺序结构与选择结构)
  13. Profinet协议解析-过程数据
  14. mac上Python版本不同时给指定的版本安装库
  15. 计算机表格大小怎么调整,EXCEL如何根据内容自动调整表格尺寸?
  16. UG二次开发GRIP创建注释
  17. next. js_Next.js添加到您的应用程序中的图标
  18. 怎样通过任务管理器优化电脑速度
  19. 做公关必用的四大法宝
  20. 浅析 - 被歧视的小众需求

热门文章

  1. DataFrame中小数的保留小数点后两位
  2. 蛋白和肽测序仪销量、收入、价格、毛利率及市场份额
  3. vue 移入显示_vue鼠标移入显示点赞图标,移出隐藏点赞图标,现在我想点击点赞图标,鼠标移出不会隐藏图标,怎么做?...
  4. 微信公众号开发:用从微信服务器下载图片资源
  5. 使用cropper插件实现图片的裁剪和预览
  6. Centos8 磁力链BT地址
  7. 终结HashMap面试?我是谁?我在哪
  8. MySQL DBA 必读:万字归总表设计与 SQL 编写技巧
  9. 贵有恒,何必三更起五更眠;最无益,只怕一日曝十日寒
  10. 甲骨文一键修改root密码