您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 数据结构课程设计航空订票系统
数据结构课程设计报告1航空客运订票系统的设计与实现一、设计目的:设计一个航班订票系统,提高对信息管理、信息查找和排序算法的应用能力。二、问题的描述:航空客运订票的业务包括查询航线和客票预定的信、客票预定和办理退票等,设计一个程序以使上述任务借助计算机完成。三、数据结构的设计://航线结构structairline{charcityname[15];//终点站charairnum[15];//航班号charplanenum[15];//飞机号charqjtime[15];//起降时间intprice;//价格intdisc;//折扣intnum;//总座位数intrempla;//剩余位置(票数)linklist*order;linkqueuewait;}line;//定义链表队列typedefstructwait{charname[6];intordnum;structwait*next;}qnode,*qptr;//无票时其余等候买票队列typedefstructlistqueue{qptrfront;//对头qptrrear;//队尾}linkqueue;数据结构课程设计报告2typedefstructorder{charname[15];//客户姓名charcrenum[15];//证件号charairnum[15];//航班号charplanenum[15];//飞机号intordnum;//订票数量intrempla;//剩余位置intnum;//总座位数charqjtime[15];//起降时间structorder*next;}linklist;建立了航班的终点站,航班号,飞机号,起降时间,价格,折扣,总座位数,剩余位置,指向客户信息tructorder指针,等候买票的队列的结构体信息。建立了客户的客户姓名,证件号,航班号,飞机号,订票数量,剩余位置,总座位数,起降时间,链接下一位的指针的结构体信息。客户买票需要等票,建立等票时候的结构体信息:有客户的姓名与客户的订票数。建立客户排队买票的队列,队头队尾均为structwait的指针类型。通过我的上课的学习与数据结构书上的思想方法的温故参考学习,我明白指针与结构体的融合可以实现一个链。客户等待时候用一个队列实现等候的操作。四、功能(函数)设计:功能模块有航班信息的保存模块,航线系统模块,通过城市查询航班信息模块,订票业务模块,退票业务模块,退出系统模块,菜单系统模块这7个模块之间功能实现独立,可以很好地通过主函数调用个个不同的模块。模块间的耦合很小。具体功能描述如下:1.保存模块:函数save实现对航班的终点站,航班号,飞机号,起降时间,价格,折扣,总座位数,剩余位置信息保存在磁盘文件中。本函数的使用intfwrite(void*,intsize,int,FILE*stream);实现对信息保存至磁盘文件中。2.航线系统模块:函数list实现打印航班的信息。它通过对for循环实现对每个航班信息的打印输出。实现了航班信息的输出。3.城市查询航班信息模块:函数search通过头结点检索提示用户输入要搜索的城市,然后通过strcmp函数与指向数组链表指针的信息匹配来实现搜索功能。且在整个函数中可用性好,可重复率高。实现很好的模块化设计。4.订票业务模块:数据结构课程设计报告3函数order可实现对航班订票客户信息的增加,通过对头结点的调用使用while循环通过指针移动找到要在哪个航班后面增加。通过对结构体内指针指向新申请地址来增加航班客户订票的信息。函数order来实现对某航班订票信息的增加。5.退票业务模块:函数refund()可实现航班订票客户信息的删除,通过对头结点使用while的循环找到需删除的结点的姓名信息,然后把查找到的信息结点删除。函数refund来实现对所需信息的删除。6.退出系统模块:通过main函数定义为int型,若用户输入退出系统的信息main函数返回0;系统自动退出;7.菜单系统模块通过资源的查找实现一个界面对称好看的导航菜单系统其中包括了要保存模块,航线系统模块,通过城市查询航班信息模块,订票业务模块,退票业务模块,退出系统模块,菜单系统模块。8.main:1:main函数通过各个函数模块的调用整合实现啦所需设计的问题。保存模块,航线系统模块,通过城市查询航班信息模块,订票业务模块,退票业务模块,退出系统模块,菜单系统模块分别对应的函数及函数间调用如下:voidsave(void);voidlist();voidsearch(),structairline*find();voidorder();voiddisplay(structairline*);voidrefund();intmenu();intmain();其他辅助函数实现一些中间的功能,这样函数实现可重用化就,减少代码:linklist*increlist(linklist*,char[],char[],char[],charchar[],int,char[]);linkqueueincrequeue(listqueuet,charname[],intordnum);voidprint();2.函数之间的关系:函数间关系图如下:数据结构课程设计报告4函数调用图如上,各个函数模块化设计,函数之间的数据传递少均通过函数间相互调用,把函数之间联系起来,这样函数的重用率高,设计代码的效率更高,用很好的实用性,很好的兼容性。五、界面设计:Main函数中通过switch语句对于所有的模块进行整合。用户通过键盘通过提示输入相关信息。对航班信息的航线查询,通过城市查询航班,订票业务,退票业务,查询已定客户信息。searchfindmenuprint1orderdisplayMainrefund返回int型save数据结构课程设计报告5六、程序设计:函数流程图:find函数refund函数数据结构课程设计报告6list函数search函数increlist函数order函数menu函数increqueue函数数据结构课程设计报告7display函数print函数save函数main函数流程图如上问题:1.问题1(1)问题描述:输入时字符数组输入不稳定。(2)解决办法:在反复尝试中还没发现,后来在同学帮助下发现是一些基础问题,对于链表中数组字符的如scanf(%s,&p-name);这样是有问题的.虽然是一个会的人看似很简单的问题,但对于意念中存在看这样问题的人是很严重数据结构课程设计报告8的。由此要多多与同学交流,特别是编程的思想理念,很是重要。对于个人存在的基本被错误要通过多编程序发现,并及时改正。细节很决定成败。2.问题2(1)问题描述:对于界面该觉很不舒服(2)解决办法:通过网络上搜索,查询,发现界面的模块设计好之后程序的界面要精练实用,让用户操作方便,可通过switch很好的实现我的想法。3.问题3(1)问题描述:对于姓名的查找不知如何实现(2)解决办法:通过查资料,看c课本发现一很好用的字符比较函数strcmp;通过字符比较是否等于0来实现对姓名的查找。七、运行与测试:1、测试的数据及其结果:测试的数据从文件读取截图:查询城市得到的结果:订票业务的结果:数据结构课程设计报告9退票业务测试结果:2、运行与测试期间遇到的问题及其解决办法。(1)问题1问题描述:程序的输入信息保存磁盘时读出来是乱码。解决办法:对于数量较多的信息尽量可以一次性读入到文件中,然后fread与fwrite配合好的,对应好最终问题得以解决。(2)问题2问题描述:删除时候不能删除解决办法:在定义是结构体指针时,所定义的链,期间指针的指向出现很大的问题,会出现乱码。通过对代码的仔细观看寻找出问题。八、设计后的思考:此次设计有很深体会,程序设计是一系列的配合,他不容易一点的语言问题,因此基本语言知识必须完善,否则就是找不到问题,编译不能通过。很是没效率。程序的设计需要自己动手去好好研究好好做,这样才会发现很多问题,发现很多不足,并会想办法解决它,这样提高的很快。对于c语言的经验也会提的很多,且你会感到编程的魅力。特别是一个程序设计成功时那种喜悦之情是很好的,所以编程是一件很美的事。另外,可能一个程序调试要6、7个小时才能调好甚至更多,因此需要有耐心,编程的数据结构课程设计报告10人要耐心,细心,且有责任心。此外,虽然是一个会的人看似很简单的问题,但对于意念中存在错误观念,错误逻辑,或错误语法的人是很严重的。由此要多多与同学交流,特别是编程的思想理念,很是重要。且编写的程序模块化要好,程序的可移植性要好,可以把函数封装的很好,函数间很好调用,函数间数据传递很好办到。总之,编程时一系列的配合,需要一个人有很强耐心,细心,责任心。
本文标题:数据结构课程设计航空订票系统
链接地址:https://www.777doc.com/doc-6373502 .html