航空检票系统论文.doc

vc++航空检票系统

收藏

压缩包内文档预览:
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:58728600    类型:共享资源    大小:259.75KB    格式:RAR    上传时间:2020-03-17 上传人:qq77****057 IP属地:江苏
7.2
积分
关 键 词:
vc 航空 检票 系统
资源描述:
vc++航空检票系统,vc,航空,检票,系统
内容简介:
武汉理工大学数据结构课程设计说明书航空检票系统1 问题描述 航空检票的业务活动包括:查询航线、客票预订和办理退票等。试设计一个航空检票系统,以使上述业务可以借助计算机来完成。1.1 每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已检票的客户名单(包括姓名、检票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量)1.2 作为示意系统,全部数据可以只放在内存中1.3 系统能实现的操作和功能如下:1.3.1 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额1.3.2 承办检票业务:根据客户提出的要求(航班号、检票数额)查询该航班票额情况,若尚有余票,则为客户办理检票手续,输出座位号;若已满员或余票额少于检票额,则需重新询问客户要求。若需要,可登记排队候补1.3.3 承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理检票手续,否则依次询问其他排队候补的客户2 概要设计2.1 存储结构设计typedef struct Al_Custom /已检票客户char name15;/姓名int count;/检票量int level;/舱位等级Al_Custom *next;/下一节点指针Al_Custom,*Al_CustomLink;typedef struct Wait_Custom/等候替补的客户char name15;/姓名int count;/所需票量Wait_Custom *next;/下一节点指针Wait_Custom;typedef struct Wait_Queue/等待队列Wait_Custom *front;/队列头指针Wait_Custom *rear;/尾指针Wait_Queue;typedef struct Flight/航线char terminus15;/终点站名char flight_no10;/航班号char plane_no10;/飞机号int week;/飞行周日int count;/乘客定额int rest;/余票量Al_CustomLink Al_link;/指向成员名单链表的头指针Wait_Queue wait_queue;/等待替补队列Flight;2.2 主要算法设计2.2.1 主程序模块:void main() 初始化; do 接受命令; 处理命令; while(命令!=退出);2.2.2 查询航线模块实现查询功能void findFlight() 提示输入要查询航线的终点站名; 如果存在该航线,则输出该航线信息; 否则提示不存在该航线;2.2.3 承办检票业务模块实现检票功能void dingpiao() 提示输入航班号和检票数; 若不存在该航班号,则提示不存在该航线; 否则 如果有余票,则办理业务; 否则提示没有足够的余票,询问是否候补; 若是,则排队候补; 2.2.4 承办退票业务模块实现退票功能void tuipiao() 提示输入航班号和飞行周日; 确认航班号和飞行周日都存在,并且客户有检票, 则 执行退票; 为排队候补的客户办理检票业务; 否则 提示有误 2.3 测试用例设计2.3.1 航线3条:1001 hp001 shanghai 2 50 1002 hp002 beijing 5 50 1003 hp003 guangzhou 7 502.3.2 查询航线:shanghai 2.3.3 承办检票业务:航班号1001 数额30 姓名chengangjie 舱位等级22.3.4 承办检票业务:航班号1001 数额23 姓名zhenxi 舱位等级32.3.5 承办退票业务:姓名chengangjie 航班号1001 飞行周日22.3.6 查询航线:终点站名:shanghai3 调试分析3.1 本次的设计比较困难,需要实现较多的功能,所以在调试过程中不太顺利,主要是指针的修改。经过反复调试以后才得以解决。3.2 本程序航线采用数组的存储结构,每条航线包含8个域,其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向对头和对尾的指针。3.3 检票函数是在退票业务模块中使用4 经验和体会通过这次的程序设计,进一步理解了链表和队列结构的实现和应用。尤其需要注意的是:对于指针的修改要仔细,否则会发生意想不到的结果。5 源程序清单和运行结果5.1 程序清单#include#include#include#include#include#define FLIGHT_NUM 100/航线最大数量typedef struct Al_Custom /已检票客户char name15;/姓名int count;/检票量int level;/舱位等级Al_Custom *next;/下一节点指针Al_Custom,*Al_CustomLink;typedef struct Wait_Custom/等候替补的客户char name15;/姓名int count;/所需票量Wait_Custom *next;/下一节点指针Wait_Custom;typedef struct Wait_Queue/等待队列Wait_Custom *front;/队列头指针Wait_Custom *rear;/尾指针Wait_Queue;typedef struct Flight/航线char terminus15;/终点站名char flight_no10;/航班号char plane_no10;/飞机号int week;/飞行周日int count;/乘客定额int rest;/余票量Al_CustomLink Al_link;/指向成员名单链表的头指针Wait_Queue wait_queue;/等待替补队列Flight;void Custom_init(Al_CustomLink &L)L=new Al_Custom;L-next=0;void Custom_insert(Al_CustomLink &L,Al_Custom& custom)Al_Custom *p=L,*newnode=new Al_Custom;memcpy(void*)newnode,&custom,sizeof(Al_Custom);newnode-next=p-next;p-next=newnode;void copyCustomLink(Al_CustomLink &dest,Al_CustomLink &source)/复制已检票客户链表Al_CustomLink p=source;Al_CustomLink q;Al_Custom *pnew;Custom_init(dest);q=dest;while(p-next)pnew=new Al_Custom;memcpy(pnew,p-next,sizeof(Al_Custom);pnew-next=0;q-next=pnew;q=pnew;p=p-next;void Waiter_init(Wait_Queue &Q)Q.front=Q.rear=new Wait_Custom;Q.front-next=0;void Waiter_En(Wait_Queue &Q,Wait_Custom& custom)Wait_Custom *newnode=new Wait_Custom;memcpy(newnode,&custom,sizeof(Wait_Custom);newnode-next=0;Q.rear-next=newnode;Q.rear=newnode;bool Waiter_De(Wait_Queue &Q,Wait_Custom& custom)if(Q.rear=Q.front)return false;memcpy(&custom,Q.front,sizeof(Wait_Custom);Wait_Custom *p=Q.front-next;Q.front-next=p-next;if(Q.rear!=Q.front)Q.rear=Q.front;delete p;custom.next=0;return true;void copyWait_Queue(Wait_Queue &dest,Wait_Queue& source)/复制等待队列Wait_Custom *p=source.front;Waiter_init(dest);while(p-next)Waiter_En(dest,*p);p=p-next;int flight_no;/航线数量Flight flightFLIGHT_NUM;/航线数组void initFlight(Flight &f)/初始化一条航线char ch=0;strncpy(char*)&f,&ch,sizeof(Flight);Custom_init(f.Al_link);Waiter_init(f.wait_queue);void initFlight()/初始化航线数组flight_no=0;char ch=0;strncpy(char*)flight,&ch,FLIGHT_NUM*sizeof(Flight);for(int i=0;iFLIGHT_NUM;i+)Custom_init(flighti.Al_link);Waiter_init(flighti.wait_queue);void insertFlight(Flight& f)/按终点站名有序插入航线到航线数组int i=-1;while(i+1=i+1;j-)memcpy(void*)(&(flightj+1),(void*)(&(flightj),sizeof(Flight);memcpy(void*)(&(flighti+1),(void*)(&f),sizeof(Flight);Custom_init(flighti+1.Al_link);Waiter_init(flighti+1.wait_queue);copyCustomLink(flighti+1.Al_link,f.Al_link);copyWait_Queue(flighti+1.wait_queue,f.wait_queue);flight_no+;void init()int m;coutm;for(int i=1;i=m;i+)Flight f;initFlight(f);cout输入第i条航线:endl;coutf.flight_no;coutf.plane_no;coutf.terminus;coutf.week;coutf.count;f.rest=f.count;insertFlight(f);printf(n);int findbyname(char terminus15)/根据终点站名查找for(int i=0;iflight_no;i+)if(strcmp(flighti.terminus,terminus)=0)return i;return -1;int findbyno(char no10)/根据航班号查找for(int i=0;iflight_no;i+)if(strcmp(flighti.flight_no,no)=0)return i;return -1;void findFlight()/查询航线子模块char terminus15;coutterminus;int index=findbyname(terminus);if(index=-1)printf(该航线不存在!n);return ;coutsetw(12)航班号setw(12)飞机号setw(12)飞行周日setw(12)余票额endl;coutsetw(12)flightindex.flight_nosetw(12)flightindex.plane_nosetw(12)flightindex.weeksetw(12)flightindex.restendlnext-count=flightindex.count)cout为next-name办理检票手续count=p-next-count;flightindex.rest-=p-next-count;strcpy(pnew-name,p-next-name);docout请next-namepnew-level;while(pnew-levellevel3);pnew-next=flightindex.Al_link-next;flightindex.Al_link-next=pnew;Wait_Custom *q=p-next;p-next=q-next;if(flightindex.wait_queue.rear=q)flightindex.wait_queue.rear=p;delete q;void dingpiao()/承办检票业务子模块char no10;/航班号int count;/检票量coutnocount;int index=findbyno(no);if(index=-1)cout该航线不存在=count)/尚有余票Al_Custom *pnew=new Al_Custom;coutpnew-name;coutpnew-level;pnew-count=count;pnew-next=0;flightindex.rest-=count;pnew-next=flightindex.Al_link-next;flightindex.Al_link-next=pnew;else/没有余票cout该航班的余票额不能满足您的要求,是否排队候补(y/n):;cout.flush();char select;doselect=getch();while(select!=y & select!=n);if(select=y)/排队候补Wait_Custom *pnew=new Wait_Custom;coutendl;coutpnew-name;pnew-count=count;pnew-next=0;flightindex.wait_queue.rear-next=pnew;fli
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:vc++航空检票系统
链接地址:https://www.renrendoc.com/p-58728600.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!