机票销售系统(课程设计报告,附心得)
民航客票销售实训报告心得

民航客票销售实训报告心得摘要民航客票销售实训是对于学习民航管理专业的学生来说至关重要的一门课程。
通过实训活动,我深刻理解到了民航客票销售的重要性和日常工作中需要具备的一些基本技能。
本文将围绕实训中的经验和收获进行总结和心得分享。
引言随着民航业的不断发展和竞争的加剧,民航客票销售成为了关乎航空公司盈利能力的重要环节。
客票销售既是民航公司对外宣传的重要方式,也是使公司能够持续发展的重要来源之一。
因此,掌握民航客票销售技能对于一个民航管理专业的学生来说至关重要。
而通过实训,我们可以更好地了解这个行业,从实践中得到体验和启发。
实训内容及经验实训中,我们通过模拟销售客票的情景,在真实的工作环境中学习和实践客票销售技巧。
在这个过程中,我学到了很多东西。
首先,我了解到了航空公司的客户群体是多样化的。
不同的乘客对于航班的需求各不相同,有的追求价格优惠,有的更关注服务质量。
因此,我们需要根据不同的乘客需求,灵活调整销售策略,以满足客户的期望。
其次,在销售过程中,我学会了合理利用信息资源。
了解航班的座位情况、价格策略、促销活动等信息,可以帮助我们更好地推销产品,满足客户的需求。
因此,及时获取和了解这些信息是非常重要的。
另外,我还学会了和客户建立良好的沟通和合作关系。
在销售过程中,我们需要主动倾听客户的需求,耐心解答他们的问题,并根据他们的意愿提供相应的产品选择。
当然,我们也需要保持礼貌和耐心,以赢得客户的信任和满意度。
实训收获及心得在实训过程中,我不仅学到了许多实用的销售技巧,更重要的是,我意识到了民航客票销售工作的责任和挑战。
首先,客票销售工作需要高度的责任感。
作为民航公司的代表,我们的每一次销售行为都会直接影响到公司的形象和利益,因此,我们必须提高警惕,严格把握销售规范和道德标准,保证销售过程的公平和透明。
其次,客票销售工作需要不断学习和提升自己的能力。
随着航空业的不断发展和变化,我们需要不断跟进新的销售策略和技巧,学习新的产品知识和技术,以更好地应对市场的需求和变化。
《管理信息系统》课程设计报告--航班售票管理系统设计报告

航班售票管理系统设计报告一、系统分析(一)可行性分析国际民航业的激烈竞争又迫使担负国际航线运输任务的航空公司必须尽快推出自己的因特网售票系统,而这些又必须由一个安全的网上订票与支付系统作支持。
更重要的还要提供票务管理。
面对不同种类的信息,需要合理的数据库结构来保存数据信息以及有效的程序结构支持各种数据操作的执行。
航空业身处信息时代的电子商务大潮中,加之传统的售票方式已经不能满足现今航空业的发展,于是航空售票管理系统就自然而然被应用。
由于本系统管理主要是对机票的管理,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。
因此,比较适合于采用数据库管理。
且航空公司用于机票管理的微机都是PIII以上的机器,在存储量、速度方面都能满足数据库运行的要求。
在技术难度方面,由于有相关参考文献,还有就是网上资料,特别是参考其它程序的功能,因此完全可以实现系统的投资约50万元,待5年后更新,年使用费约10万元,在经济上是可行的。
(二)需求分析1、航班售票管理系统开发目标售票/订票是民航业务中的一个最基本的业务,表面上看,它只是民航业务的一个简单的部分,但是它涉及到资金管理与客户服务等多主面,因此,过去传统的售票方式已经不能满足现代航空业务流量剧增的客观要求,本课程设计便是利用开发工具VF6.0开发一个民航售票管理系统,它能方便快捷地运用在民航业务的营运之中。
2、航班售票管理系统的主要功能本系统设计主要是根据售票业务的基本流程进行的,系统功能十分强大,包括如下几个方面:订票管理、乘客查询与退票管理、查询飞行时刻窗口和系统维护四方面内容。
其中,订票系统至少要满足:(1)每一航班的乘客乘坐飞机的起点、终点、日期和可以使用(预订)的座位等基本信息。
(2)自动显示符合乘客要求的航班及座位是否存在(是否还有空位)(3)查询每一航班的售票订票情况、乘客信息及售票收入金额。
(4)可以按五种方式查询航空公司的航班时刻表信息。
3、航班售票管理系统业务流程分析航班售票系统主要有以下几项管理功能:(1)订票管理:根据乘客的订票信息查询航班信息,查看是否还有余票未售出,为乘客订票,备份数据。
机票销售系统(课程设计报告,附心得)

中南大学信息科学与工程学院数据结构课程设计报告课题:专业班级:学号:姓名:指导老师:完成时间:一、设计综述1.设计题目航空客运订票系统2.问题描述每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1, 2 或 3)以及等候替补的客户名单(包括姓名、所需数量)。
3.需求分析(1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;(2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少余订票额,则需重新询问客户要求。
若需要,可登记排队候补;(3)承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
实现提示:两个客户名单可分别由线性表和队列实现。
为查找方便,已订票客户的线性表应按客户姓名有序,并且,为了插入和删除方便,应以链表作为存储结构。
由于预约人数无法预计,队列也应以链表作为存储结构。
4.完成目标通过对课程设计课题的研究,依靠自己的理解与学习,进行分析,设计,调试,记录等过程,深入了解数据结构( C 语言)的知识与实践操作,将两者相互结合,融会贯通。
二、程序设计1.概要设计1.1 第一个结构体定义了订票客户passenger 所需的全部变量;typedef struct passenger{char name[10];/* 姓名 */int ID[20];// 身份证号int password; // 密码int tickets;/* 订票量 */struct passenger *next;}qnode,*qptr;1.2 第二个结构体用于创建候补客户的存储用循环链表;typedef struct pqueue{qptr front;qptr rear;}linkqueue;1.3 第三个结构图定义了候补客户passenger_wait 所需的全部变量;typedef struct passenger_wait{char name[10];/* 客户姓名 */int ID[20];// 身份证号int tickets_wait;/*订票量*/char grade;/* 舱位等级 */struct passenger_wait *next;}linklist;1.4 第四个结构体则定义了每趟航班所需的基本数据,这里可以初始化,但考虑到这是订票系统,于是没有添加新增航班功能。
飞机售票系统课程设计报告

飞机售票系统课程设计报告一、课程目标知识目标:1. 让学生理解飞机售票系统的基本概念、功能及工作原理。
2. 让学生掌握飞机售票系统中涉及的航空公司、航班、座位、票价等基本知识点。
3. 让学生了解飞机售票系统在实际应用中的数据处理和存储方法。
技能目标:1. 培养学生运用所学知识分析和设计飞机售票系统的能力。
2. 培养学生使用编程语言或工具实现飞机售票系统基本功能的能力。
3. 培养学生通过实际操作,掌握飞机售票系统的使用方法。
情感态度价值观目标:1. 培养学生对计算机科学和技术领域的兴趣,激发他们探索航空业信息化的热情。
2. 培养学生具备团队协作精神,学会与他人共同解决问题。
3. 培养学生关注社会发展,认识到信息技术在航空业中的重要作用。
课程性质分析:本课程为信息技术或计算机科学与技术相关课程的实践环节,旨在让学生将所学理论知识运用到实际项目中,提高他们的实践能力。
学生特点分析:学生为高中年级学生,具备一定的计算机操作和编程基础,对新鲜事物充满好奇心,善于团队合作。
教学要求:1. 结合课本知识,注重理论与实践相结合,提高学生的动手能力。
2. 注重培养学生的创新意识和解决问题的能力。
3. 强调团队协作,提高学生的沟通与协作能力。
二、教学内容1. 基本概念:介绍飞机售票系统的定义、功能、发展历程及在航空业中的重要性。
关联教材章节:第一章 计算机售票系统概述2. 系统架构:讲解飞机售票系统的整体架构,包括客户端、服务器端、数据库等组成部分。
关联教材章节:第二章 售票系统架构与设计3. 数据库设计:学习飞机售票系统中涉及的表结构设计,如航班信息、座位信息、旅客信息等。
关联教材章节:第三章 数据库设计4. 功能模块:详细介绍飞机售票系统的各个功能模块,如查询航班、预订机票、支付、退改签等。
关联教材章节:第四章 售票系统功能模块设计5. 编程实践:指导学生使用编程语言(如Python、Java等)或工具(如Visual Basic、Access等)实现飞机售票系统的基本功能。
数据库课程设计民航售票系统

计算机与信息学院数据库课程设计报告专业班级信息安全11-1班学生姓名及学号周伟康课程教学班号任课教师沈明玉实验指导教师郑淑丽实验地点第三机房2012 ~ 2013 学年第三学期民航机票销售系统设计目录1.课程设计目的 (1)2.课程设计描述 (2)3.需求分析 (3)4. 用例测试 (4)5.程序结构 (5)6.部分源码 (6)7.总结 (7)1.课程设计目的模拟实现一个现实生活所需的数据库系统,结合多门相关课程内容,把理论运用到实践中去,提高知识的理解深度,技能的熟练程度。
为将来向社会贡献有用的产品打下基础。
2.课程设计描述本次课程设计的课题是设计一个民航机票销售数据库系统,来模拟民航机票预订和销售系统。
本人在小组中负责所有应用程序设计部分并参与数据库建设的讨论,适当提出建议。
初步考虑,针对现实用户的不同角色需求,计划开发3种客户端。
1、普通用户个人使用的订票客户端2、民航系统员工使用的销售客户端3、航空公司内部使用的航班信息提供客户端三种客户端通过服务器间接访问数据库,故还需编写服务器。
初步实践后,鉴于以下原因,本次课程设计仅实现个人订票的基本应用。
1、本人能力有限。
对后两者业务经验极度缺乏,需求模糊。
2、在对三种客户端业务扩充时发现,整个应用层应是基于多个数据库的整体,民航机票销售只是其中业务逻辑的一部分,后两者客户端有其独立的数据库。
对机票销售这一主体功能来说,只用到后两库中部分共享数据,故对整个系统降级处理,只保证实现机票销售。
故把数据合并在一个数据库中,航班、员工等信息假设以预存库中,则后两客户端可推迟实现。
本次设计程序用Java+Oracle实现,3.需求分析基本目标:实现用户使用网上订票系统进行查票,登陆,订票,改签,退票等基本功能。
概念设计图:用户客户端功能概述:1. 注册及登录a.注册:注册用户个人信息。
b.登录:登陆后系统记录用户信息,并返回到登陆前页面。
2. 管理个人信息a.管理用户的个人信息,并可以修改。
航空公司机票销售信息系统设计

航空公司机票销售信息系统设计背景介绍:在如今全球化的时代,航空业的发展迅猛。
航空公司作为运输行业的重要组成部分,亟需高效、可靠的机票销售信息系统来满足大规模的机票销售需求。
本文将重点探讨如何设计一套航空公司机票销售信息系统。
1. 系统需求分析在设计航空公司机票销售信息系统之前,首先需要进行系统需求分析。
系统应具备以下功能:1.1 客户管理:包括客户信息的录入、修改、查询以及客户分类等功能,以便航空公司将市场细分并精确推送相关信息。
1.2 机票销售:提供可靠的机票销售流程,包括航班查询、订票、支付、退票、改签等功能,并与航空公司的销售渠道(如网站、手机APP、代理商)实现接口对接。
1.3 航班管理:提供航班信息的录入、修改、查询以及航班动态跟踪等功能,确保航班信息的准确性和可靠性。
1.4 数据分析:提供销售数据的统计、报表展示、财务分析等功能,为航空公司的决策提供参考依据。
2. 系统架构设计航空公司机票销售信息系统的架构应具备高可用性、高可靠性和扩展性。
基于此,我们建议采用分布式架构,具体包括以下几个模块:2.1 前端展示模块:提供良好的用户体验,包括航班查询、价格比较、预订和支付等功能,并与后端实施接口对接。
2.2 后端服务模块:负责处理用户请求,包括客户、机票、航班等信息的增删改查,并与数据库进行交互。
2.3 数据库模块:存储航班、机票、客户等信息,并提供高速、可靠的数据访问。
2.4 安全认证模块:确保系统的数据安全和用户信息的保护,采用合适的身份认证、访问控制等机制。
3. 技术选型针对航空公司机票销售信息系统的设计,我们建议采用以下技术:3.1 前端技术:使用HTML5、CSS3和JavaScript等前端技术,实现用户界面的设计和交互操作。
3.2 后端技术:可以选择Java、Python、Node.js等开发语言,结合Spring、Flask、Express等框架来开发后端服务。
3.3 数据库技术:可以选择关系型数据库(如MySQL)或者NoSQL数据库(如MongoDB)来存储系统的数据。
航班售票系统课程设计报告

课程设计报告课程名称:高级语言程序设计课程设计姓名:班级学号:指导教师:完成日期:6月20日目录1 课程设计目的与要求 (1)2问题描述 (2)3总体设计 (3)3.1功能分析 (3)3.2系统主要使用的函数 (3)3.3系统使用的主要数据结构 (4)4详细设计 (6)4.1程序总体结构图 (6)4.2程序流程图 (6)5功能测试 (8)5.1航班售票系统 (8)6程序设计调试情况(程序设计及调试过程中碰到的问题及解决的方法) (11)7课程设计小结 (12)参考文献 (13)附录系统源程序 (14)1 课程设计目的与要求高级语言程序设计是本科工科类各专业的重要基础课,课程以影响深远的、传统的、面向过程的优秀编程语言C语言为基础,学习程序设计的基本概念和方法,通过本门课程学习,应使同学掌握高级语言的基本原理,熟练掌握程序设计的基础知识、基本概念;掌握程序设计的思想和编程技巧。
课程设计是在学生已经具备了使用C语言编写简单的应用程序的能力,为使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,通过提出算法、指定输入输出来设计一个解决方案。
经过该实践环节,培养学生的探索精神和创新能力。
通过答辩训练学生的综合表达能力。
参加本课程设计的学生,应当认真完成本课程设计的全部过程。
并以最终课程设计成果来证明其独立完成各种实际任务的能力。
从而反映出理解和运用本课程知识的水平和能力。
具体如下:(1)数据组织方面尽量使用到:数组、链表、结构体、文件;(2)程序结构方面做到函数调用,尽量采用指针运算;(3)代码编写规范,形成良好的编程习惯;(4)程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。
(5)课设完成须进行答辩,提交课设报告电子稿、装订的打印稿。
课设报告内容包括以下几个方面:●程序的总体设计和算法分析。
●程序流程图、函数说明●源程序代码清单●测试数据和测试过程记录●遇到的问题及解决方法分析●课程设计小结2问题描述航班售票系统:(1)系统以菜单方式工作(2)假设该民航有若干航班,要求实现增加航班和取消某个航班的功能。
航空售票系统实验报告

合肥学院计算机科学与技术系课程设计报告2008~2009学年第二期课程程序设计语言Ⅱ课程设计课程设计名称航空售票系统学生姓名刘艺学号0804032025专业班级网络工程(2)指导教师高玲玲、李红2009年6月一:课程设计题目:航班售票系统实验要求:设计一个航班售票系统系统,能够对航空公司的售票进行管理。
航空公司的售票系统主要包括:航线信息、订票业务、退票业务.1:航线信息包括航班号,飞机号,目的地,订票数,余票数,共5项.现有3条航线:目的地北京,上海,广州。
飞机可乘100人(初始定票数为0,余票数为100)。
将这些信息存入文件airline.dat中。
2:订票业务:(1).客户信息包括姓名,航班号,假设已有3个客户信息存入文件customer.dat。
(2).有新客户订票时,先输入姓名和航班号,查询情况,如果还有余票,就为这个客户办理订票手续,分给客户一个座位号,然后写入文件costomer.dat,并修改文件,若无余票,则输出客户已满3:退票业务:根据客户提出的航班号,办理退票,从airline.dat文件中删除这个客户的信息,并修改airline.dat中相应的航线的订票数和余票数输出全部航线的信息和全部客户信息,退出系统。
二:问题分析:实验的准备工作:(1)、仔细阅读课程设计任务书,明确实验设计的目的、实验内容、实验要求、所需知识点等。
(2)、阅读教材及相关材料,更深入的了解所需知识点,并与其它知识点能够融会贯通,加深对各知识点的了解,使得在进行课程设计的时候能够更好的运用各知识点。
根据题目要求,先定义一个customer类,声明类中的成员,包括name(姓名),ID(证件号码),want(客人要订的票数)。
再定义一个AirInfo类,此类中包括三个成员函数,分别实现1:航班信息.2:订票业务.3:退票业务的功能.航线信息中要包括Num(航班号),Start(航班起飞点), End(航班终点地),Time(航班起飞时间),Count(航班票数),LeftCount(航班剩余票数),havingBookCustomer(已订票的客户).订票业务中需要用到类的调用,调用customer类,访问类中的公有成员name,ID,want,输入订票客户信息,订票成功.退票业务中同样需要类的调用, 调用customer类,访问类中的公有成员name,ID,want,输入退票客户信息,退票成功.还要在类中声明一些成员函数, 有设计航班号,设计航班起飞点,设计航班终点地,设计航班起飞时间,设计航班票数,设计航班剩余票数,设计已订票的客户,获取航班起飞时间日期,航班剩余票数,获取该航班起飞地,获取该航班终点地,获取该航班号,打印该航班的信息的函数.输入新的航班信息,查询航班信息,这些函数均要实现此系统的功能. 三:算法的设计1、通过分析实验要求的功能,确定所需函数,两者结合来分析所需的算法及算法该如何实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学信息科学与工程学院数据结构课程设计报告课题:专业班级:学号:姓名:指导老师:完成时间:一、设计综述1.设计题目航空客运订票系统2.问题描述每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。
3.需求分析(1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;(2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少余订票额,则需重新询问客户要求。
若需要,可登记排队候补;(3)承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
实现提示:两个客户名单可分别由线性表和队列实现。
为查找方便,已订票客户的线性表应按客户姓名有序,并且,为了插入和删除方便,应以链表作为存储结构。
由于预约人数无法预计,队列也应以链表作为存储结构。
4.完成目标通过对课程设计课题的研究,依靠自己的理解与学习,进行分析,设计,调试,记录等过程,深入了解数据结构(C语言)的知识与实践操作,将两者相互结合,融会贯通。
二、程序设计1.概要设计1.1第一个结构体定义了订票客户passenger所需的全部变量;typedef struct passenger{char name[10];/*姓名*/int ID[20];//身份证号int password; //密码int tickets;/*订票量*/struct passenger *next;}qnode,*qptr;1.2第二个结构体用于创建候补客户的存储用循环链表;typedef struct pqueue{qptr front;qptr rear;}linkqueue;1.3第三个结构图定义了候补客户passenger_wait所需的全部变量;typedef struct passenger_wait{char name[10];/*客户姓名*/int ID[20];//身份证号int tickets_wait;/*订票量*/char grade;/*舱位等级*/struct passenger_wait *next;}linklist;1.4第四个结构体则定义了每趟航班所需的基本数据,这里可以初始化,但考虑到这是订票系统,于是没有添加新增航班功能。
struct airline{char ter_name[10];/*终点站名*/char air_num[10];/*航班号*/char plane_num[10];/*飞机号*/char day[7];/*飞行周日(星期几)*/int tkt_amt;/*乘员定额*/int tkt_sur;/*余票量*/linklist *order;/*乘员名单域,指向乘员名单链表的头指针*/linkqueue wait;/*等候替补的客户名单域* /}lineinfo;2.订票系统架构:3.程序详细设计本程序包含:1.主函数2.主菜单函数3.航班信息查询函数(目的地查询函数、航班编号查询函数、航班时间查询函数)4.机票信息查询函数(顾客姓名查询、机票编号查询函数、航班编号查询)5.票卖出函数6.退票函数7.航班信息修改函数8.航班、机票信息文件判断建立函数9.航班、机票信息文件保存函数。
3.1 主函数(void main())主函数主要是调用其他函数,并把建立的链表头指针附给主菜单函数。
首先调用航班、机票信息文件判断建立函数。
它首先分别判断在是否存在航班信息文件、机票信息文件。
如果不存在,分别生成文件(航班信息文件设为"d:\\a.dat",机票信息文件设为"d:\\b.dat"),生成的文件中都已有初始数据。
详细数据见3.1初始航班、机票文件内容。
如果存在,则不再生成文件,而且不会变动已有的文件。
然后它会分别读文件,分别生成航班信息的链表和机票信息链表,并将链表头返回到主函数的变量中。
然后主函数调用主菜单函数,同时将两个链表头赋给主菜单函数。
主函数流程图如下:main航班信息文件判断生成函数机票信息文件判断生成函数主菜单函数3.2 主菜单函数(void menu(struct flight *f,struct ticket *t))主菜单函数是供用户选择下一步操作(函数),并把下一步需要的两个链表的头赋3.3 航班信息查询函数(void search(struct flight *f,struct ticket *t))航班信息查询函数是供用户选择输入什么样查询的航班信息来查询航班。
同时把链表头赋予调用的函数。
航班信息查询函数流程图:在航班信息查询函数中会调用三个查询用的函数,分别是目的地查询函数(void destsearch(struct flight *f,struct ticket *t))、航班编号查询函数(void fNOsearch(struct flight*f,struct ticket *t))、航班起飞时间查询函数(void timesearch(struct flight *f,struct ticket *t))。
3.4目的地查询函数流程图(p 是struct flight 型指针,赋初值为航班信息链表头):3.5 机票信息查询函数(void list(struct flight *f,struct ticket *t))机票信息查询函数和航班信息查询函数有很高的类似性,是供用户选择输入什么样查询的机票信息来查询航班。
同时把机票链表头赋予调用的函数。
机票信息查询函数流程图:3.6顾客姓名查询函数流程图:(p是struct ticket型的指针,赋初3.7 卖票函数(void book(struct flight *f,struct ticket *t))卖票函数供用户卖出飞机票,并录入顾客信息,最后将信息写入文件。
由于在本程序中能够唯一确定一个航班的变量只有航班编号。
所以在卖票时候,要求输入要卖出的航班编号。
程序会遍历链表,搜索是否有该航班,有航班并且确认购买后,输入顾客信息,同时程序会自动在该航班剩余票数上减去1。
然后程序会把数据写入文件中。
完成卖票后,程序会回到主菜单。
卖票函数流程图(pr是struct flight型指针,赋初值为航班信息链表头)3.8 退票函数void return_tkt(struct flight *f,struct ticket *t)退票函数是完成退票功能。
由于在程序中唯一能够确定一张机票的变量为机票编号,所以在退票时候,要求输入要退的机票编号。
程序遍历机票链表,搜索该机票,如果不存在,则输出“不存在该机票”;如果存在机票,打印机票信息,在确认退票后会删除该条机票信息,并且在该票对应的航班的剩余票数上加1。
然后程序将两链表写入文件中。
完成退票后,程序返回主菜单。
退票函数流程图(p是struct ticket型指针,赋初值为机票信息链表头)4. 源代码清单//王骞通信1103班 0909111423 航空售票系统#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAXSIZE 10typedef struct passenger_wait{ char name[10];/*姓名*/char ID[20];//身份证号char phone[11]; //电话int tickets_wait;/*订票量*/struct passenger_wait *next;}qnode,*qptr;typedef struct pqueue{ qptr front;/*等候替补客户名单域的头指针*/qptr rear;/*等候替补客户名单域的属指针*/}linkqueue;typedef struct passenger_ready{ char name[10];/*客户姓名*/char ID[20];//身份证号char phone[11]; //电话int tickets_ready;/*订票量*/char grade;/*舱位等级*/struct passenger_ready *next;}linklist;struct airline{ char ter_name[10];/*终点站名 */char air_num[10];/*航班号*/char plane_num[10];/*飞机号*/char day[7];/*飞行周日(星期几)*/int tickets_total;/*乘员定额*/int tickets_left;/*余票量*/linklist *book;/*乘员名单域,指向乘员名单链表的头指针*/linkqueue wait;/*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/ }lineinfo;struct airline *start;//函数申明void search();void display();void prtlink();void book();void return_tkt();int menu_select()/*菜单界面*/{int c;char s[20];system("color 1B");system("cls");puts("\t **********************航空售票系统************************\n"); puts("\t\t 查询: 1.浏览航线信息 ");puts("\t\t 2.浏览已订票客户信息 ");puts("\t\t 3.查询航线 \n\n");puts("\t\t 订购: 4.办理订票业务 ");puts("\t\t 5.办理退票业务 \n\n");puts("\t\t 退出: 6.退出系统 ");puts("\t **********************************************************"); printf("\t 请从1-6中选择操作: ");do{scanf("%s",s);c=atoi(s);}while(c<0||c>7);return c;}main(){ struct airline air[MAXSIZE]={{"北京","1"," BJ7001"," 周日",70,60},{"广州","2"," GZ5002"," 周五",60,50},{"香港","3"," HK4003"," 周四",100,77},{"重庆","4"," CQ3004"," 周三",90,68},{"乌鲁木齐","5"," WL1005"," 周一",50,29},{"昆明","6"," KM6006"," 周六",80,71},{"遵义","7"," GY3007"," 周三",50,38},{"长沙","8"," CS7008"," 周日",40,24},{"台北","9"," TP2009"," 周二",30,17},{"杭州","10"," HZ5010"," 周五",60,25},};/*初始化航线信息*//* clrscr();*/start=air;for(;;){switch(menu_select()){case 1:list();break;case 2:prtlink();break;case 3:search();break;case 4:book();break;case 5:return_tkt();break;case 6:system("cls") ; printf("\n\t\t\t欢迎再次使用,再见!\n");exit(0); }printf("\n\n\t\t\t按任意键返回主菜单!\n");getch();system ("cls");}}void display(struct airline *info)/*打印每条航线的基本信息*/{printf("%8s\t%3s\t%s\t%4s\t\t%3d\t%10d\n",info->ter_name,info->air_num,info ->plane_num,info->day,info->tickets_total,info->tickets_left);}void list()/*打印全部航线信息*/{system("cls");struct airline *info;int i=0;info=start;printf("\n\n\n\n 终点站名\t航班号\t飞机号\t飞行周次\t乘员定额\t余票量\n");while(i<MAXSIZE){display(info);info++;i++;}printf("\n\n");}void search()/*根据客户提出的终点站名输出航线信息*/{system("cls") ;struct airline *info,*find();char name[10];int i=0;info=start;printf("\n\t\t请输入终点站名:");scanf("%s",name);while(i<MAXSIZE) {if(!strcmp(name,info->ter_name)) break;info++;i++;}if(i>=MAXSIZE){system("cls");printf("\n\n\n\n\n\t\t\t对不起,该航线未找到!\n");}else{printf("\n\n\n\n 终点站名\t航班号\t飞机号\t飞行周日\t乘员定额\t余票量\n"); display(info);}}struct airline *find()/*根据系统提出的航班号查询并以指针形式返回*/{ struct airline *info;char number[10];int i=0;info=start;printf("\n\t\t请输入航班号:");scanf("%s",number);while(i<MAXSIZE) {if(!strcmp(number,info->air_num)) return info;info++;i++;}system("cls");printf("\n\n\n\n\n\n\t\t\t对不起,该航线未找到!\n");return NULL;}void prtlink()/*打印订票乘员名单域的客户名单信息*/{system("cls") ;linklist *p;struct airline *info;info=find();p=info->book;if(p!=NULL){printf("\n\n\n\n\t\t客户姓名订票数额舱位等级\n");while(p){printf("\t\t%s\t\t%d\t%d\n",p->name,p->tickets_ready,p->grade); p=p->next;}}elseprintf("\n\t\t\t该航线没有客户信息!\n");}linkqueue appendqueue(linkqueue q,char name[],int amount)/*增加排队等候的客户名单域*/{ qptr new;new=(qptr)malloc(sizeof(qnode));strcpy(new->name,name);new->tickets_wait=amount;new->next=NULL;if(q.front==NULL)/*若原排队等候客户名单域为空*/q.front=new;elseq.rear->next=new;q.rear=new;return q;}linklist *insertlink(linklist *head,int amount,char name[],int grade) /*增加订票乘员名单域的客户信息*/{ linklist *p1,*new;p1=head;new=(linklist *)malloc(sizeof(linklist));if(!new) {printf("\nOut of memory!!\n");return NULL;}strcpy(new->name,name);new->tickets_ready=amount;new->grade=grade;new->next=NULL;if(head==NULL)/*若原无订票客户信息*/{head=new;new->next=NULL;}elsehead=new;new->next=p1;return head;}void book()/*办理订票业务*/{ system("cls") ;struct airline *info;int amount,grade;char name[10];char ID[20];char phone[20];info=start;if(!(info=find())) return;/*根据客户提供的航班号进行查询,如为空,退出该模块*/printf("\t\t请输入你订票所需要的数量:");scanf("%d",&amount);if(amount>info->tickets_total)/*若客户订票额超过乘员定票总额,退出*/{printf("\n\t\t对不起,您输入的票的数量已经超过乘员定额!\n");return;}if(amount<=info->tickets_left)/*若客户订票额末超过余票量,订票成功并等记信息*/{int i;printf("\t\t请输入订票客户的姓名:");scanf("%s",name);printf("\t\t请输入%s身份证号(18位):",name);scanf("%s",ID);printf("\t\t请为%s的联系电话:",name);scanf("%s",phone);printf("\t\t请输入%s的舱位等级(1、2或3):",name);scanf("%d",&grade);info->book=insertlink(info->book,amount,name,grade);/*在订票乘员名单域中添加客户信息*/for(i=0;i<amount;i++)/*依次输出该订票客户的座位号*/printf("\n\t\t\t%s的座位号是:%d",name,info->tickets_total-info->tickets_left+i+1);info->tickets_left-=amount;/*该航线的余票量应减掉该客户的订票量*/printf("\n\n\n\t\t\t订票成功,祝您乘坐愉快!\n");}else /*若满员或余票额少于订票额,询问客户是否需要进行排队等候*/{ char r;printf("\t\t已经没有更多的票,您需要排队等候吗?(Y/N)");r=getch();printf("%c",r);if(r=='Y'||r=='y'){ printf("\n\t\t请输入您的姓名(排队订票客户):");scanf("%s",name);printf("\n\t\t请输入您的手机号:");scanf("%s",phone);info->wait=appendqueue(info->wait,name,amount);/*在排队等候乘员名单域中添加客户信息*/system("cls");printf("\n\n\n\n\t注册成功!\n\n\t如果有乘客退票我们会及时通知您,请您保持手机畅通,谢谢!\n");}else printf("\n\t\t\t按任意键返回主菜单\n");}}void return_tkt()//退票业务{system("cls") ;struct airline *info;qnode *t,*back,*f,*r;int grade;linklist *p1,*p2,*head;char cusname[10];if(!(info=find())) return;/*调用查询函数,根据客户提供的航线进行搜索*/head=info->book;p1=head;printf("\t\t请输入你的姓名(退票客户):");scanf("%s",&cusname);while(p1!=NULL)/*根据客户提供的姓名到订票客户名单域进行查询*/{if(!strcmp(cusname,p1->name)) break;//根据输入的身份证比对,找到要退票的乘客//注意,phone要用的是指针,strcmp和==都需要相同格式才能比较p2=p1;p1=p1->next;//没有找到指针下移}if(p1==NULL){ printf("\n\t\t\t对不起,你没有订过票!\n");return;}/*若未找到,退出本模块*/else{/*若信息查询成功,删除订票客户名单域中的信息*/if(p1==head) head=p1->next;//查找到的顾客在链表的第一个节点else p2->next=p1->next;//查找到的顾客不是在第一个节点info->tickets_left+=p1->tickets_ready;grade=p1->grade;system("cls");printf("\n\t\t\t%s退票成功!",p1->name);free(p1);}info->book=head;/*重新将航线名单域指向订票单链表的头指针 */f=(info->wait).front;/*f指向排队等候名单队列的头结点*/r=(info->wait).rear;/*r指向排队等候名单队列的尾结点*/t=f;/*t为当前满点条件的排队候补名单域*/while(t){if(info->tickets_left>=info->wait.front->tickets_wait){/*若满足条件者为头结点*/int i;info->wait.front=t->next;//printf("\n\n\n\n\n\t\t\t%s订票成功!\n",t->name);//for(i=0;i<t->tickets_wait;i++)/*输出座位号*///printf("\n\t\t\t%s的座位号是:%d",t->name,(info->tickets_left)-i);info->tickets_left-=t->tickets_wait;info->book=insertlink(info->book,t->tickets_wait,t->name,grade);/*插入到订票客户名单链表中*/free(t);break;}back=t;t=t->next;if((info->tickets_left)>=(t->tickets_wait)&&t!=NULL)/*若满足条件者不为头结点*/{ int i;back->next=t->next;system("cls");//printf("\n\n\n\n\n\n\%s\t\t\t订票成功!\n",t->name);//for(i=0;i<t->tickets_wait;i++)/*输出座位号*///printf("\n\t\t\t<%s>的座位号是:%d\n",t->name,(info->tickets_left)-i); info->tickets_left-=t->tickets_wait;info->book=insertlink(info->book,t->tickets_wait,t->name,grade);/*插入到订票客户名单链表中*/free(t);break;}if(f==r) break;}}5.程序调试详细过程初始界面:浏览航线:查询航班:订票:查询订票结果:候选选择:退票:6.实验心得相比大一的课程设计——学生成绩管理系统,这次做的航空订票系统简直和它不是一个层次,不仅要求了链表数组的建立,还引入了许多数据结构中的先进思想,学懂容易,实践难。