/*C语言实现简单的航班管理系统(单个文件)*/
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#include<assert.h>#define PERSON_MAXNUM 100
#define PERSONNOTICKET_MAX 10
#define MAX_SIZE 10
int _size = 0;
int _person_size = 0;
int _personnoticket_size = 0;//定义航班信息结构体
typedef struct plane
{char ID[10];char Start_Place[10];char End_Place[10];float price;int Buy_num;int Max_num;char time[20];
}Plane;//定义乘客信息结构体
typedef struct Person
{int AirPlane_Num;char person_name[20];}Person;void home(Plane* p,Person* person, Person* person_noticket);//初始页面
void InitAirPlane(Plane** p);//初始化航班信息内存
void InputAirPlane(Plane* p);//输入航班信息
void CheckAirPlane(Plane* p);//查看航班信息
void DelAirPlane(Plane* p);//删除航班信息
void CheckAirPlaneOrder(Plane* p,Person* person);//查看航班订单
void PrintPerson(Plane* p, Person* person, int i);//打印航班乘客void InitPerson(Person** person);//初始化乘客信息内存
void BookAirPlane(Plane* p, Person* person,Person* person_noticket);//预定航班
int CheckPerson(Plane* p, Person* person);//查看乘客订单信息
void ChangeAirPlane(Plane* p, Person* person);//改签
void ReturnTicket(Plane* p, Person* person);//退票void PrintPerson(Plane* p, Person* person, int i);
void CheckPersonNoTicket(Plane* p, Person* person_noticket);//查看候补名单
///void home(Plane* p, Person* person, Person* person_noticket)
{int a, i, j;printf("\n*****************************欢迎进入飞机票务系统*****************************\n");printf("\n*************您好,现在要确认您的身份!票务人员请按 1 ,旅客请按 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****************** 0.退出        ********************\n");printf("请选择:");scanf("%d", &i);switch (i){case 0: break;case 1:InputAirPlane(p);break;case 2:DelAirPlane(p);break;case 3:CheckAirPlane(p);break;case 4:CheckAirPlaneOrder(p, person); break;case 5:CheckPersonNoTicket(p, person_noticket); break;default:printf("输入错误!\n");break;}} while (i != 0);//乘客操作if (a == 0)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:BookAirPlane(p, person,person_noticket);break;case 2:ChangeAirPlane(p, person);break;case 3:ReturnTicket(p, person);break;case 4:CheckAirPlane(p);break;case 5:CheckPerson(p, person); break;}} while (j != 0);
}//初始化
void InitAirPlane(Plane** p)
{assert(p);//申请空间*p = (Plane*)malloc(sizeof(Plane)*MAX_SIZE);if (NULL == *p){printf("开辟空间失败!\n");return;}(*p)->Buy_num = 0;
}
//输入航班信息
void InputAirPlane(Plane* p)
{if (_size <= MAX_SIZE){printf("航班编号:%d\n", _size);printf("输入航班ID:");scanf("%s", (p+_size)->ID);printf("输入始发地:");scanf("%s", (p + _size)->Start_Place);printf("输入目的地:");scanf("%s", (p + _size)->End_Place);printf("输入航班起飞时间:");scanf("%s", (p + _size)->time);printf("输入价格:");scanf("%f", &(p + _size)->price);printf("输入航班可乘坐最大人数:");scanf("%d", &(p + _size)->Max_num);do{printf("目前卖出机票数量:");scanf("%d", &(p + _size)->Buy_num);if ((p + _size)->Buy_num > (p + _size)->Max_num){printf("输入已卖出机票数量错误!\n");printf("请重新输入!\n\n");}} while ((p + _size)->Buy_num > (p + _size)->Max_num);_size++;printf("添加航班信息完成!\n\n");}else{printf("内存已满!\n");return;}
}//浏览航班信息
void CheckAirPlane(Plane* p)
{int i = 0;printf("目前在售的航班信息:\n\n");for (i = 0; i < _size; i++){printf("航班编号:%d\n", i);printf("ID:%s\n", (p+i)->ID);printf("始发地:%s\n", (p + i)->Start_Place);printf("目的地:%s\n", (p + i)->End_Place);printf("起飞时间:%s\n", (p + i)->time);printf("机票价格:%2f\n", (p + i)->price);printf("剩余机票:%d\n", ((p + i)->Max_num - (p + i)->Buy_num) );printf("\n");}
}//删除航班信息
void DelAirPlane(Plane* p)
{int j = 0;int i = -1;assert(p);printf("请输入要删除的航班编号:");scanf("%d", &i);for (j = i; j < _size; j++){strcpy((p + j)->ID, (p + j + 1)->ID);strcpy((p + j)->Start_Place, (p + j + 1)->Start_Place);strcpy((p + j)->End_Place, (p + j)->End_Place);strcpy((p + j)->time, (p + j + 1)->time);(p + j)->price = (p + j + 1)->price;(p + j)->Max_num = (p + j + 1)->Max_num;(p + j)->Buy_num = (p + j + 1)->Buy_num;}_size--;
}//初始化订票信息
void InitPerson(Person** person)
{assert(person);*person = (Person*)malloc(sizeof(Person)*PERSON_MAXNUM);if (NULL == *person){printf("开辟空间失败!\n");return;}
}//订票
void BookAirPlane(Plane* p, Person* person, Person* person_noticket)
{int i = -1;CheckAirPlane(p);printf("请选择你要预定的航班编号:");scanf("%d", &i);if ((p + i)->Max_num == (p + i)->Buy_num){printf("对不起,该航班机票已售完!\n");printf("请输入您的姓名(我们将把您添加进候补名单):");scanf("%s", (person_noticket+_personnoticket_size)->person_name);(person_noticket + _personnoticket_size)->AirPlane_Num = i;_personnoticket_size++;printf("添加候补名单成功!\n\n");return;}else{if (_person_size > PERSON_MAXNUM){printf("存储容量不足!\n");return;}printf("请输入姓名:");scanf("%s", (person + _person_size)->person_name);(person + _person_size)->AirPlane_Num = i;_person_size++;(p + i)->Buy_num++;printf("预定成功!\n");}}//查看个人订票信息
int CheckPerson(Plane* p, Person* person)
{int flag = 0;int i = 0;char _name[20] = { 0 };printf("请输入您的姓名:");scanf("%s", &_name);printf("您的个人订票信息:\n\n");for (i = 0; i < _person_size; i++){if (0 == strcmp(_name, (person + i)->person_name)){flag = 1;printf("订单编号:%d\n", i);printf("姓名:%s\n", (person + i)->person_name);printf("航班编号:%d\n", (person + i)->AirPlane_Num);printf("航班ID:%s\n", (p + (person + i)->AirPlane_Num)->ID);printf("始发地:%s\n", (p + (person + i)->AirPlane_Num)->Start_Place);printf("目的地:%s\n", (p + (person + i)->AirPlane_Num)->End_Place);printf("起飞时间:%s\n", (p + (person + i)->AirPlane_Num)->time);printf("机票价格:%f\n", (p + (person + i)->AirPlane_Num)->price);printf("\n");}}if (0 == flag){printf("未找到该乘客订票信息!\n");return 0;}return 1;
}//改签
void ChangeAirPlane(Plane* p, Person* person)
{int i = -1;int j = -1;if (0 == CheckPerson(p, person)){return;}printf("请输入要改签的订单编号:");printf("\n");scanf("%d", &i);(p + i)->Buy_num--;CheckAirPlane(p);do{printf("请输入要改签的航班编号:");scanf("%d", &j);if ((p + j)->Buy_num >= (p + j)->Max_num){printf("该次航班已满员,请重新选择!\n");}} while ((p + j)->Buy_num >= (p + j)->Max_num);(person + i)->AirPlane_Num = j;(p + j)->Buy_num++;printf("改签成功!\n\n");
}//删除订单
void ReturnTicket(Plane* p, Person* person)
{int i = -1;int j = 0;CheckPerson(p, person);printf("请输入要删除的订单编号:");scanf("%d", &i);for (j = i; j < _person_size; j++){(person + j)->AirPlane_Num = (person + j + 1)->AirPlane_Num;strcpy((person + j)->person_name, (person + j + 1)->person_name);}printf("退票成功!\n");
}//查看目前订票信息
void CheckAirPlaneOrder(Plane* p, Person* person)
{int i = -1;for (i = 0; i < _size; i++){printf("航班编号:%d\n", i);printf("ID:%s\n", (p + i)->ID);printf("始发地:%s\n", (p + i)->Start_Place);printf("目的地:%s\n", (p + i)->End_Place);printf("起飞时间:%s\n", (p + i)->time);printf("机票价格:%2f\n", (p + i)->price);printf("剩余机票:%d\n", ((p + i)->Max_num - (p + i)->Buy_num));printf("买票人信息:"); PrintPerson(p,person, i);}
}
void PrintPerson(Plane* p, Person* person,int i)
{int ticket_num = 0;int j = 0;for (j = 0; j < _person_size; j++){if ((person + j)->AirPlane_Num == i){printf("%s ,", (person + j)->person_name);ticket_num++;}}printf("\n\n");
}//候补名单初始化
void InitPersonNoTicket(Person** person_noticket)
{assert(person_noticket);*person_noticket = (Person*)malloc(sizeof(Person)*PERSONNOTICKET_MAX);if (NULL == *person_noticket){printf("开辟空间失败!\n");return;}
}//查看候补名单
void CheckPersonNoTicket(Plane* p, Person* person_noticket)
{int i = 0;printf("候补名单:\n\n");if (0 == _personnoticket_size){printf("候补名单为空!\n\n");return;}for (i = 0; i < _personnoticket_size; i++){printf("姓名:%s\n", (person_noticket + i)->person_name);printf("所需要航班编号:%d\n", (person_noticket + i)->AirPlane_Num);printf("航班ID:%s\n", (p + ((person_noticket + i)->AirPlane_Num))->ID);printf("始发地:%s\n", ((p + ((person_noticket + i)->AirPlane_Num))->Start_Place));printf("目的地:%s\n", (p + ((person_noticket + i)->AirPlane_Num))->End_Place);}
}
//主函数
int main()
{Plane* p=NULL;Person* person=NULL;Person* person_noticket = NULL;InitPersonNoTicket(&person_noticket);InitAirPlane(&p);InitPerson(&person);while (1){home(p, person, person_noticket);}system("pause");return 0;
}

C语言实现简单的航班管理系统相关推荐

  1. C语言学生成绩简单,C语言实现简单学生成绩管理系统.pdf

    C语言实现简单学生成绩管理系统 这篇文章主要为大家详细介绍了C语言实现简单学生成绩管理系统,具有 定的参考价值,感兴趣的小伙伴们可以 参考 下 本文实例为大家分享了C语言实现学生成绩管理系统的具体代码 ...

  2. 如何用c语言做衣物存放系统,C语言实现简单的图书管理系统

    本文实例为大家分享了C语言实现简单图书管理系统的具体代码,供大家参考,具体内容如下 代码: /* 课程设计项目名称:图书查询系统 作者:施瑞文 时间:2018.3.4 */ #include #inc ...

  3. 用c语言做简单的用户管理系统,简单客户信息管理系统的设计与实现.doc

    简单客户信息管理系统的设计与实现 学 年 设 计 报 告 设计题目 简单客户信息管理系统的设计与实现 作者姓名 林燕.丁楠楠.赵长永.陈勇祥.孙青.张书生 所学专业 网络工程 指导教师 王汇彬 201 ...

  4. C语言实现简单的停车场管理系统

    问题描述:停车场是一个能放n辆车的狭长通道,只有一个大门,汽车按到达的先后次序停放.若车场满了,车要停在门外的便道上等候,一旦有车走,则便道上第一辆车进入.当停车场中的车离开时,由于通道窄,在它后面呢 ...

  5. c语言编写简单的成绩管理系统,用c语言编写学生成绩管理系统

    <用c语言编写学生成绩管理系统>由会员分享,可在线阅读,更多相关<用c语言编写学生成绩管理系统(9页珍藏版)>请在人人文库网上搜索. 1.include#include#inc ...

  6. 学生签到系统c代码_C语言实现简单学生学籍管理系统

    #include #include #include #include #define N 100 /*存储100个学生的学籍信息*/ int flag; /*标记是否登录*/ struct date ...

  7. C语言一个简单的商店管理系统

    /*数据结构:*/ struct shangpin {  char name[100];  char bianhao;  float jinjia;  float shoujia;  int kuch ...

  8. 二叉树的应用:利用C语言编写简单的家谱管理系统

    /*采用树型结构实现如下系统功能: 1)输入文件以存放最初家谱中各成员的信息. 成员的信息中均应包含以下内容: 姓名.出生日期.婚否.地址.健在否.死亡日期(若其已死亡)也可附加其它信息.但不是必需的 ...

  9. 数据结构——C语言编写简单的停车场管理系统(栈和链队实现)

    1.问题描述 设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出,汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端.最先到达的第一辆车停放在车场的最北端),若车场 ...

最新文章

  1. 数据结构与算法-C++实现
  2. 升级之后的BCH将推动游戏业更上一层楼
  3. 百分点大数据技术团队:乘风破浪 海外数据中台项目实践
  4. vector/list/map/set的插入、删除、遍历 - remove\erase函数
  5. 编译away3d例程序记
  6. 小米手机升级Android6,小米3能升级miui 6?小米3升级miui v6教程
  7. Linux ${}表达式详解
  8. 5寸照片尺寸_证件照尺寸及更换背景颜色教程
  9. asdm java设置,[小技巧] 在CISCO ASA 5505防火墙上开启ASDM图形界面
  10. ESPRIT 2019初学到走心机编程视频教程
  11. 各个小组对于“我爱淘”的评价
  12. 二分查找的左右逼近法
  13. 寄生电容和分布电容的区别
  14. Unity获取包名,产品名,版本号等
  15. Chronometer实现计时器 开始、暂停、停止功能
  16. 防火墙添加ip白名单_如何增加网址白名单、IP白名单、策略白名单、协同防御白名单?...
  17. 补天SRC漏洞挖掘(一):主域名爬取
  18. Unity3D摄像机,键盘控制前后左右上下移动,鼠标控制旋转、放缩
  19. asp.net DES加密解密
  20. 【Java】数组:动态初始化 、静态初始化

热门文章

  1. 还在为课题设计烦恼、秃头。教你一招,一次性解决
  2. Mysql数据库从5.6.28版本升到8.0.11版本部署项目时遇到的问题及解决方法
  3. 淮海工学院计算机考试报名,淮海工学院-江苏计算机等级考试网.DOC
  4. Android MTK平台修改开关机动画和开机logo
  5. oracle 添加unique,oracle的unique约束
  6. 机器学习笔记:常用数据集之scikit-learn内置玩具数据集
  7. linux添加其他源,Debian添加软件源,debian添加
  8. 银时之魂服务器端文件,银时之魂电脑版 银时之魂PC版安装教程
  9. java的class怎么直接运行_java生成class文件怎样方便的直接运行
  10. Fancybox 的学习