数据结构课设-航空客运订票系统(C语言实现)

这是一个使用C语言编写的航空客运订票系统,包括用户和管理员两种角色。用户可以查询航线、订票、退票及查看候补队列,管理员则能添加和删除航线、查看航线和订单信息以及候补队列名单。系统具备输入验证和候补订票功能,实现了命令行交互式操作。
摘要由CSDN通过智能技术生成



系统框架

功能架构图

已完成功能

用户功能

  1. 查询航线:根据旅客提出的终点站名输出航班的信息。
  2. 订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补;
  3. 退票业务:根据客户提供的信息,为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
  4. 添加了查询候补队列的功能:用户可以输入自己的信息(航班号、姓名)来查询自己在候补队列中的次序。

管理员功能

  1. 添加航线:管理员输入航班信息,从而添加航线。
  2. 删除航线:管理员选择航班号,删除航班。
  3. 查看航线信息:管理员可以查看所有航线的信息。
  4. 查看订单信息:管理员可以根据航班号,查询该航班中的客户信息。
  5. 添加了查看候补队列名单的功能:管理员可以查询航班中候补队列的名单信息(姓名、订票量)。

其他

  1. 进入管理员系统时设置了登录密码,输入密码正确后才可进入管理员系统进行操作。
  2. 对用户的输入进行了一定的规范,当用户输入错误指令时,提示用户重新输入,提高了程序的健壮性。
  3. 程序采用的形式为命令行交互,测试数据均由读者指定。

运行结果

管理员添加航班

添加航班

客户订票

客户订票
小明、小红、小陈依次订票后:
管理员菜单下查看所有订单

添加候补

先将航班所有票订完,再订票则进入候补:
候补订票
添加更多候补后:
管理员菜单下查看候补队列

客户退票

客户小明退票5张
重新查询候补队列:
查看候补顺序
管理员菜单下查看候补队列
查看此时的客户订单:
管理员菜单下查看客户订单

代码

代码链接,毕竟辛苦写的课设,要个vip不过分吧

目 录 摘 要 1 前 言 2 基本算法的实现 3 采用类C语言定义相关的数据类型 3 各模块的伪码算法 4 函数的调用关系图 6 调试分析 7 测试结果 8 源程序(带注释) 11 总 结 22 参考文献 23 致 谢 24 附件Ⅰ 部分源程序代码 25 摘 要 该设计要求对飞机航班信息进行排序和查找。可按航班的班号、起点站、到达站、起飞时间以及到达时间等信息时行查询。对于本设计,主要是通过线性表的逻辑结构、存储结构,线性表及队列上基本运算实现的。可以让我们学会如何把学到的知识用于解决实际问题。 关键词: 航班信息;客户信息;链式存储结构; 前 言 飞机在现今的社会中已是越来越重要了,人们在旅游、工作、学习等生活中对飞机几乎是不可缺少了。而由乘坐飞机所引起的问题也深入到了计算机领域,飞机订票系统就是解决这种问题的一种途径。如人们常常在订票前要对问很多信息(飞机的起落时间,机票的价格,乘坐的人数以及是否有票等等)。这个系统主要是由线性表的链式存储结构以及队列的存储结构来存储航班信息与客户信息的。它的主要功能:1、是录入航班信息,其调用函数为—insert_airline;2、查询航线(航班号,飞机号,日期,航班容量,余票数),其调用函数为:search_air;3、订票(根据客户提供的情况,办理订票手续),其调用函数为:book_air;4、承办退票业务(根据客户提供的情况,办理退票手续),其调用函数为:del_cus;5、删除已有航班信息 ,其调用函数为:del_airline . 设计这样的一个系统可以很快的查出人们所需要的信息,能省去很多的步骤,而且还非常的准确。
目录 总体设计 2 概要设计 2 详细设计 3 调试分析 11 测试数据及截图 11 时间复杂度分析 15 问题思考 15 算法的改进设想 15 课设总结体会 15 附录 17 程序说明 17 源代码 17 主要参考文献 30 总体设计 通过此系统可以实现如下功能:   1).录入:可以录入航班情况(数据存储在一个数据文件中)   2).查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞 抵达城市,航班票价,票价折扣,确定航班是否满仓);   可以输入起飞抵达城市,查询飞机航班情况;   3).订票:(订票情况存在一个数据文件中)   可以订票,如果该航班已经无票,可以提供相关可选择航班;   4).退票: 可退票,退票后修改相关数据文件;   客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。   5).修改航班信息:   当航班信息改变可以修改航班数据文件 概要设计 每个模块的算法设计说明如下: (1)录入模块: 查找单链表的链尾,在链头插入一个"航班信息"的新结点。 (2)浏览模块: 顺着单链表输出航班信息。 (3)修改模块: 输入密码,确认是否有权限对航班信息进行修改,有则进行修改,否则不能修改。 提供两种修改方式:添加航班和对已有的航班信息进行改动(修改和删除),1添加航线 ,0对已有的航班信息进行改动(修改和删除)。 对已有的航班信息进行改动(修改和删除):顺着单链表查找,若找到则进行相关操 作。 (4)查询模块: 提供两种查方式:按航号和起飞抵达城市查询,0代表按航号查询,1代表按起飞抵达 城市查询。 顺着单链表查找,如果与航班号(起飞抵达城市)一致,输出相关信息并询问乘客是 否要订票,若订进入订票模块;否则,查询不成功。 (5)订票模块: 查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成 功;否则查找这个月此乘客起飞城市和降落城市的有空位航班,供乘客选择,若有则订 票,若无则订票不成功并把此乘客的信息录入此航班等候订票队列中,退出订票。 (6)退票模块: 输入要退票的乘客姓名以及所退票的编号,查找乘客资料的链表中是否有这位乘客, 有则删去此结点,并判断是否有等候订票的乘客(有则通知等候订票乘客订票,无则余 票加乘客所退票数);无则退票失败。 (7)文件模块: 顺着单链表链表的信息写入文件。 详细设计 由于此系统流程图太多,流程图所对应的源代码较长,所占篇幅也较大,并且流程图 所对应的源程序订票系统程序中都有,这里就不再赘述。需要说明的是插入、查找 、修改和删除这些线性表的基本操作的流程图在订票系统程序中没有单独函数,是因 为此系统主要是运用线性表的基本操作解决实际问题,具体问题所对应的基本操作代码 有所不同,但思维是相同的,所以这几个操作的源代码已经对应写入了其他具体操作的 函数中,这里也不再给出。 根据订票系统功能的需要定义了如下的结构体: typedef struct wat_ros /*等候订票乘客的信息*/ { char name[20];/*姓名*/ char phone[15];/*等候订票乘客的联系方式*/ struct wat_ros *next; }qnode,*qptr; typedef struct pqueue { qptr front;/*等候替补客户名单域的头指针*/ qptr rear;/*等候替补客户名单域的属指针*/ }linkqueue; typedef struct ord_ros { char name[20];/*客户姓名*/ char IDnum[20];/*客户有效证件的编号*/ char airnum[7];/*航班号*/ int dpl;/*订票量*/ char piaohaio[20];//票的编号,由航班号起飞日期此航班订票前的余票量 struct ord_ros *next; }Lnode ,*linklist; typedef struct airline { char qdname[20];/*起点站名*/ char zhname[20];/*终点站名 */ char air_num[7];/*航班号*/ char plane_num[10];/*飞机型号*/ char year[5]; char month[3]; char day[3];/*飞行日期*/ char qhour[3]; char qminute[3];/*起飞时间*/ char jhour[3]; char jminute[3];/*降落时间*/ float zhekou;/*没有折扣为十折*/ float price;/*票价*/ int tkt_amt;/*乘员定额*/ int tkt_sur;/*余票量*/ Lnode *o
航空客运订票系统可以使用C语言实现数据结构是系统中非常重要的一部分。在系统设计中,合理选择合适的数据结构能够提高系统的性能和效率。 在航空客运订票系统中,我们可以使用以下数据结构来存储和管理相关的数据: 1. 数组:可以用来存储航班信息、乘客信息等固定大小的数据。航班信息可以包括航班号、起飞时间、到达时间等;乘客信息可以包括乘客姓名、证件号码、联系方式等。 2. 链表:可以用来存储乘客订票信息,每个节点表示一个乘客的订票信息,包括航班号、座位号、订票时间等。链表的插入和删除操作比较方便,适合频繁的增删操作。 3. 栈:可以用来存储航班的座位信息,每个栈元素表示一个座位号,可以标记该座位是否已经被预定。当乘客购票时,将座位从栈顶弹出;当乘客退票时,将座位压入栈顶。 4. 队列:可以用来存储乘客的候补信息。当航班已满时,将乘客的候补信息入队;当有乘客退票时,从队列中取出候补乘客进行订票。 5. 树:可以用来组织航空公司的航班信息,每个节点表示一个航班,包括航班号、起飞时间、到达时间等。树结构可以方便地进行航班的查找和排序操作。 除了上述数据结构,还可以使用其他一些辅助数据结构来提高系统的性能和易用性,例如哈希表来存储乘客的信息,以便快速查找和修改。 综上所述,航空客运订票系统实现离不开C语言和合适的数据结构。选择适当的数据结构可以提高系统的效率和易用性,使得航空客运订票系统更加稳定和高效。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不要做码农呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值