航空公司在线订票系统设计.doc_第1页
航空公司在线订票系统设计.doc_第2页
免费预览已结束,剩余25页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

扬州大学信息工程学院课程设计报告课程名称 c+课程设计 设计题目 航空公司在线订票系统 学生姓名 张格伟 班 级 网络1501 班 学 号 151305131 指导老师 严芬 2016年6月目 录一、设计任务与要求3二、需求分析32.1 功能需求分析32.2 系统需求分析4三、功能模块43.1 各模块的算法设计说明43.2 存储结构设计说明8四、源代码9五、运行结果分析10六、收获与体会26七、主要参考资料26一、设计任务与要求制作一个订票系统,通过此系统可以实现如下功能: 1)浏览航线信息: 显示预先输入的航班信息; 2)查询: 可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况。 3)订票: 可以订票,如果该航班已经无票,可以提供相关可选择航班(订票情况可以存在一个数据文件中,结构自己设定)。 4)退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。二、需求分析2.1 功能需求分析功能需求分析模块图如图2.2.1 功能模块图:图2.2.1 功能模块图2.2 系统需求分析开发环境:pc机windows 8.1系统visual c+ 6.0三、功能模块3.1 各模块的算法设计说明1浏览航线信息功能,调用display函数进行输出。2浏览已订票客户信息功能,按顺序输出客户信息链表中的信息。流程图如图3.1.1 浏览已订票客户信息功能流程图:图3.1.1 浏览已订票客户信息功能流程图3查询航线功能,根据客户提出的终点站名输出航线信息。流程图如图3.1.2 查询航线流程图:图3.1.2 查询航线流程图4办理订票业务功能,根据客户提出的航线信息等进行订票。流程图如图3.1.3 办理订票业务功能流程图:图3.1.3 办理订票业务功能流程图5办理退票业务功能,根据客户提出的航线信息等进行退票。流程图如图3.1.4 办理退票业务功能流程图:图3.1.4 办理退票业务功能流程图6主函数流程图如图3.1.7 主函数流程图:图3.1.7 主函数流程图3.2 存储结构设计说明typedef struct wai_cli /*单链队列存储等候替补的客户信息*/ char name10; /*姓名*/int req_amt; /*订票量*/struct wai_cli *next; qnode,*qptr;typedef struct pqueue /*等候替补的客户名单*/ qptr front; /*等候替补客户名单域的队头指针*/qptr rear; /*等候替补客户名单域的队尾指针*/linkqueue;上述单链队列用来存储排队等候的客户名单,这样可以通过队先进先出的特点来进行操作。先排队的客户可以先订票成功。typedef struct pas_list /*乘员名单*/ char name10; /*客户姓名*/int ord_amt; /*订票量*/ int grade; /*舱位等级*/struct pas_list *next;linklist;上述单链表用来存储乘员的信息,包括姓名、订票量、舱位等级。struct airline /*航线信息*/ char ter_name10; /*抵达城市*/char air_num10; /*航班号*/char laughtime10; /*起飞时间*/ char arrivetime10; /*到达时间*/char pri7; /*票价*/int tkt_amt; /*乘员定额*/int tkt_left; /*余票量*/linklist *order; /*乘员名单域,指向乘员名单链表的头指针*/linkqueue wait; /*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/lineinfo;这个结构体存储了航线信息,包括抵达城市、航班号、飞行时间、票价、乘员定额、余票量等。#define maxsize 8 /*定义航线数量,可修改*/航线信息存储在“f1.txt”文件里,程序刚开始进行导入即可。四、源代码#include #include #include #include #include #include #define maxsize 8 /*定义航线数量,可修改*/using namespace std;typedef struct wai_cli /*单链队列存储等候替补的客户信息*/ char name10; /*姓名*/int req_amt; /*订票量*/struct wai_cli *next; qnode,*qptr;typedef struct pqueue /*等候替补的客户名单*/ qptr front; /*等候替补客户名单域的队头指针*/qptr rear; /*等候替补客户名单域的队尾指针*/linkqueue;typedef struct pas_list /*乘员名单*/ char name10; /*客户姓名*/int ord_amt; /*订票量*/ int grade; /*舱位等级*/struct pas_list *next;linklist;struct airline char des_name10; /*抵达城市*/char air_num10; /*航班号*/char laughtime10; /*起飞时间*/ char arrivetime10; /*到达时间*/char pri7; /*票价*/int tkt_amt; /*乘员定额*/int tkt_left; /*余票量*/linklist *order; /*乘员名单域,指向乘员名单链表的头指针*/linkqueue wait; /*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/lineinfo;struct airline *start;void display(struct airline *info) /*打印每条航线的基本信息*/ coutdes_namettair_numtlaughtimettarrivetimetprit tkt_amttt tkt_leftendl;void list() /*打印全部航线信息*/ struct airline *info;int i=0;info=start;coutendl;cout*n代表第二天endl;cout终点站名t航班号t起飞时间 到达时间t票价t乘员定额t余票量endl;while(imaxsize) display(info); /*调用display函数来输出*/info+;i+;coutendlendl;void search() /*根据客户提出的终点站名输出航线信息*/ struct airline *info,*find();char name10; /*要抵达的城市名称*/int i=0;info=start;coutname;while(ides_name) /*有该站名strcmp则返回,if(!0)即break*/break;info+;i+;if(i=maxsize) /*没有匹配的航线*/cout对不起,没有这条航线!endl;elsecout终点站名t航班号t起飞时间 到达时间t票价t乘员定额t余票量endl;display(info); /*调用display函数输出航线信息*/struct airline *find() /*根据系统提出的航班号查询并以指针形式返回*/ struct airline *info;char number10; /*查询的航班号*/int i=0;info=start;coutnumber;while(iair_num) /*有匹配航班*/return info; info+;i+; /*无匹配航班*/cout对不起,没有这条航线!order;if(p!=null) /*按顺序输出客户信息链表*/cout客户姓名 订票数额 舱位等级endl;while(p) coutnamet ord_amtttgradenext; else /*没有人订这个航班*/cout该航线没有客户信息!endl;linklist *insertlink(linklist *head,int amount,char name,int grade) /*增加订票乘员名单域的客户信息*/ linklist *p1,*new1;p1=head;new1=(linklist*)malloc(sizeof(linklist);if(!new1) /*存储空间不足*/ coutendlout of memory!name,name);new1-ord_amt=amount;new1-grade=grade;new1-next=null;head=new1;new1-next=p1;return head;linkqueue appendqueue(linkqueue q,char name,int amount) /*增加排队等候的客户名单域*/ qptr new1;new1=(qptr)malloc(sizeof(qnode);strcpy(new1-name,name);new1-req_amt=amount;new1-next=null;if(q.front=null) /*若原排队等候客户名单域为空*/q.front=new1;elseq.rear-next=new1;q.rear=new1;return q;void order() /*办理订票业务*/ struct airline *info;int amount,grade; /*订票数量,舱位等级*/char name10; /*要订的航班号*/info=start;if(!(info=find() /*根据客户提供的航班号进行查询,如为空,退出该模块*/return;coutamount;if(amountinfo-tkt_amt) /*若客户订票额超过乘员定票总额,退出*/ coutendl对不起,您输入票数已经超过乘员定额!;return;if(amounttkt_left) /*若客户订票额末超过余票量,订票成功并等记信息*/ int i;coutname;coutgrade;info-order=insertlink(info-order,amount,name,grade); /*在订票乘员名单域中添加客户信息*/for(i=0;iamount;i+) /*依次输出该订票客户的座位号*/coutname的座位号是:tkt_amt-info-tkt_left+i+1tkt_left-=amount; /*该航线的余票量应减掉该客户的订票量*/coutendl祝您乘坐愉快!endl;else /*若满员或余票额少于订票额,询问客户是否需要进行排队等候*/ char r;coutendl没有这么多票了,您需要排队等候吗?(y/n);r=getch();coutr;if(r=y|r=y) coutendlname;info-wait=appendqueue(info-wait,name,amount); /*在排队等候乘员名单域中添加客户信息*/coutendl注册排队成功!endl;else coutendl欢迎您再次订购!order;p1=head;coutcusname;while(p1!=null) /*根据客户提供的姓名到订票客户名单域进行查询*/if(!strcmp(cusname,p1-name) break;p2=p1;p1=p1-next;if(p1=null) /*若未找到,退出本模块*/ cout对不起,您没有订过票!next; elsep2-next=p1-next; info-tkt_left+=p1-ord_amt;grade=p1-grade;coutname退票成功!order=head; /*重新将航线名单域指向订票单链表的头指针*/f=(info-wait).front; /*f指向排队等候名单队列的头结点*/r=(info-wait).rear; /*r指向排队等候名单队列的尾结点*/t=f; /*t为当前满足条件的排队候补名单域*/while(t)if(info-tkt_left=info-wait.front-req_amt) /*若满足条件者为头结点*/ int i;info-wait.front=t-next;coutname订票成功!endl;for(i=0;ireq_amt;i+) /*输出座位号*/coutname的座位号是:tkt_left)-itkt_left-=t-req_amt;info-order=insertlink(info-order,t-req_amt,t-name,grade);/*插入到订票客户名单链表中*/free(t);break;back=t;t=t-next;if(info-tkt_left)=(t-req_amt)&t!=null)/*若满足条件者不为头结点*/ int i;back-next=t-next;coutname订票成功!endl;for(i=0;ireq_amt;i+) /*输出座位号*/coutnames seat number is:tkt_left)-itkt_left-=t-req_amt;info-order=insertlink(info-order,t-req_amt,t-name,grade);/*插入到订票客户名单链表中*/free(t);break;if(f=r) break;void load() int start,sleep; for(start=0;start1;start+) coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.endl; coutendl; for(sleep=1;sleep2000000;sleep+) /循环次数停止等待 system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(5%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(10%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(15%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(20%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(25%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(30%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(35%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(40%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(45%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(50%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(55%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(60%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(65%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(70%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(75%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(80%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(85%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(90%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统正在加载中,请稍等.(100%)endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 coutendlendlendlendlendlendlendlendlendlendlttt系统加载完毕.endl; coutendl; for(sleep=1;sleep2000000;sleep+) system(cls); /清屏 int menu_select() /*菜单界面*/ int c;char s20; couttt -endl; couttt | |endl; couttt | |endl; couttt | |endl; couttt | |endl; couttt | |endl; couttt -endl; coutttt -endl; coutttt endl; coutttt ivan航空公司 endl; coutttt 在线订票系统 endl; coutttt endl; coutttt -endl; coutttt 1.查看航线信息 endl; coutttt -endl; coutttt 2.查看订单 endl; coutttt -endl; coutttt 3.查询航线 endl; coutttt -endl; coutttt 4.办理订票业务 endl; coutttt -endl; coutttt 5.办理退票业务 endl; coutttt -endl;coutttt 6.读取航班信息 endl;coutttt -endl;coutttt 7.退出程序 endl;coutttt -endl;do couts;c=atoi(s);while(c7);return c;void readf(struct airline *air) ifstream fin(f1.txt);if (!fin) cout无法打开航班信息文件!endl;exit(0);for (int i=0;iairi.air_numairi.arrivetimeairi.des_nameairi.laughtimeairi.priairi.tkt_amtairi.tkt_left;fin.close();cout航班信息读取成功!endl;int main() setconsoletextattribute(getstdhandle(std_output_handle), foreground_green); system(color 4e);struct airline airmaxsize;for (int i=0;imaxsize;i+)airi.order=null;airi.wait.front=null;airi.wait.rear=null;start=air; load();for(;) /*无限循环(除非用户选择.退出)*/ system(cls); /*清空屏幕*/switch(menu_select()case 1:list(); /*打印全部航线信息*/break;case 2:prtlink(); /*浏览已订票客户信息*/break;case 3:search(); /*查询航线*/break;case 4:order(); /*订票*/break;case 5:return_tkt(); /*退票*/break; case 6:readf(air);break;case 7:coutendl感谢您的使用,再见!endl; /*退出系统*/exit(0); /*正常退出系统*/coutendl任意键继续.endl;getch(); /*任意键继续*/五、运行结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论