2022年数据结构大作业航空公司订票系统

上传人:ni****g 文档编号:504352867 上传时间:2023-01-18 格式:DOC 页数:18 大小:334.04KB
返回 下载 相关 举报
2022年数据结构大作业航空公司订票系统_第1页
第1页 / 共18页
2022年数据结构大作业航空公司订票系统_第2页
第2页 / 共18页
2022年数据结构大作业航空公司订票系统_第3页
第3页 / 共18页
2022年数据结构大作业航空公司订票系统_第4页
第4页 / 共18页
2022年数据结构大作业航空公司订票系统_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《2022年数据结构大作业航空公司订票系统》由会员分享,可在线阅读,更多相关《2022年数据结构大作业航空公司订票系统(18页珍藏版)》请在金锄头文库上搜索。

1、航空公司订票系统一、我的认识和设计思路1 我充分利用数据结构课程设计,利用几种典型数据结构(链表,队列,线性表等结构),结合上学期学习的程序设计语言(C/C+语言),链表是实现存储空间动态管理的链式存储结方式,而队是一种操作受限的线性表。使用大量指针,来实现一个比较完整的应用系统的设计与开发。2 我通过课程设计一些程序的调试(比如背包问题,病人看病模拟程序,停车场管理程序),通过比较系统的分析、编程和不断调试,进一步理解和掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用 。基本上达到了复习的要求。3 我将知识应用于实际的方法,联想到售票系统的使用,也可以提高综合能

2、力。所以我选择了航空订票系统,也可以应用于其他售票系统。 航空空订票系统所涉及的知识:(1)熟练掌握链表存储结构及其建立过程和常用操作;(2)熟练掌握队列的建立过程和常用操作;(3)学会自己调试程序。4. 通过上网查询和结合实际可知, 航空客运订票的业务活动包括:查询航线、客票预订和办理退票等等。设计了一个航空公司订票系统,以使上述业务可以借助计算机来完成。下面是一些程序功能设想:1 每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量); 2 全部数据可以只放在

3、内存中; 3 系统能实现的操作和功能如下: a) 查询航线: 根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额; b) 承办订票业务: 根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续, 输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求。若需要,可登记排队候补; c) 退票业务: 根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。 功能系统图:主函数浏览航线信息浏

4、览已订票客户信息查询航线办理订票业务办理退票业务退出系统按剩余票数排序实现的功能模块说明(1)显示全部航线的信息;(2)查询订票客户的信息;(3)根据客户提供的终点站,调用find()函数进行查找,调用list()函数输出航线信息;(4)办理订票业务:根据客户提供的航班号进行查询航线信息,若客户订票额超过乘员定票总额,退出,若客户订票额末超过余票量,订票成功并登记信息,在订票乘员名单域中添加客户信息;如果暂时没有票,询问客户是否要排队等侯,如果是,则在等候队列增加该客户的订票信息。(5)办理退票业务:调用查询函数,根据客户提供的航线进行搜索根据客户提供的姓名到订票客户名单域进行查询。退票成功后

5、,重新将航线名单域指向订票单链表的头指针。根据队列中从出的客户信息判断是否满足要求,如果满足,则将该客户的信息插入到乘客信息链表中。(6)退出本系统二、我进行了以下改进:(1) 主函数的表达方式。菜单界面的的改进: menu(); printf(请选择菜单:n); i=5; scanf(%d,&i); switch(i) case 1: printf(请输入要查询的线:n); scanf(%s,airline); printf(航线n); printf(起点 - 终点 飞机号 航班号 飞行周日 乘员定额 余票数 n); lookup(airline,LF); break; case 2: pr

6、intf(请输入要预定的航班号:n); scanf(%d,&number); book(number,LF); break; case 3: printf(请输入要退票的航班号:n); scanf(%d,&number); back_ticket(number,LF); break; case 4: printf(查看客户资料,输入客户的航班号n); scanf(%d,&number); GetElem(LF,number); break; case 5: drop_out= -1; break; default: printf(选择有误n); int menu_select()/*菜单界面*

7、/ int c; char s20; printf(ntt航空客运订票系统n); printf(*n); printf(1.浏览航线信息:n);/添加的功能 printf(2.查询客户信息:n); printf(3.查询航线n); printf(4.办理订票业务:n); printf(5.办理退票业务:n); printf(6.退出系统n); printf(*n); do printf(请选择:); scanf(%s,s); c=atoi(s);/ while(c7); return c;void main() struct airline airMAXSIZE=beijing,1,k6643

8、,SUN,3,3,hainan,2,k850,MON,2,2,xingjiang,3,b2282,FRI,1,1;/*初始化航线信息*/ /* clrscr();*/ start=air; for(;) switch(menu_select() case 1:list();break; case 2:prtlink();break; case 3:search();break; case 4:order();break; case 5:return_tkt();break; case 6:printf(n欢迎使用本系统,再见!n);exit(0); printf(nPress any key

9、to continue!n); getch();/三、详细设计及运行结果(1)显示已初始化的全部航线信息开始初始化iMAXSIZE?调用find()函数输出结束(2)浏览已订票客户信息开始调用find()函数P=NULL?P不为空该航线没有客户信息输出客户信息结束(3)查询航线开始初始化iter_name)info+,i+i=MAXSIZE调用函数输出未找到结束(4)办理订票业务开始初始化!(info=find()客户订票额不超过乘员定票总额,登记信息加到客户名单域结束在排队等候乘员名单域中添加客户信息(5)办理退票业务开始调用find函对航线搜索数p1!=NULLp1!=NULL删除客户信息

10、重新将航线名单域指向订票单链表的头指针,重新将航线名单域指向订票单链表的头指针,r指向排队等候名单队列的尾结点t不为空将客户信息插到订票客户名单链表头结点将客户信息插到订票客户名单链表结束四、改进后的运行结果:(窗口反而变得简单,明了)1、浏览航线信息: 2、查询航线:3、办理退票手续:4办理订票和查询客户信息:五、总结和体会总体的思路和过程我在编译和调试的时候,选择Visual C+6.0,因为实验室的工具有些欠缺,通过上网和同学交流,进行了改进,在自己的计算机上更改了入径之后,该工具比较稳定,在使用调试这个强大工具时才发现上学期的遗留问题,还不是很熟悉。这需要今后进一步的练习。验证了一句话

11、:代码是敲出来的,不是看出来的。 在一周半的时间里,我不断地对程序各模块进行修改、编译、调试、运行,其间遇到很多问题:在编写的时候我只会使用相对较为简单的基础语言 ,凭借C语言的基础,代替了相对较为复杂的语言,降低了运行效率。其中在程序的主函数switch语句的使用中得到验证。不同的表示会有不同的效果。源程序会经常出现溢出错误,而且不只一处。比如队空队满的判断,函数定义的数据类型出现了问题,对函数的定义不清楚,字符的不正确定义造成了一些不必要的错误。 而我又认识了几种函数应用,比如:(1)getch()和getchar()在使用是功能相同的,但getch()并非标准C中的函数,不存在C语言中,

12、它所在头文件是conio.h。所以在使用的时候要注意程序的可移植性。也只有国内C语言新手常常使用getch();来暂停程序且不知道此函数来源,建议使用getchar();在不同平台,输入回车,getch()将返回不同数值,而getchar()统一返回10(即n).用getch();会等待你按下任意键,再继续执行下面的语句;(2)也知道了exit(0):/正常结束程序运行 【exit(非0):非正常结束程序运行】(3)函数strcpy(lnew-name,name); 是把name指向的字符串复制给lnew-name中去;strcmp(name,info-ter_name)/ 比较字符串name

13、和info-ter_name的大小(4)测试用例具有一定的广泛性。运行程序时输入了多种不同字符信息,经过多次修改结果达到了预期效果。说明程序具有一定的可靠性和稳定性,可以应用于其他一些系统中。加深了自己对c语言的规范使用。例如,调用函数时,数组只需要传递数组名即可;字符0和整形的0是不同的文明不可以直接对其画等号。并且在调试的过程中,我也发现使用结构体数组来存储存编译的字符,编译代码时通过结构体数组来实现要优于使用链表。学习体会这次的大作业,是我更加认识了数据结构,对调试掌握的也更加熟练了一些,改变了过去只调试不知道如何对照程序语言修改程序的坏习惯,对调试也有了新的认识,理解了调试的目的和意义,意识到了程序语言的规范性以及我们在编程时要耐心,要严谨,同时在写程序时多多加些注释,既增加了程序的可读性,也可以使自己在读程序时更容易,更清楚。 可以说在这次实践中我对c

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号