航空客运订票系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

滁州学院课程设计报告课程名称:数据结构设计题目:航空客运订票系统系别:计算机与信息工程学院专业:计算机科学与技术组别:第三组起止日期:2011年11月15日~2011年12月30日指导教师:计算机科学与技术系二○一一年制课程设计任务书组长学号2011220099班级2011级专升本2班系别计算机与信息工程学院专业计算机科学与技术组员指导教师老师课程设计目的熟练掌握数据的存储表示和基本操作的实现,能够利用存储设计算法解决实际的航空订票问题。课程设计所需环境1)Windows操作系统平台2)VC++6.0编译环境课程设计任务要求1)实现录入航班信息的功能2)实现航班信息查询功能(包括通过航班号查询和目的地查询)3)实现订票功能,订票数大于剩余票数可进行预订票功能4)实现退票功能,退票后,余票可直接给预订票的客户课程设计工作进度计划序号起止日期工作内容分工情况12011年11月15日~2011年11月17日展开思路讨论工作并搜集相关资料潘朝君,蒋小三,姬朝配22011年11月18日~2011年11月20日分析课程设计要求,确定目标胡海燕,顾海波32011年11月21日~2011年11月27日设计软件功能模块潘朝君,蒋小三42011年11月28日~2011年12月20日编写代码、实现功能模块潘朝君,姬朝配,桂斌52011年12月21日~2011年12月27日系统整合以及测试胡海燕,桂斌,顾海波62011年12月28日~2011年12月30日完成课程设计文档潘朝君,蒋小三,桂斌,姬朝配教研室审核意见:教研室主任签字:年月日1.设计目的课程设计目的:1、训练我们灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养我们严谨的科学态度和良好的工作作风。5.熟练掌握数据的存储表示和基本操作的实现,能够利用存储设计算法解决简单的航空订票问题。2.系统开发分析2.1系统需求分析航空客运定票系统为客户提供三个基本的功能:查询航线、客票预定和办理退票。全部数据可以只放在内存中。(一)查询航线:能够根据客户输入的终点站名或输入的航班号输出相关的信息,包括航班信息、航班号、飞机号、飞行时间、余票量;(二)客票预定:根据客户提出的要求(终点站和航班号)查询该航班。如余票能够满足客户的要求则为客户办理定票手续;若该航班已经满员或余票额少于客户的定票额,则需重新询问客户需求。若需要可登记排队候补并留下客户的信息,不需要则退出。在客票预定这一环节里将出现两个客户名单:已定票客户名单和预定票客户名单。已定票与预订票均以链表的结构存储。(三)办理退票:根据客户提供的信息(姓名,订票数),为客户办理退票手续,同时在系统中删除该客户的基本信息。然后查询该航班是否有人排队替补,首先访问排在第一的客户,若退票额能够满足他的要求,则为他办理定票手续,否则依次询问其他排队候补的客户。2.2算法思想1.定义一个航班管理方法voidhangbanguanli()。向航线链表添加新信息,intInsertLinklist(LinklistL)向航线链表添加新的结点,依次输入航班号,飞机号,终点站,飞行日期,乘客总数,余票数。采用链表的头插入法插入新的结点。2.通定义voidhangbanchaxun()查询航班信息,可以通过目的站进行查询mddselect(),或者通过航班号进行查询hbhselect()。3.定义订票功能voiddingpiaoguanli(),首先查找是否有输入的航班,没有则输出“对不起,没有你要找的航班”,若找到该航班信息,通过P指向该航班节点。然后判断余票量是否满足订票量的需求,满足则输入信息,通过头结点插入法将信息存储在链表中。若余票量小于订票量,系统提示:1.是否需要订票(可输入小于等于余票量);2.退出;3:进入预定程序(若先前订票的人退了票,则该票就直接给预定的人)。4.定义退票功能voidtuipiaoguanli();通过客户输入的姓名,航班号办理退票手续,使用dowhile来查找是否有此航班,找到了则给他办理退票。重新修改余票数,退票后删除该客户在链表中的存储信息,并将余票给予预订票的客户。3.系统功能描述与系统模块划分·3.1系统功能分析航空订票系统的总体任务是实现航空订票系统的系统化,规范化以及自动化。要完成的主要功能有:·航班信息的添加功能,采用链表的存储结构·航班信息的查询功能1:按终点站查询2:按航班号查询•航班的订票功能:根据客户提出的要求(航班号)查询该航班票额情况,若尚有余票,则为客户办理订票手续;若已满员或余票额少于定票额,则需重新询问客户要求。若需要,可登记排队候补预定。已定票功能,采用链表的存储结构。预定票功能,采用链队列的存储结构。使用链队列的先进先出的特性,当有人退票时,先预定票的客户可得到余票。·航班的退票功能退票后系统的余票数发生改变,剩余的票给预定票链队列中的第一个客户。·3.2系统模块划分1.航班信息的添加模块InitLinklist();//对航线信息链表进行初始化。//初始化航线信息LinklistInitLinklist(){L=(Linklist)malloc(sizeof(Hangxian));if(!L)exit(OVERFLOW);L-next=NULL;//建立一个带有头结点的单链表return(L);}//插入新的航线intInsertLinklist(LinklistL)//向航线链表添加新的结点{……}通过程序依次插入航班号,飞机号,终点站,飞行日期,乘客总数,余票数。采用链表的头插入法插入新的结点。2.航班信息的查询模块//通过目的地查询voidmddselect(){……}通过输入的要查询的目的地,与(*p).zhongdianzhan相匹配,若查询到则输出航班信息,若不匹配,则输出“对不起没有你要找的目的地”。//通过航班号查询voidhbhselect(){……}通过输入的要查询的航班号,与(*p).hangbanhao相匹配,若查询到则输出航班信息,若不匹配,则输出“对不起没有你要找的目的地”。3.航班信息的订票模块voiddingpiaoguanli(){……}//订票功能//单链表typedefstructYidingkehu{charname[15];//已订票的客户姓名intdingpiaoshu;//已订票数量structYidingkehu*next1;//}Yidingkehu,*Link;//单链队typedefstructYudingkeku{charname[15];//预订票的客户姓名intyudingpiao;//要订票数量structYudingkeku*next2;//下一个链队结点指针}Yudingkeku,*Qyudingqueue;订票功能要实现已定票功能和预定票功能,首先对输入的站点名或航班号进行判断,查找是否有这个航班,若无,则输出“对不起,没有你要找的航班”,若找到此航班,则p指向该航班结点,让客户输入要定的票数,判断余票量可满足客户的订票请求,满足则输入信息,通过头结点插入法将信息存储在链表中,输出“订票成功”。若余票量小于订票量,系统提示:1.是否需要订票(可输入小于等于余票量);2.退出;3:进入预定程序(若先前订票的人退了票,则该票就直接给预定的人)。进入预定票程序后,将客户信息保存在链队列中。4.航班信息的退票模块voidtuipiaoguanli(){……}//退票功能首先根据客户输入的姓名订票张数,来查找是否有此航班,如果匹配的话则给他办理退票,如果没有找到,即系统中没有该人的信息,提示是否来重新查找,输出“对不起,该航班没有人订票或者是你没有订该航班的票”。退票成功后重新修改余票数,退票后删除该客户在链表中的存储信息,并将余票给予预订票的客户4.系统设计详细4,1程序流程图4.1.1主界面流程图4.1.2订票功能流程图开始重新订票余票满足客户需求若找到该航班,则输入姓名+订票数余票不足输入终点站名订票成功进入主界面进入候补队列(姓名+需订票数)进行判断无此站点航班重新输入ynyn4.1.3退票流程图登录退票界面取消订票成功将预定客户名单队列的对头语速加到已定客户名单进入主界面查询该客户信息是否存在不存在客户信息重新输入yy修改余票量显示订票成功并进入主界面表面无订票客户输入需退票客户信息+订的票数输入航班号查询该航班是否有预定客户名单无此航班信息重新输入ynnn4.2程序源码本次数据结构的课程设计是航空客运订票系统,其功能包括航班信息的录入、查询,订票的管理,退票的管理,鉴于系统的功能的分析,为了便于航班信息的插入,已订票客户信息的插入和删除操作,所以本设计采用链表的结构进行信息的存储和读取,而对于等候排队预订票客户信息因为要根据客户的预定时间的先后顺序进行询问操作,所以预订票客户信息采用链队列的存储结构。具体设计代码实现如下:第一步:首先分别设置3种类型的结构体,以来表示已订票客户信息,预订票客户信息、航班信息://已订票客户结构体typedefstructYidingkehu{charname[15];//已订票的客户姓名intdingpiaoshu;//已订票数量structYidingkehu*next1;//}Yidingkehu,*Link;//预订票客户结构体typedefstructYudingkeku{charname[15];//预订票的客户姓名intyudingpiao;//要订票数量structYudingkeku*next2;//下一个链队结点指针}Yudingkeku,*Qyudingqueue;//声明队列typedefstruct{Qyudingqueuefront;//单链队头结点Qyudingqueuerear;//单链队尾结点}linkQueue;//航班信息结构体typedefstructHangxian{charhangbanhao[15];//航班号-charfeijihao[15];//飞机号intfeixingriqi;//起飞日期intchenkerenshu;//座位数intyupiao;//余票charzhongdianzhai[15];//终点站structHangxian*next;//指向下一个链结点的指针structYidingkehu*yiding;//定义一个指向已订票客户的头结点指针structYudingkeku*yudingqueue;}Hangxian,*Linklist;第二步:初始航班信息的录入://航线管理功能的实现,进入航班管理界面:voidhangbanguanli(){intj=1,m;do{if(!InsertLinklist(L))//向其中加入航班信息{printf(内存已满\n);exit(OVERFLOW);}//向链表中加一结点printf(\t是否要输入下一个航线记录?\n);printf(\t是请输入1\n);printf(\t否请输入2\n\t);scanf(%d,&m);//在这里依靠用户来决定是否输入下一条航线记}while(m==1);}//初始化航线信息,此处采用带头结点的链表来存储航班信息,下面是初始化航班信息链表的头指针L:LinklistInitLinklist(){L=(Linklist)malloc(sizeof(Hangxian));if(!L)exit(OVERFLOW);L-next=NULL;//建立一个带有头结点的单链表return(L);}//插入新的航线,链表有头结点.intInsertLinklist(LinklistL)//02向航线链表添加新的结点{Linklistp;p=(Linklis

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功