1、航空客运订票系统课程设计报告航空客运订票系统一、设计目的我们之所以选择做航空订票系统这个课题,主要是因为当今时代的需求。随着科技与经济的发展,越来越多的人选择乘飞机,这跟我国的经济增长有很大关系,人们在追求快节奏的生活方式,所以做飞机无疑成了首选。而且随着网络的盛行,航空订票系统就显得尤为重要,我们开发这个系统主要是为了方便大家,让大家能够快速、清晰、准确地了解航班信息,而不至于像以前那样排队等候,从而避免耽搁乘客大量的等待时间。二、问题描述航空客运订票的业务活动包括:查询航线,预订客票,办理退票等。顾客只要在网上登陆了这个系统并输入相应的航班信息和飞行时间等信息,就可以了解当天的航班信息,方
2、便乘客合理的安排自己的时间。顾客可以通过这个系统了解到当天将到地点的详细航班信息,包括:航班号、飞机号以及余票额等相关信息。三、需求分析(1)每条航线所涉及带的信息有:终点站名、航班号、飞机号、飞行日期、余票量、已定票客户名单(包括姓名、订票量、仓位等级1,2,或3)以及等候替补的客户名单(包括姓名、所需票量);(2)作为示意系统,全部数据可以存放在内存中。(3)系统能实现的操作功能如下: 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行、余票额; 承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班的票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若
3、已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补; 承办退票业务:根据客户提供的情况(姓名、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的需求,则为他办理订票手续,否则,依次询问其他排队候补客户。四、概要设计1、算法思路数据用数组存储以及结构体等通过设置关键字并用一定的数据结构对其进行一定的数据排序。输入航班信息,进行存储及按要求的查找。在这期间,我们需要书写四个基本函数:即录入函数、查找函数、订票函数及退票函数。用if条件语句实现条件的选择,并对子函数进行相关的调用。按要求输出用户所需信息,实现简单而便捷的快速查
4、询。2、工作分配3、程序模块(1)登陆界面图3-1(2)程序的模块为录入功能:原始数据的输入(通过文件输入航线的基本信息)。查询功能:根据客户需要,查询相关航线。订票功能:满足客户的订票任务。退票功能:根据客户的不同情况,支持客户的退票请求。退出功能:退出系统。图3-2 输入1,通过文件进行航线原始数据的输入 图3-3输入2,通过输入终点站名查询航线信息图3-4输入3,通过输入终点站名,进行订票图3-5输入4,通过输入退票客户信息进行退票图3-6 输入5,退出订票系统五、详细设计1数据定义1.1 已定票客户struct yidingpiaokehu char nameM;/顾客名 int or
5、dernum;/订票量 int rank;/仓位等级 struct yidingpiaokehu *next;/; typedef struct yidingpiaokehu *linklist;1.2 未订票客户 struct weidingpiaokehu char nameM; /姓名 int ordernum; /所需票量 struct weidingpiaokehu *next; /同一类型的指针; typedef struct weidingpiaokehu *pointer; /为订票客户的结构体 struct node pointer front; /指向未订票客服的第一个客户
6、 pointer rear; /指向未订票客户的最后一个客户; typedef struct node linkqueue; /指向未订票客户的指针结构体1.3 航线定义struct lnode char zhongdianzhanM;/终点站名 char hangbanhaoM;/航班号 char feijihao5;/飞机号 int day;/飞行时间 int capacity;/成员定额 int leftticket;/余票量 int seatM; linklist yd;/已定票客户的头指针 linkqueue wd;/为订票客户的头指针和尾指针 ;typedef struct lno
7、de hangxian;2. 函数设计2.1 录入航线信息void insertairline(hangxian l,int n) ifstream fin(航线3.txt); for(int i=1;ili.zhongdianzhan; finli.hangbanhao; finli.feijihao; finli.day; finli.capacity; finli.leftticket;/初始化时余票量等于乘员定额 li.yd=(linklist)malloc(sizeof(struct yidingpiaokehu);/为每条航线上的已定票客户开辟存储空间 li.yd-next=nul
8、l; li.wd.front=li.wd.rear=(pointer)malloc(sizeof(struct weidingpiaokehu);/为每条航线上的未定票客户开辟存储空间 li.wd.front-next=null; for(int j=1;j=li.leftticket;j+) li.seatj=0; 2.2查询航线信息void chaxungongneng(hangxian l,int n) char cM; cout请输入终点站名:c; int i=1; while(i=n) if(!strcmp(c,li.zhongdianzhan) cout输出航线信息:endl; c
9、out航班号:li.hangbanhao 飞机号:li.feijihao 飞行日期:li.day 余票额:li.leftticket=n+1) cout对不起没有你要查询的航线!; 2.3订票功能void dingpiao(hangxian l,int i,int num) linklist p; p=(linklist)malloc(sizeof(struct yidingpiaokehu); coutp-name; coutendlp-rank; p-ordernum=num; p-next=li.yd-next; li.yd-next=p; li.leftticket-=num; int
10、 x=num; coutendl您所订票的座位号是; while(x!=0) for(int j=1;j=M;j+) if(li.seatj=0) li.seatj=1; coutj ; else continue; break; x-; coutendl订票成功!; coutendl;void denghoudingpiao(hangxian l,int i) pointer p; p=(pointer)malloc(sizeof(struct weidingpiaokehu); coutendlp-name; coutendlp-ordernum; p-next=null;/-插入队列 l
11、i.wd.rear-next=p; li.wd.rear=p; coutendl等候订票成功!endl; void dingpiaogongneng(hangxian l,int n) char cM; int num; int m,p; do coutendlc; int i=1; while(i=n) if(!strcmp(c,li.zhongdianzhan) coutendl输出查询航班信息:endl; cout终点站:li.zhongdianzhan 航班号:li.hangbanhao 飞机号:li.feijihao 飞行日期:li.day 余票额:li.leftticketendl
12、; do coutnum; coutendl; if(num=li.leftticket) dingpiao(l,i,num);/-转入订票; return; else cout对不起,余票额不足!endl; cout是否还需订票endl; coutp; while(p=1); if(p=2) denghoudingpiao(l,i);/-插入等候队列; else break; return; else i+; if(i=n+1) cout对不起,没有您要查找的航班!endl; cout是否要查找其他航班信息?endl; cout是请按1,否请按0m; while(m=1);2.4退票功能in
13、t tuipiao(hangxian l,int i) char nameM; int c; coutendlname; coutendlc; linklist p,q; p=li.yd-next; while(p!=null) q=p; if(!strcmp(name,p-name) q-next=p-next; p-next=null; free(p); li.seatc=0; li.leftticket+; coutendlnext; if(p=null) coutendlnext; p=(linklist)malloc(sizeof(struct yidingpiaokehu); if
14、(q=null) coutendl没有排队等候客户!ordernumname,q-name); p-ordernum=q-ordernum; p-next=li.yd-next; li.yd-next=p; li.leftticket-=q-ordernum; int x=q-ordernum; coutendl候补客户name订票的座位号是; while(x!=0) for(int j=1;j=M;j+) if(li.seatj=0) li.seatj=1; coutjnext=q-next; free(q);/-释放了q之后,如果不做q=li.wd.front-next,while循环就不
15、能进行下去, q=li.wd.front-next; else q=q-next; void tuipiaogongneng(hangxian l,int n) char cM; int day; coutendlc; coutendlday; int i=1; while(strcmp(li.hangbanhao,c) i+; if(in) cout输入航班号错误!; else if(tuipiao(l,i) coutendl为排队候补客户办理订票endl; houbudingpiao(l,i); 2.5主函数 void main() hangxian lM;int m; coutm; co
16、utendl; int n; do coutendl; cout*endl; cout欢迎使用航空客运订票系统:endl; cout* 1.录入航线信息 *endl; cout* 2.查询航线信息 *endl; cout* 3.订票功能 *endl; cout* 4.退票功能 *endl; cout* 5.退出 *endl; cout* 请选择 *endl; cout*n; if(n=1) insertairline(l,m); if(n=2) chaxungongneng(l,m); if(n=3) dingpiaogongneng(l,m); if(n=4) tuipiaogongneng
17、(l,m); while(n=1&n=4);六、测试数据航线信息:beijing 0001 10001 1 10 10shanghai 0002 10002 2 10 10guangzhou 0003 10003 3 10 10订票客户信息:Wangyi 1 1Wanger 1 2Wangsan 1 3Wangsi 1 3Wangwu 1 1Wangliu 1 2另外当订票已满时再订票的话,可以通过转入等候订票退票完成时,系统将会转入为等候订票客户订票七、总结1. 不足经过小组同学的努力,我们也终于结束了这次的课程设计,虽然最后的检验已经通过了,但是其中仍显现出许多的不足。(1)录入系统,每次
18、输入的数据会覆盖上次输入的数据。(2)查询系统,只能查找最近输入的数据,并且相同终点站只能显现一个信息。(3)在数据初始化的时候未对数据按照一定的顺序存放,如果航线信息较多时将影响系统功能2. 心得体会通过这次课程设计,我们从中学会了很多东西,再一次体会到了团队的力量是多么的伟大。在编写程序的过程中,我们大家都参考了很多相关资料,还有参考书等。我们小组的合理分工,各个成员翻阅了很多这方面的资料,图书馆成了我们的首要选择。这其中可能有辛酸也有快乐,但是我们却体验到其中的很多乐趣,毕竟在学校像这种实践性的机会并不多,所以我们还是很珍惜的,尽量把它做到最好,尽可能把自己所学的专业知识用上,尽管最后的系统仍然存在一些问题,但是我们会在接下来的时间里尽量改变不足,努力是这个系统更加完善,发挥更全面的作用。以上就是我们在这次课程设计的全部内容,谢谢老师和同学们的观看。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1