航空客运订票系统.doc
《航空客运订票系统.doc》由会员分享,可在线阅读,更多相关《航空客运订票系统.doc(28页珍藏版)》请在咨信网上搜索。
1、课 程 设 计 报 告课程名称 数据结构 课题名称 航空客运订票系统 专 业 通 信 工 程 班 级 学 号 姓 名 指导教师 2013 年 6 月 29 日湖南工程学院课 程 设 计 任 务 书课程名称 数据结构 课 题 航空客运订票系统 专业班级 学生姓名 学 号 指导老师 张鏖烽 田娟秀 李杰君 审 批 任务书下达日期 2013 年 6 月 23 日任 务 完成日期 2013 年 6 月 29 日 目 录1. 需求分析.12. 概要设计.1 2.1 定义“航线”类型.2 2.2 主函数.2 2.3 调用关系.33. 详细设计.3 3.1 航线与客户的存储结构.3 3.2 各个系统模块.3
2、 3.3 算法设计.4 3.4 主函数功能.6 3.5 整个系统的流程图.7 3.6 存储结构设计.74. 调试分析.75. 用户使用说明.86. 测试结果.107. 心得体会.128. 附录.13 课题名称 航空客运订票系统1. 需求分析 航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。【基本要求】(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);(2)系统能实现的操作和功能
3、如下:录入:可以录入航班情况,全部数据可以只放在内存中,最好存储在文件中;查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补;承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。初始化航班信息如下: 通过输入
4、05这六个数字选择相应的操作,如:查询航班,订票,退票等操作;2. 概要设计 两个客户名单可分别由线性表和队列实现。为查找方便,已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。由于预约人数无法预计,队列也应以链表作存储结构。整个系统需汇总各条航线的情况登录在一张线性表上,由于航线基本不变,可采用顺序存储结构,并按航班有序或按终点站名有序。每条航线是这张表上的一个记录,包含上述8个域、其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。注:由于“航线”可只用一条单链表记录,故采用全局变量,减少参数的传递。 2.1定义“航线”类
5、型 ADT Lairline数据对象:D=ai|ai航线链表集,i=1,2,3,n,n=0数据关系:R1=| ai-1,aiD,i=1,2,3,n 基本操作:Lairline search_line()/按航班号查找航班Lairline search_plane()/按飞机号查找航班Lairline search_date()/按飞行日期查找航班Lairline search_addr()/按航班终点查找航班 void boundary()/主菜单界面void insert_line()/插入新航班void print_customer(airline *p)/显示航班客户信息void boo
6、k()/订票系统void waited(airline *p)/排队订票系统void Refund()/退票系统void search()/航班查询系统void InitLine()/初始化航线信息void printline()/显示所有航班信息 ADT Lairline; 2.2 主函数 void main() 初始化; do接受命令; 处理命令(调用相应函数); while(“命令”!=“退出”); 2.3 调用关系 3. 详细分析 3.1航线和客户的存储结构 客户存储结构体 typedef struct customer char name20; /姓名 int num; /订票数量i
7、nt level; /舱位等级customer *next; /指向后继乘客 customer,*Lcustomer; 航线存储结构体 typedef struct airline char ter_address20; /终点站char line_num10; /航班号 char plane_num10; /飞机型号int date; /飞行日期int total; /总人数int remain; /余票数 customer *booked;/已定客户信息customer *wait; /替补客户信息 airline *next; /指向后继航线 airline,*Lairline; 3.2
8、 各个系统模块 (1) 浏览航线模块: 定义void print_customer(airline *p),显示成员的信息;调用void printline()函数输出全部航线信息。 (2) 浏览订票客户信息模块: 定义订票客户信息的结构体customer,根据输入航班号调用search()函数寻找客户信息。 (3) 查询航线模块: 顺着单链表查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功。 (4) 订票模块: 查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功, 否则失败。 (5) 退票模块: 输入要退票的乘客姓名,查找乘客资料的链表中是否有这位乘客,
9、有则删去此节点,并在空位上加1,无则退票失败。如果此时余票额大于等于候补客户的订票数量,那么候补客户订票成功。 3.3 算法设计 1.按照航班查找 Lairline search_line() char a10;airline *p;p=L-next; P(Please input the number of line:); S(%s,a);for(;p;p=p-next)if(!strcmp(a,p-line_num ) break;return p;注:通过建立节点p实现链表的遍历,利用for循环挨个查找,直到找到为止,再返回找到的这个节点,实现传递。 2.订票系统 void book()
10、 int i; int flag=0;airline *p;customer *cst, *c; P(Please choose the way of viewing:n); /查询方式选择P(Thenumberoftheflight=1n); P(The address of the final destination=2n); P(Thedateofthe flight=3n); for(;!flag;) /flag为0时一直在循环S(%d,&i); switch(i) /三种方式查询航班 case 1: p=search_line();flag=1;break; case 2: p=se
11、arch_address();flag=1;break; case 3: p=search_date();flag=1;break; default:P(Wrong!Please input again!n);break; 注:输入1,2,3选择操作方式,先进行查询,在通过调用函数实现购票。 3.初始化航线 void InitLine()/初始化航线信息初始化航线,先建立3条航线方便测试; 4.航班查询 void search()int i;int flag=0;airline *p; P(Please input the way of viewing the flight:n); P(The
12、 number of the flight-1n); /航班号P(The number of the plane-2n); /飞机号码P(The date of the flight-3n); /航班日期P(Thefinaladdressoftheflight-4n); /航班终点S(%d,&i); for(;!flag;) switch(i) /按照选择项进行操作 case 1: p=search_line();flag=1;break;case 2: p=search_plane();flag=1;break;case 3: p=search_date();flag=1;break;cas
13、e 4: p=search_address();flag-=1;break;default:P(Wrong,input again!n);break;if(p)P(终点站 航班号 飞机号 飞行周日 余票量n);P(%-9s%9s%13s%10d%15dn,p-ter_address,p-line_num,p-plane _num,p-date,p-remain);P(Booking the tickets?(Sure,please input 1;Else input any number! );S(%d,&i);if(i=1) book(); Else P(nnnn);boundary();
14、 Else P(The flight is not exist!(_)nnn); void printline()int flag; airline *p;p=L-next;P(终点站 航班号 飞机号 飞行周日 余票量n);for(;p;p=p-next)P(%s%s%s%d%dn,p-ter_address,p-line_num,p-plane_num,p- date,p-remain);P(nnnnn);boundary(); 注:通过输入1,2,3,4进行选择查询的方式,分别为飞机型号,航班 号,目的地位置,飞行日期进行查询。 3.4主函数功能 void main() int flag=
15、1; boundary(); InitLine(); do switch(getchar()case 1:printline();break; /显示所有航线case 2:search();break; /case 3:book();break;case 4:Refund();break;case 5:system(cls); boundary();break; case 0:flag=0;break;while(flag); 包括显示航线,查询信息,订票,退票,清屏这五个功能。 3.5 整个系统的流程图 3.6 存储结构设计: 航班的信息:为了便于查找,航班情况的存储结构采用单链表,每个元素
16、表示一个航班的情况,包括终点站名、航班号、飞机号、星期几、乘员定额和余票量,共六个数据项:终点站名航班号飞机号星期几余票量 4. 调试分析 1、在编程过程中,起先使用的是局部变量,每次调用函数都需要进行参数的传递,很麻烦,而且还容易出现错误;后意识到航线的链表只有一条,很多函数都需要对其数据进行修改,故航线信息采用了全局变量,方便数据的修改,减少 了参数的传递。 2、因为排队订票的客户信息列表没有设置头结点,在退票后询问排队订票客户是否订票时,出现了操作错误,在没有头结点的情况下判断等操作很麻烦,故在 wait(p) 函数里询问排队客户是否订票时,为排队订票的客户信息列表增加了头结点,方便操作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空 客运 订票 系统
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。