飞机订票系统第1页共30页飞机订票系统学生姓名:兰海军指导老师:易禹摘要本系统主要是为了方便用户飞机订票,能使用户方便快捷的了解各航线信息。本系统设置了航线创建功能、浏览航班信息和查询航线信息功能、订票退票功能及查看剩余票数功能。在该系统当中,系统开发平台是WindowsXP,程序设计设计语言采用VisualC++,数据库采用MicrosoftAccess,程序运行平台为WindowsXP。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以在应用中解决实际问题。关键词Access;VisualC++;飞机订票目录1问题描述与分析........................................22数据结构设计描述......................................33软件结构设计(系统功能模块图)........................34算法设计思想..........................................35调试分析..............................................66总结.................................................127参考文献.............................................138附录(源程序清单)...................................14飞机订票系统第2页共30页21问题描述与分析飞机订票系统要求可以实现如下功能:可以录入航班情况,可以查询某个航线的情况,如输入飞机到达城市,查询飞机航班情况;可以订票、退票。从问题的描述分析,该飞机定票系统必须具备以下几个功能模块:1)航线创建功能模块:包括终点站名、航班号、分机号、飞行日期、乘员定额、及余票量,准载人数等信息.。2)浏览航班信息功能模块:查看创建的所有航线信息。3)查询航线信息功能模块:可通过航班号查询,也可通过飞机到达地点查询。4)订票功能模块:包括航班号、定票数量、订票客户姓名、舱位等级、身份证号码。5)退票功能模块:不满意所订的票时可进行退票,退票时需输入订票客户的姓名。5)查看剩余票数功能模块:对剩余用户可以订的票的数量进行查询并排序,便于其他用户订票。7)退出系统功能模块:退出系统。所以采用如下方案:1)本系统以菜单方式工作2)航线创建功能,我们定义了一个结构体Plane作为所有信息的录入单元且其录入的相应信息应是以Plane作为数据单元进行存储的,然后对该创建的链表调用insert()函数,存储到数据文件中去.采用链表作为存储结构功能的实现--输入;3)订票功能模块中我们应对乘客需要订的航班进行查找,看是否可以满足乘客所需的票,若可以则为乘客订票,并修改相应航班的剩余票数,退票功能模块则应查询机票数据文件,先用指针在文件中找到相应的要退的票,即把该订票单元结构体删除并修改退票航班的剩余票数即可;4)航班信息和订票信息的查看功能--输出查询航班(按航班号或抵达城市查询)飞机订票系统第3页共30页32数据结构设计描述本程序我采用了结构体,线性表存储,文件和链表存储结构。3软件结构设计(系统功能模块图)图3-1整体结构框图4算法设计思想4.1.数据类型定义调用头文件,定义文件指针#includestdio.h#includestdlib.h#includestring.h#includeconio.htypedefstructwat_ros飞机订票系统第4页共30页4{charname[10];/*姓名*/charID[18];/*身份证号*/intreq_amt;/*订票量*/structwat_ros*next;}qnode,*qptr;//定义结构体指针变量voidmain();voidinsert();//添加航班信息函数航班的基本信息其数据结构为:structairline{charter_name[10];/*终点站名*/charair_num[10];/*航班号*/charplane_num[10];/*飞机号*/chardate[7];/*飞行日期(星期几)*/inttkt_amt;/*乘员定额*/inttkt_sur;/*余票量*/linklist*order;/*乘员名单域,指向乘员名单链表的头指针*/linkqueuewait;/*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/}lineinfo;3)定义定票的乘客基本信息typedefstructord_ros{charname[10];/*客户姓名*/charID[18];/*身份证号*/intord_amt;/*订票量*/intgrade;/*舱位等级*/structord_ros*next;}linklist;4.2.主要模块内部设计(我主要负责录入模块和修改模块)_4.2.1、录入航班信息模块(创建链)飞机订票系统第5页共30页51)本模块是对程序中的insert()函数的详细说明——链表的存储结构,存储到数据单链表中去,该模块的算法如下:voidinsert(){for(inti=0;iMAXSIZE;i++){printf(请输入航班%d信息(共%d条):,i+1,MAXSIZE);scanf(%8s%3s%s%4s%3d%10d,(air+i)-ter_name,(air+i)-air_num,(air+i)-plane_num,(air+i)-date,&(air+i)-tkt_amt,&(air+i)-tkt_sur);}4.2.2、查看和查询航班信息模块由于航班的录入和保存是由链表存储结构进行的,并且是保存在单链表中,所以此查询就可通过链表查询,在查看便是将其文件中所有的航班信息进行输出,而查询我们可根据航班号和航班抵达的城市匹配查看,在查询中将需要查询的航班号和文件阅读时指针所指的值进行比较,从而匹配输出;4.2.3订票模块先根据数据定义进行订票时信息的输入,在定票时应先按乘客想要定的航班号或者抵达城市查询,并按乘客欲定的票的数目与查询数目进行比较,若此比较结果大于或等于0,则输出乘客可以定票,在修改航班信息中该航班的数量,且在整个定票系统中,所有的定票都用链表进行存储管理;4.2.4退票模块在退票系统中即对航班票的数据文件进行管理,所以可先按照查询航班票的方法,若查询到的票的信息和乘客此时要求退票的信息相匹配,则删除相应的该票的节点,再修改其航班信息;飞机订票系统第6页共30页65调试分析5.1测试用例自定义一些航班信息,直接对各个模块功能进行测试。5.2测试结果1)主界面:图5-12)以管理员的身份进入,输入密码(2009):(1)主菜单窗口运行界面如下:图5-2(2)航线创建功能模块,选择1创建航线,运行界面如下:飞机订票系统第7页共30页7图5-3(3)查看航班信息功能模块,选择3查看航班信息,运行界面如下:图5-4(4)订票功能模块,选择2订票,其运行界面如下:飞机订票系统第8页共30页8图5-5(5)查看订票功能模块,选择4查看订票信息,运行界面如下:图5-5(5)退票功能模块,选择5退票,运行界面如下:图5-7选择4查看订票信息,因为已经退票,所以信息为空,其运行界面如下:飞机订票系统第9页共30页9(7)修改航班信息功能模块,选择7修改航班信息,其运行界面如下:图5-8飞机订票系统第10页共30页10再选择3查看航班信息,以确认航班信息是修改成功,其运行界面如下:图5-9(8)查询航班信息功能模块,选择5查询航班信息,选择1按航班号查询,其运行界面如下:飞机订票系统第11页共30页11图5-10选择2,按到飞机到达地点查询,其运行界面如下:飞机订票系统第12页共30页12图5-116总结一份耕耘一份收获,经过一周的刻苦学习,认真实践,终于完成了这份“飞机订票系统”的数据结构课程设计。看着辛苦成果,看着这30多页的报告,心中有种很复杂的感情。在这次课程设计中我收获了很多东西,不仅包括知识上的,更重要的是学会用一种平和坚定的心态去面对困难。虽然我C还学得不错,但对数据结构的知识点还掌握的不是很扎实,很多算法知道大概思想,但到具体实施的时候就会出现不完善的地方或错误。同样我了解到自己原来知识还是比较欠缺。自己要学习的东西还太多。通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。我的心得也就这么多了,总之,不管学会的还是学不会的的确觉得困难比较多,真是万事开头难,不知道如何入手。最后终于做完了有种如释重负的感觉。此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。本次程序设计主要用到了结构体、调用函数、文件的保存、输入以及输出等功能。使我对数据结构有了更深一层的认识,特别是对链表和文件的运用得到了很大的提高。这次设计是我们对明年毕业设计的一次演练,很好的培养了我的论文写作的规范性。最后要感谢老师们给我们的帮助,在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。飞机订票系统第13页共30页137参考文献[1]严蔚敏,吴伟民.《数据结构(C语言版)》.清华大学出版社[2]吴文虎《程序设计基础》北京:清华大学出版社,2003[3]李志球《实用C语言程序设计教程》北京:电子工业出版社,1999[4]徐孝凯《数据结构实用教程(第二版)》清华大学出版社[5]谭浩强.C程序设计(第二版).北京:清华大学出版社,2000飞机订票系统第14页共30页148附录(源程序清单)#includeiostream.h#includestdio.h#includestring.hstructPlane//定义航班结构体{intnum;//航班号charStime[50];charEtime[50];charStart[50];charEnds[50];floatPrice;floatDiscount;//折扣intMsum;//该航班最多载人数Plane*next;};Plane*Phead=NULL;FILE*fp;//定义文件型指针变量voidmain();voidfn();//航班信息函数Plane*PCreate()//创建航线上的航班链表{intk=1;Plane*ps;Plane*pEnd;ps=newPlane;//新链表-pscout请输入航班号:;cinps-num;cout起飞的时间:;cinps-Stime;cout抵达的时间:;cinps-Etime;cout起点:;cinps-Start;cout终点:;飞机订票系统第15页共30页15cinps-Ends;cout该航班现票价:;cinps-Price;cout该票价的折扣:;cinps-Discount;cout准载人数:;cinps-Msum;coutendlendl;pEnd=ps;//起始地址-终点地址while(ps-num!=0){if(Phead==NULL)Phead=ps;elsepEnd-next=ps;pEnd=ps;ps=newPlane;cout航班号(输入0结束):;cinps-num;}pEnd-ne