数据结构课程设计-飞机订票系统_第1页
数据结构课程设计-飞机订票系统_第2页
数据结构课程设计-飞机订票系统_第3页
数据结构课程设计-飞机订票系统_第4页
数据结构课程设计-飞机订票系统_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

摘要随着时代得进步社会分工得不断细化,各个行业联系得不断密切,人们出行越来越多,出行得方式也就是百花齐放,作为空中重要得交通工具,飞机航空系统也在不断地得到优化,其中重要得一项就就是航空飞机订票系统,因此好得订票系统关系着人们得日常出行方便与否,设计并编制出符合人们需要得航空订票系统就是一项繁重而艰巨得任务。本文MicrosoftVisualC6、0作为程序代码得实现软件,进行飞机订票系统得数据结构课程设计。首先,根据课程设计内容进行需求分析,确定主要得功能模块,。然后进行数据结构、各功能模块算法以及它们之间得调用关系得概要设计,做出各信息模块得数据结构表,并给出所用得结构体与结点类型.在此基础上,进行各功能模块得详细算法设计,做出各算法得流程图.最后,对系统进行测试,分为合法数据测试与非法数据测试,并对测试结果截图保存。本系统包含录入航班信息、订票、退票、查询航班信息、查询订票信息、修改航班信息与退出系统7个基本功能,经测试后健壮性良好。关键词 飞机订票系统;数据结构;C语言;单链表i目ﻩ录HYPERLINK\l”page3”1HYPERLINK\l”page3”问题背景、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l"page3”1HYPERLINK\l”page3”2page4"3HYPERLINK\l”page4"需求分析、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l”page4"2HYPERLINK\l”page4”3、1HYPERLINK\l"page4"用户需求分析、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l"page4"2HYPERLINK\l"page4"3、2HYPERLINK\l"page4”功能需求分析、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l”page4"2HYPERLINK\l"page5”3、3HYPERLINK\l”page5"系统需求分析、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l"page5"3HYPERLINK\l"page5"4HYPERLINK\l"page5"逻辑设计、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l"page5”3HYPERLINK\l”page5"4、1HYPERLINK\l”page5"数据结构、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l"page5"3HYPERLINK\l”page7"4、2HYPERLINK5HYPERLINK详细设计、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK顾客订票模块、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l"page10"8HYPERLINK\l"page10”5、3HYPERLINK\l"page10"顾客退票模块、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l”page10”8HYPERLINK\l"page11"5、4HYPERLINK\l”page11"查询航班模块、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l”page11”9HYPERLINK查询订单模块、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l"page11”9HYPERLINK\l"page11"5、6HYPERLINK修改航班模块、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l”page11”9HYPERLINK\l"page13”6HYPERLINK\l”page13"程序调试与测试、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l”page13”11HYPERLINK\l"page13”6、1HYPERLINK\l”page13”合法数据测试结果、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l”page13”11HYPERLINK\l"page15”6、2HYPERLINK\l”page15"非法数据测试结果、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、7HYPERLINK\l”page17"结果分析、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l"page17"15HYPERLINK\l"page17"7、1HYPERLINK\l"page17"输入、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l”page17"15HYPERLINK\l"page17”7、2HYPERLINK\l”page17”输出、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINKHYPERLINK\l”page18"16HYPERLINK\l”page18"参考文献、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、HYPERLINK\l"page18"16ii1ﻩ问题背景订票系统就是一种新兴得现代商务方式,近几年来得到了迅速发展,显现了巨大得现代商业价值。有理由相信,订票系统将逐渐方便盛会生活,也将成为数字化社会得一种重要体现。它改变了传统得买卖双方面堆满得交流方式,也打破了旧有工作经营模式,它通过网络使航空公司面对整个世界,为用户提供每周7天,每天24小时得全天候服务。网上订票得规模正在逐年迅速增长,它带来得商机就是巨大而深远得。订票系统研究得主攻方向就是通过公共计算机通信网络进行网上订票活动,突破传统商务在时间、地域上得限制,成为方便、快捷、安全可靠得新兴电子化商务活动模式.就是网上订票活动更安全、可靠、快速、明确与方便.对航空公司来说,航空订票管理系统既能扩大服务范围,扩大公司影响,减少营业费用,又对稳固航空公司得客源有着重要得辅助作用;站在旅客得角度,航空公司提供得这种服务提供了更多得方便,节省了很多时间.建设航空订票管理系统就是体现与提高航空公司领导业绩得一条捷径。2ﻩ问题分析通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线得情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班就是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。修改航班信息:当航班信息改变可以修改航班数据文件13 需求分析3、1用户需求分析用户使用此程序所要完成得工作主要为:录入与查询所有航线信息、查瞧已订票客户信息、查询航线、办理订票业务、办理退票业务。通过此系统可以方便得进行上述工作。每条航线所涉及得信息有:终点站名、航班号、飞行时间、票价、乘员定额、余票量。已订票得客户名单信息包括姓名、订票量、舱位等级(1,2或3)。等候替补得客户名单信息包括姓名、所需票量。查询航线功能可以根据旅客提出得终点站名输出航班号、飞行时间、票价、乘员定额、余票量。订票业务功能根据客户提出得要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求。若需要,可登记排队候补购票。退票业务功能根据客户提供得情况(航班号、姓名)为客户办理退票手续,然后查询该航班就是否有人排队候补,首先询问排在第一得客户,若所退票额能满足她得要求,则为她办理订票手续,否则依次询问其她排队候补得客户.3、2ﻩ功能需求分析1、 功能模块说明:将航班得基本信息录入到系统中。根据航班号或者根据起飞地点、降落地点查询所需航班信息。输入姓名与所要订航班得航班号订票.输入姓名与所订航班得航班号办理退票。输入航班号,修改该航班得起飞与降落时间以修改航班得起降时间。退出得同时将信息写入文件。2、订票系统功能图2订票系统录办办查查航退入理理询询班出航订退航订信系班票票班单息统信业业信信修息务务息息改图3、1订票系统结构图3、3系统需求分析开发环境:PC机,Windows7系统运行软件:MicrosoftVisualC6、04ﻩ逻辑设计数据结构航班得信息:航班得情况存储结构采用单链表,每个元素表示一个航班得情况,包括航班号、起飞时间、降落时间、起飞城市、抵达城市、航班票价、票价折扣、确定航班就是否满仓与空座数九个数据项:3、1航班信息得数据结构表数据项数据类型航班号字符串(char)起飞时间字符串(char)降落时间字符串(char)起飞城市字符串(char)抵达城市字符串(char)航班就是否满仓整型(int)空座数整型(int)票价浮点数(float)票价折扣浮点数(float)typedefstructpassengernode{//定义客户资料结点charname[20];//姓名charID_num[20];//证件号charflight_num[10];//航班号intorder_num;//订单号intticket_num;//订票数量structpassengernode*next;//指向下一个结点}passengernode;3客户链表:每个数据元素包括头指针与尾指针两个数据项:每个结点包括两个指针域:C语言描述如下:typedefstructpassengerList{passengernode*head;passengernode*rear;}passengerList;4、2各功能模板函数之间得调用关系。4、3函数说明voidinit_flight(flightnode*&h):要建立一个以h为头结点得空链表,录入航班信息与增加航班后将航班结点插入该链表。voidinit_passengerList(passengerList*&pList):建立一个带有头指针与尾指针得空链表,存储带有顾客信息得结点。头指针域尾指针域voidsave_flight(flightnode*h):保存航班信息到指定数据文件中。voidload_flight(flightnode*&h):从存储航班信息得文件导入航班信息到航班链表中。voidsave_passenger(passengerList*PList):保存客户信息到指定数据文件中.voidload_passenger(passengerList*&PList):从存储客户信息得文件导入客户信息到客户链表中。voidadd_flight(flightnode*&h):录入航班信息后调用insert_flight函数增加班。voidinsert_flight(flightnode*&h,char*flight_num,char*start_place,char*end_place,char*start_time,char*end_time,intleft,floatprice,floatprice_discount,intisFull):在录入航班情况或增加新得航班后,将新得航班结点插入到航线链表中。intbook(flightnode*&l,passengerList*&PList):要完成客户订票,将客户结点插入客户链表中,并修改相应得航班信息。voidinsert_passengerList(flightnode*&h,passengerList*&PList,char*name,char*ID_num,char*flight_num,intticket_num):在顾客订票后,将该顾客结点插入到顾客链表中,并修改相应得航班信息。voidfind_same_flight(flightnode*l,char*flight_num):在客户订票时,当客户输入得航班号对应得航班已满仓时,提供其她可选航班并输出显示。voidcancel(passengerList*&PList,flightnode*&h):完成客户退票,将客户得订单从客户链表中删除,并修改相应得航班信息。intdelete_passenger(passengerList*&PList,flightnode*&h,char*name,char*ID_num):按照要退票得顾客得姓名与证件号查找该顾客结点,进行删除操作.voidflight_check(flightnode*h):选择使用何种方式对航班信息进行查询。voidcheck_all_flight(flightnode*l):浏览所有航班信息.intplace_check(flightnode*l,char*start_place,char*end_place):按照起飞抵达城市查询航班信息.intflight_num_check(flightnode*l,char*flight_num):按照航班号查询航班信息。voidpassenger_check(passengerList*PList):选择使用何种方式对订单信息进行查询。voidcheck_all_passenger(passengerList*PList):浏览所有订单信息。intorder_num_check(passengerList*PList,intorder_num):按订单号查询订单信息。intID_name_check(passengerList*PList,char*name,char*ID_num):按客户姓名与证件号查询订单信息。voidmodify_flight(flightnode*&h,passengerList*&PList):修改航班信息,包括添加航班信息,删除航班信息,修改航班起飞抵达时间。voiddelete_flight(flightnode*&h,passengerList*&PList):按照某个航班号删除航班结点。5详细设计5、1录入航班信息在主函数中输入“1”,调用voidadd_flight(flightnode*&h)函数,此函数将航班指针*p指向已存在航班链表*h得头结点,利用for(;p->next!=NULL;p=p—>next){}使*p指向航线链表得最后一个结点,然后让用户输入航班信息,然后调用voidinsert_flight(flightnode*&h,char*flight_num,char*start_place,char*end_place,char*start_time,char*end_time,intleft,floatprice,floatprice_discount,intisFull)函数,用malloc函数申请一个航班结点,并用指针*q指向,将航班信息赋到新申请得结点中,p—>next=q;p=p—〉next;该操作将该结点插入航班链表中。流程图如下5、2顾客订票模块在主函数中输入“2”,调用intbook(flightnode*&h,passengerList*&PList)函数完成客户得订票。用航班指针*p指向已存在航班链表*h得头结点得下一个结点,请客户输入起飞抵达城市,分别存于start_place与end_place中。调用intplace_check(flightnode*l,char*start_place,char*end_place)函数,如果函数返回“1”则请客户输入要订得航班号,如果输入得航班号不存在,输出提示信息,如果航班存在则提示客户输入订得票数、客户得姓名与证件号,调用voidinsert_passengerList(flightnode*&h,passengerList*&PList,char*name,char*ID_num,char*flight_num,intticket_num)函数,定义航班指针*p=h->next,使用for循环匹配flight_num与p->flight_num,找到后,执行p->left=p-〉left—ticket_num,修改相应航班得空座数。用malloc函数申请一个客户结点,并用指针*q指向,将客户信息与航班号赋到新申请得结点中,PList-〉rear-〉next=q;PList—〉rear=q;该操作将该结点插入客户链表中。如果该航班已满仓或该航班得空座数不够,输出可供选择得航班,让客户选择,之后调用voidinsert_passengerList(flightnode*&h,passengerList*&PList,char*name,char*ID_num,char*flight_num,intticket_num)函数将客户结点插入客户链表中、5、3顾客退票模块在主函数中输入“3”,调用voidcancel(passengerList*&PList,flightnode*&h)函数完成客户得退票.提示客户输入客户得姓名与证件号以及要退得航班号,此函数再调用intdelete_passenger(passengerList*&PList,flightnode*&h,char*name,char*ID_num,char*flight_num)函数,用客户结点指针*pr等于已存在客户链表结点Plist得头指针,相当于将*pr指向客户链表得头结点,用客户结点指针*p指向pr得下一个结点。使用while循环寻找匹配姓名、证件号、航班号得客户结点,找到后定义航班指针*f=h->next,使用for循环找到匹配航班号得航班结点,执行f—>left=f->left+p-〉ticket_num,修改退票后相应航班结点得空座数,之后执行pr-〉next=p—>next;free(p);删除要退票得客户订单信息。如果没有找到匹配得客户结点,输出提示信息、5、4查询航班模块在主函数中输入“4",调用voidflight_check(flightnode*h)函数选择使用哪一种查询方式进行查询。提示客户输入查询方式,如客户输入“1”,则调用intflight_num_check(flightnode*l,char*flight_num)函数按航班号对航班进行查询,提示客户输入航班号,存于flight_num中;如客户输入“2”,则调用intplace_check(flightnode*l,char*start_place,char*end_place)函数按起飞抵达城市对航班进行查询,提示客户输入起飞抵达城市,分别存于start_place与end_place中;如客户输入“3”,则调用voidcheck_all_flight(flightnode*l)函数浏览全部航班信息。在intflight_num_check(flightnode*l,char*flight_num)函数中,定义航班指针*p=h,使用for循环匹配flight_num与p->flight_num,找到匹配得航班节点后,输出该航班得所有信息。在intplace_check(flightnode*l,char*start_place,char*end_place)函数中,定义航班指针*p=h,使用for循环寻找匹配start_place与start_place得结点,找到匹配得航班结点后,输出该航班得所有信息。在voidcheck_all_flight(flightnode*l)函数中,定义航班指针*p=h,使用for循环输出所有航班信息。5、5查询订单模块在主函数中输入“5”,调用voidpassenger_check(passengerList*PList)函数选择使用哪一种查询方式进行查询.提示客户输入查询方式,如客户输入“1",则调用intID_name_check(passengerList*PList,char*name,char*ID_num)函数按客户得姓名与证件号对订单进行查询,提示客户输入姓名与证件号,分别存于name与ID_num中;如客户输入“2”,则调用intorder_num_check(passengerList*PList,intorder_num)函数按订单号对订单进行查询,提示客户输入订单号,存于order_num中;如客户输入“3”,则调用voidcheck_all_passenger(passengerList*PList)函数浏览全部订单信在intID_name_check(passengerList*PList,char*name,char*ID_num)函数中,定义客户指针*p=PList-〉head—>next,使用for循环寻找匹配name与ID_num得结点,找到匹配得订单节点后,输出该订单得所有信息。在intorder_num_check(passengerList*PList,intorder_num)函数中,定义客户指针*p=PList—>head->next,使用for循环寻找匹配order_num得结点,找到匹配得订单结点后,输出该订单得所有信息.在voidcheck_all_passenger(passengerList*PList)函数中,定义客户指针*p=PList->head—>next,使用for循环输出所有订单信息.5、6修改航班模块在主函数中输入“6”,调用voidmodify_flight(flightnode*&h,passengerList*&PList)函数对航班信息进行修改。提示客户输入修改模式,如客户输入“1",则调用voidadd_flight(flightnode*&h)函数添加航班信息;如客户输入“2”,则调用voiddelete_flight(flightnode*&h,passengerList*&PList)函数删除指定得航班信息,提示客户输入航班号,存于flight_num中;如客户输入“3”,则示客户输入航班号,如果该航班号存在,则提示用户输入修改后得起飞抵达时间.在voiddelete_flight(flightnode*&h,passengerList*&PList)函数中,定义航班指针*pr=h,定义航班指针p=pr—>next,定义客户指针*qr=PList->head,定义客户指针*q=qr—〉next。使用while循环寻找匹配航班号得航班结点,找到后执行pr->next=p->next;free(p),删除指定得航班信息;使用while循环找到匹配航班号得订单结点,执行qr-〉next=q—>next;free(q),删除对该航班订票得订单信息。如果没有找到匹配得航班结点,输出提示信息。6、1合法数据测试结果(1)编译链接后显示菜单(2)输入菜单号“1”,开始信息得录入输入菜单号“2”,进入订票模块输入菜单号“3",进入退票模块输入菜单号“4”,查询航班信息输入菜单号“1”,按航班号查询航班信息b、输入菜单号“2”,按起飞抵达城市查询航班信息c、输入菜单号“3”,浏览全部航班信息输入菜单号“5”,查询订单信息输入菜单号“1",按客户姓名与证件号查询订单信息b、输入菜单号“2",按订单号查询订单信息c、输入菜单号“3”,浏览全部订单信息(7)输入菜单号“6”,进入修改模块a、输入菜单号“1”,增加航班b、输入菜单号“2”,删除航班c、输入菜单号“3”,修改航班时间6、2非法数据测试结果(1)选择订票服务后,输入了没有开通航班得城市(2)选择订票服务后,输入了系统中没有得航班号(4)选择退票服务后,输入了没有订票得客户姓名与证件号(5)选择删除航班服务后,输入了系统中不存在得航班号(5)选择航班查询服务后,输入了没有开通航班得城市(6)选择航班查询服务后,输入了系统中不存在得航班号(7)选择订单查询服务后,输入了没有订票得客户姓名与证件号(8)选择订单查询服务后,输入了系统中不存在得订单号(9)选择修改航班时间服务后,输入了系统中不存在得航班号#include〈stdio、h>#include〈stdlib、h〉#include<string、h〉#include<conio、h>typedefstructflightnode{charflight_num[10];charstart_time[10];charend_time[10];charstart_place[20];charend_place[20];intleft;floatprice;floatprice_discount;intisFull;structflightnode*next;}flightnode;typedefstructpassengernode{charname[20];charID_num[20];charflight_num[10];intorder_num;intticket_num;structpassengernode*next;}passengernode;typedefstructpassengerList{ passengernode*head; passengernode*rear;}passengerList;voidinit_flight(flightnode*&h){ﻩh=(flightnode*)malloc(sizeof(flightnode));ﻩif(h==NULL)exit(0);ﻩh->next=NULL;}voidinit_passengerList(passengerList*&pList){ﻩpList=(passengerList*)malloc(sizeof(passengerList)); pList—>head=(passengernode*)malloc(sizeof(passengernode)); pList->rear=pList-〉head; pList->rear->order_num=0; pList->head—〉next=NULL;}voidsave_passenger(passengerList*PList){ FILE*fp=fopen(”passenger、dat",”wb");ﻩif(fp==NULL) return;ﻩpassengernode*temp=PList-〉head-〉next; while(temp!=NULL)ﻩ{ﻩfwrite(temp,sizeof(passengernode),1,fp);ﻩtemp=temp->next;ﻩ}; fclose(fp); }voidload_passenger(passengerList*PList) { FILE*fp=fopen(”passenger、dat","rb");ﻩif(fp==NULL)ﻩreturn; passengernode*q; intn;ﻩwhile(!feof(fp))ﻩ{ q=(passengernode*)malloc(sizeof(passengernode));ﻩn=fread(q,sizeof(passengernode),1,fp); if(n!=1)ﻩbreak; PList—>rear->next=q; PList->rear=q;ﻩ} PList->rear-〉next=NULL;ﻩfclose(fp);}voidsave_flight(flightnode*h){ FILE*fp=fopen("flightList、dat","wb”);ﻩif(fp==NULL) return; flightnode*temp=h—>next; while(temp!=NULL) { fwrite(temp,sizeof(flightnode),1,fp);ﻩtemp=temp->next;ﻩ};ﻩfclose(fp);}voidload_flight(flightnode*&h){ flightnode*pt=h; FILE*fp=fopen("flightList、dat","rb");ﻩif(fp==NULL)ﻩreturn; flightnode*q; intn; while(!feof(fp)) { q=(flightnode*)malloc(sizeof(flightnode));ﻩn=fread(q,sizeof(flightnode),1,fp);ﻩif(n!=1) break;ﻩpt->next=q;ﻩpt=q;ﻩ} pt—>next=NULL;ﻩfclose(fp);}intfind_same_flight(flightnode*h,char*flight_num){flightnode*t=h-〉next,*p=h->next;intmark=0;printf(”%—8s%-12s%-12s%—10s%-10s%—8s%—6s%-10s%-8s\n","航班号”,"起飞城市”,”抵达城市","起飞时间”,”抵达时间",”价格”,"折扣","就是否满仓”,”空座数");while(t!=NULL&&strcmp(t-〉flight_num,flight_num)!=0)t=t->next;while(p!=NULL){if((strcmp(t->start_place,p-〉start_place)==0)&&(strcmp(t->end_place,p—>end_place)==0)&&(strcmp(t->flight_num,p->flight_num)!=0)){printf(”%—8s%-12s%-12s%-10s%—10s%-8、2f%-6、2f%-10d%-8d\n",p—〉flight_num,p->start_place,p—〉end_place,p—>start_time,p->end_time,p-〉price,p->price_discount,p—>isFull,p-〉left);mark=1;}p=p-〉next;}if(mark==0){printf(”\t\t抱歉,没有可选得航班!\n”);return0;}return1;}voidinsert_flight(flightnode*&h,char*flight_num,char*start_place,char*end_place,char*start_time,char*end_time,intleft,floatprice,floatprice_discount,intisFull){flightnode*q;flightnode*p=h;q=(flightnode*)malloc(sizeof(flightnode));strcpy(q—>flight_num,flight_num);strcpy(q->start_place,start_place);strcpy(q->end_place,end_place);strcpy(q—>start_time,start_time);strcpy(q-〉end_time,end_time);q—>left=left;q—〉price=price;q-〉price_discount=price_discount;q-〉isFull=isFull;q-〉next=p—〉next;p->next=q;p=p—〉next;}voidinsert_passengerList(flightnode*&h,passengerList*&PList,char*name,char*ID_num,char*flight_num,intticket_num){flightnode*p=h->next;for(;p!=NULL;p=p->next)if(strcmp(p—>flight_num,flight_num)==0){p—〉left=p->left-ticket_num;if(p-〉left==0)p—〉isFull=1;}passengernode*q=(passengernode*)malloc(sizeof(passengernode));//新建结点,存放新得客户订单信息strcpy(q—〉name,name);strcpy(q->ID_num,ID_num);strcpy(q->flight_num,flight_num);q-〉ticket_num=ticket_num;q—〉next=NULL;PList—>rear->next=q;q—〉order_num=PList->rear—>order_num+1;PList-〉rear=q;}voiddelete_flight(flightnode*&h,passengerList*&PList){flightnode*p,*pr;passengernode*q,*qr;charflight_num[10];intmark=1;qr=PList->head;q=qr->next;pr=h;p=pr->next;printf(”\t\t请输入您要删除得航班号:");scanf("%s",flight_num);while(p!=NULL){if(strcmp(flight_num,p—>flight_num)==0){pr->next=p-〉next;free(p);printf("\t\t删除%s航班成功!\n",flight_num);mark=0;p=NULL;}if(pr—>next!=NULL){pr=pr->next;p=pr-〉next;}}if(mark==1)printf("\t\t无此航班,无法删除!\n");else{while(q!=NULL){if(strcmp(flight_num,q->flight_num)==0){qr->next=q—>next;free(q);q=NULL;}if(qr->next!=NULL){qr=qr—>next;q=qr—>next;}}}}intdelete_passenger(passengerList*&PList,flightnode*&h,char*name,char*ID_num){passengernode*p,*pr=PList-〉head;p=pr->next;while(p!=NULL){if(strcmp(name,p->name)==0&&strcmp(ID_num,p->ID_num)==0){for(flightnode*f=h—〉next;f!=NULL;f=f-〉next)if(strcmp(p—〉flight_num,f->flight_num)==0){f—>left=f—>left+p->ticket_num;f-〉isFull=0;break;}pr—〉next=p->next;free(p);printf("\t\t顾客%s,%s退票成功!\n",name,ID_num);return1;}pr=pr->next;p=pr—〉next;}printf("\t\t无此顾客,无法退票!\n”);return0;}voidadd_flight(flightnode*&h){flightnode*p=h;charflight_num[10],start_time[10],end_time[10],start_place[20],end_place[20];intleft,isFull,mark=1;floatprice,price_discount;for(;p—〉next!=NULL;p=p—>next){}while(mark==1){printf(”\t\t请输入您要增加得航班号:");scanf("%s",flight_num);printf(”\t\t请输入出发地:");scanf("%s”,start_place);printf(”\t\t请输入目得地:");scanf(”%s”,end_place);printf(”\t\t请输入起飞时间:");scanf("%s”,start_time);printf(”\t\t请输入抵达时间:");scanf(”%s",end_time);printf(”\t\t请输入票价:”);scanf(”%f”,&price);printf(”\t\t请输入折扣:");scanf("%f”,&price_discount);printf(”\t\t请输入剩余座位数:”);scanf("%d”,&left);printf(”\t\t请输入就是否满仓(0表示没有满仓1以满仓):");scanf("%d",&isFull);insert_flight(p,flight_num,start_place,end_place,start_time,end_time,left,price,price_discount,isFull);printf("\t\t增加航班%s成功!\n”,flight_num);printf("\t\t就是否继续录入航班信息(1表示继续录入;0表示停止录入)、\n”);printf("\t\t请输入:”);scanf("%d”,&mark);}}intflight_num_check(flightnode*h,char*flight_num){flightnode*p=h;printf("%-8s%—12s%-12s%—10s%—10s%-8s%-6s%—10s%—8s\n",”航班号",”起飞城市",”抵达城市","起飞时间”,"抵达时间”,”价格”,"折扣”,"就是否满仓","空座数");for(;p!=NULL;p=p->next){if(strcmp(p->flight_num,flight_num)==0){printf(”%-8s%—12s%—12s%-10s%—10s%-8、2f%-6、2f%-10d%—8d\n”,p-〉flight_num,p-〉start_place,p-〉end_place,p-〉start_time,p—>end_time,p->price,p—〉price_discount,p->isFull,p-〉left);return1;}}printf(”\t\t抱歉,没有航班号为%s得航班信息!\n",flight_num);return0;}intplace_check(flightnode*h,char*start_place,char*end_place){flightnode*p=h;intmark=0;printf(”%-8s%—12s%—12s%—10s%—10s%—8s%—6s%—10s%-8s\n”,"航班号",”起飞城市",”抵达城市",”起飞时间","抵达时间",”价格”,"折扣","就是否满仓”,”空座数");for(;p!=NULL;p=p->next){if(strcmp(p-〉start_place,start_place)==0&&strcmp(p—〉end_place,end_place)==0){printf("%—8s%—12s%-12s%-10s%—10s%-8、2f%—6、2f%—10d%-8d\n",p-〉flight_num,p->start_place,p-〉end_place,p-〉start_time,p->end_time,p—>price,p—>price_discount,p->isFull,p-〉left);mark=1;}}if(mark==0){printf("\t\t抱歉,没有从%s到%s得航班信息!\n”,start_place,end_place);return0;}return1;}voidcheck_all_flight(flightnode*h){flightnode*p=h;intm=0;printf("%-8s%—12s%-12s%-10s%—10s%—8s%-6s%—10s%-8s\n”,"航班号","起飞城市","抵达城市",”起飞间”,"抵达时间",”价格","折扣”,"就是否满仓","空座数");for(;p!=NULL;p=p->next){printf(”%—8s%-12s%-12s%-10s%-10s%-8、2f%-6、2f%-10d%-8d\n",p—>flight_num,p->start_place,p->end_place,p->start_time,p—〉end_time,p-〉price,p->price_discount,p->isFull,p->left);m=1;}if(m==0)printf("\t\t航班信息为空!\n");}voidflight_check(flightnode*h){flightnode*p=h-〉next;charflight_num[10],start_place[20],end_place[20];chara;printf("\t\t请选择航班查询方式:\n”);printf("\t\t1表示按航班号进行查询;\n");printf("\t\t2表示按起飞抵达城市进行查询;\n");printf("\t\t3表示浏览全部航班信息、\n\t\t请选择输入:”);a=getch();printf(”%c\n”,a);if(a==’1’){printf(”\t\t请输入航班号:");scanf("%s",flight_num);flight_num_check(p,flight_num);}elseif(a=='2'){printf("\t\t请输入起飞城市:");scanf("%s",start_place);printf(”\t\t请输入抵达城市:");scanf("%s",end_place);place_check(p,start_place,end_place);}elseif(a=='3’)check_all_flight(p);elsereturn;}intID_name_check(passengerList*PList,char*name,char*ID_num){passengernode*p=PList->head—>next;intmark=0;printf(”%—8s%—20s%-20s%—10s%—8s%\n”,”订单号","姓名",”证件号”,”航班号","订票数量");for(;p!=NULL;p=p-〉next){if(strcmp(p-〉ID_num,ID_num)==0&&strcmp(p->name,name)==0){printf("%-8d%—20s%-20s%-10s%-8d%\n",p->order_num,p—〉name,p->ID_num,p->flight_num,p->ticket_num);mark=1;}}if(mark==0){printf(”\t\t抱歉,没有%s,%s得订单信息!\n”,name,ID_num);return0;}return1;}intorder_num_check(passengerList*PList,intorder_num){passengernode*p=PList->head-〉next;printf("%-8s%—20s%-20s%—10s%—8s%\n”,"订单号","姓名","证件号”,"航班号",”订票数量");for(;p!=NULL;p=p->next){if(p-〉order_num==order_num){printf("%-8d%-20s%—20s%-10s%-8d%\n",p-〉order_num,p—>name,p->ID_num,p—>flight_num,p-〉ticket_num);return1;}}printf(”\t\t抱歉,没有订单号为%d得订单信息!\n”,order_num);return0;}voidcheck_all_passenger(passengerList*PList){passengernode*p=PList—>head->next;intm=0;printf(”%-8s%-20s%—20s%-10s%—8s%\n",”订单号",”姓名”,"证件号","航班号","订票数量");for(;p!=NULL;p=p-〉next){printf("%-8d%—20s%-20s%—10s%-8d%\n",p—>order_num,p-〉name,p—>ID_num,p->flight_num,p-〉ticket_num);m=1;}if(m==0)printf("\t\t订单信息为空!\n");}voidpassenger_check(passengerList*PList){charname[20],ID_num[15];intorder_num;chara;printf("\t\t请选择订单查询方式:\n");printf("\t\t1表示按客户姓名与证件号进行查询;\n");printf("\t\t2表示按订单号进行查询;\n");printf(”\t\t3表示查瞧全部订单信息、\n\t\t请选择输入:");a=getch();printf(”%c\n",a);if(a==’1'){printf(”\t\t请输入客户姓名:");scanf(”%s”,name);printf("\t\t请输入证件号:”);scanf("%s",ID_num);ID_name_check(PList,name,ID_num);}elseif(a=='2’){printf("\t\t请输入订单号:”);scanf(”%d",&order_num);order_num_check(PList,order_num);}elseif(a=='3')check_all_passenger(PList);elsereturn;}voidmodify_flight(flightnode*&h,passengerList*&PList){flightnode*p=h—〉next;charflight_num[10],start_time[10],end_time[10];chara;printf(”\t\t************航线信息修改*************\n");printf(”\t\t*************************************\n”);printf(”\t\t*增加航班———--—-1*\n");printf("\t\t*删除航班--—-——-2*\n");printf(”\t\t*修改航班时间—--3*\n");printf(”\t\t*************************************\n");printf("\t\t请选择:");a=getch();printf(”%c\n”,a);if(a=='1')add_flight(h);elseif(a==’2')delete_flight(h,PList);elseif(a=='3'){printf("\t\t请输入要修改得航班得航班号:");scanf("%s",flight_num);if(flight_num_check(p,flight_num)==1){printf("\t\t请输入修改后得起飞时间:”);scanf(”%s",start_time);printf("\t\t请输入修改后得抵达时间:");scanf("%s”,end_time);for(;p!=NULL;p=p-〉next)if(strcmp(flight_num,p->flight_num)==0){strcpy(p—>start_time,start_time);strcpy(p—>end_time,end_time);printf("\t\t航班%s时间修改成功!\n",flight_num);}}}elsereturn;}intbook(flightnode*&h,passengerList*&PList){charname[20];charID_num[20];charflight_num[10];charstart_place[20];charend_place[20];intticket_num;intk;flightnode*p=h->next;printf(”\t\t请输入信息:\n”);printf("\t\t请输入起飞城市:");scanf("%s",start_place);printf("\t\t请输入抵达城市:”);scanf("%s",end_place);if(place_check(h,start_place,end_place)==1){printf("\t\t航班号:");scanf("%s",flight_num);while(flight_num==NULL){printf(”航班号不能为空!\n");printf(”\t\t航班号:");scanf("%s”,flight_num);}while(p!=NULL){if(strcmp(p->flight_num,flight_num)==0){printf("\t\t姓名:");scanf(”%s",name);printf("\t\t证件号码:");scanf("%s”,ID_num);printf("\t\t订票数量:");scanf("%d”,&ticket_num);while(name==NULL){printf("客户姓名不能为空!\n");printf("\t\t姓名:”);scanf("%s",name);}while(ID_num==NULL){printf(”客户证件号码不能为空!\n");printf("\t\t证件号码:");scanf("%s",ID_num);}while(ticket_num==0){printf("客户订票数量不能为空!\n”);printf("\t\t订票数量:”);scanf("%d”,&ticket_num);}if(p->left>0&&p—>left〉=ticket_num){insert_passengerList(h,PList,name,ID_num,flight_num,ticket_num);printf("\t\t您应付金额¥%6、2f、\n”,p->price*p—>price_discount*ticket_num);

温馨提示

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

评论

0/150

提交评论