航空订票系统最好的程序

上传人:飞*** 文档编号:53788073 上传时间:2018-09-05 格式:PDF 页数:13 大小:300.11KB
返回 下载 相关 举报
航空订票系统最好的程序_第1页
第1页 / 共13页
航空订票系统最好的程序_第2页
第2页 / 共13页
航空订票系统最好的程序_第3页
第3页 / 共13页
航空订票系统最好的程序_第4页
第4页 / 共13页
航空订票系统最好的程序_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《航空订票系统最好的程序》由会员分享,可在线阅读,更多相关《航空订票系统最好的程序(13页珍藏版)》请在金锄头文库上搜索。

1、一、需求分析1每条航线所涉及的信息有:终点站名、 航班号、 飞机号、 飞行日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2 或 3)以及等候替补的客户名单(包括姓名、所需票量);2全部数据可以只放在内存中;3系统能实现的操作和功能如下:a) 查询航线:根据旅客提出的终点站名输出下列信息:航班号、 飞机号、星期几飞行,最近一天航班的日期和余票额;b) 承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求。若需要,可登记排队候补;c) 退票业务:根据客

2、户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。4.测试数据: 1.输入 1 按下回车2.输入 4 回车, 5 回车, 5 回车, 1 回车, 1 回车3.输入 4 回车, 5 回车, 6 回车, y 回车 ,2 回车4.输入 4 回车,输入5 回车,输入3 回车,输入3 回车,输入1 回车5.输入 5 回车,输入5 回车,输入1 回车6输入 3 回车,输入haerbin 回车后7输入 2 回车,输入5 回车后8输入 3 回车,输入shanghai 回车详细测试

3、数据见调试分析。二、概要设计1本程序含有订票客户结构体,候补队列,航线结构体等3 个主要模块。 Main 和菜单 menu 也是重要模块。客户结构采用链表存储,主要操作有插入insert; 队列采用链队列存储,主要操作有插入add,航线结构采用顺序存储。2功能模块说明(1)显示已初始化的全部航线信息利用airlinelist() 函数。(2)浏览已订票客户信息利用Viewlink() 函数。(3)根据客户提出的终点站名,调用search()函数输出航线信息。(4)order() 办理订票业务:根据客户提供的航班号进行查询航线信息,若客户订票额超过乘员定票总额, 退出,若客户订票额末超过余票量,

4、订票成功并登记信息,在订票乘员名单域中添加客户信息;如果暂时没有票,询问客户是否要排队等侯,如果是, 则在等候队列增加该客户的订票信息。(5)refund() 办理退票业务:调用查询函数,根据客户提供的航线进行搜索根据客户提供的姓名到订票客户名单域进行查询。退票成功后, 重新将航线名单域指向订票单链表的头指针。根据队列中从出的客户信息判断是否满足要求,如果满足, 则将该客户的信息插入到乘客信息链表中。(6)退出本系统三、详细设计1.主程序中需要的全程量#define FLIGHT_NUMBER 5 /*给定 5 条航线 */ #define MAX 200 /* 给定座位号最大为200*/ i

5、nt seatMAX=0,0;/* 初始化每条航线200 个座位号为0,即未被预定 */ intseat_numMAX; /*暂时存放已发给客户的座位号,为存放到客户名单域的媒介*/ 2.链队列类型(1)结点类型typedefstructQNode char name10;/* 等候替补客户姓名*/ intWnumber;/* 订票量 */ structQNode *next; QNode,*Queueptr; (2)队列类型typedefstructWaitQueue Queueptr front; /*等候替补客户名单域的头指针*/ Queueptr rear; /* 等候替补客户名单域的

6、属指针*/ LinkQueue; /* 等候替补客户用链队列存储*/ LinkQueueAddQueue(LinkQueueq,char name,int amount) return q; 返回等候替补的客户名单域为分别指向队头和队尾的指针3.链表类型typedefstructLNode /* 定义已定票客户的线性链表结构*/ char name10;/* 客户姓名 */ intBook_num;/* 订票量 */ int grade;/* 舱位等级 */ intnumMAX;/* 订票客户的座位号*/ structLNode *next; LinkList; LinkList *Inser

7、tLink(LinkList *head,intamount,char name,intgrade,int *seat_num) return head 返回链表头指针4.线性表类型typedefstruct airline /*定义航线的结构*/ char terminus10;/*终点站名*/ char flight_num10;/*航班号 */ char plane_num10;/* 飞机号 */ char day7;/* 飞行周日(星期几)*/ inttotal_num;/*乘员定额数量*/ intremain_num;/*余票量 */ int seatMAX; /* 每条航线的座位数

8、额为MAX 设定大于乘员定额数量*/ LinkList *order;/* 乘员名单域,指向乘员名单链表的头指针*/ LinkQueue wait;/* 等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/ SqList; struct airline *first; /*定义指向航线结构的指针*/ 5 程序伪码:#include #include #include #include #define FLIGHT_NUMBER 5 /*给定 5 条航线 */ #define MAX 200 /* 给定座位号最大为200*/ int seatMAX=0,0;/* 初始化每条航线200 个

9、座位号为0,即未被预定 */ intseat_numMAX; /*暂时存放已发给客户的座位号,为存放到客户名单域的媒介*/ typedefstructQNode char name10;/* 等候替补客户姓名*/ intWnumber;/* 订票量 */ structQNode *next; QNode,*Queueptr; typedefstructWaitQueue Queueptr front; /*等候替补客户名单域的头指针*/ Queueptr rear; /* 等候替补客户名单域的属指针*/ LinkQueue; /* 等候替补客户用链队列存储*/ typedefstructLNo

10、de /* 定义已定票客户的线性链表结构*/ char name10;/* 客户姓名 */ intBook_num;/* 订票量 */ int grade;/* 舱位等级 */ intnumMAX;/* 订票客户的座位号*/ structLNode *next; LinkList; typedefstruct airline /*定义航线的结构*/ char terminus10;/*终点站名*/ char flight_num10;/*航班号 */ char plane_num10;/* 飞机号 */ char day7;/* 飞行周日(星期几)*/ inttotal_num;/*乘员定额数

11、量*/ intremain_num;/*余票量 */ int seatMAX; /* 每条航线的座位数额为MAX 设定大于乘员定额数量*/ LinkList *order;/* 乘员名单域,指向乘员名单链表的头指针*/ LinkQueue wait;/* 等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/ SqList; struct airline *first; /*定义指向航线结构的指针*/ void display(struct airline *info) /*输出每条航线的基本信息*/ printf(“%8st%3st%4st%5stt%5dt%12dn“,info-te

12、rminus,info-flight_num,info-plane_num,info-day,info-total_num,info-remain_num); void airlinelist()/* 显示全部航线信息*/ struct airline *info; /*定义指向航线结构的指针*/ inti=0; info=first; /* 将指向第一条航线的指针赋给info*/ printf(“ 终点站名 t 航班号 t 飞机号 t 飞行周日 t 乘员定额 t 余票量 n“); while(iterminus) if(j=0) printf(“ 终点站名 t 航班号 t 飞机号 t 飞行周

13、日 t 乘员定额 t 余票量 n“); display(info); j+; info+; i+; /if elseinfo+; i+; /while if(j=0) printf(“Sorry ,没有该终点站!n“); /search struct airline *find() /*根据客户提出的航班号查询并以指针形式返回*/ struct airline *info; char number10; inti=0; info=first; printf(“ 请输入航班号:“); scanf(“%s“,number); while(iflight_num) return info; info

14、+; i+; /while return NULL; /find void Viewlink() /* 显示订票乘员名单域的客户名单信息*/ LinkList *p; struct airline *info; info=find(); /* 将 find()函数返回的指针赋给info*/ if(info=NULL) printf(“ 对不起,没有该航班号!n“); else p=info-order; if(p!=NULL) printf(“ 客户姓名订票数额舱位等级n“); while(p) printf(“%st%8dt%dn“,p-name,p-Book_num,p-grade); p

15、=p-next; /while /if else printf(“ 该航线没有客户信息!n“); /Viewlink LinkList *InsertLink(LinkList *head,intamount,char name,intgrade,int *seat_num) /* 增加订票乘员名单域的客户信息*/ LinkList *q,*p; int j; q=head; p=(LinkList *)malloc(sizeof(LinkList); /* 向系统要空间存放新增的乘员名单域*/ if(!p) printf(“nOut of memory!n“); return NULL; strcpy(p-name,name); p-Book_num=amount; p-grade=grade; p-next=NULL; for(j=0;jnumj=(*seat_num)+;/*记录该乘员座位号,若其退票则可以回收对应的座位号*/ if(head=NULL) /* 若原无订票客户信息*/ head=p;p-next=NULL; else /* 新增订票客户从订票乘员链表前面插入*/ head=p; p-next=q; return head; /* 返回链表头指针,该头指针此时指向新增乘员名单域*/ LinkQueueAddQueue(LinkQueueq,char name,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号