C语言实现的飞机订票系统设计

版权申诉
0 下载量 102 浏览量 更新于2024-07-12 收藏 478KB DOC 举报
"数据结构课程设计c语言版飞机订票系统分解.doc" 这篇文档是关于一个数据结构课程设计项目——使用C语言实现的飞机订票系统。该项目的主要目的是让学生运用所学的数据结构知识和C语言编程技能,设计并实现一个功能完备的订票系统。 一、设计任务与要求 1.1 总体目标与任务要求 设计的系统需具备以下功能: - 录入航班信息,包括但不限于航班号、起降时间、起飞和抵达城市、票价、折扣和座位状态,数据存储在数据文件中。 - 查询航班,用户可按航班号或城市查询航班详情。 - 订票,允许用户预订机票,若航班已满则推荐其他航班。 - 退票,用户可以取消预订,系统更新数据文件。 - 修改航班信息,当航班变动时,能更新航班数据。 1.2 题目选择与目的意义 选择飞机订票系统作为课题是因为其在现实生活中的实用性,能够简化订票流程,提高效率。通过此项目,学生可以实践数据结构和C语言的应用,增强系统设计和问题解决能力。 1.3 主要工作 主要任务是实现系统的各项功能,包括航班信息管理、用户订票、退票操作以及信息查询和修改。 二、需求分析 2.1 用户需求分析 用户需要通过系统进行便捷的航班查询、预订、退订等操作。系统应提供友好界面,以便用户输入航班信息或证件号进行操作,并能快速响应用户需求。 2.2 功能需求分析 系统必须支持航班录入、查询、订票、退票和信息修改。同时,需要确保数据的安全性和准确性,如退票后及时更新订票文件,保证信息同步。 2.3 系统需求分析 系统需具有高效的数据管理能力,可能涉及的数据结构包括链表、树或其他适合存储航班和订票信息的结构。此外,系统应具备错误处理机制,应对用户输入错误或异常情况。 三、概要设计 这部分内容可能包括对各个功能模块的算法设计说明,例如航班查询算法(可能使用哈希表或二分查找)、订票算法(涉及座位分配和数据更新)等,以及存储结构设计,如何组织和存储航班和订票信息。 四、详细设计 这部分将详细阐述每个模块的具体实现,包括函数定义、流程图、伪代码等,以确保系统各部分的完整性和协调性。 五、源代码 这部分包含系统的所有源代码,展示如何用C语言实现上述功能。 六、运行结果分析 这部分会对系统运行的结果进行分析,评估其性能、正确性和用户体验。 七、收获与体会 学生将分享在项目过程中学到的知识、遇到的问题及解决方案,以及对自己技能提升的反思。 八、主要参考资料 列出在设计和实现过程中参考的书籍、文献或在线资源。 这个项目全面涵盖了软件开发的多个阶段,从需求分析到设计、编码和测试,旨在提升学生的软件工程实践能力,特别是数据结构在实际问题中的应用。通过这个项目,学生可以深入理解数据结构在管理系统数据时的重要性,以及如何用C语言构建实际应用。
2023-05-31 上传
目录 总体设计 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