数据结构课程设计飞机订票系统设计与实现(里面附有源代码!)_第1页
数据结构课程设计飞机订票系统设计与实现(里面附有源代码!)_第2页
数据结构课程设计飞机订票系统设计与实现(里面附有源代码!)_第3页
数据结构课程设计飞机订票系统设计与实现(里面附有源代码!)_第4页
数据结构课程设计飞机订票系统设计与实现(里面附有源代码!)_第5页
全文预览已结束

下载本文档

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

文档简介

课程设计题目飞机订票系统院系专业姓名学号指导教师2012年7月11需求分析11问题描述基于目前人们外出远行频繁,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序就是要实现航班情况的录入,查询,订票,退票以及航班的查询和修改等基本功能。本课程设计的题目为飞机订票系统。12基本要求121输入的形式和输入值的范围录入航班信息时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为浮点型(FLOAT);还需要输入航班是否满仓,值为整型(INT)(“1”表示已满仓,“0”表示没有满仓);如需要继续录入航班信息,要输入判别信息,值为整型(“1”表示继续录入航班信息,“0”表示停止录入航班信息)。客户订票时,需要输入起飞抵达城市,然后选择航班进行查询,选择航班时需要输入航班号,值为字符串。客户退票时,需要输入姓名,证件号进行退票操作,值为字符串。查询某个航班的情况时,需要输入航班号,值为字符串;在查询某个航线的情况时,还可以通过输入起飞抵达城市来查询,值为字符串。查询某个订单时,需要输入订单号,值为整型(INT);或者需要输入客户姓名和证件号,值为字符串。修改航班时,需要输入字符型数据选择进行何种修改操作;增加航班时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为浮点型(FLOAT)(;还需要输入航班是否满仓,值为整型(INT)“1”表示已满仓,“0”表示没有满仓);如需要继续录入航班信息,要输入判别信息,值为整型(“1”表示继续录入航班信息,“0”表示停止录入航班信息);删除航班时,需要输入要删除的航班的航班号;修改航班时间时,需要输入要修改的航班的航班号,修改后的航班起飞时间和抵达时间。122输出形式在所有操作后的输出中都显示操作是否正确以及操作后单链表的内容。其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。录入航班情况时,输出显示添加航班信息是否成功。客户订票时,当客户输入起飞抵达城市后,输出可供客户选择的航班信息;客户选择了航班后,输入提示信息告知用户订票是否成功。客户退票时,输出客户退票成功或者无此客户,无法退票。查询航班时,输出显示对应的航班信息,或者输出提示信息告知没有相应的航班信息。查询订单时,输出显示对应的订单信息,或者输出提示信息告知没有相应的订单信息。修改航班时,输出对应的提示的信息,提示操作是否成功。2123功能要求(1)可以录入航班情况,数据存储在一个数据文件中;(2)可以查询某个航线的情况输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓;输入起飞抵达城市,查询飞机航班情况;(3)可以订票,订票情况存在一个数据文件中(如果该航班已经无票,提供相关可选航班);(4)可退票并且退票后修改相关数据文件;(5)客户资料姓名,证件号,订票数量及航班情况,订单要有编号;(6)修改航班信息,当航班信息改变可修改航班数据文件;(7)要求根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。2概要设计21数据结构(1)航班的信息航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞时间、降落时间、起飞城市、抵达城市、航班票价、票价折扣、确定航班是否满仓和空座数九个数据项航班号起飞降落起飞抵达航班空座数票价票价时间时间城市城市是否满仓折扣字符串字符串字符串字符串字符串整数整数浮点数浮点数(INT)(INT)(FLOAT)(FLOAT)单链表如下HD1D2D3每个结点包括数据域和指针域数据域指针域C语言描述如下TYPEDEFSTRUCTFLIGHTNODECHARAIR_NUM10/航班号CHARSTART_TIME15/起飞时间CHAREND_TIME15/抵达时间CHARSTART_PLACE20/起飞城市CHAREND_PLACE20/降落城市INTLEFT/空座数FLOATPRICE/票价FLOATPRICE_DISCOUNT/票价折扣SINTIFULL/航班是否满仓STRUCTFLIGHTNODENEXT/指向下一个结点3FLIGHTNODE/航班结点(2)客户的资料为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素包括姓名、证件号、航班号、订票数量和订单号五个数据项姓名证件号航班号订票数量订单号字符串字符串字符串整数(INT)整数(INT)每个结点包括数据域和指针域数据域指针域C语言描述如下TYPEDEFSTRUCTPASSENGERNODE/定义客户资料结点CHARNAME20/姓名CHARID_NUM20/证件号CHARFLIGHT_NUM10/航班号INTORDER_NUM/订单号INTTICKET_NUM/订票数量STRUCTPASSENGERNODENEXT/指向下一个结点PASSENGERNODE(3)客户链表每个数据元素包括头指针和尾指针两个数据项每个结点包括两个指针域头指针域尾指针域C语言描述如下TYPEDEFSTRUCTPASSENGERLISTPASSENGERNODEHEADPASSENGERNODEREARPASSENGERLIST22程序模块221录入航班信息模块VOIDADD_FLIGHTFLIGHTNODEAMPH调用VOIDINSERT_FLIGHTFLIGHTNODEAMPHCHARFLIGHT_NUMCHARSTART_PLACECHAREND_PLACECHARSTART_TIMECHAREND_TIMEINTLEFTFLOATPRICEFLOATPRICE_DISCOUNTINTISFULL函数,将新航班结点插入航班链表中。222客户订票模块INTBOOKFLIGHTNODEAMPHPASSENGERLISTAMPPLIST函数调用INTINSERT_PASSENGERPASSENGERNODEAMPHCHARNAMECHARID_NUMCHARFLIGHT_NUMINTTICKET_NUMINTORDER_NUM函数,将新客户结点插入客户链表中。4223客户退票模块VOIDCANCELPASSENGERLISTAMPPLISTFLIGHTNODEAMPH函数调用INTDELETE_PASSENGERPASSENGERLISTAMPPLISTFLIGHTNODEAMPHCHARNAMECHARID_NUM函数,将相应的顾客结点删除,并修改相应的航班信息。224查询航班模块VOIDFLIGHT_CHECKFLIGHTNODEH调用VOIDCHECK_ALL_FLIGHTFLIGHTNODEH函数进行所有航班信息浏览,调用INTPLACE_CHECKFLIGHTNODEHCHARSTART_PLACECHAREND_PLACE函数按起飞抵达城市对航班进行查询,调用INTFLIGHT_NUM_CHECKFLIGHTNODEHCHARFLIGHT_NUM按航班号对航班进行查询。225查询订单模块VOIDPASSENGER_CHECKPASSENGERLISTPLIST调用VOIDCHECK_ALL_PASSENGERPASSENGERLISTPLIST函数进行所有订单信息浏览,调用INTORDER_NUM_CHECKPASSENGERLISTPLISTINTORDER_NUM函数按订单号对订单进行查询,调用INTID_NAME_CHECKPASSENGERLISTPLISTCHARNAMECHARID_NUM按客户姓名和证件号对订单进行查询。226修改航班模块增加航班时,VOIDMODIFY_FLIGHTFLIGHTNODEAMPHPASSENGERLISTAMPPLIST函数调用VOIDADD_FLIGHTFLIGHTNODEAMPH函数,将新航班信息结点插入航班链表中。删除航班时,VOIDMODIFY_FLIGHTFLIGHTNODEAMPHPASSENGERLISTAMPPLIST函数调用VOIDDELETE_FLIGHTFLIGHTNODEAMPHPASSENGERLISTAMPPLIST函数将相应的航班信息删除并删除相应的订单信息。修改航班时间时,VOIDMODIFY_FLIGHTFLIGHTNODEAMPHPASSENGERLISTAMPPLIST函数修改指定航班的起飞抵达时间。23各模块之间的调用关系以及算法设计231各模块之间的调用关系5主函数录入退票查询航班查询订单修改航班信息订票退出航班信息浏览按航按起浏览按订按客增加删除修改全部班号飞抵全部单号户姓航班航班航班航班查询达城订单查询名和信息信息起飞信息航班市查信息订单证件抵达信息询航信息号查时间班信询订息单信息232算法设计VOIDINIT_FLIGHTFLIGHTNODEAMPH要建立一个以H为头结点的空链表录入航班信息和增加航班后将航班结点插入该链表。VOIDINIT_PASSENGERLISTPASSENGERLISTAMPPLIST建立一个带有头指针和尾指针的空链表存储带有顾客信息的结点。VOIDSAVE_FLIGHTFLIGHTNODEH保存航班信息到指定数据文件中。VOIDLOAD_FLIGHTFLIGHTNODEAMPH从存储航班信息的文件导入航班信息到航班链表中。VOIDSAVE_PASSENGERPASSENGERLISTPLIST保存客户信息到指定数据文件中。VOIDLOAD_PASSENGERPASSENGERLISTAMPPLIST从存储客户信息的文件导入客户信息到客户链表中。VOIDADD_FLIGHTFLIGHTNODEAMPH录入航班信息后调用INSERT_FLIGHT函数增加航班。VOIDINSERT_FLIGHTFLIGHTNODEAMPHCHARFLIGHT_NUMCHARSTART_PLACECHAREND_PLACECHARSTART_TIMECHAREND_TIMEINTLEFTFLOATPRICEFLOATPRICE_DISCOUNTINTISFULL在录入航班情况或增加新的航班后将新的航班结点插入到航线链表中。INTBOOKFLIGHTNODEAMPLPASSENGERLISTAMPPLIST要完成客户订票将客户结点插入客户链表中,并修改相应的航班信息。VOIDINSERT_PASSENGERLISTFLIGHTNODEAMPHPASSENGERLISTAMPPLISTCHARNAMECHARID_NUMCHARFLIGHT_NUMINTTICKET_NUM在顾客订票后将该顾客结点插入到顾客链表中,并修改相应的航班信息。VOIDFIND_SAME_FLIGHTFLIGHTNODELCHARFLIGHT_NUM在客户订票时,当客户输入的航班号对应的航班已满仓时,提供其他可选航班并输出显示。VOIDCANCELPASSENGERLISTAMPPLISTFLIGHTNODEAMPH完成客户退票,将客户的订单从客户链表中删除,并修改相应的航班信息。INTDELETE_PASSENGERPASSENGERLISTAMPPLISTFLIGHTNODEAMPHCHARNAMECHARID_NUM按6照要退票的顾客的姓名和证件号查找该顾客结点进行删除操作。VOIDFLIGHT_CHECKFLIGHTNODEH选择使用何种方式对航班信息进行查询。VOIDCHECK_ALL_FLIGHTFLIGHTNODEL浏览所有航班信息。INTPLACE_CHECKFLIGHTNODELCHARSTART_PLACECHAREND_PLACE按照起飞抵达城市查询航班信息。INTFLIGHT_NUM_CHECKFLIGHTNODELCHARFLIGHT_NUM按照航班号查询航班信息。VOIDPASSENGER_CHECKPASSENGERLISTPLIST选择使用何种方式对订单信息进行查询。VOIDCHECK_ALL_PASSENGERPASSENGERLISTPLIST浏览所有订单信息。INTORDER_NUM_CHECKPASSENGERLISTPLISTINTORDER_NUM按订单号查询订单信息。INTID_NAME_CHECKPASSENGERLISTPLISTCHARNAMECHARID_NUM按客户姓名和证件号查询订单信息。VOIDMODIFY_FLIGHTFLIGHTNODEAMPHPASSENGERLISTAMPPLIST修改航班信息,包括添加航班信息,删除航班信息,修改航班起飞抵达时间。VOIDDELETE_FLIGHTFLIGHTNODEAMPHPASSENGERLISTAMPPLIST按照某个航班号删除航班结点。3详细设计31录入航班信息模块在主函数中输入“1”,调用VOIDADD_FLIGHTFLIGHTNODEAMPH函数,此函数将航班指针P指向已存在航班链表H的头结点,利用FORPGTNEXTNULLPPGTNEXT使P指向航线链表的最后一个结点,然后让用户输入航班信息,然后调用VOIDINSERT_FLIGHTFLIGHTNODEAMPHCHARFLIGHT_NUMCHARSTART_PLACECHAREND_PLACECHARSTART_TIMECHAREND_TIMEINT7LEFTFLOATPRICEFLOATPRICE_DISCOUNTINTISFULL函数,用MALLOC函数申请一个航班结点,并用指针Q指向将航班信息赋到新申请的结点中,PGTNEXTQPPGTNEXT该操作将该结点插入航班链表中。流程图如下开始FLIGHTNODEPHNPGTNEXTNULLYPPGTNEXTNMARK1Y输入航班信息调用INSERT_FLIGHT函数完成航班信息的录入是否继续录入航班信息“是”输入“1”MARK1“否”输入“0”MARK0结束32顾客订票模块在主函数中输入“2”,调用INTBOOKFLIGHTNODEAMPHPASSENGERLISTAMPPLIST函数完成客户的订票。用航班指针P指向已存在航班链表H的头结点的下一个结点,请客户输入起飞抵达城市,分别存于START_PLACE和END_PLACE中。调用INTPLACE_CHECKFLIGHTNODELCHARSTART_PLACECHAREND_PLACE函数,如果函数返回“1”则请客户输入要订的航班号,如果输入的航班号不存在,输出提示信息,如果航班存在则提示客户输入订的票数、客户的姓名和证件号,调用VOIDINSERT_PASSENGERLISTFLIGHTNODEAMPHPASSENGERLISTAMPPLISTCHARNAMECHARID_NUMCHARFLIGHT_NUMINTTICKET_NUM函数,定义航班指针PHGTNEXT,使用FOR循环匹配FLIGHT_NUM和PGTFLIGHT_NUM,找到后,执行PGTLEFTPGTLEFTTICKET_NUM,修改相应航班的空座数。用8MALLOC函数申请一个客户结点,并用指针Q指向将客户信息和航班号赋到新申请的结点中,PLISTGTREARGTNEXTQPLISTGTREARQ该操作将该结点插入客户链表中。如果该航班已满仓或该航班的空座数不够,输出可供选择的航班,让客户选择,之后调用VOIDINSERT_PASSENGERLISTFLIGHTNODEAMPHPASSENGERLISTAMPPLISTCHARNAMECHARID_NUMCHARFLIGHT_NUMINTTICKET_NUM函数将客户结点插入客户链表中开始FLIGHTNODEPHGTNEXT输入起飞抵达城市,分别存于START_PLACE和END_PLACEPLACE_CHECKHSTART_NPLACEEND_PLACE1Y输入航班号,存入FLIGHT_NUMFLIGHT_NUMNNULLY航班号不为空输入航班号,存入FLIGHT_NUMNPNULLYSTRCMPPGTFLIGHT_NUMNFLIGHT_NUM0Y输入姓名、证件号、订票数,分别

温馨提示

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

评论

0/150

提交评论