您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 数据结构课程设计:飞机订票系统设计与实现-(里面附有源代码!)
1课程设计题目飞机订票系统院系*******专业***************姓名******学号*********指导教师***2012年7月21.需求分析1.1问题描述基于目前人们外出远行频繁,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序就是要实现航班情况的录入,查询,订票,退票以及航班的查询和修改等基本功能。本课程设计的题目为:飞机订票系统。1.2基本要求1.2.1输入的形式和输入值的范围录入航班信息时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为浮点型(float);还需要输入航班是否满仓,值为整型(int)(“1”表示已满仓,“0”表示没有满仓);如需要继续录入航班信息,要输入判别信息,值为整型(“1”表示继续录入航班信息,“0”表示停止录入航班信息)。客户订票时,需要输入起飞抵达城市,然后选择航班进行查询,选择航班时需要输入航班号,值为字符串。客户退票时,需要输入姓名,证件号进行退票操作,值为字符串。查询某个航班的情况时,需要输入航班号,值为字符串;在查询某个航线的情况时,还可以通过输入起飞抵达城市来查询,值为字符串。查询某个订单时,需要输入订单号,值为整型(int);或者需要输入客户姓名和证件号,值为字符串。修改航班时,需要输入字符型数据选择进行何种修改操作;增加航班时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为浮点型(float);还需要输入航班是否满仓,值为整型(int)(“1”表示已满仓,“0”表示没有满仓);如需要继续录入航班信息,要输入判别信息,值为整型(“1”表示继续录入航班信息,“0”表示停止录入航班信息);删除航班时,需要输入要删除的航班的航班号;修改航班时间时,需要输入要修改的航班的航班号,修改后的航班起飞时间和抵达时间。1.2.2输出形式在所有操作后的输出中都显示操作是否正确以及操作后单链表的内容。其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。录入航班情况时,输出显示添加航班信息是否成功。客户订票时,当客户输入起飞抵达城市后,输出可供客户选择的航班信息;客户选择了航班后,输入提示信息告知用户订票是否成功。客户退票时,输出客户退票成功或者无此客户,无法退票。查询航班时,输出显示对应的航班信息,或者输出提示信息告知没有相应的航班信息。查询订单时,输出显示对应的订单信息,或者输出提示信息告知没有相应的订单信息。修改航班时,输出对应的提示的信息,提示操作是否成功。31.2.3功能要求(1)可以录入航班情况,数据存储在一个数据文件中;(2)可以查询某个航线的情况:输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓;输入起飞抵达城市,查询飞机航班情况;(3)可以订票,订票情况存在一个数据文件中(如果该航班已经无票,提供相关可选航班);(4)可退票并且退票后修改相关数据文件;(5)客户资料:姓名,证件号,订票数量及航班情况,订单要有编号;(6)修改航班信息,当航班信息改变可修改航班数据文件;(7)要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。2.概要设计2.1数据结构(1)航班的信息:航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞时间、降落时间、起飞城市、抵达城市、航班票价、票价折扣、确定航班是否满仓和空座数九个数据项:航班号起飞时间降落时间起飞城市抵达城市航班是否满仓空座数票价票价折扣字符串字符串字符串字符串字符串整数(int)整数(int)浮点数(float)浮点数(float)单链表如下:每个结点包括数据域和指针域:C语言描述如下:typedefstructflightnode{charair_num[10];//航班号charstart_time[15];//起飞时间charend_time[15];//抵达时间charstart_place[20];//起飞城市charend_place[20];//降落城市intleft;//空座数floatprice;//票价floatprice_discount;//票价折扣intisFull;//航班是否满仓structflightnode*next;//指向下一个结点数据域指针域D1D2D3^h4}flightnode;//航班结点(2)客户的资料:为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素包括姓名、证件号、航班号、订票数量和订单号五个数据项:姓名证件号航班号订票数量订单号字符串字符串字符串整数(int)整数(int)每个结点包括数据域和指针域:C语言描述如下:typedefstructpassengernode{//定义客户资料结点charname[20];//姓名charID_num[20];//证件号charflight_num[10];//航班号intorder_num;//订单号intticket_num;//订票数量structpassengernode*next;//指向下一个结点}passengernode;(3)客户链表:每个数据元素包括头指针和尾指针两个数据项:每个结点包括两个指针域:C语言描述如下:typedefstructpassengerList{passengernode*head;passengernode*rear;}passengerList;2.2程序模块2.2.1录入航班信息模块voidadd_flight(flightnode*&h)调用voidinsert_flight(flightnode*&h,char*flight_num,char*start_place,char*end_place,char*start_time,char*end_time,intleft,floatprice,floatprice_discount,intisFull)函数,将新航班结点插入航班链表中。2.2.2客户订票模块intbook(flightnode*&h,passengerList*&PList)函数调用intinsert_passenger(passengernode*&h,char*name,char*ID_num,char*flight_num,intticket_num,intorder_num)函数,将新客户结点插入客户链表中。数据域指针域头指针域尾指针域52.2.3客户退票模块voidcancel(passengerList*&PList,flightnode*&h)函数调用intdelete_passenger(passengerList*&PList,flightnode*&h,char*name,char*ID_num)函数,将相应的顾客结点删除,并修改相应的航班信息。2.2.4查询航班模块voidflight_check(flightnode*h)调用voidcheck_all_flight(flightnode*h)函数进行所有航班信息浏览,调用intplace_check(flightnode*h,char*start_place,char*end_place)函数按起飞抵达城市对航班进行查询,调用intflight_num_check(flightnode*h,char*flight_num)按航班号对航班进行查询。2.2.5查询订单模块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)按客户姓名和证件号对订单进行查询。2.2.6修改航班模块增加航班时,voidmodify_flight(flightnode*&h,passengerList*&PList)函数调用voidadd_flight(flightnode*&h)函数,将新航班信息结点插入航班链表中。删除航班时,voidmodify_flight(flightnode*&h,passengerList*&PList)函数调用voiddelete_flight(flightnode*&h,passengerList*&PList)函数将相应的航班信息删除,并删除相应的订单信息。修改航班时间时,voidmodify_flight(flightnode*&h,passengerList*&PList)函数修改指定航班的起飞抵达时间。2.3各模块之间的调用关系以及算法设计2.3.1各模块之间的调用关系62.3.2算法设计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):按主函数录入航班信息订票退票查询航班查询订单修改航班信息退出浏览全部航班信息按起飞抵达城市查询航班信息按航班号查询航班信息浏览全部订单信息按客户姓名和证件号查询订单信息按订单号查询订单信息增加航班信息修改航班起飞抵达时间删除航班信息7照要退票的顾客的姓名和证件号查找该顾客结点,进行删除操作。voidflight_check(flightnode*h):选
本文标题:数据结构课程设计:飞机订票系统设计与实现-(里面附有源代码!)
链接地址:https://www.777doc.com/doc-1905549 .html