航空订票系统

合集下载

UML可视化建模(航空订票系统)

UML可视化建模(航空订票系统)

《可视化建模与UML》课程结业报告课题名称: 航空客运订票系统建模姓名: ***学号: *******班级:****: ***完成日期: 2013.06.16目录第一章概述 (3)1.1系统开发的摸底和开发背景 (3)1.2系统功能 (3)1.3系统结构框架 (4)1.4开发环境 (5)第二章用例模型 (6)2.1用例模型简介 (6)2.2用例图的的含义及其作用 (6)2.3用例图及用例描述 (7)第三章类模型 (10)3.1类模型简介 (10)3.2类图的作用 (10)3.3类图 (11)第四章交互模型 (13)4.1交互模型简介 (13)4.2序列图简介 (13)4.3序列图的作用 (13)4.4序列图描述及其序列图 (14)第五章行为模型 (20)5.1行为模型简介 (20)5.1.1活动图简介 (20)5.1.2活动图的作用 (20)5.1.3状态图简介 (21)5.1.4状态图的作用 (21)5.2行为模型图 (21)5.2.1活动图及其描述 (21)5.2.2状态图及其描述 (23)第六章构件图和部署图 (25)6.1构件图简介 (25)6.2部署图简介 (25)第七章课程学习小结 (27)7.1课程小结 (27)7.2学习心得 (27)参考文献 (28)第一章概述1.1系统开发的摸底和开发背景随着科技与经济的发展,越来越多的人选择乘飞机,这跟我国的经济增长有很大关系,人们在追求快节奏的生活方式,所以做飞机无疑成了首选。

而且随着网络的盛行,航空订票系统就显得尤为重要,我们开发这个系统主要是为了方便大家,让大家能够快速、清晰、准确地了解航班信息,而不至于像以前那样排队等候,从而避免耽搁乘客大量的等待时间。

航空客运业务诞生已有进一个世纪了,作为现有交通工具中最方便快捷的一种,它确实地给大家的生活、出行带来了极大的方便。

随着航空客运业务多年来的发展,其售票业务也同样不断地发展。

1.2系统功能机票预订系统是在现代社会生活节奏不断加快,对机票预订工作的自动化和准确化要求也日益强烈的背景下,为了实现机票预订工作的网络化,以及实现网络查询和统计一体化而开发的管理信息系统。

航空订票系统需求规格说明书

航空订票系统需求规格说明书

TOLO 航空订票系统》需求规格说明书目录3.数据描述3.1 功能操作 (Actio ns )和角色 (Actors ) (10)3.1.1用例清单 (24个) ....................................................... 1.0. 3.1.2角色清单 ............................................................... 1.14.功能需求.3.1.1编写目的 .3 1.2项目背景.31.2.1行业背景 1.2.2客户行业背景 1.2.3项目业务背景 1.3定义1.3.1名词解释和费用执行标准定义 1.3.2术语和缩略词对照表 1.4参考资料2.任务概述 .9. 2.1目标 9. 2.2运行环境 9. 2.3条件与限制 ......................................................................................................................... 9 ............ .1.0..1.14.1功能划分.1.14.2功能描述.14.4.2.1功能划分 1.44.2.2功能描述 1.54.2.3相关界面介绍304.2.4交互列表313.5.5.1最大并发连接数355.2执行效率.355.3日均处理数据量和峰值数据处理速度(记录条数/秒):.3.5.6.运行需求 3.5.6.1 一般限制..................................................................... 35 ............6.2出错处理..................................................................... 36 ............1.1编写目的本需求说明书的目的是明确T-3GABS项目的业务背景、业务范围以及项目定义的专业词汇,通过分析项目的核心功能和系统需求。

航空订票系统c语言课程设计

航空订票系统c语言课程设计

航空订票系统c语言课程设计一、课程目标知识目标:1. 让学生掌握C语言中结构体、数组、函数等基本知识点的综合运用,特别是在航空订票系统中的应用。

2. 让学生了解并掌握航空订票系统的基本业务流程,如航班查询、预订、取消预订等功能。

3. 使学生能够通过C语言实现简单的航空订票系统,并了解其背后的数据结构和算法。

技能目标:1. 培养学生运用C语言进行问题分析、程序设计和调试的能力。

2. 培养学生独立思考和团队协作的能力,通过项目实践,提高解决实际问题的能力。

3. 培养学生具备良好的编程习惯,编写出结构清晰、可读性强的代码。

情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,激发他们主动探索新知识的精神。

2. 培养学生面对困难和挑战时,保持积极乐观的心态,勇于克服困难,不断进步。

3. 通过航空订票系统课程设计,使学生认识到编程在实际生活中的应用价值,提高他们对社会责任的认识。

课程性质:本课程为C语言程序设计课程的实践环节,以项目为导向,注重培养学生的动手能力和实际应用能力。

学生特点:学生已经掌握了C语言的基本语法和编程技巧,具有一定的编程基础,但缺乏实际项目经验。

教学要求:结合学生特点和课程性质,采用案例教学、任务驱动等方法,引导学生通过实践掌握课程内容,提高编程能力。

在教学过程中,注重启发式教学,鼓励学生提问、讨论,培养他们的问题解决能力和团队协作精神。

最终达到课程目标,使学生能够独立完成航空订票系统课程设计。

二、教学内容1. C语言基础知识回顾:结构体、数组、函数、指针、文件操作等。

2. 航空订票系统业务流程分析:航班查询、预订、取消预订、显示航班信息等。

3. 数据结构和算法:链表、排序算法、查找算法等在航空订票系统中的应用。

4. 编程规范和调试技巧:代码规范、调试方法、性能优化等。

5. 项目实践:根据业务流程,设计并实现航空订票系统各功能模块。

教学内容安排和进度:1. 第一周:C语言基础知识回顾,重点讲解结构体、数组和函数。

航空软件之订票系统详细设计说明书

航空软件之订票系统详细设计说明书

航空订票系统详细设计说明书1 .引言详细设计阶段的任务是要设计出程序的“蓝图”,以后程序员讲根据这个蓝图写出实际的程序代码。

因此,详细设计的目标是在逻辑上正确的实现每个模块的功能。

1.1 编写目的详细设计说明书编制的目的是:说明一个软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑。

1.2 背景(1)系统的名称:航空订票系统(2)系统提出者:XX航空公司开发者: XX计算机科学与信息学院用户:旅客,航空公司本系统是一个独立的订票系统1.3 定义:数据字典:关于数据的信息的集合,也即是对数据流图中包含的元素的定义觉的集合。

1.4 参考资料《软件工程》王忠群,中国科学技术出版社。

《软件工程课程实验指导书》,安徽工程大学计算机与信息学院。

《软件工程—实践者的研究方法》(美)Roger s.Pressman 著郑人杰马素霞等译机械工业出版社2 程序系统的结构航空订票系统预订票系统取票系统退票系统航空公司调整系统旅客身份信息验证航班信息查询缴预订通知单验证缴余数取票退票资格验证退票身份验证订票客户管理航班机票管理报表打印管理航班信息管理人员用户管理票价管理订票审核管理退票管理增加航班信息删除航班信息查询航班信息修改航班信息机票销2图标售额分生成机票高级管理人员管理人员票价折扣票价类型增加客户信息删除客户信息查询客户信息修改客户信息查航班询预订票取票退票验证用户3 程序1设计说明3.1 程序描述程序设计主要是为了明了概括订票系统的设计思路理念,给人以清晰的结构。

通过分部罗列和说明其作用与其重要性,也有部分补充其其他方面。

程序包括:预订票系统,其功能含有:旅客身份信息验证,航班信息查询,缴预款取票系统,其功能含有:通知单验证,缴余数取票退票系统,其功能含有:退票资格验证,退票航空公司调整系统,其功能含有:航班机票管理,航班信息管理,票价管理。

3.2 功能3.3 性能(1)系统处理的准确性和及时性系统处理的准确性和及时性是系统的必要性能。

航空订票系统发展历程

航空订票系统发展历程

航空订票系统发展历程
航空订票系统的发展历程始于20世纪60年代,当时航空公司开始采用计算机技术来管理和处理航班信息和乘客订票。

这些系统使用基本的计算机程序和数据库来存储航班时间表、座位预订和乘客信息。

随着计算机技术的进步,航空订票系统在20世纪70年代进入了第二阶段。

此时,一些大型航空公司开始使用集中式订票系统,这些系统可以同时为多个航空公司提供订票服务。

这些系统通常由航空公司或第三方公司开发和运营,并称为计算机预订系统(CRS)。

这些系统可以通过计算机终端和电话来接受乘客的订票请求,并自动处理座位预订。

到了20世纪80年代,航空订票系统进一步发展成为全球化的系统。

此时,全球范围内的航空公司开始使用相互连接的计算机系统,以实现航班信息的共享和联合销售。

这些全球预订系统(GDS)可以通过互联网提供订票服务,并通过电子邮件
和短信向乘客发送相关信息。

进入21世纪,随着互联网的普及和移动设备的兴起,航空订
票系统进入了一个新的阶段。

乘客可以通过电脑、手机和平板电脑等多种终端访问航空公司的网站或移动应用程序,并实时查询航班信息、预订航班、选座等。

同时,新的技术和算法也被应用于航空订票系统,以实现更高效的航班排班和座位分配。

目前,航空订票系统已经成为航空公司和乘客之间不可或缺的
连接工具。

随着人工智能和大数据技术的不断发展,航空订票系统还有望进一步提升预订体验和航班管理效率。

数据结构课程设计---航空订票系统

数据结构课程设计---航空订票系统

数据结构课程设计---航空订票系统数据结构课程设计航空订票系统一、设计目的:编写一个航空订票系统,可以在系统中录入并修改各个航班的具体情况,帮助乘客准确的查询个航班的最新信息(包括航班号、航班的起始时间和地点。

票价)和各个项目业务的及时办理(包括订票、退票等)。

二、任务:航空客运定票的业务活动包括:查询航线、客票预定和办理退票等。

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

三、功能要求:1) 录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)2) 查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3) 订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4) 退票:可退票,退票后修改相关数据文件;5) 客户资料:有姓名,证件号,订票数量及航班情况,订单要有编号;6) 修改航班信息:当航班信息改变可以修改航班数据文件。

四、设计程序:#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 100//最大容量typedef struct Flight//航班信息{char FlightNumber[6];//航班号char SPlace[10];//起始地char DPlace[10];//目的地char Stime[5];//起飞时间char Etime[5];//降落时间int price;//票价int RemnantSeat;//剩余座位数}Flight;typedef struct Order//订单信息{int OrderNumber;//订单编号char PName[10];//乘客姓名char ID[20];//身份证号char FlightNumber[6];//航班号int num;//订票数量}Order;Flight fl[N];Order od[N];int i,j;//两个常用角标变量int lenf=0;//航班数int leno=0;//订单数char ch;//获取用户选择的变量char filenamef[]="flight.txt";//航班文件名char filenameo[]="order.txt";//订单文件名void save()//保存信息{FILE *fp;if((fp=fopen(filenamef,"w"))!=NULL)//打开文件保存航班信息{for(i=0;i<lenf;i++)//写入文件{fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%d\t%d\n",fl[i].FlightNumber,fl[i].S Place,fl[i].DPlace,fl[i].Stime,fl[i].Etime,fl[i].price,fl[i].Remnant Seat);}fclose(fp);//关闭文件}if((fp=fopen(filenameo,"w"))!=NULL)//打开文件保存订单信息{for(i=0;i<leno;i++)//写入文件{fprintf(fp,"%d\t%s\t%s\t%s\t%d\n",od[i].OrderNumber,od[i].PName,od[i ].ID,od[i].FlightNumber,od[i].num);}fclose(fp);//关闭文件}}void load()//读取信息{FILE *fp;if((fp=fopen(filenamef,"r"))!=NULL)//打开文件读取航班信息{i=0;while(!feof(fp))//读取文件{fscanf(fp,"%s%s%s%s%s%d%d",&fl[i].FlightNumber,&fl[i].SPlace,&fl[i]. DPlace,&fl[i].Stime,&fl[i].Etime,&fl[i].price,&fl[i].RemnantSeat);if(!feof(fp))i++;}lenf=i;//航班数量fclose(fp);//关闭文件}if((fp=fopen(filenameo,"r"))!=NULL)//打开文件读订单信息{i=0;while(!feof(fp))//读取文件{fscanf(fp,"%d%s%s%s%d",&od[i].OrderNumber,&od[i].PName,&od[i].ID,&od [i].FlightNumber,&od[i].num);if(!feof(fp))i++;}leno=i;//订单数量fclose(fp);//关闭文件}}int check(char s[])//检查是否重复{int g=0;for(;g<lenf;g++)if(strcmp(fl[g].FlightNumber,s)==0 && g!=i)//对比是否相同相同就说明重复了return g;//表示重复了return -1;//遍历了整个数组都没发现重复的表示没有重复}void input()//录入信息{system("cls");//清屏for(i=lenf;i<N;i++){printf("请输入航班号:");gets(fl[i].FlightNumber);while(check(fl[i].FlightNumber)!=-1)//检查是否重复{printf("航班号重复,请重新输入:");gets(fl[i].FlightNumber);}printf("请输入下列信息:\n");printf("出发地:");gets(fl[i].SPlace);printf("目的地:");gets(fl[i].DPlace);printf("起飞时间:");gets(fl[i].Stime);printf("降落时间:");gets(fl[i].Etime);printf("票价:");scanf("%d",&fl[i].price);printf("剩余座位数:");scanf("%d",&fl[i].RemnantSeat);getchar();//消除回车lenf++;//航班数加1printf("航班信息录入完成! 是否继续录入下一列航班信息?(y/n):");while(1){ch=getchar();getchar();//消除上一步产生的回车符if(ch=='y' || ch=='Y' || ch=='n' || ch=='N')break;elseprintf("请重新输入:");}if(ch=='n' || ch=='N')break;}save();//保存}void modify()//修改信息{char s[20];system("cls");//清屏printf("请输入要修改的航班号:");gets(s);for(i=0;i<lenf;i++)//查询是否存在输入的信息if(strcmp(fl[i].FlightNumber,s)==0)break;//存在结束循环if(i==lenf){printf("没有您输入航班信息,请按回车返回");getchar();return;}printf("请输入新的航班号:");gets(fl[i].FlightNumber);while(check(fl[i].FlightNumber)==1)//检查是否重复 {printf("航班号重复,请重新输入:");gets(fl[i].FlightNumber);}printf("请更新下列信息:\n");printf("出发地:");gets(fl[i].SPlace);printf("目的地:");gets(fl[i].DPlace);printf("起飞时间:");gets(fl[i].Stime);printf("降落时间:");gets(fl[i].Etime);printf("票价:");scanf("%d",&fl[i].price);printf("剩余座位数:");scanf("%d",&fl[i].RemnantSeat);getchar();//消除回车save();//保存printf("修改成功!\n");system("pause");//任意键继续}void book() // 订票{system("cls");//清屏i=leno;printf("请输入您的姓名:");gets(od[i].PName);printf("请输入您的身份证号:");gets(od[i].ID);printf("请输入订票的航班号:");gets(od[i].FlightNumber);for(j=0;j<lenf;j++)if(strcmp(fl[j].FlightNumber,od[i].FlightNumber)==0 )//对比是否相同break;if(j==lenf)// 表示航班不存在{printf("航班号不存在!请按回车返回");getchar();return;}printf("请输入订票数量:");scanf("%d",&od[i].num);fl[j].RemnantSeat-=od[i].num;//新的剩余票数printf("请输入订单编号:");scanf("%d",&od[i].OrderNumber);getchar();//消除回车leno++;//订单数加1save();//保存到文件printf("定票成功。

航空订票系统

航空订票系统

航空订票系统引言航空订票系统是一种为乘客提供航班查询、航班预订、座位选择、支付等功能的在线平台。

它使乘客可以方便地搜索和比较航班信息,并进行机票预订和支付。

航空订票系统的出现极大地方便了旅客的出行,使航空运输更加高效便捷。

功能特点航班查询航空订票系统通过与航空公司的数据库连接,可以提供全面的航班信息查询功能。

乘客可以根据出发地、目的地、日期等条件进行航班查询,并获得对应的航班列表。

在查询结果中,乘客可以查看航班的起飞时间、到达时间、航班号、航空公司等信息,以便做出合适的选择。

航班预订在航班查询结果中,乘客可以选择心仪的航班,并进行预订。

通过航空订票系统,乘客可以输入乘客信息、联系方式、选择座位等,并生成订单进行确认。

系统会实时检查座位的可用性,以确保乘客选择的座位仍然有效。

座位选择航空订票系统提供座位选择功能,使乘客可以根据自己的喜好选择座位。

系统会显示航班的座位图,乘客可以根据图中示意图选择合适的座位。

座位选择功能可以提高乘客的出行舒适度,满足不同乘客的座位需求。

支付航班预订完成后,乘客需要进行支付才能确保机票的有效性。

航空订票系统与支付接口相连接,可以提供多种支付方式供乘客选择,如信用卡支付、支付宝、微信支付等。

乘客可以根据个人的支付习惯选择合适的支付方式进行支付。

订单管理航空订票系统提供订单管理功能,乘客可以登录系统进行订单查询、修改、取消等操作。

通过订单管理功能,乘客可以实时了解订单状态,及时做出相应的处理。

系统也会提供订单的历史记录,以便乘客查阅。

技术实现前端技术航空订票系统的前端使用HTML、CSS和Javascript等技术实现。

前端页面负责与用户进行交互,展示航班信息、座位选择、支付界面等。

前端界面的设计需要具有良好的用户体验,方便用户操作和浏览。

后端技术航空订票系统的后端使用Java、Python等语言进行开发。

后端负责与前端进行数据交互,连接航空公司的数据库,进行航班查询、座位预订、支付等功能的实现。

航空订票系统分析需求报告

航空订票系统分析需求报告

航空订票系统分析需求报告1252355 1.编写目的及背景1.1编写目的1.本文档旨在从技术、经济、操作等方面综合研究分析机票预订系统的需求和各模块需要实现的具体要求,尽可能多地考虑在往后研发进程中可能出现的问题,为往后的概要设计和详细设计打基础2.便于用户、系统分析人员和程序员对需求进行理解和交流,初步判定目标软件可否知足其原来的期望,并可作为系统分析员设计软件的大体起点;3.确立可测试标准,用于软件开发完成后测试产品。

4.预期的读者和阅读建议:项目领导,项目组成员:须将本文档的全数内容理解清楚。

测试人员:主要阅读本文中详细的需求部份。

客户:需明确所有的需求分析是不是符合自己提出的要求。

1.2背景说明:1.软件系统名称:航空机票预订系统。

2.任务提出者:XX航空公司3.用户:XX航空公司,各大订票点4.实现:XX航空公司计算中心1.3概念结构化语言:将加上的控制结构就成了结构化语言。

数据库:依照数据结构来组织、存储和管理数据的仓库。

旅客信息:旅客提出订票要求时输入的信息,包括姓名、性别、工作单位、身份证号码(护照号码)、旅行时间、旅行始发地和目的地,航班舱位要求等。

取票通知:旅客取票凭证。

账单:旅客取票和交易的凭证。

机票:旅客登机凭证。

2任务概述2.1目标1.|开发用意:为方便旅客订票,提高工作效率,在技术、经济可行的条件下开发目标软件。

2.应用目标:接收预定机票的旅客信息(姓名、性别、工作单位、身份证号码(护照号码)、旅行时间、旅行始发地和目的地,航班舱位要求等)。

为旅客安排航班。

当旅客交付了预订金后,系统打印出取票通知和帐单给旅客。

旅客在飞机起飞前一天凭取票通知和帐单交款取票,系统查对无误即打印出机票给旅客。

能够及时对于航班售票情况进行统计。

3.作用范围:xx航空公司所有订票点。

4.目标软件作为航空公司内部管理系统的一部份,与其他软件的关系如下:航空公司管理系统订票管航班员工管设备管管理2.2用户的特点1.利用本软件人员要求有必然计算机基础的人员,系统管理员要求有计算机的专业知识,所有人员都要通过本公司培训.2.管理人员也需经一般培训.3.系统管理员,审计员将进行专业培训,以保证他们将熟练管理本系统.4.目标软件的预期利用频度:二十四小时不按期利用。

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

淮阴工学院算法设计技能训练报告姓名: 学号:班级: NIIT1151学院: 计算机与软件工程学院专业: 计算机科学与技术题目:航空订票系统指导教师:2016 年12 月目录1 课题任务描述 (1)1.1查询航线: (1)1.2承办订票业务: (1)1.3承办退票业务: (1)1.4实现提示: (1)2 系统设计 (1)2.1主界面模块 (1)2.2算法设计 (2)3.详细设计 (3)3.1.录入航班 (3)3.2.主界面选择 (3)3.3查询 (3)3.4.订票 (4)3.5.退票 (4)3.6关键代码 (4)4 测试 (15)结论 (17)致谢 (18)参考文献 (19)1 课题任务描述每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。

1.1查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;1.2承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少余订票额,则需重新询问客户要求。

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

1.4实现提示:两个客户名单可分别由线性表和队列实现。

为查找方便,已订票客户的线性表应按客户姓名有序,并且,为了插入和删除方便,应以链表作为存储结构。

由于预约人数无法预计,队列也应以链表作为存储结构。

2 系统设计2.1主界面模块表12.2算法设计本程序定义了三个类,分别为乘客类,候补乘客类,航班类,并定义了若干函数(如:输出所有航班函数,输出所有乘客函数,增加航班函数等),用主函数将他们联系起来,实现了预订航班查询航班的快捷操作。

使用前需要首先由工作人员进行录入航班,然后再使用。

使用中通过用户的选择不同,程序执行不同的操作。

对于此程序的时间空间复杂度,主要是对于调用各种输入输出函数的复杂度分析:时间复杂度:O(n);空间复杂度:O(n)。

刚开始编写时,只定义了两个类,乘客类和航班类,在做候补名单时不方便操作,而且不能单图处理候补乘客,因为其意义和普通乘客不一样,所以也不能将各种信息录入到乘客类中。

解决方法:重新定义一个类,单独用来保存候补乘客信息由于本程序的时间要求只是用星期表示,所以只有1到7的选择,刚开始没有考虑到这个问题,所以输入时可以输入比7大的数,这样就不符合要求,使录入信息无意义。

解决方法:使用判定语句,如果大于7,则叫用户重新输入当每个单独的功能实现后,应该返回哪一步,刚开始编写程序时,是使全部返回主界面,这使得很多操作过于繁琐,比如当用户查找了所有航班,想单独查看某一航班时间,必须首先退回主界面重新选择。

解决方法:通过把功能的图画出来,搞清哪些程序功能相互关联,在该程序和做一个选择语句,让用于自己决定是否返回。

在飞机票订票功能是如何进入候补选择;在退票功能结束如何调用候补名单。

由于刚开始编写时在订票失败后直接要求用户返回或者重新选择航班,没有提供候补的选项。

同样在退票完成时只是返回主界面。

解决方法:订票失败后,让用户选择是否成为候补,也可以选择放弃返回,否则进行录入候补名单操作;退票成功,先查找是否有在候补该航班的乘客,如果用输出他的信息,没有则返回3.详细设计3.1.录入航班3.2.主界面选择3.3查询3.4.订票3.5.退票3.6关键代码1定义乘客类.class CkNode{public:int Add;char Name[50];int Fly;CkNode(const int Add=0,char N[50]="",const int F=0); };2,定义航班类class FlightNode{public:char Over[50];int Fnum;int Pnum;int Day;int Max;int Left;FlightNode(char O[50]="",const int F=0,const int P=0,const int D=0,const int M=0,const int L=0);};3,定义候补乘客类class WaitNode{public:char Name[50];int Fly;WaitNode(const int Fly=0,char Name[50]="");};4,增加,录入航班函数void addFlight(FlightNode *F){cout<<"现在开始增加航班\n"<<endl;cout<<"++++++++++++++++++++++++++++++++++++++++++++++"<<endl;int i=0,n=0;top9: cout<<"请输入航班的信息:\n"<<endl;cout<<"+_+++++++++++++++++++++++++++++++++++++++++++++++"<<endl;top8: do{cout<<"请输入航班的终点站名:";cin>>F[n].Over;cout<<"请输入新航班的航班号:";cin>>F[n].Fnum;for(int j=0;j<n;j++)if(F[n].Fnum==F[j].Fnum){cout<<"航班号已存在,请重新输入。

/n----------------------------------------";goto top8;}}while(i);cout<<"请输入新航班的飞机号(飞机编码):";cin>>F[n].Pnum;cout<<"请输入新航班的飞行日(星期几):";top15: cin>>F[n].Day;if(F[n].Day>7){cout<<"该系统只针对一周内航班\n"<<endl;cout<<"请重新输入\n"<<endl;goto top15;}top11: cout<<"请输入新航班的成员定额:";cin>>F[n].Max;cout<<"请输入如新航班的余票量:";cin>>F[n].Left;if(F[n].Max<F[n].Left){cout<<"输入错误\n"<<endl;cout<<"输入的定额比余票数大,你他妈逗我?\n"<<endl;goto top11;}cout<<"录入成功";n++;cout<<"是否继续录入(y/n)";char ch;top10: cin>>ch;if(ch=='y'){goto top9;}else if(ch=='n')return;else{cout<<"输入错误!请重新选择:";goto top10;}}5,输出全部乘客函数void ShowAllCkNode(CkNode *C){cout<<"---------------------------------------------"<<endl;cout<<"姓名"<<"\t"<<"飞机号"<<"\t"<<"座位号"<<endl;int n=50;for(int i=0;i<n;i++){if(!C[i].Fly)break;else{cout<<C[i].Name<<"\t"<<C[i].Fly<<"\t"<<C[i].Add<<endl;}}cout<<"---------------------------------------------"<<endl;cout<<"你可以进行以下操作:1.查看单位乘客;"<<"2.返回上一级.\n"<<"请选择:";int chioce;top7: cin>>chioce;if(chioce==1){ShowOneCkNode(C);}else if(chioce==3){return;}else{cout<<"输入错误!请重新选择:";goto top7;}}6,输出全部航班函数void ShowAllFlight(FlightNode *F){cout<<"---------------------------------------------"<<endl;cout<<"航班号"<<"\t"<<"终点站"<<"\t"<<"飞行日"<<endl;int n=50;for(int i=0;i<n;i++){if(!F[i].Fnum)break;else{cout<<F[i].Fnum <<"\t"<<F[i].Over <<"\t"<<F[i].Day <<endl;}}cout<<"---------------------------------------------"<<endl;cout<<"你可以进行以下操作:1.查看单条航线;"<<"2.录入新的航班信息"<<"3.返回上一级.\n"<<"请选择:";int chioce;top2: cin>>chioce;if(chioce==1){ShowOneFlight(F);}else if(chioce==2)addFlight(F);else if(chioce==3){return;}else{cout<<"输入错误!请重新选择:";goto top2;}}7,输出单个乘客函数void ShowOneCkNode(CkNode *C){char Q[20];int n=50;int choice;cout<<"请输入查询乘客名字:\n";cin>>Q;CkNode temp[50];int m=0;for(int i=0;i<=n;i++){if(strcmp(Q,C[i].Name)==0)temp[m]=C[i];m++;}if(m==0)cout<<"没有您的订票信息"<<endl;else{ CkNode temp1=temp[0];cout<<"姓名"<<temp[0].Name<<"飞机号"<<temp[0].Fly<<"座位号"<<temp[0].Add<<endl;}cout<<"请选择所要的操作:1.继续查询2.返回上一级\n";top12: cin>>choice;if(choice==1){ShowOneCkNode(C);}else if(choice==2){return;}else{cout<<"输入错误!请重新选择:";goto top12;}}8,输出单个航班函数void ShowOneFlight(FlightNode *F){char T[20];int n=50;int choice;cout<<"请输入终点站名称:\n";cin>>T;FlightNode temp[50];int m=0;for(int i=0;i<=n;i++){if(strcmp(T,F[i].Over)==0){temp[m]=F[i];m++;}}if(m==0)cout<<"无此终点站"<<endl;else{FlightNode temp1=temp[0];cout<<"航班号:"<<temp[0].Fnum<<ends<<"飞机号:"<<temp[0].Pnum<<ends<<"飞行日:"<<temp[0].Day<<ends<<"余票额:"<<temp[0].Left<<endl;for(int j=1;j<m;j++){if(temp[j].Day!=0){cout<<"航班号:"<<temp[j].Fnum<<ends<<"飞机号:"<<temp[j].Pnum<<ends<<"飞行日:"<<temp[j].Day<<ends<<"余票额:"<<temp[j].Left<<endl;if(temp[j-1].Day>temp[j].Day)temp1=temp[j];}}cout<<"最近一天的航班:\n"<<"航班号:"<<temp1.Fnum<<ends<<"飞机号:"<<temp1.Pnum<<ends<<"飞行日:"<<temp1.Day<<ends<<"余票额:"<<temp1.Left<<endl;}cout<<"请选择所要的操作:1.继续查询2.返回上一级\n";top3: cin>>choice;if(choice==1){ShowOneFlight(F);}else if(choice==2){return;}else{cout<<"输入错误!请重新选择:";goto top3;}}9,订票函数void BookTicket(FlightNode *F,CkNode *C){char O[20];char Na[20];int choice;int temp;cout<<"请输入您想到达的目的地:\n";top6: cin>>O;for(int i=0;i<=50;i++){if(strcmp(O,F[i].Over)==0){cout<<"最近一周有到达该地的航班\n"<<endl;cout<<"++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;temp=i;cout<<"航班号:"<<F[i].Fnum<<ends<<"飞机号:"<<F[i].Pnum<<ends<<"飞行日:"<<F[i].Day<<ends<<"余票额:"<<F[i].Left<<endl;goto top14;}if(i>=50){cout<<"对不起,最近一星期没有到该地航班"<<endl;cout<<"+++++++++++++++++++++++++++++++++++++++++++++"<<endl;goto top6;}}top14:cout<<"实名制购票,请输入您的名字,一人限购一张:\n";cin>>Na;if(F[temp].Left>=1){char choice1;cout<<"尚有余票,您现在预订的是"<<"飞行日(星期几):"<<F[temp].Day<<ends<<"飞机号:"<<F[temp].Pnum<<ends<<"的机票,确定订票?(N/Y)"<<endl;cin>>choice1;switch(choice1){case 'Y':case 'y':F[temp].Left=F[temp].Left-1;for(int i=0;i<=50;i++){if(C[i].Fly==0){C[i].Fly=F[temp].Pnum;C[i].Add=F[temp].Left;cout<<"请再次输入你的名字确认"<<endl;cin>>C[i].Name;cout<<"订票成功!\n";break;}if(i>=50){cout<<"订票人数达到上限,请稍后再试!"<<endl;}}cout<<"您预订的"<<"飞机号:"<<F[temp].Pnum<<ends<<"飞往:"<<F[temp].Over<<ends<<"将于"<<"飞行日(星期几):"<<F[temp].Day<<ends<<"起飞,希望您旅途愉快!"<<endl;break;default:return ;}}if(F[temp].Left<=1){cout<<"抱歉您想要定的航班已满,对此我们深表歉意,订票失败"<<endl;}cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"<<e ndl;cout<<"您可以:1.继续订票 3.返回上一级\n"<<endl;top4: cin>>choice;if(choice==1){BookTicket(F,C);}else if(choice==3){return;}else{cout<<"输入错误!请重新选择:";goto top4;}}10,退票函数void ReturnTicket(FlightNode *F,CkNode *C){char Na[20];int temp;int choice;int n=50;int y;cout<<"请输入你的名字:";top13: cin>>Na;for(int i=0;i<n;i++){if(strcmp(Na,C[i].Name)==0){ temp=i;cout<<"++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;cout<<"尊敬的"<<C[i].Name<<ends<<"已查到您的订票信息,您的飞机号是"<<C[i].Fly<<ends<<"座位号是"<<C[i].Add<<endl;break;}else{cout<<"没有查询到您的订票信息,请核对后继续!"<<endl;cout<<"++++++++++++++++++++++++++++++++++++++++++++++"<<endl;goto top13;}}cout<<"尊敬的"<<C[temp].Name<<"是否确认退票?"<<endl;cout<<"1,确认 2,取消";cin>>y;if(y==1){*C[temp].Name=NULL;C[temp].Add=0;C[temp].Fly=0;F[temp].Left=F[temp].Left+1;cout<<"退票成功"<<endl;}else{cout<<"取消退票"<<endl;goto top13;}cout<<"请选择下一步操作:1.继续退票 2.订票 3.返回上级菜单\n"; top5: cin>>choice;if(choice==1){ReturnTicket(F,C);}else if(choice==2){BookTicket(F,C);}else if(choice==3){return;}else{cout<<"输入错误!请重新选择:";goto top5;}}11,输出所有候补乘客函数void ShowAllWaitNode(WaitNode *W){cout<<"---------------------------------------------"<<endl;cout<<"姓名"<<"\t"<<"候补飞机号"<<"\t"<<endl;int n=50;for(int i=0;i<n;i++){if(!W[i].Fly)break;else{cout<<W[i].Name<<"\t"<<W[i].Fly<<"\t"<<endl;}}cout<<"---------------------------------------------"<<endl;cout<<"你可以进行以下操作:"<<"1.返回上一级.\n"<<"请选择:";int chioce;top17: cin>>chioce;if(chioce==1){return;}else{cout<<"输入错误!请重新选择:";goto top17;}}12,主函数,调用各种函数void main(){FlightNode F[50];CkNode C[50];int n=0;int choice;cout<<"欢迎使用订票系统\n"<<endl;cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<end l;cout<<"请工作人员录入本周航班\n"<<endl;addFlight(F);while(1){cout<<"++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;cout<<" *** 欢迎使用航空客运订票系统!!*** "<<endl;cout<<"++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;cout<<"你可以进行以下的操作:\n"<<"1==>查询已有航线\n"<<"2==>录入新的航线信息\n"<<"3==>查询单条航线\n"<<"4==>查询乘客信息\n"<<"5==>查询我的订票信息\n"<<"6==>订票\n"<<"7==>退票\n"<<"8==>退出.\n"<<"----------------------------------------"<<endl;cout<<"请选择:";top: cin>>choice;switch(choice){case 1 : ShowAllFlight(F);break;case 2 : addFlight(F);break;case 3 : ShowOneFlight(F);break;case 4 : ShowAllCkNode(C);break;case 5: ShowOneCkNode(C);break;case 6: BookTicket(F,C) ;break;case 7: ReturnTicket(F,C) ;break;case 8 : cout<<"退出系统!多谢使用!\n";return;default : cout<<"输入错误,请重新输入:\n";goto top;}}}4 测试首先进入程序界面,由工作人员进行录入航班:可以录入航班情况;航班录入完毕后进入使用界面,根据界面提示可以有不同的选择,分别为:1,查询航线:分为全部查询和单此查询,全部查询可以输出所有航班的信息;单个查询由用户输入终点,查询符合情况的航班2,承办订票业务:根据客户提出的要求查询该航班票额情况,若尚有余票,则为客户办理订票手续;若已满员或者余票数少于订票额,则需重新寻味客户要求,若需要,可登记排队候补;3,承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队等候补,首先询问排在第一的客户,若所有退票额能满足他的要求,则为他办理订票手续否则依次询问其他排队候补的客户。

相关文档
最新文档