1、数据结构和算法课程设计汇报 王婧、龚丹、宋毅 编 写 题目: 航空订票管理系统 学期: 秋 班号: 学号: 姓名: 成绩: 哈尔滨华德学院电子和信息工程学院12月一、实训设计目标和要求(注:正文为宋体,五号字,为单倍行距) (一)课程设计目标(不少于100字)1数据结构课程设计是综合利用数据结构课程中学到多个经典数据结构,和程序设计语言(C语言),自行实现一个较为完整应用系统。 2经过课程设计,自己经过系统分析、系统设计、编程调试,写试验汇报等步骤,深入掌握应用系统设计方法和步骤,灵活利用并深刻了解经典数据结构在软件开发中应用。3 学会将知识应用于实际方法,提升分析和处理问题能力,增加综合能力
2、。具体有:(1)熟练掌握链表存放结构及其建立过程和常见操作; (2)熟练掌握队列建立过程和常见操作; (3)学会自己调试程序方法并掌握一定技巧。(二)题目要求(不少于100字)1每条航线所包含信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票用户名单(包含姓名、订票量、舱位等级1,2或3)和等候替补用户名单(包含姓名和所需数量)。 2系统能实现操作和功效以下: (1)查询航线:依据用户提出终点站名输出以下信息:航班号、飞机号、星期几飞行和余票额; (2)承接订票业务:依据用户提出要求(航班号、订票数额)查询该航班票额情况,若有余票,则为用户办理订票手续,输出座位号;
3、若已满员或余票量少余订票额,则需重新问询用户要求。若需要,可登记排队候补; (3)承接退票业务:依据用户提出情况(日期、航班号),为用户办理退票手续,然后查询该航班是否有些人排队候补,首先问询排在第一用户,若所退票额能满足她要求,则为她办理订票手续,不然依次问询其它排队候补用户。二、实训环境配置Windows系统CodeBlocks三、设计正文1需求分析本订票系统能够实现全部航线信息浏览功效、订票用户信息查询功效、单条航线查询功效、订票功效和退票功效 。 具体分析以下:a) 全部航线信息浏览功效 浏览全部系统预设航线信息,每条航线包含信息有:终点站名、航班号、飞机号、飞行周日(星期几飞行)、乘
4、员定额和余票量。b) 订票用户信息查询功效 依据输入航班号查询该航线全部订票用户信息,包含用户姓名、订票数额和舱位等级。c) 单条航线查询功效 依据用户输入终点站名查看该航线上所包含信息。d) 订票功效 依据用户提出要求(航班号、订票数量)查询该航班票额情况,若还有余票,则为用户办理订票手续,输出座位号;若已满员或余票额少于定票额,则问询用户是否愿意排队等候,若愿意,系统则自动登记排队候补。 e) 退票功效 依据用户提供情况(航班、姓名),问询退票张数,然后为用户办理退票手续。接着系统自动查询该航班是否有些人排队候补,首先问询排在第一用户,若所退票额能满足她要求,则为她办理订票手续,不然依次问
5、询其它排队候补用户。2功效框图图1 航空订票系统3算法设计(1) 浏览航线模块:定义void display( struct airline *info),用info指向结构体struct airline中每一个组员;调用list()函数输出全部航线信息。 (2) 浏览订票用户信息模块:定义订票用户信息结构体ord_ros,依据输入航班号调用find()函数寻求用户信息。 (3) 查询航线模块:顺着单链表查找,假如和航班号(航线)一致,输出相关信息,不然,查询不成功。 (4) 订票模块:查找乘客要订航班号,判定此航班是否有空位,有则输入乘客相关信息,订票成功, 不然失败。 (5) 退票模块:输
6、入要退票乘客姓名,查找乘客资料链表中是否有这位乘客,有则删去此节点,并在空位上加1,无则退票失败。假如此时余票额大于等于候补用户订票数量,那么候补用户订票成功。4界面设计运行主界面图2 运行界面5系统测试订票测试图3 订票测试退票测试图4 退票测试四、小组组员分工说明独立完成五、总结1算法改善设想:(1)在算法效率上,因为此课程设计所用是线性表建立、查找、插入、删除、和队列建立、插入、删除,所包含是查找和排序问题,所以在建立插入时根据用户姓名进行有序,查找时采取分块查找,所以对订票用户信息存放应采取指针数组存放。 (2)在函数重组,把处理不一样问题相同算法思想(如线性表插入、删除、查找等等)写
7、在一个函数中,其它函数要用到这种操作时只需调用这些函数,这么会降低整个程序代码量,方便了解、阅读和使用。2课程设计期间关键收获:看着简单,做着难,我自己眼高收低,心太急,不过敢想敢写感尝试,努力付出还真有蛮多收获。 (1)学和做:做了这次课程设计,我认为课程设计这种形式真是我们需要,能够让我们学到很多,包含书上、书外。理论永远不等于实际。 我在调试时出现了很多问题,下面列举多个:程序中定义了一个字符串“new”,但在C-Free中“new不是以未定义形式存在,所以把“new”改写成“NEW”就能够了;C-Free中“getchar”表示读取下一个字符含义,而“getch”不表示,出现“getc
8、h”时系统会报错;在编写退票模块代码时,设计先输入退票数然后进行退票,调试时发觉舱位等级输出出现了混乱,以后经仔细分析才知道,原来“grade=p1-grade;”放在了if()大循环后面,而在if循环里p1已经释放,所以把“grade=p1-grade;”放在第一个“free(p1);”之前就能够了。真正会了这些算法,理论和实际永远 差那么一点,不去做是体会不出来。坐在电脑前才真正知道自己会不会,眼高手低是要不得。(2)C和算法描述:在学数据结构时候总是分不清算法和C语言区分,总认为算法就是程序了,经过这两周课程设计总算是把它们之间关系搞透彻了。其实算法是处理问题步骤;程序是算法代码实现;算
9、法要依靠程序来完成功效;程序需要算法作为灵魂。二者是相互联络密不可分。 (3)小收获:探索着做完课程设计,增强了自己自学能力,这应该是最有用吧,语言会过时,学习能力却不会过时。结构结构体;定义清楚明确多种变量;主函数、子函数申明及定义。另外:对函数调用,参数传输很有体会。 (4)碰到问题和感受:这次课程设计面临大问题就是选择余地太大,头脑不好受。连续几天思索,我全部不能决定攻克哪个,好多个全部是考虑了一部分又放弃了,以至前功尽弃。这使我认识到认定干一件事就必需将它干到底,以使自己思想连续。我也开始考虑当事情有重合时,怎样去应对,即使最终抉择不一定是正确。我也在这段时间内好好地看了一遍书,对书中算法思想有一个更深了解,即使在应用中显得不是很自如,可我经过这次课设体验到可视化编程乐趣。这也给我以后编程莫大激励,因为我认为所谓算法经过老师传授每个人全部会一点点,而课外东西则是经过自己学习取得。写程序是一个乐趣,尤其是当我看到程序运行成功时,我会感到无比喜悦。而数据结构是任何程序基础,没有数据结构支持,就没有程序存在,最少说不会存在有价值程序。有了数据结构知识,再加上程序设计技术,这对以后深入学习应该会有很大帮助