航空客运订票系统的设计与实现

合集下载

航空订票系统设计开题报告

航空订票系统设计开题报告

毕业设计开题报告课题名称:航空订票系统的设计与实现学生姓名:龙慎鹏指导教师:周常所在院系:通信工程学院专业名称:电力通信2017年2月22日毕业设计(论文)开题报告文献综述数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。

它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

用户通过DBMS访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。

它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。

大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。

数据库管理系统是数据库系统的核心,是管理数据库的软件。

数据库管理系统就是实现把用户意义下抽象的逻辑数据处理,转换成为计算机中具体的物理数据处理的软件。

有了数据库管理系统,用户就可以在抽象意义下处理数据,而不必顾及这些数据在计算机中的布局和物理位置。

所有数据库(除最简单的)中都有复杂的数据关系及其链接。

处理与创建,访问以及维护数据库记录有关的复杂任务的系统软件包叫做数据库管理系统(DBMS)。

DBMS软件包中的程序在数据库与其用户间建立接口。

(这些用户可以是应用程序员,管理员及其他需要信息的人员和各种操作系统程序)DBMS可组织、处理和表示从数据库中选出的数据元。

该功能使决策者能搜索、探查和查询数据库的内容,从而对正规报告中没有的,不再出现的且无法预料的问题做出回答。

这些问题最初可能是模糊的并且(或者)是定义不恰当的,但是人们可以浏览数据库直到获得所需的信息。

简言之,DBMS将“管理”存储的数据项和从公共数据库中汇集所需的数据项用以回答非程序员的询问。

[1][8][9]DBMS由3个主要部分组成:(1)存储子系统,用来存储和检索文件中的数据;(2)建模和操作子系统,提供组织数据以及添加、删除、维护、更新数据的方法;(3)用户和DBMS之间的接口。

基于Java和数据库系统设计的航空售票系统

基于Java和数据库系统设计的航空售票系统

基于Java和数据库系统设计的航空售票系统
航空售票系统是一个基于Java和数据库系统设计的系统,旨在为机票购买和管理提供便捷的服务。

本文将介绍系统的设计目标、功能模块和技术实现。

设计目标:
1. 提供用户注册和登录功能,方便用户查询和购买机票;
2. 提供航班查询功能,用户可以通过输入起始地、目的地和日期来查询符合条件的航班;
3. 提供机票购买功能,用户可以选择符合条件的航班,并进行机票购买;
4. 提供订单管理功能,用户可以查看自己的订单、取消订单或申请退款;
5. 提供系统管理功能,管理员可以管理航班、用户和订单等信息。

技术实现:
1. 前端界面使用Java Swing或JavaFX实现,包括用户登录、航班查询、机票购买和订单管理等页面;
2. 后端使用Java编写,通过与前端交互处理用户请求,包括用户注册、登录验证、航班查询和订单管理等功能;
3. 数据库采用关系型数据库(如MySQL)存储用户信息、航班信息和订单信息等数据;
4. 使用JDBC或ORM框架(如Hibernate)进行数据库访问,实现对数据库的增删改查操作;
5. 使用Java的网络编程实现与支付接口的交互,包括提交订单、支付和退款等操作;
6. 使用加密算法保证用户密码和敏感数据的安全性;
7. 使用版本控制工具(如Git)管理代码的开发和迭代。

基于Java和数据库系统设计的航空售票系统可以方便用户查询和购买机票,并提供订单管理和系统管理功能,实现了用户和管理员的交互操作,并通过技术手段保证数据的安全性。

航空客运订票系统—VC毕业设计(论文)

航空客运订票系统—VC毕业设计(论文)

航空客运订票系统—VC毕业设计(论文) 航空客运订票系统 1 问题描述航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。

试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。

1.1 每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量)1.2 作为示意系统,全部数据可以只放在内存中1.3 系统能实现的操作和功能如下:1.3.1 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额1.3.2 承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。

若需要,可登记排队候补 1.3.3 承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户 2 概要设计2.1 存储结构设计typedef struct Al_Custom //已订票客户{char name[15];//姓名int count;//订票量int level;//舱位等级Al_Custom *next;//下一节点指针}Al_Custom,*Al_CustomLink;typedef struct Wait_Custom//等候替补的客户{char name[15];//姓名int count;//所需票量Wait_Custom *next;//下一节点指针 }Wait_Custom; typedef struct Wait_Queue//等待队列 {Wait_Custom *front;//队列头指针Wait_Custom *rear;//尾指针 }Wait_Queue; typedef struct Flight//航线{char terminus[15];//终点站名char flight_no[10];//航班号char plane_no[10];//飞机号int week;//飞行周日int count;//乘客定额int rest;//余票量Al_CustomLink Al_link;//指向成员名单链表的头指针Wait_Queue wait_queue;//等待替补队列 }Flight;2.2 主要算法设计2.2.1 主程序模块:void main(){初始化;do{接受命令;处理命令;}while(命令!="退出");}2.2.2 查询航线模块——实现查询功能 void findFlight() { 提示输入要查询航线的终点站名;如果存在该航线,则输出该航线信息;否则提示不存在该航线;}2.2.3 承办订票业务模块——实现订票功能 void dingpiao() {提示输入航班号和订票数;若不存在该航班号,则提示不存在该航线;否则{如果有余票,则办理业务;否则提示没有足够的余票,询问是否候补;若是,则排队候补;}}2.2.4 承办退票业务模块——实现退票功能 void tuipiao() {提示输入航班号和飞行周日;确认航班号和飞行周日都存在,并且客户有订票,则 {执行退票;为排队候补的客户办理订票业务;}否则{提示有误}}2.3 测试用例设计2.3.1 航线3条:1001 hp001 shanghai 2 501002 hp002 beijing 5 501003 hp003 guangzhou 7 502.3.2 查询航线:shanghai2.3.3 承办订票业务:航班号1001 数额30 姓名chengangjie 舱位等级22.3.4 承办订票业务:航班号1001 数额23 姓名zhenxi 舱位等级32.3.5 承办退票业务:姓名chengangjie 航班号1001 飞行周日2 2.3.6 查询航线:终点站名:shanghai3 调试分析3.1 本次的设计比较困难,需要实现较多的功能,所以在调试过程中不太顺利,主要是指针的修改。

基于C语言的航空订票系统的设计与实现

基于C语言的航空订票系统的设计与实现

武汉理工大学华夏学院课程设计课程名称数据结构题目基于C语言的航空订票系统的设计与实现 ----订票模块专业软件工程班级软件1111班姓名.成绩指导教师黄启荃2012 年6月18日至2012年6月21日课程设计任务书设计题目:基于C语言的航空订票系统的设计与实现----订票模块设计目的1.学会分析研究数据对象的特性;2.学会数据的组织方法;3.选择合适的数据的逻辑结构和存储结构以及相应操作,把现实世界中的问题转换为计算机内部的表示和处理;4.提高学生的程序设计能力、提高算法设计质量与程序设计素质;设计任务(在规定的时间内完成下列任务)本项目旨在通过一个简化的航空订票系统项目,使学生在完成对C程序设计语言和基本数据结构与算法课程的学习后,综合运用所学到的语法和算法知识,构建一个接近实际应用场景的软件系统,以达到复习和巩固前期课程内容并为后续课程奠定基础的目的。

本系统要求实现订票功能模块,订票功能模块通过航班号普通用户可以在输入自己姓名和身份证号后,完成订票操作。

(订票情况可以存在一个数据文件中,结构自己设定)如果该航班已经无票,可以提供相关可选择航班;具体要完成的任务是:A.编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果。

B.写出规范的课程设计说明书;时间安排(第19周—6.18至6.25)第一天布置课程设计任务,讲授VC安装,程序结构、数组、函数、文件;第二天查阅资料,讲授排序,查询算法实现;了解航空售票管理系统的需求;第三天讲授快速排序、最短路径问题、哈希查找的算法实现,准备程序第四天完成订票模块的设计与实现,上机调试程序,教师验收;第五天提交课程设计报告,下午4点前提交课程设计报告及文档至综合楼712。

具体要求课程设计报告按统一通用格式书写,具体内容包括:①设计任务与要求②总体方案与说明③软件主要模块的流程图④源程序清单与注释⑤问题分析与解决方案⑥小结与体会附录:①源程序(必须有简单注释)②使用说明③参考资料指导教师签名:2012 年6月15日教研室主任(或责任教师)签名:2012 年6月16日数据结构课程设计报告1.设计任务与要求1.1设计任务全面熟悉、掌握C语言和数据结构基本知识。

机票订购系统毕业设计

机票订购系统毕业设计

机票订购系统毕业设计机票订购系统毕业设计随着航空业的迅速发展和人们对旅行的需求不断增加,机票订购系统成为了一个非常重要的工具。

本文将探讨机票订购系统的设计与实现,包括系统的功能、技术选型、用户界面设计和安全性等方面。

一、系统功能机票订购系统的主要功能是提供用户方便快捷地订购机票的服务。

用户可以通过系统查询航班信息、选择座位、支付费用并获得电子机票。

同时,系统还应该提供退改签服务、行李托运信息和航班动态等功能,以满足用户的各种需求。

二、技术选型在选择技术方案时,需要考虑系统的可扩展性、性能和安全性。

常见的技术选型包括前端开发框架、后端开发语言和数据库等。

前端可以选择流行的React或Vue.js框架,后端可以使用Java或Python等语言进行开发,数据库可以选择MySQL或MongoDB等。

三、用户界面设计用户界面设计是机票订购系统中非常重要的一部分,它直接影响用户的体验和使用效果。

界面设计应该简洁明了,符合用户的使用习惯。

可以采用响应式设计,使得系统在不同设备上都能够良好地展示。

此外,还可以考虑使用图表和动画等元素来提升用户的交互体验。

四、安全性机票订购系统涉及用户的个人信息和支付信息,因此安全性是非常重要的。

系统应该采用合适的加密算法对用户的敏感信息进行加密存储,并采取防止SQL注入和XSS攻击等措施,确保用户数据的安全性。

同时,系统还应该设置合理的权限管理机制,以保护系统的安全。

五、系统测试在开发完成后,系统需要进行充分的测试,以保证其质量和稳定性。

可以进行单元测试、集成测试和系统测试等,发现并修复潜在的问题。

同时,还可以进行性能测试,以确保系统在高并发情况下的稳定性和响应速度。

六、用户体验优化除了基本功能和安全性外,用户体验也是机票订购系统中需要关注的重要方面。

可以通过用户反馈和数据分析等方式,不断优化系统的用户界面和功能,提升用户的满意度和黏性。

例如,可以提供个性化推荐服务、增加用户评价和分享功能等。

基于C语言的航空订票系统的设计与实现

基于C语言的航空订票系统的设计与实现

基于C语言的航空订票系统的设计与实现航空订票系统是通过计算机技术对航空公司的航班信息和乘客信息进行管理和处理的系统。

本文将介绍基于C语言的航空订票系统的设计与实现。

具体包括系统的需求分析、系统的设计与架构、系统的实现和功能特点等方面。

一、系统的需求分析在设计和实现航空订票系统之前,需要明确系统的需求,包括基本功能和用户需求等。

基本功能包括航班查询、座位预订、票价计算、乘客信息管理等。

用户需求包括操作简便、查询快速、信息准确等。

二、系统的设计与架构1.系统架构设计航空订票系统采用客户端/服务器(Client/Server)架构设计。

客户端负责与用户进行交互,接收用户的输入并向服务器发送请求。

服务器负责处理客户端的请求,访问数据库获取相应的数据并返回给客户端。

2.数据库设计三、系统的实现1.用户界面设计在客户端实现用户界面,提供菜单和命令行交互的方式供用户操作。

菜单包括航班查询、座位预订、票价计算、乘客信息管理等功能选项。

2.功能实现(1)航班查询功能用户输入出发地和目的地,系统从数据库中查询符合条件的航班信息,并显示在用户界面上。

用户可以选择其中一条航班进行预订。

(2)座位预订功能用户选择一条航班后,系统显示该航班的座位信息,并提示用户选择座位号。

用户选择座位后,系统生成一个订单号,并将订单信息保存到数据库中。

(3)票价计算功能用户选择一条航班后,系统显示该航班的票价信息,并提示用户输入乘客人数和票价类型。

系统根据输入的信息计算总票价并显示给用户。

(4)乘客信息管理功能用户可以添加、修改和删除乘客信息。

当用户进行座位预订时,系统要求用户输入乘客信息,可以选择已有的乘客信息或新添加乘客信息。

四、系统的功能特点1.操作简便:用户可以通过菜单方式选择需要的功能,操作简单快捷。

2.查询快速:系统利用数据库索引技术,提高了查询速度,用户可以快速获取所需信息。

3.信息准确:系统通过数据库管理相关信息,并通过数据校验保证数据的准确性。

航空客运订票系统文件操作论文

航空客运订票系统文件操作论文

航空客运订票系统设计与实现学生姓名:周玖怡指导老师:罗奕摘要本系统是采用C++开发的一个管理系统。

本系统要解决的是机场售票中所要解决的问题,包括售票退票子系统,订票子系统,查询子系统,航班信息修改和飞行时刻表等五个方面的功能。

在整个系统中采用文件来存储信息,角色划分为系统管理员、售票员、顾客三种,各自拥有不同的操作权限。

在整个系统设计过程中,严格按照软件工程设计标准来设计系统。

关键词飞机信息;部分匹配检索;文件操作1 引言20世纪,随着全球经济的蓬勃发展,众多经济学家纷纷提出了新的管理理论。

20实际50年代,西蒙提出了管理依赖于信息和决策的思想。

同时期的维纳发表了控制论,他认为管理是一个控制过程。

1958年,盖尔写到:“管理将以较低的成本得到及时准确的信息,做到较好的控制。

” [1]管理信息系统就是我们常说的MIS(Management Information System),在强调管理,强调信息的现代社会中它越来越得到普及。

MIS是一门学科,它跨越了若干个领域,比如管理科学,系统科学,运筹学,统计学以及计算机科学。

在这些科学的基础上,形成信息收集和加工的方法,从而形成一个纵横交织的系统。

所以,在这次机场售票管理系统的设计中,我选择了以C语言来设计这个管理系统。

与其他数据库管理系统相比,C语言具有用户的普遍性,功能的完整性,工具的易用性和规模的可伸缩性等特点[1]。

1.1 相关研究课题的特点近年来,国内外一些学者对中国航空业的竞争力进行了讨论,例如胡鞍钢对比分析了中美航空市场的开放度和国际竞争力。

认为我国空中市场开放程度低下,其国际竞争能力十分薄弱,美国的航空市场开放程度最大,美国的航空运输业国际竞争力最强,这表明空中市场越开放,航空运输业的发展空间越大,航空运输业市场规模越大,国际竞争力就越强。

刘世锦和冯飞在民航业国内外市场的开放和竞争严重不对称的情况下,对竞争的考虑首先是如何提高本国企业的国际市场竞争力。

基于JSP航空订票系统的设计与实现-毕业论文

基于JSP航空订票系统的设计与实现-毕业论文

毕业设计(论文)基于JSP航空订票系统的设计与实现系别:计算机科学与技术系专业(班级):计算机科学与技术(2010级1班)作者(学号):指导教师:完成日期: 2014年5月10日蚌埠学院教务处制目录摘要 (1)Abstract (2)1 概述 (3)1.1 项目简介 (3)1.1.1 项目开发的目的 (3)1.1.2 项目开发的意义 (3)1.1.3 同类软件国内外的现状 (4)2 开发工具及相关技术简介 (5)2.1JSP技术简介 (5)2.2 SQL Server2008简介 (5)2.3Apache Tomcat 6.0简介 (6)2.4MyEclipse的简介 (6)3 可行性分析 (8)3.1经济可行性 (8)3.2法律可行性 (8)3.3技术可行性 (8)4 需求分析 (10)4.1系统功能需求 (10)4.1.1 航班信息浏览功能 (10)4.1.2 航班查询功能 (10)4.1.3 机票预订功能 (10)4.1.4 用户注册和登录功能 (10)4.1.5 密码修改功能 (10)4.1.6 机票购物车功能 (10)4.1.7 后台管理功能 (11)4.2数据库需求分析 (11)4.2.1 实体数据分析 (11)4.2.2 实体关系分析 (11)5 总体设计 (11)5.1数据库的设计 (13)5.1.1 数据库概念设计 (13)5.1.2 数据库表的设计 (14)5.2系统功能模块的设计 (15)5.2.1前台管理模块的总体设计 (16)5.2.2后台管理模块的总体设计 (16)5.3系统架构设计 (16)6详细设计 (16)6.1用户注册 (18)6.2登录 (19)6.2.1 用户登录 (19)6.2.2 管理员登录 (21)6.3前台管理设计 (22)6.3.1 个人信息修改 (22)6.3.2 密码修改 (22)6.3.3 预定机票 (23)6.3.4 查看购物车 (24)6.4后台管理 (24)6.4.1 制定航班 (25)6.4.2 查看航班 (25)6.4.3 安排航班 (26)7 系统测试 (27)结论 (29)致谢 (30)参考文献 (31)基于JSP航空订票系统的设计与实现摘要:把网络订票系统应用在航空领域,不仅能够方便广大乘客的出行,还能够给航空工作人员带来工作便利,提高工作的效率,节省人力资源。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计说明书课程名称题目航空客运订票系统的设计与实现院系_电子信息工程学院____班级__计算机科学与技术__学生姓名______________指导教师_____________日期_ 2011.12.19-2011.12.30__数据结构课程设计任务书指导教师:时间: 2011.12.8航空客运订票系统的设计与实现一、简介1.设计目的:1.数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。

3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。

航空空订票系统:(1)熟练掌握链表存储结构及其建立过程和常用操作;(2)熟练掌握队列的建立过程和常用操作;(3)学会自己调试程序的方法并掌握一定的技巧。

2.问题的描述:航空客运订票的业务包括查询航线和客票预定的信、客票预定和办理退票等,设计一个程序以使上述任务借助计算机完成。

二、数据结构的设计:(1)航班信息:飞机抵达城市、航班号、飞机号、起降时间、航班票价、票价折扣、总位置和剩余位置、以訂票的客户名单。

(2)客户信息:客户姓名、证件号、座位号。

三、功能(函数)设计:1.每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日(星期几)、载客量、余票量、票价格,折扣,已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);2.全部数据可以只放在内存中;3.系统能实现的操作和功能如下:a) 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;b) 承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求。

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

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

(5)办理退票业务:调用查询函数,根据客户提供的航线进行搜索根据客户提供的姓名到订票客户名单域进行查询。

退票成功后,重新将航线名单域指向订票单链表的头指针。

根据队列中从出的客户信息判断是否满足要求,如果满足,则将该客户的信息插入到乘客信息链表中。

(6)退出本系统四、界面设计:界面简洁易懂,包括1.浏览航线信息;2.浏览已订票客户信息;3.查询航线;4.办理订票业务;5.办理退票业务;6.查看剩余票数并排序。

五、程序设计:六、运行与测试:1、测试的数据及其结果:(1)通过按键“1”浏览航线信息,结果输出五行事先输入的数据。

(2)通过按键“3”查询航线,输入终点站名后,结果输出相关航线信息。

(3)通过按键“4”办理订票业务,依次输入航班号,订票数量,客户姓名,证件号后,结果输出客户的座位号,订票成功。

(4)通过按键“2”浏览已定票客户信息,输入航班号后,结果显示客户信息。

(5)通过按键“5”办理退票业务,输入航班号,客户名后,结果退票成功。

(6)通过按键“6”查看剩余票数并排序,结果正确。

(7)通过按键“0”退出系统,结果正确。

2、运行与测试期间遇到的问题及其解决办法。

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

(2)程序在起初设计的时候,经常出现溢出错误,而且不只一处。

为了修正这些溢出错误,耗费了大量的时间,修正解释之后再看源程序,才发现原来只是因为开始的函数定义的数据类型出现了问题,对函数的定义不清楚,字符的不正确定义造成了后期大量的纠错工作,(3)由于忘记了一些c语言的规范使得在调试过程中一些错误没有发现。

例如,调用函数时,数组只需要传递数组名即可;字符‘0’和整形的0是不同的文明不可以直接对其画等号。

(4)测试用例具有一定的广泛性。

运行程序时输入了多种不同字符信息,经过多次修改结果达到了预期效果。

说明程序具有一定的可靠性和稳定性。

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

代码:#include <stdio.h>#include <stdlib.h> #include <string.h> #include <conio.h> #define MAXSIZE 5 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;struct airline{ char ter_name[10];char air_num[10];char plane_num[10];char date[7];int tkt_amt;int tkt_sur;int tkt_pri;int tkt_reb;linklist *order;linkqueue wait;}lineinfo;struct airline *start;struct airline air[MAXSIZE]={{"北京","1","A1401","星期日",3,1,800,9},{"上海","2","H1102","星期一",2,5,600,6},{"洛阳","3","L1003","星期五",1,3,100,4},{"杭州","4","H1035","星期三",5,4,700,5},{"呼和浩特","5","F1100","星期六",6,3,800,5}};void display(struct airline *info){printf("%8s\t%3s\t%s\t%7s\t%7d\t%10d\t%5d\t%3d\n",info->ter_name,info->air_num,info->plane_num,info->date,info->tkt_amt,info->tkt_sur,info->tkt_pri,info->tkt_reb);}void list(){ struct airline *info;int i=0;info=start;printf("终点站\t\t航班号\t飞机号\t飞行日期\t载客量\t余票量\t票价格\t折扣\n");while(i<MAXSIZE){display(info);info++;i++;}printf("\n\n");}void search(){ struct airline *info,*find();char name[10];int i=0;info=start;printf("请输入终点站名:");scanf("%s",name);while(i<MAXSIZE)if(!strcmp(name,info->ter_name)) break;info++;i++;}if(i>=MAXSIZE)printf("对不起,该航线未找到!\n");else{printf("终点站\t\t航班号\t飞机号\t飞行日期\t载客量\t余票量\t票价格\t折扣\n");display(info);}}struct airline *find(){ struct airline *info;char number[10];int i=0;info=start;printf("请输入航班号:");scanf("%s",number);while(i<MAXSIZE)if(!strcmp(number,info->air_num)) return info;info++;i++;}printf("对不起,该航线末找到!\n");return NULL;}void prtlink(){ linklist *p;struct airline *info;info=find();p=info->order;if(p!=NULL){printf("客户姓名订票数额客户证件号\n");while(p){printf("%s\t\t%d\t%d\n",p->name,p->ord_amt,p->grade); p=p->next;}}elseprintf("该航线没有客户信息!!\n");linklist *insertlink(linklist *head,int amount,char name[],int grade) { linklist *p1,*new1;p1=head;new1=(linklist *)malloc(sizeof(linklist));if(!new1) {printf("\nOut of memory!!\n");return NULL;}strcpy(new1->name,name);new1->ord_amt=amount;new1->grade=grade;new1->next=NULL;if(head==NULL){head=new1;new1->next=NULL;}elsehead=new1;new1->next=p1;return head;}linkqueue appendqueue(linkqueue q,char name[],int amount) { qptr new1;new1=(qptr)malloc(sizeof(qnode));strcpy(new1->name,name);new1->req_amt=amount;new1->next=NULL;if(q.front==NULL)q.front=new1;elseq.rear->next=new1;q.rear=new1;return q;}void order(){ struct airline *info;int amount,grade;char name[10];info=start;if(!(info=find())) return;printf("请输入你订票所需要的数量:");scanf("%d",&amount);if(amount>info->tkt_amt){ printf("\n对不起,您输入的票的数量已经超过乘员定额!"); return;}if(amount<=info->tkt_sur){int i;printf("请输入您的姓名(订票客户):");scanf("%s",name);printf("请输入%s票的证件号:",name);scanf("%d",&grade);info->order=insertlink(info->order,amount,name,grade);for(i=0;i<amount;i++)printf("%s的座位号是:%d\n",name,info->tkt_amt-info->tkt_sur+i+1); info->tkt_sur-=amount;printf("\n祝您乘坐愉快!\n");}else{ char r;printf("\n已经没有更多的票,您需要排队等候吗?(Y/N)");r=getch();printf("%c",r);if(r=='Y'||r=='y'){ printf("\n请输入您的姓名(排队订票客户):");scanf("%s",name);info->wait=appendqueue(info->wait,name,amount);printf("\n注册成功!\n");}else printf("\n欢迎您下次再次订购!\n");}}void return_tkt(){ struct airline *info;qnode *t,*back,*f,*r;int grade;linklist *p1,*p2,*head;char cusname[10];if(!(info=find())) return;head=info->order;p1=head;printf("请输入你的姓名(退票客户):");scanf("%s",cusname);while(p1!=NULL) {if(!strcmp(cusname,p1->name)) break;p2=p1;p1=p1->next;}if(p1==NULL){ printf("对不起,你没有订过票!\n");return;} else{if(p1==head) head=p1->next;else p2->next=p1->next;info->tkt_sur+=p1->ord_amt;grade=p1->grade;printf("%s成功退票!\n",p1->name);free(p1);}info->order=head;f=(info->wait).front;r=(info->wait).rear;t=f;while(t){if(info->tkt_sur=info->wait.front->req_amt){int i;info->wait.front=t->next;printf("%s订票成功!\n",t->name);for(i=0;i<t->req_amt;i++)printf("%s的座位号是:%d\n",t->name,(info->tkt_sur)-i);info->tkt_sur-=t->req_amt;info->order=insertlink(info->order,t->req_amt,t->name,grade); free(t);break;}back=t;t=t->next;if((info->tkt_sur)>=(t->req_amt)&&t!=NULL){ int i;back->next=t->next;printf("%s订票成功!\n",t->name);for(i=0;i<t->req_amt;i++)printf("<%s>'s seat number is:%d\n",t->name,(info->tkt_sur)-i); info->tkt_sur-=t->req_amt;info->order=insertlink(info->order,t->req_amt,t->name,grade); free(t);break;}if(f==r) break;}}void sort_tkt(){int j;struct airline t,*info,*p,*q;p=info=air;for(p=info;(p+1)->tkt_sur;p++)for(q=p+1;q->tkt_sur;q++){if(p->tkt_sur<q->tkt_sur){t=*p;*p=*q;*q=t;}}printf("终点站\t\t航班号\t飞机号\t飞行日期\t载客量\t余票量\t票价格\t折扣\n");for(j=0;j<MAXSIZE;j++){display(info);info++;}}int menu_select(){ int c;char s[20];printf("\n *航空客运订票系统*\n");printf("**************************************************************\n");printf(" 1.浏览航线信息 2.浏览已订票客户信息\n");printf(" 3.查询航线 4.办理订票业务\n");printf(" 5.办理退票业务 6.查看剩余票数并排序\n");printf(" 0.退出系统\n");printf("************************************************************************ ********\n");do{printf("请选择:");scanf("%s",s);c=atoi(s);}while(c<0||c>7);return c;}void main(){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:sort_tkt();break;case 0:printf("\n欢迎您的使用,再见!\n");exit(0); }printf("\nPress any key to continue!\n");getch();}}电子信息工程学院数据结构课程设计指导教师评分表。

相关文档
最新文档