【精品】数据结构(c语言)实验报告_飞机订票系统道_第1页
【精品】数据结构(c语言)实验报告_飞机订票系统道_第2页
【精品】数据结构(c语言)实验报告_飞机订票系统道_第3页
【精品】数据结构(c语言)实验报告_飞机订票系统道_第4页
【精品】数据结构(c语言)实验报告_飞机订票系统道_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构课程设计报告一、订票系统【需求分析】本订票系统要能够实现航班情况的录入功能、航班的查询功能、订票功能、退票功能以及管理本系统的功能即能够修改航班信息。具体分析如下1、录入功能可以录入航班信息,如录入航班号,到达城市,起飞时间,飞机票数,票价。2、查询功能可以查询航班的各项信息,如可以查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓,航班号。3、订票功能可以订票并且记录下乘客的相关信息如记录下乘客姓名,身份证号码,所订航班的航班号以及所订的票数。4、退票功能可以退票并且记录乘客的相关信息以及退票信息。5、修改功能可以根据需要由管理员对航班信息进行修改更正。【概要设计】1、算法设计每个模块的算法设计说明如下(1)录入模块查找单链表的链尾,在链尾插入一个“航班信息”的新结点。(2)查询模块提供两种查方式按航号和按航线查询,1代表按航号查询,2代表按航线查询。0则表示退出查询。顺着单链表查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功。(3)订票模块查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功,否则失败。(4)退票模块输入要退票的乘客姓名以及证件号码,查找乘客资料的链表中是否有这位乘客,有则删去此结点,并在空位加上1,无则退票失败。(5)修改模块输入密码,确认是否有权限对航班信息进行修改,有则在航班信息链表中查找要修改的结点,进行修改,否则不能修改。2存储结构设计(1)航班的信息为了便于查找和修改,航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞达到的时间、空座和目的的、票价以及限座七个数据项航班号起飞时间达到时间目的地限座空座票价单链表如下HD1D2D3每个结点包括数据域和指针域数据域指针域C语言描述如下TYPEDEFSTRUCTFLIGHTNODECHARAIR_NUM10/航班号/CHARSTART_TIME15/起飞时间/CHAREND_TIME15/到达时间/CHAREND_PLACE30/目的地/INTTOTAL/限座/INTLEFT/空座/INTPRICE/票价/STRUCTFLIGHTNODENEXT/指向个结点/FLIGHTNODE(2)旅客的资料为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素包括姓名、证件号码、航班号和座位号四个数据项旅客姓名证件号码航班号座位号每个结点包括数据域和指针域数据域指针域C语言描述如下TYPEDEFSTRUCTPASSENGERNODE/定义乘客资料结点/CHARNAME20CHARID_NUM20CHARAIR_NUM20INTSEAT_NUMSTRUCTPASSENGERNODENEXTPASSENGERNODE【详细设计】本系统源程序如下INCLUDELTSTDIOHGTINCLUDELTSTDLIBHGTDEFINEOK1DEFINEERROR0TYPEDEFSTRUCTFLIGHTNODE/定义航班信息结点/CHARAIR_NUM10CHARSTART_TIME15CHAREND_TIME15CHAREND_PLACE30INTTOTALINTLEFTINTPRICESTRUCTFLIGHTNODENEXTFLIGHTNODETYPEDEFSTRUCTPASSENGERNODE/定义乘客资料结点/CHARNAME20CHARID_NUM20CHARAIR_NUM20INTSEAT_NUMSTRUCTPASSENGERNODENEXTPASSENGERNODEFLIGHTNODEHEAD_FLIGHT/生成航班信息的头结点/PASSENGERNODEHEAD_PASSENGER/生成乘客资料的头结点/INTCREATFLIGHTFLIGHTNODEL/生成航班信息链表/INTCREATPASSENGERPASSENGERNODEL/生成乘客资料链表/INTINSERTFLIGHTFLIGHTNODEPCHARAIR_NUMCHARSTART_TIMECHAREND_PLACEINTTOTALINTLEFTINTPRICE/插入航班信息的结点/INTINSERTPASSENGERPASSENGERNODEPCHARNAMECHARID_NUMCHARAIR_NUMINTSEAT_NUM/插入乘客资料的结点/FLIGHTNODEMODEFY_AIRLINEFLIGHTNODELCHARAIR_NUM/修改航班信息的函数/INTBOOKTICKETFLIGHTNODEACHARAIR_NUMPASSENGERNODECCHARNAMECHARID_NUM/订票函数/INTCANCELTICKETPASSENGERNODECFLIGHTNODELCHARNAMECHARID_NUM/退票函数/INTSEARCHFLIGHTFLIGHTNODEHEAD/查询航班信息函数/INTSEARCHPASSENGERPASSENGERNODEHEAD/查询乘客信息函数/VOIDMAIN/主函数/INTP2/P1时进入主菜单,P0时退出系统/PASSENGERNODECUSHEAD_PASSENGERFLIGHTNODEAIRHEAD_FLIGHTCHARNAME20AIR_NUM20ID_NUM30MIMA20CHCHART20QUOTZHENGJIANZEQUOT/管理员密码/CLRSCRCREATFLIGHTAMPAIRCREATPASSENGERAMPCUSWHILEP2PRINTFQUOTNWELCOMETOTHEAIRLINESYSTEMNNPLEASECHOOSETHESERVESBELOWANDPRESSTHENUMBERNNQUOTPRINTFQUOTNNQUOTPRINTFQUOT1GTBOOKTICKETNQUOTPRINTFQUOT2GTCANCELTICKETNQUOTPRINTFQUOT3GTSEARCHINFORMATIONNQUOTPRINTFQUOT4GTEXITNNQUOTPRINTFQUOTNQUOTSWITCHCHGETCHCASE1PRINTFQUOTNBOOKINGTICKETNQUOT/进入订票功能/PRINTFQUOTPLEASEINPUTAAIRLINENUMBERANDPRESSENTERFOROKQUOTSCANFQUOTSQUOTAIR_NUMPRINTFQUOTPLEASEINPUTYOURNAMEANDPRESSENTERFOROKQUOTSCANFQUOTSQUOTNAMEPRINTFQUOTPLEASEINPUTYOURIDNUMBERANDPRESSENTERFOROKQUOTSCANFQUOTSQUOTID_NUMBOOKTICKETAIRAIR_NUMCUSNAMEID_NUMGETCHBREAKCASE2PRINTFQUOTCANCELINGTICKETNQUOT/进入退票功能/PRINTFQUOTPLEASEINPUTTHECANCELNAMEFORBOOKINGTICKETQUOTSCANFQUOTSQUOTNAMEPRINTFQUOTPLEASEINPUTTHEIDFORBOOKINGTICKETQUOTSCANFQUOTSQUOTID_NUMCANCELTICKETCUSAIRNAMEID_NUMBREAKCASE3PRINTFQUOTSEARCHINFORMATIONNQUOT/进入信息查询功能/PRINTFQUOT1GTFLIGHTINFORMATIONNQUOTPRINTFQUOT2GTPASSENGERINFORMATIONNQUOTPRINTFQUOTOTHERGTEXITNQUOTPRINTFQUOTNQUOTIFCHGETCH1/航班信息查询/PRINTFQUOTFLIGHTINFORMATIONNQUOTSEARCHFLIGHTAIRELSEIFCH2/乘客资料查询/PRINTFQUOTNPLEASEINPUTTHEKEYQUOTSCANFQUOTSQUOTMIMA/输入管理员密码/IFSTRCMPMIMAT0PRINTFQUOTNPASSENGERINFORMATIONNNQUOTSEARCHPASSENGERCUSELSEPRINTFQUOTSORRYTHEKEYISWRONGQUOTGETCHBREAKCASE4GETCH/退出系统/P0BREAKFLIGHTNODEHEAD_FLIGHTFLIGHTNODEAAFLIGHTNODEMALLOCSIZEOFFLIGHTNODEIFANULLAGTNEXTNULLRETURNAPASSENGERNODEHEAD_PASSENGERPASSENGERNODECCPASSENGERNODEMALLOCSIZEOFPASSENGERNODEIFCNULLCGTNEXTNULLRETURNCINTCREATFLIGHTFLIGHTNODELFLIGHTNODEPLINTI0CHARAIR_NUM3QUOTFLIGHT01QUOTQUOTFLIGHT02QUOTQUOTFLIGHT03QUOTCHARSTART_TIME3QUOT0800QUOTQUOT1200QUOTQUOT1630QUOTCHAREND_PLACE3QUOTGUANGZHOUQUOTQUOTSHENZHENQUOTQUOTSHANTOUQUOT/初始化航班信息/INTTOTAL3100100100INTPRICE3300200250INTLEFT3235476FORI0ILT3IINSERTFLIGHTAMPPAIR_NUMISTART_TIMEIEND_PLACEITOTALILEFTIPRICEI/插入航班信息/RETURNOKINTCREATPASSENGERPASSENGERNODELPASSENGERNODEPLINTI0CHARNAME3QUOTLIMINGQUOTQUOTXIMINGQUOTQUOTCHONGLIANGQUOTCHARID_NUM3QUOT3105006052QUOTQUOT3105006054QUOTQUOT3105006051QUOT/初始化乘客资料/CHARAIR_NUM3QUOTFLIGHT01QUOTQUOTFLIGHT02QUOTQUOTFLIGHT03QUOTINTSEAT_NUM31258FORI0ILT3IINSERTPASSENGERAMPPNAMEIID_NUMIAIR_NUMISEAT_NUMI/插入乘客资料/RETURNOKINTINSERTFLIGHTFLIGHTNODEPCHARAIR_NUMCHARSTART_TIMECHAREND_PLACEINTTOTALINTLEFTINTPRICEFLIGHTNODEQQFLIGHTNODEMALLOCSIZEOFFLIGHTNODESTRCPYQGTAIR_NUMAIR_NUMSTRCPYQGTSTART_TIMESTART_TIMESTRCPYQGTEND_PLACEEND_PLACEQGTTOTALTOTALQGTLEFTLEFTQGTPRICEPRICEQGTNEXTNULLPGTNEXTQPPGTNEXT/航班信息链的尾插法/RETURNOKINTINSERTPASSENGERPASSENGERNODEPCHARNAMECHARID_NUMCHARAIR_NUMINTSEAT_NUMPASSENGERNODEQQPASSENGERNODEMALLOCSIZEOFPASSENGERNODESTRCPYQGTNAMENAMESTRCPYQGTID_NUMID_NUMSTRCPYQGTAIR_NUMAIR_NUMQGTSEAT_NUMSEAT_NUMQGTNEXTNULLPGTNEXTQPPGTNEXT/乘客资料链表的尾插法/RETURNOKFLIGHTNODEMODEFY_AIRLINEFLIGHTNODELCHARAIR_NUMFLIGHTNODEPPLGTNEXTFORPNULLPPGTNEXTIFSTRCMPAIR_NUMPGTAIR_NUM0PGTLEFTRETURNLPRINTFQUOTNOTHEAIRLINEQUOTRETURN0INTBOOKTICKETFLIGHTNODEACHARAIR_NUMPASSENGERNODECCHARNAMECHARID_NUMFLIGHTNODEPAPASSENGERNODEQCGTNEXTPAGTNEXTFORQGTNEXTNULLQQGTNEXTFORPNULLPPGTNEXTIFSTRCMPPGTAIR_NUMAIR_NUM0IFPGTLEFTGT0PRINTFQUOTNSUCCESSFULFORBOOKINGTICKETNNYOURFLIGHTSNYOURSEATNUMBERDQUOTPGTAIR_NUMPGTTOTALPGTLEFT1PRINTFQUOTNQUOTINSERTPASSENGERAMPQNAMEID_NUMAIR_NUMPGTTOTALPGTLEFT1PGTLEFTRETURNOKELSEPRINTFQUOTSEATISFULLQUOTRETURN0/IFSTRCMP/PRINTFQUOTSORRYTHEREISNTTHEPLANEPLEASECHECKTHEAIRLINENUMBERQUOTPRINTFQUOTNQUOTINTCANCELTICKETPASSENGERNODECFLIGHTNODELCHARNAMECHARID_NUMPASSENGERNODEPPRCHARAIR_NUM20PRCPPRGTNEXTWHILEPNULLIFSTRCMPPGTNAMENAME0AMPAMPSTRCMPPGTID_NUMID_NUM0STRCPYAIR_NUMPGTAIR_NUMLMODEFY_AIRLINELAIR_NUMPRGTNEXTPGTNEXTPPRGTNEXTPRINTFQUOTSUCCESSFULFORCANCELINGTICKETQUOTPRINTFQUOTNQUOTRETURNOKPRPRGTNEXTPPRGTNEXTPRINTFQUOTSORRYTHEREISNTTHECUSTOMERQUOTPRINTFQUOTNQUOTRETURNERRORINTSEARCHFLIGHTFLIGHTNODEHEADFLIGHTNODEPHEADGTNEXTPRINTFQUOTFLIGHTSTART_TIMEARRIVAL_PLACEPRICETOTALLEFT_SEATNNQUOTFORPNULLPPGTNEXTPRINTFQUOTS10S9S7D6D6DNQUOTPGTAIR_NUMPGTSTART_TIMEPGTEND_PLACEPGTPRICEPGTTOTALPGTLEFTPRINTFQUOTNQUOTPRINTFQUOTNNQUOTRETURNOKINTSEARCHPASSENGERPASSENGERNODEHEADSTRUCTPASSENGERNODEQHEADGTNEXTPRINTFQUOTNAMEIDFLIGHTSEAT_NUMBERNNQUOTFORQNULLQQGTNEXTPRINTFQUOT12S8S5SDNQUOTQGTNAMEQGTID_NUMQGTAIR_NUMQGTSEAT_NUMPRINTFQUOTNQUOTPRINTFQUOTNQUOTRETURNOK【调试分析】1、调试结果(1)系统主菜单界面(2)进入订票的界面(3)查询信息的界面选择1,查询航班信息的界面选择2,输入密码,查询乘客的信息的界面新增乘客,查询乘客信息密码错误时(4)进入退票的界面名字或者证件错误时2、时间复杂度分析本程序运行所耗费的时间主要在于循环语句,和WHILE语句,FOR(N)其时间复杂度应该为O。3、模块设计和调试时存在问题的思考原先在信息查询中没有乘客与管理人员的区别,乘客与管理人员都可以看到相同的信息,航班信息和乘客资料,后来,在浏览乘客资料时要求输入管理人员的密码,以确保乘客资料的安全性。4、算法的改进设想本程序还存在很多缺点,不能完全的实现老师要求的各种功能,特别是在查询功能方面,此程序应该增加一些查询的方式的设计,如可以按照终点地查询等。调整后在VC60中的运行/飞机售票系统CPPDEFINESTHEENTRYPOINTFORTHECONSOLEAPPLICATION/INCLUDEQUOTSTDAFXHQUOTINCLUDELTSTDIOHGTINCLUDELTSTDLIBHGTINCLUDELTSTRINGHGTINCLUDELTWINDOWSHGTDEFINEOK1DEFINEERROR0TYPEDEFSTRUCTFLIGHTNODE/定义航班信息结点/CHARAIR_NUM10CHARSTART_TIME15CHAREND_TIME15CHAREND_PLACE30INTTOTALINTLEFTINTPRICESTRUCTFLIGHTNODENEXTFLIGHTNODETYPEDEFSTRUCTPASSENGERNODE/定义乘客资料结点/CHARNAME20CHARID_NUM20CHARAIR_NUM20INTSEAT_NUMSTRUCTPASSENGERNODENEXTPASSENGERNODEFLIGHTNODEHEAD_FLIGHT/生成航班信息的头结点/PASSENGERNODEHEAD_PASSENGER/生成乘客资料的头结点/INTCREATFLIGHTFLIGHTNODEL/生成航班信息链表/INTCREATPASSENGERPASSENGERNODEL/生成乘客资料链表/INTINSERTFLIGHTFLIGHTNODEPCHARAIR_NUMCHARSTART_TIMECHAREND_PLACEINTTOTALINTLEFTINTPRICE/插入航班信息的结点/INTINSERTPASSENGERPASSENGERNODEPCHARNAMECHARID_NUMCHARAIR_NUMINTSEAT_NUM/插入乘客资料的结点/FLIGHTNODEMODEFY_AIRLINEFLIGHTNODELCHARAIR_NUM/修改航班信息的函数/INTBOOKTICKETFLIGHTNODEACHARAIR_NUMPASSENGERNODECCHARNAMECHARID_NUM/订票函数/INTCANCELTICKETPASSENGERNODECFLIGHTNODELCHARNAMECHARID_NUM/退票函数/INTSEARCHFLIGHTFLIGHTNODEHEAD/查询航班信息函数/INTSEARCHPASSENGERPASSENGERNODEHEAD/查询乘客信息函数/VOIDMAIN/主函数/INTP2/P1时进入主菜单,P0时退出系统/PASSENGERNODECUSHEAD_PASSENGERFLIGHTNODEAIRHEAD_FLIGHTCHARNAME20AIR_NUM20ID_NUM30MIMA20CHCHART20QUOTTIANDINGHAOQUOT/管理员密码/SYSTEMQUOTCLSQUOTCREATFLIGHTAMPAIRCREATPASSENGERAMPCUSWHILEP2PRINTFQUOTNTTT欢迎来到航空系统TNNTTT请选择下面的服务项NNQUOTPRINTFQUOTNNQUOTPRINTFQUOT1GT预定机票NQUOTPRINTFQUOT2GT退票NQUOTPRINTFQUOT3GT查询信息NQUOTPRINTFQUOT4GT退出NNQUOTPRINTFQUOTNQUOTSWITCHCHGETCHARCASE1PRINTFQUOTN预定机票NQUOT/进入订票功能/PRINTFQUOT请输入航班号,按回车键就好了QUOTSCANFQUOTSQUOTAIR_NUMPRINTFQUOT请输入您的姓名,然后按回车就好了QUOTSCANFQUOTSQUOTNAMEPRINTFQUOT请输入你的身份证号码,然后按回车就好了QUOTSCANFQUOTSQUOTID_NUMBOOKTICKETAIRAIR_NUMCUSNAMEID_NUMGETCHARBREAKCASE2PRINTFQUOT退票NQUOT/进入退票功能/PRINTFQUOT请输入取消预订车票的名称QUOTSCANFQUOTSQUOTNAMEPRINTFQUOTPLEASEINPUTTHEIDFORBOOKINGTICKETQUOTSCANFQUOTSQUOTID_NUMCANCELTICKETCUSAIRNAMEID_NUMBREAKCASE3PRINTFQUOT查询信息NQUOT/进入信息查询功能/PRINTFQUOT1GTFLIGHTINFORMATIONNQUOTPRINTFQUOT2GTPASSENGERINFORMATIONNQUOTPRINTFQUOTOTHERGTEXITNQUOTPRINTFQUOTNQUOTIFCHGETCHAR1/航班信息查询/PRINTFQUOT航班信息NQUOTSEARCHFLIGHTAIRELSEIFCH2/乘客资料查询/PRINTFQUOTN请输入密码QUOTSCANFQUOTSQUOTMIMA/输入管理员密码/IFSTRCMPMIMAT0PRINTFQUOTN乘客信息NNQUOTSEARCHPASSENGERCUSELSEPRINTFQUOT对不起,这条是错误的QUOTGETCHARBREAKCASE4GETCHAR/退出系统/P0BREAKFLIGHTNODEHEAD_FLIGHTFLIGHTNODEAAFLIGHTNODEMALLOCSIZEOFFLIGHTNODEIFANULLAGTNEXTNULLRETURNAPASSENGERNODEHEAD_PASSENGERPASSENGERNODECCPASSENGERNODEMALLOCSIZEOFPASSENGERNODEI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论