数据结构课程设计飞机订票系统设计与实现里面附有源代码.doc
《数据结构课程设计飞机订票系统设计与实现里面附有源代码.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计飞机订票系统设计与实现里面附有源代码.doc(54页珍藏版)》请在咨信网上搜索。
1、课 程 设 计题目 飞机订票系统 院 系 * 专 业 * 姓 名 * 学 号 * 指 导 教 师 * 2023年7月1. 需求分析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、后,输出可供客户选择的航班信息;客户选择了航班后,输入提醒信息告知用户订票是否成功。客户退票时,输出客户退票成功或者无此客户,无法退票。查询航班时,输出显示相应的航班信息,或者输出提醒信息告知没有相应的航班信息。查询订单时,输出显示相应的订单信息,或者输出提醒信息告知没有相应的订单信息。修改航班时,输出相应的提醒的信息,提醒操作是否成功。1.2.3 功能规定(1)可以录入航班情况,数据存储在一个数据文献中;(2)可以查询某个航线的情况:输入航班号,查询起降时间,起飞到达城市,航班票价,票价折扣,拟定航班是否满仓;输入起飞到达城市,查询飞机航班情况;(3)可以订票,订票情况存在一个数据文献中(假
5、如该航班已经无票,提供相关可选航班);(4)可退票并且退票后修改相关数据文献;(5)客户资料:姓名,证件号,订票数量及航班情况,订单要有编号;(6)修改航班信息,当航班信息改变可修改航班数据文献;(7)规定:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完毕功能。2. 概要设计2.1 数据结构(1)航班的信息:航班的情况存储结构采用单链表,每个元素表达一个航班的情况,涉及航班号、起飞时间、降落时间、起飞城市、到达城市、航班票价、票价折扣、拟定航班是否满仓和空座数九个数据项:航班号起飞时间降落时间起飞城市到达城市航班是否满仓空座数票价票价折扣字符串字符串字符串字符串字符串整数(in
6、t)整数(int)浮点数(float)浮点数(float)单链表如下:D1D2D3 h每个结点涉及数据域和指针域:数据域指针域C语言描述如下:typedef struct flightnodechar air_num10;/航班号char start_time15;/起飞时间char end_time15;/到达时间char start_place20;/起飞城市char end_place20; /降落城市int left; /空座数float price; /票价float price_discount;/票价折扣int isFull; /航班是否满仓struct flightnode *
7、next;/指向下一个结点flightnode;/航班结点(2)客户的资料:为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素涉及姓名、证件号、航班号、订票数量和订单号五个数据项:姓名证件号航班号订票数量订单号字符串字符串字符串整数(int)整数(int)每个结点涉及数据域和指针域:数据域指针域C语言描述如下:typedef struct passengernode/定义客户资料结点char name20; /姓名char ID_num20; /证件号char flight_num10;/航班号int order_num; /订单号int ticket_num; /订票数量struc
8、t passengernode *next;/指向下一个结点passengernode;(3)客户链表:每个数据元素涉及头指针和尾指针两个数据项:每个结点涉及两个指针域:头指针域尾指针域C语言描述如下:typedef struct passengerListpassengernode *head;passengernode *rear;passengerList;2.2 程序模块2.2.1 录入航班信息模块void add_flight(flightnode *&h)调用void insert_flight(flightnode *&h,char* flight_num,char* start
9、_place,char* end_place,char* start_time,char* end_time,int left,float price,float price_discount,int isFull)函数,将新航班结点插入航班链表中。2.2.2 客户订票模块int book(flightnode *&h,passengerList *&PList)函数调用int insert_passenger(passengernode *&h,char *name,char *ID_num,char *flight_num,int ticket_num,int order_num)函数,将
10、新客户结点插入客户链表中。2.2.3 客户退票模块void cancel(passengerList *&PList,flightnode *&h)函数调用int delete_passenger(passengerList *&PList,flightnode *&h,char *name,char *ID_num)函数,将相应的顾客结点删除,并修改相应的航班信息。2.2.4 查询航班模块void flight_check(flightnode *h)调用void check_all_flight(flightnode *h)函数进行所有航班信息浏览,调用int place_check(fl
11、ightnode *h,char *start_place,char *end_place)函数按起飞到达城市对航班进行查询,调用int flight_num_check(flightnode *h,char *flight_num)按航班号对航班进行查询。2.2.5 查询订单模块void passenger_check(passengerList *PList)调用void check_all_passenger(passengerList *PList)函数进行所有订单信息浏览,调用int order_num_check(passengerList *PList,int order_num
12、)函数按订单号对订单进行查询,调用int ID_name_check(passengerList *PList,char *name,char *ID_num)按客户姓名和证件号对订单进行查询。2.2.6 修改航班模块增长航班时,void modify_flight(flightnode *&h,passengerList *&PList)函数调用void add_flight(flightnode *&h)函数,将新航班信息结点插入航班链表中。删除航班时,void modify_flight(flightnode *&h,passengerList *&PList)函数调用void dele
13、te_flight(flightnode *&h,passengerList *&PList)函数将相应的航班信息删除,并删除相应的订单信息。修改航班时间时,void modify_flight(flightnode *&h,passengerList *&PList)函数修改指定航班的起飞到达时间。2.3 各模块之间的调用关系以及算法设计2.3.1 各模块之间的调用关系主函数录入航班信息订 票退 票查询航班查询订单修改航班信息退 出浏览所有航班信息按起飞抵达城市查询航班信息按航班号查询航班信息浏览所有订单信息按客户姓名和证件号查询订单信息按订单号查询订单信息增长航班信息修改航班起飞到达时间删
14、除航班信息2.3.2 算法设计void init_flight(flightnode *&h):要建立一个以h为头结点的空链表,录入航班信息和增长航班后将航班结点插入该链表。void init_passengerList(passengerList *&pList):建立一个带有头指针和尾指针的空链表,存储带有顾客信息的结点。void save_flight(flightnode *h):保存航班信息到指定数据文献中。void load_flight(flightnode *&h):从存储航班信息的文献导入航班信息到航班链表中。void save_passenger(passengerList
15、 *PList):保存客户信息到指定数据文献中。void load_passenger(passengerList *&PList):从存储客户信息的文献导入客户信息到客户链表中。void add_flight(flightnode *&h):录入航班信息后调用insert_flight函数增长航班。void insert_flight(flightnode *&h,char* flight_num,char* start_place,char* end_place,char* start_time,char* end_time,int left,float price,float price
16、_discount,int isFull):在录入航班情况或增长新的航班后,将新的航班结点插入到航线链表中。int book(flightnode *&l,passengerList *&PList):要完毕客户订票,将客户结点插入客户链表中,并修改相应的航班信息。void insert_passengerList(flightnode *&h,passengerList *&PList,char *name,char *ID_num,char *flight_num,int ticket_num):在顾客订票后,将该顾客结点插入到顾客链表中,并修改相应的航班信息。void find_same
17、_flight(flightnode *l,char *flight_num):在客户订票时,当客户输入的航班号相应的航班已满仓时,提供其他可选航班并输出显示。void cancel(passengerList *&PList,flightnode *&h):完毕客户退票,将客户的订单从客户链表中删除,并修改相应的航班信息。int delete_passenger(passengerList *&PList,flightnode *&h,char *name,char *ID_num):按照要退票的顾客的姓名和证件号查找该顾客结点,进行删除操作。void flight_check(flight
18、node *h):选择使用何种方式对航班信息进行查询。void check_all_flight(flightnode *l):浏览所有航班信息。int place_check(flightnode *l,char *start_place,char *end_place):按照起飞到达城市查询航班信息。int flight_num_check(flightnode *l,char *flight_num):按照航班号查询航班信息。void passenger_check(passengerList *PList):选择使用何种方式对订单信息进行查询。void check_all_passen
19、ger(passengerList *PList):浏览所有订单信息。int order_num_check(passengerList *PList,int order_num):按订单号查询订单信息。int ID_name_check(passengerList *PList,char *name,char *ID_num):按客户姓名和证件号查询订单信息。void modify_flight(flightnode *&h,passengerList *&PList):修改航班信息,涉及添加航班信息,删除航班信息,修改航班起飞到达时间。void delete_flight(flightno
20、de *&h,passengerList *&PList):按照某个航班号删除航班结点。3. 具体设计3.1 录入航班信息模块在主函数中输入“1”,调用void add_flight(flightnode *&h)函数,此函数将航班指针*p指向已存在航班链表*h的头结点,运用for(;p-next!=NULL;p=p-next)使*p指向航线链表的最后一个结点,然后让用户输入航班信息,然后调用void insert_flight(flightnode *&h,char* flight_num,char* start_place,char* end_place,char* start_time,
21、char* end_time,int left,float price,float price_discount,int isFull)函数,用malloc函数申请一个航班结点,并用指针*q指向,将航班信息赋到新申请的结点中,p-next=q;p=p-next;该操作将该结点插入航班链表中。流程图如下:YYflightnode *p=h;p-next!=NULLp=p-nextmark=1输入航班信息调用insert_flight函数完毕航班信息的录入是否继续录入航班信息“是”输入“1”mark=1“否”输入“0”mark=0开始结束NN3.2 顾客订票模块在主函数中输入“2”,调用int b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 飞机 订票 系统 设计 实现 里面 附有 源代码
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。