数据结构课程设计——航空客运订票系统

航空客运订票系统

一、引言

1.1 问题的提出

   随着时代的发展,智能化生产给社会带来方便与精确,本系统以方便大众,妥善管理机场票务操作为基旨而开发。

本程序以数据结构(c语言描述)存储结构进行开发。利用单链表等存储方式为基础进行开发。

本系统可以向客户提供订票业务。若航班票已售完,可以询问顾客是否排队等候。可退票,退票后修改相关数据文件并查看是否有排队等候此航班,若有,则按排队,先后售票。客户资料有姓名,证件号,订票数量及航班情况,订单有编号。修改航班信息:当航班信息改变可以修改航班数据文件。

1.2 任务需求分析

(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);

(2)系统能实现的操作和功能如下:

①录入:可以录入航班情况,全部数据可以只放在内存中,最好存储在文件中;

②查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;

③承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补;

④承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。

二、组件设计

2.1系统设计方案

(1)菜单:包括(航线信息,已订票客户信息,查询航线,订票业务,退票业务,余票排序和退出菜单)

(2)抽象数据类型定义

status InitList (LinkList &L)

(4)存储结构:本程序采用了单链表存储方式。用单链表增加订票乘员名单域的客户信息和排队等候的顾客信息。

(5)算法设计

顾客订票:运用单链表建立空表,用单链表增加订票乘员名单域的客户信息。时间复杂度为o(n);空间复杂度为o(1)。

排队候票顾客:运用单链表,若原排队等候客户名单域为空,则增加排队用户。若有空票,利用单链表指针查找有需要的客户,并对其售票。时间复杂度为o(n);空间复杂度为o(1)。

退票:调用查询函数,根据客户提供的航线进行搜索,根据客户提供的姓名,在订票客户名单域进行查询。若信息查询成功,删除订票客户名单域中的信息,重新将航线名单域指向订票单链表的头指针。时间复杂度为o(n);空间复杂度为o(1)。

完整资料私信我:

图1功能模块图


2.2功能设计模块

2.3详细设计

图2根据终点站名查询系统模块图


(1)根据客户需要输入终点站名 Info->ter_name,用strcmp函数即strcmp(name,info->ter_name)比较,若相同,则输出该航班信息,若不同则输出“对不起,该航班没找到!”该模块功能图如图2所示:

(2)办理订票模块

调用查询模块,若客户订票额超过乘员定票总额,退出。若客户订票额末超过余票量,订票成功并等记信息.若满员则询问是否排队等候。如图3所示:

图3办理订票系统模块图

(3)查看余票并排序模块

三、系统集成

3.1数据结构定义

typedef struct wat_ros {

    char name[10];//姓名

    int req_amt;//订票量

    struct wat_ros* next;

}qnode, *qptr;

typedef struct pqueue {

    qptr front;//等候替补客户名单域的头指针

    qptr rear;//等候替补客户名单域的属指针

}linkqueue;

typedef struct ord_ros {

    char name[10];//客户姓名

    int ord_amt;//订票量

    int grade;//舱位等级

    struct ord_ros* next;

}linklist;

3.2调试与测试

3.2.1 调试

1.程序在起初设计的时候,经常出现溢出错误,而且不只一处。为了修正这些溢出错误,耗费了大量的时间,修正解释之后再看源程序,才发现原来只是因为开始的函数定义的数据类型出现了问题,对函数的定义不清楚,字符的不正确定义造成了后期大量的纠错工作。

2.由于忘记了一些c语言的规范使得在调试过程中一些错误没有发现。例如,调用函数时,数组只需要传递数组名即可;字符‘0’和整形的0是不同的文明不可以直接对其画等号。

3.测试用例具有一定的广泛性。运行程序时输入了多种不同字符信息,经过多次修改结果达到了预期效果。说明程序具有一定的可靠性和稳定性。

3.2.2测试

(1)浏览航线信息功能测试输入数据1: 1

预期结果:终点站名航班号飞机号飞行日期乘员定额余票量

"beijing","1","B8571","SUN",3,3,

"shanghai", "2", "S1002","MON",15,5,

"london", "3","L1003","FRI",30,20

运行结果:终点站名航班号飞机号飞行日期乘员定额余票量

"beijing","1","B8571","SUN",3,3,

"shanghai", "2", "s1002",“MON",15,5,

"london", "3",“L1003","FRI",30,20

说明:预期和运行结果相同。

(2)浏览已订票客户信息测试

输入数据1:2,需要查询的航班

预期结果:该航线没有客户信息(当无人在该航班订票时)

输出该航线已订票客户名单(当有人在该航班订票时)

运行结果:该航线没有客户信息(当无人在该航班订票时)

输出该航线已订票客户名单(当有人在该航班订票时)

说明:预期和运行结果相同。

(3)查询航班测试

输入数据1:3,需要查询的终点站名

预期结果:对不起,该航班没找到(内存中没有要查找的信息)

输出该航班信息(内存中已存要查找的信息)

运行结果:对不起,该航班没找到(内存中没有要查找的信息)

输出该航班信息(内存中已存要查找的信息)

说明:预期和运行结果相同。

(4)办理订票业务测试

输入数据1:4

预期结果:输入客户信息,未满员,订票成功;满员,询问是否排队等候

运行结果:输入客户信息,未满员,订票成功;满员,询问是否排队等候

说明:预期和运行结果相同。

(5)办理退票业务测试

输入数据1:5

预期结果:订票成功并自动为替补客户办理该航班订票。

运行结果:订票成功并自动为替补客户办理该航班订票。

说明:预期和运行结果相同。

(6)查看余票并排队等候输入数据1:6

预期结果:按余票正序排列输出航班信息。

运行结果:按余票正序排列输出航班信息。

说明:预期和运行结果相同。

3.3运行效果图:

(1)点击运行,首先出现的是登录界面,选择选项。

 


(2)选择1,浏览内存中已存航线信息。

 


(3)选择3,根据终点站名查询航班信息


(4)选择4,办理订票业务,输入需要的订票的航班号及客户信息,当余票额未满时操作成功,如图3.3.4(1)所示。当余票额已满时,询问是否排队等候。如图3.3.4(2)所示。


3.3.4(1)办理订票业务(余票额未满)

3.3.4(2)办理订票业务(余票额已满)


(5)选择5,办理退票,查看是否有排队等候该航班票务的,若有,则自动替补,若没有,则返回主菜单。


(6)选择6,查看余票并排序,通过输入查询条件的任意项即可查询。

四、课程设计总结

经过这一段时间的程序设计,该课设任务书中的内容基本达到。并且比任务书要求更高。可以自动生成座位号,且自动询问客户是否排队等候,退票后也可以即使售出给排队的客户,不会浪费资源,也方便操作员管理

在两周的时间里,不断地对程序及各模块进行修改、编译、调试、运行,其间遇到很多问题:

⑴因本人能力有限,在编写的时候只使用了相对较为简单的基础语言﹐代替了相对较为复杂的语言,降低了运行效率。

(2)程序在起初设计的时候,经常出现溢出错误,而且不只一处。为了修正这些溢出错误,耗费了大量的时间,修正解释之后再看源程序,才发现原来只是因为开始的函数定义的数据类型出现了问题,对函数的定义不清楚,字符的不正确定义造成了后期大量的纠错工作,

(3)测试用例具有一定的广泛性。运行程序时输入了多种不同字符信息,经过多次修改结果达到了预期效果。说明程序具有一定的可靠性和稳定性。

经过这次数据结构课程设计,我对调试掌握的更加熟练了,改变了过去只调试不知道如何对照程序语言修改程序的坏习惯,对调试也有了新的认识,意识到了程序语言的规范性以及我们在编程时要有严谨的态度,同时在写程序时如果加一定量的注释,既增加了程序的可读性,也可以使自己在读程序时更容易。

参考文献

[1]谭浩强.C语言程序设计(第三版).清华大学出版社,2007

[2]姜灵芝,余健.C语言课程设计案例精编.清华大学出版社,2008

[3] 菜鸟教程 网站https://www.runoob.com/

[4]吴伟民,严蔚敏.数据结构.清华大学出版社,2008

[5]吕映芝.编译原理.清华大学出版社,2008

[6]严蔚敏.数据结构C语言版[M].清华大学出版社,2007.

[7]严蔚敏.数据结构C语言版[M].清华大学出版社,2007.
[8] CSDN 网站 CSDN - 专业开发者社区

[9]《大话数据结构》

[10] 《算法》作者: [美] Robert Sedgewick

  • 24
    点赞
  • 259
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
航空客运订票系统是一个用于管理航空公司客运业务的系统,它可以实现航班查询、机票预订、座位选择、支付等功能。Python是一种流行的编程语言,可以用于开发航空客运订票系统。 在Python中,可以使用各种库和框架来构建航空客运订票系统。以下是一个简单的航空客运订票系统的示例: 1. 数据库设计:使用数据库来存储航班信息、乘客信息、订单信息等。可以使用Python的数据库库如MySQLdb或者SQLAlchemy来连接和操作数据库。 2. 航班查询:用户可以输入出发地、目的地和日期等信息来查询可用的航班。可以使用Python的Web框架如Flask或Django来实现一个简单的网页界面,用户可以通过界面输入查询条件并显示查询结果。 3. 机票预订:用户可以选择合适的航班并预订机票。预订过程中需要验证乘客信息、选择座位、计算价格等。可以使用Python的表单验证库如WTForms来验证用户输入,并使用Python的支付库如Stripe或PayPal来处理支付。 4. 订单管理:系统需要管理用户的订单信息,包括已预订的航班、乘客信息、支付状态等。可以使用数据库来存储订单信息,并使用Python的ORM库如SQLAlchemy来简化数据库操作。 5. 系统管理:系统需要提供管理员界面来管理航班信息、乘客信息、订单信息等。可以使用Python的后台管理框架如Django Admin来实现管理员界面。 以上只是一个简单的示例,实际的航空客运订票系统可能涉及更多的功能和复杂性。开发一个完整的航空客运订票系统需要考虑到安全性、性能、用户体验等方面的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值