数据结构课程设计飞机订票系统设计与实现(里面附有源代码!).doc

上传人:e****s 文档编号:62869694 上传时间:2022-11-22 格式:DOC 页数:5 大小:25KB
返回 下载 相关 举报
数据结构课程设计飞机订票系统设计与实现(里面附有源代码!).doc_第1页
第1页 / 共5页
数据结构课程设计飞机订票系统设计与实现(里面附有源代码!).doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《数据结构课程设计飞机订票系统设计与实现(里面附有源代码!).doc》由会员分享,可在线阅读,更多相关《数据结构课程设计飞机订票系统设计与实现(里面附有源代码!).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、课 程 设 计题目 飞机订票系统 院 系 专 业 姓 名 学 号 指 导 教 师 2021 年 7 月 11. 需求分析1.1 问题描述 基于目前人们外出远行频繁,为方便乘客提前买票及优化飞机航空订票效劳,需要开发一个飞机订票系统,此程序就是要实现航班情况的录入,查询,订票,退票以及航班的查询和修改等根本功能。本课程设计的题目为:飞机订票系统。1.2 根本要求1.2.1 输入的形式和输入值的范围 录入航班信息时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为 浮点型float;还需要输入航班是否满仓,值为整型int“1表示已满仓, “0表示没有满仓;如需

2、要继续录入航班信息,要输入判别信息,值为整型 “1表示继续录入航班信息, “0表示停止录入航班信息。 客户订票时,需要输入起飞抵达城市,然后选择航班进行查询,选择航班时需要输入航班号,值为字符串。 客户退票时,需要输入姓名,证件号进行退票操作,值为字符串。 查询某个航班的情况时,需要输入航班号,值为字符串;在查询某个航线的情况时,还可以通过输入起飞抵达城市来查询,值为字符串。 查询某个订单时,需要输入订单号,值为整型int ;或者需要输入客户姓名和证件号,值为字符串。 修改航班时,需要输入字符型数据选择进行何种修改操作;增加航班时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入

3、航班票价,票价折扣,值为浮点型float ;还需要输入航班是否满仓,值为整型int“1表示已满仓, “0表示没有满仓;如需要继续录入航班信息,要输入判别信息,值为整型 “1表示继续录入航班信息,“0表示停止录入航班信息;删除航班时,需要输入要删除的航班的航班号;修改航班时间时,需要输入要修改的航班的航班号,修改后的航班起飞时间和抵达时间。1.2.2 输出形式 在所有操作后的输出中都显示操作是否正确以及操作后单链表的内容。其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。 录入航班情况时,输出显示添加航班信息是否成功。 客户订票时,当客户输入起飞抵达城市后,输出可供客户选择的航班

4、信息;客户选择了航班后,输入提示信息告知用户订票是否成功。 客户退票时,输出客户退票成功或者无此客户,无法退票。 查询航班时,输出显示对应的航班信息,或者输出提示信息告知没有相应的航班信息。 查询订单时,输出显示对应的订单信息,或者输出提示信息告知没有相应的订单信息。 修改航班时,输出对应的提示的信息,提示操作是否成功。 21.2.3 功能要求 1可以录入航班情况,数据存储在一个数据文件中; 2可以查询某个航线的情况:输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓;输入起飞抵达城市,查询飞机航班情况; 3可以订票,订票情况存在一个数据文件中如果该航班已经无票,提供

5、相关可选航班; 4可退票并且退票后修改相关数据文件; 5客户资料:姓名,证件号,订票数量及航班情况,订单要有编号; 6修改航班信息,当航班信息改变可修改航班数据文件; 7要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。2. 概要设计2.1 数据结构 1航班的信息:航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞时间、降落时间、起飞城市、抵达城市、航班票价、票价折扣、确定航班是否满仓和空座数九个数据项:航班号 起飞 降落 起飞 抵达 航班 空座数 票价 票价 时间 时间 城市 城市 是否满仓 折扣字符串 字符串 字符串 字符串 字符串 整数

6、整数 浮点数 浮点数 int int float float 单链表如下: h D1 D2 D3 每个结点包括数据域和指针域: 数据域 指针域 C 语言描述如下: typedef struct flightnode char air_num10/航班号 char start_time15/起飞时间 char end_time15/抵达时间 char start_place20/起飞城市 char end_place20 /降落城市 int left /空座数 float price /票价 float price_discount/票价折扣 s int i Full /航班是否满仓 struc

7、t flightnode next/指向下一个结点 3 flightnode/航班结点 2客户的资料:为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素包括姓名、证件号、航班号、订票数量和订单号五个数据项:姓名 证件号 航班号 订票数量 订单号字符串 字符串 字符串 整数int 整数int 每个结点包括数据域和指针域: 数据域 指针域 C 语言描述如下: typedef struct passengernode/定义客户资料结点 char name20 /姓名 char ID_num20 /证件号 char flight_num10/航班号 int order_num /订单号 in

8、t ticket_num /订票数量 struct passengernode next/指向下一个结点 passengernode 3客户链表:每个数据元素包括头指针和尾指针两个数据项: 每个结点包括两个指针域: 头指针域 尾指针域 C 语言描述如下: typedef struct passengerList passengernode head passengernode rear passengerList2.2 程序模块2.2.1 录入航班信息模块 void add_flightflightnode amph调用 void insert_flightflightnode amphcha

9、rflight_numchar start_placechar end_placechar start_timechar end_timeint leftfloatpricefloat price_discountint isFull函数,将新航班结点插入航班链表中。2.2.2 客户订票模块 int bookflightnode amphpassengerList ampPList函数调用 intinsert_passengerpassengernode amphchar namechar ID_numchar flight_numintticket_numint order_num函数,将新

10、客户结点插入客户链表中。 42.2.3 客户退票模块 void cancelpassengerList ampPListflightnode amph函数调用 intdelete_passengerpassengerList ampPListflightnode amphchar namechar ID_num函数,将相应的顾客结点删除,并修改相应的航班信息。2.2.4 查询航班模块 void flight_checkflightnode h调用 void check_all_flightflightnode h函数进行所有航班信息浏览, 调用 int place_checkflightnod

11、e hchar start_placechar end_place函数按起飞抵达城市对航班进行查询,调用 int flight_num_checkflightnode hchar flight_num按航班号对航班进行查询。2.2.5 查询订单模块 void passenger_checkpassengerList PList调用 void check_all_passengerpassengerListPList函数进行所有订单信息浏览,调用 int order_num_checkpassengerList PListintorder_num函数按订单号对订单进行查询, 调用 int ID_

12、name_checkpassengerList PListcharnamechar ID_num按客户姓名和证件号对订单进行查询。2.2.6 修改航班模块 增加航班时,void modify_flightflightnode amphpassengerList ampPList函数调用 voidadd_flightflightnode amph函数,将新航班信息结点插入航班链表中。 删除航班时,void modify_flightflightnode amphpassengerList ampPList函数调用 voiddelete_flightflightnode amphpassenger

13、List ampPList函数将相应的航班信息删除并删除相应的订单信息。 修改航班时间时,void modify_flightflightnode amphpassengerList ampPList函数修改指定航班的起飞抵达时间。2.3 各模块之间的调用关系以及算法设计2.3.1 各模块之间的调用关系 5 主函数 录入 退 票 查询航班 查询订单 修改航班信息 订 票 退 出 航班信息 浏览 按航 按起 浏览 按订 按客 增加 删除 修改 全部 班号 飞抵 全部 单号 户姓 航班 航班 航班 航班 查询 达城 订单 查询 名和 信息 信息 起飞 信息 航班 市查 信息 订单 证件 抵达 信息

14、 询航 信息 号查 时间 班信 询订 息 单信 息2.3.2 算法设计 void init_flightflightnode amph:要建立一个以 h 为头结点的空链表录入航班信息和增加航班后将航班结点插入该链表。 void init_passengerListpassengerList amppList:建立一个带有头指针和尾指针的空链表存储带有顾客信息的结点。 void save_flightflightnode h:保存航班信息到指定数据文件中。 void load_flightflightnode amph:从存储航班信息的文件导入航班信息到航班链表中。 void save_pass

15、engerpassengerList PList:保存客户信息到指定数据文件中。 void load_passengerpassengerList ampPList:从存储客户信息的文件导入客户信息到客户链表中。 void add_flightflightnode amph:录入航班信息后调用 insert_flight 函数增加航班。 void insert_flightflightnode amphchar flight_numchar start_placechar end_placecharstart_timechar end_timeint leftfloat pricefloat

16、price_discountint isFull:在录入航班情况或增加新的航班后将新的航班结点插入到航线链表中。 int bookflightnode amplpassengerList ampPList:要完成客户订票将客户结点插入客户链表中,并修改相应的航班信息。 void insert_passengerListflightnode amphpassengerList ampPListchar namecharID_numchar flight_numint ticket_num:在顾客订票后将该顾客结点插入到顾客链表中,并修改相应的航班信息。 void find_same_flight

17、flightnode lchar flight_num:在客户订票时,当客户输入的航班号对应的航班已满仓时,提供其他可选航班并输出显示。 void cancelpassengerList ampPListflightnode amph:完成客户退票,将客户的订单从客户链表中删除,并修改相应的航班信息。 int delete_passengerpassengerList ampPListflightnode amphchar namechar ID_num:按 6照要退票的顾客的姓名和证件号查找该顾客结点进行删除操作。 void flight_checkflightnode h:选择使用何种方式

18、对航班信息进行查询。 void check_all_flightflightnode l:浏览所有航班信息。 int place_checkflightnode lchar start_placechar end_place:按照起飞抵达城市查询航班信息。 int flight_num_checkflightnode lchar flight_num:按照航班号查询航班信息。 void passenger_checkpassengerList PList:选择使用何种方式对订单信息进行查询。 void check_all_passengerpassengerList PList:浏览所有订单信

19、息。 int order_num_checkpassengerList PListint order_num:按订单号查询订单信息。 int ID_name_checkpassengerList PListchar namechar ID_num:按客户姓名和证件号查询订单信息。 void modify_flightflightnode amphpassengerList ampPList:修改航班信息,包括添加航班信息,删除航班信息,修改航班起飞抵达时间。 void delete_flightflightnode amphpassengerList ampPList:按照某个航班号删除航班结

20、点。3. 详细设计3.1 录入航班信息模块 在主函数中输入“1 ,调用 void add_flightflightnode amph函数,此函数将航班指针p指向已存在航班链表h 的头结点,利用 forp-gtnextNULLpp-gtnext使p 指向航线链表的最后一个结点,然后让用户输入航班信息,然后调用 void insert_flightflightnodeamphchar flight_numchar start_placechar end_placechar start_timechar end_timeint 7leftfloat pricefloat price_discount

21、int isFull函数,用 malloc 函数申请一个航班结点,并用指针q 指向将航班信息赋到新申请的结点中, p-gtnextqpp-gtnext该操作将该结点插入航班链表中。流程图如下: 开始 flightnode ph N p-gtnextNULL Y pp-gtnext N mark1 Y 输入航班信息 调用 insert_flight 函数 完成航班信息的录入 是否继续录入航班信息 “是输入“1mark1 “否输入“0mark0 结束3.2 顾客订票模块 在主函数中输入“2 ,调用 int bookflightnode amphpassengerList ampPList函数完成客

22、户的订票。用航班指针p 指向已存在航班链表h 的头结点的下一个结点,请客户输入起飞抵达城市,分别存于 start_place 和 end_place 中。调用 int place_checkflightnode lcharstart_placechar end_place函数,如果函数返回“1那么请客户输入要订的航班号,如果输入的航班号不存在,输出提示信息, 如果航班存在那么提示客户输入订的票数、客户的姓名和证件号,调用 voidinsert_passengerListflightnode amphpassengerList ampPListchar namechar ID_numcharfl

23、ight_numint ticket_num函数,定义航班指针ph-gtnext,使用 for 循环匹配 flight_num和 p-gtflight_num,找到后,执行 p-gtleftp-gtleft-ticket_num,修改相应航班的空座数。用 8malloc 函数申请一个客户结点,并用指针q 指向将客户信息和航班号赋到新申请的结点中,PList-gtrear-gtnextqPList-gtrearq该操作将该结点插入客户链表中。 如果该航班已满仓或该航班的空座数不够,输出可供选择的航班,让客户选择,之后调用 void insert_passengerListflightnode a

24、mphpassengerList ampPListchar namecharID_numchar flight_numint ticket_num函数将客户结点插入客户链表中. 开始 flightnode ph-gtnext 输入起飞抵达城市,分别存于 start_place 和 end_place place_checkhstart_ N placeend_place1 Y 输入航班号,存入 flight_num flight_num N NULL Y 航班号不为空 输入航班号,存入 flight_num N pNULL Y strcmpp-gtflight_num N flight_num

25、0 Y 输入姓名、证件号、订票数,分别 存入 name、ID_num、ticket_num nameNULL N Y 航班号不为空 输入航班号,存入 flight_num 9接上页: N ID_numNULL Y 证件号不为空 输入证件号,存入 ID_num N ticket_numNULL Y 订票数不为空 输入订票数,存入 ticket_num p-gtleftgt0ampamp N p-gtleftgtticket_num Y 显示其他可选航班 调用 insert_passengerList 函数 供客户选择 完成客户订票 调用 insert_passengerList 函数 完成客户订

26、票 pp-gtnext 返回“1 返回“0 结束3.3 顾客退票模块 ,调 在主函数中输入“3 用 void cancelpassengerList ampPListflightnode amph函数完成客户的退票。提示客户输入客户的姓名和证件号以及要退的航班号,此函数再调用 intdelete_passengerpassengerList ampPListflightnode amphchar namechar ID_numcharflight_num函数,用客户结点指针pr 等于已存在客户链表结点 Plist 的头指针,相当于将pr 指向客户链表的头结点,用客户结点指针p 指向 pr 的下一个结点。使用 while 循环寻 10找匹配姓名、证件号、航班号的客户结点,找到后定义航班指针fh-gtnext,使用 for 循环找到匹配航班号的航班结点, 执行 f-gtleftf-gtleftp-gtticket_num,修改退票后相应航班结点的空座数,之后执行 pr-gtnextp-gtnextfreep删除要退票的客户订单信息。如果没有找到匹配的客户结点,输出提示信息。 开始 输入姓名、证件号、航班号,分别 存于 name、ID_num、flight_num .

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理手册

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁