航空客运订票系统
飞机订票系统测试报告
飞机订票系统测试报告1. 引言本文档旨在介绍飞机订票系统的测试过程和结果。
飞机订票系统是一款用于用户预订航班机票的在线平台。
通过测试,我们旨在确保系统的功能正常、性能稳定,并且用户能够顺利完成预订流程。
2. 测试环境为了对系统进行全面的测试,我们搭建了以下测试环境:•操作系统:Windows 10•浏览器:Google Chrome,Mozilla Firefox•设备:台式电脑,笔记本电脑,手机(Android,iOS)•网络环境:LAN,WLAN,4G网络3. 测试目标我们的测试目标主要包括以下几个方面:•功能测试:确保系统的各项功能正常运作,包括用户注册、登录、查询航班信息、预订机票等。
•兼容性测试:在不同的操作系统、浏览器和设备上测试系统的兼容性,确保用户可以在不同的环境中正常使用系统。
•性能测试:通过模拟多用户同时访问、查询航班和预订机票,测试系统的性能稳定性和响应速度。
•安全性测试:检查系统的安全性,防止潜在的数据泄露和非法访问。
4. 测试步骤为了对系统进行全面的测试,我们按照以下步骤进行测试:4.1 用户注册和登录功能测试1.打开系统主页,点击注册按钮进入注册页面。
2.输入有效的用户名、密码和邮箱地址,点击注册按钮完成注册。
3.使用注册的用户名和密码,尝试登录系统。
4.验证登录是否成功,检查是否能够正常浏览个人信息页面。
4.2 航班查询功能测试1.登录系统后,点击航班查询按钮进入查询页面。
2.输入有效的出发地、目的地和日期,点击查询按钮进行航班搜索。
3.检查系统是否能够正确地显示符合条件的航班信息。
4.选择一条航班信息,尝试获取详细信息。
4.3 机票预订功能测试1.在航班查询结果页面,选择一条符合条件的航班信息。
2.输入乘客信息和联系方式,点击预订按钮进行机票预订。
3.检查系统是否成功生成订单,并显示预订成功的提示信息。
4.登录用户的邮箱,确认是否收到预订成功的邮件通知。
4.4 兼容性测试在不同的操作系统、浏览器和设备上测试系统的兼容性,包括:•操作系统:Windows,macOS,Linux•浏览器:Google Chrome,Mozilla Firefox,Safari•设备:台式电脑,笔记本电脑,手机(Android,iOS)4.5 性能测试1.使用性能测试工具,模拟多用户同时访问系统。
航空订票系统测试
航空机票预订系统软件编码和测试说明书1引言1.1编写目的作为软件工程过称的一个阶段,编码是对设计的进一步具体化,因此,程序的质量主要取决于软件设计的质量,但所选用的程序设计语言的特点和编码风格也将对程序的可靠性、可读性、可测试性和可维护性产生深远的影响。
但在开发如此复杂的航空订票系统软件的过程中,面对着极其错综复杂的问题,人的主观认识不可能完全符合客观现实,与工程密切相关的各类人员之间的通信和配合也不可能完美无缺,因此,系统一定会存在差错。
测试的目的就是在软件投入生产运行之前,尽可能多的发现并改正软件中的错误。
编码阶段可参考概要设计和详细设计说明书,软件测试以及软件维护阶段也可参考编码和详细设计说明书,以便于了解在概要设计及详细设计的过程中所完成的各模块设计结构,或在测试阶段找出各模块的设计思路和流程。
该文档的读者为用户代表、软件分析人员、开发管理人员和测试人员。
1.2背景①名称:机票预订系统②委托方:某某航空公司③开发方:某某团队④组成:编码模块分组,服务器,编码人员,测试人员⑤本系统与其他系统的关系如下:1.3定义黑盒测试:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。
在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。
黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。
很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。
白盒测试:白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。
数据结构课程设计---航空订票系统
数据结构课程设计---航空订票系统数据结构课程设计航空订票系统一、设计目的:编写一个航空订票系统,可以在系统中录入并修改各个航班的具体情况,帮助乘客准确的查询个航班的最新信息(包括航班号、航班的起始时间和地点。
票价)和各个项目业务的及时办理(包括订票、退票等)。
二、任务:航空客运定票的业务活动包括:查询航线、客票预定和办理退票等。
试设计一个航空客运定票系统,以使上述业务可以借助计算机来完成。
三、功能要求: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等语言进行开发。
后端负责与前端进行数据交互,连接航空公司的数据库,进行航班查询、座位预订、支付等功能的实现。
中国民航订座系统操作手册
中国民航订座系统操作手册一、引言中国民航发展迅速,为了提升服务效率和乘客体验,订座系统成为了必备工具。
本操作手册旨在指导用户熟悉和操作中国民航订座系统,确保订座流程顺畅、准确。
二、系统登录1. 使用合法的用户名和密码登录订座系统。
2. 在登录界面输入准确的用户名和密码,点击“登录”按钮进入系统。
三、基本功能1. 查询航班信息a. 选择日期和出发地、目的地,点击“查询”按钮。
b. 系统将显示符合条件的航班列表,包括航班号、起降时间、剩余座位数等信息。
c. 用户可以根据需要选择合适的航班进行订座。
2. 订座a. 在航班列表中选择目标航班,点击“订座”按钮。
b. 输入旅客姓名和联系方式等必要信息。
c. 确认无误后,点击“确认订座”按钮提交订座申请。
3. 修改、取消订座a. 进入订座管理界面,在“我的订座”中找到对应的订座信息。
b. 若需修改订座信息,点击“修改”按钮进行修改。
c. 若需取消订座,点击“取消”按钮完成取消操作。
4. 余票查询a. 进入余票查询页面,选择日期和出发地、目的地。
b. 系统将显示符合条件的航班列表以及剩余座位数。
5. 退票、改签a. 进入退票、改签管理界面,选择相应的订座信息。
b. 若需退票,点击“退票”并按照退票规定办理退票手续。
c. 若需改签,点击“改签”并按照改签规定进行改签操作。
四、常用技巧以下是一些常用的技巧,可提高订座效率和准确性:1. 根据航班号直接查询航班信息,快速订座。
2. 选择多个航班进行对比,以获得最适合的航班方案。
3. 提前查询余票情况,避开座位紧张的时间段。
4. 注意航班的起降时间,在订座时合理安排行程。
五、注意事项1. 用户在操作订座系统时,应提供真实、准确的信息,确保订座的有效性。
2. 根据不同航空公司的规定,订座可能需要提供附加信息或补充材料。
3. 遵守航空公司的规定和要求,以确保顺利出行。
六、结语通过本操作手册的指导,用户可以轻松使用中国民航订座系统,实现高效、便捷的订座服务。
航空客运订票系统
题目5 航空客运订票系统(难度系数:1.2)[问题描述]航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。
试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。
[基本要求](1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);(2)作为示意系统,全部数据可以只放在内存中;(3)系统能实现的操作和功能如下:①查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;②承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。
若需要,可登记排队候补;③承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
[测试数据]由读者指定。
[实现提示]两个客户名单可分别由线性表和队列实现。
为查找方便,已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。
由于预约人数无法预计,队列也应以链表作存储结构。
整个系统需汇总各条航线的情况登录在一张线性表上,由于航线基本不变,可采用顺序存储结构,并按航班有序或按终点站名有序。
每条航线是这张表上的一个记录,包含上述八个域、其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。
[选做内容]当客户订票要求不能满足时,系统可向客户提供到达同一目的地的其它航线情况。
读者还可充分发挥自己的想象力,增加你的系统的功能和其它服务项目。
航空订票系统代码
Airline.h#pragma once#include<string>using std::string;#include<iostream>using std::istream;using std::ostream;#include<string>using std::endl;using std::cout;using std::cin;#include"DataStructure.h"#include"Passenger.h"class AirLine;ostream &operator<<(ostream &output ,const AirLine& line);class AirLine{friend void InitAirLine(AirLine *line);friend ostream &operator<<(ostream &output,const AirLine& line); public:AirLine(void);~AirLine(void);string GetEndPoint();int GetSeatNum(int);int GetSeatRemain(int);void SetSeatRemain(int num,int whickWeek);string GetFlightNum(void);void InsertPassenger(Passenger& temp);bool IsFly(int whichWeek) const;void InsertAwait(Passenger& temp);bool DeletePassenger(Passenger&);int IfAwaitBook(int tiNum, int whichWeek);private:string endPoint;string flightNum;string airNum;bool week[8];int seatNum[8];int seatRemain[8];MyList<Passenger> pList;MyQueue<Passenger> pQueue;};Airline.cpp#include"AirLine.h"AirLine::AirLine(void){for(int i=0;i<8;i++)week[i]=false;}AirLine::~AirLine(void){}string AirLine::GetEndPoint(){return endPoint;}ostream &operator<<(ostream &output,const AirLine &line){output<<"终点站: "<<line.endPoint<<"\n\n"<<"航班号: "<<line.flightNum<<"\n\n"<<"飞机号: "<<line.airNum<<"\n\n"<<"剩余票数:\n";for(int i=1;i<8;i++)if(line.IsFly(i))output<<"周"<<i<<" "<<line.seatRemain[i]<<endl;string weekName[8]={" ","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sund ay"};output<<"飞行日:";for(int i=1;i<8;i++)if(line.week[i])output<<weekName[i]<<"\t";cout<<endl;return output;}int AirLine::GetSeatNum(int whichWeek){return seatNum[whichWeek];}int AirLine::GetSeatRemain(int whichWeek){return seatRemain[whichWeek];}void AirLine::SetSeatRemain(int num,int whichWeek) {seatRemain[whichWeek]-=num;}string AirLine::GetFlightNum(void){return flightNum;}void AirLine::InsertPassenger(Passenger& temp) {pList.InsertNode(temp);}bool AirLine::IsFly(int whichWeek) const{return week[whichWeek];}void AirLine::InsertAwait(Passenger& temp){pQueue.EnQueue(temp);}bool AirLine::DeletePassenger(Passenger& temp) {seatRemain[temp.GetWeek()]+=temp.GetTickets();return pList.DeleteNode(temp);}int AirLine::IfAwaitBook(int tiNum, int whichWeek) {if(pQueue.Empty())return 0;Passenger node,tnode;MyQueue<Passenger> tempQueue;while(!pQueue.Empty()){pQueue.DnQueue(node);if(node.GetTickets()<tiNum&&node.GetWeek()==whichWeek) break;tempQueue.EnQueue(node);}while(!tempQueue.Empty()){tempQueue.DnQueue(tnode);pQueue.EnQueue(tnode);}if(node.GetTickets()<tiNum&&node.GetWeek()==whichWeek) return node.GetTickets();elsereturn 0;}Passenger.h#pragma once#include<string>using std::string;enum TicketGrade{AA,BB,CC};class Passenger{public:~Passenger(void);Passenger(const string &passengerName=" ",int tick=0,int g=1,int w=1);bool operator==(Passenger & d);int GetTickets();int GetWeek();private:string name;int tickets;TicketGrade grade;int flightWeek;};Passenger.cpp#include"Passenger.h"Passenger::~Passenger(void){}Passenger::Passenger(const string &passengerName,int tick,int g,int w) {name=passengerName;tickets=tick;switch(g){case 1:grade=AA;break;case 2:grade=BB;break;case 3:grade=CC;break;default:break;}flightWeek=w;}bool Passenger::operator==(Passenger & d){if(d.tickets!=tickets)return false;if(!=name)return false;if(d.flightWeek!=flightWeek)return false;if(d.grade!=grade)return false;return true;//TODO: insert return statement here }int Passenger::GetTickets(){return tickets;}int Passenger::GetWeek(){return flightWeek;}DataStructure.h#include<cstdlib>//LQNode classtemplate<typename T>class MyList;template<typename T>class MyQueue;template<typename T>class LQNode{friend class MyList<T>;friend class MyQueue<T>;public:LQNode();LQNode(T);~LQNode();private:T data;LQNode<T> *next;};template<typename T> LQNode<T>::LQNode(){//data=T(0);next=NULL;}template<typename T> LQNode<T>::LQNode(T node) {data=node;next=NULL;}template<typename T> LQNode<T>::~LQNode(){}//MyList classtemplate<typename LT> class MyList{public:MyList();~MyList();void InsertNode(LT &);bool DeleteNode(LT &);private:LQNode<LT> *head;};template<typename LT> MyList<LT>::MyList(){head=new LQNode<LT>;head->next=NULL;}template<typename LT>MyList<LT>::~MyList(){}template<typename LT>void MyList<LT>::InsertNode(LT &temp){LQNode<LT> *node=new LQNode<LT>(temp);node->next=head->next;head->next=node;}template<typename LT>bool MyList<LT>::DeleteNode(LT &temp){LQNode<LT> *p,*q;p=head->next;q=head;while(p!=NULL){if(p->data==temp){q->next=p->next;free(p);return true;}q=p;p=p->next;}return false;}//MyQueue classtemplate<typename QT>class MyQueuepublic:MyQueue();~MyQueue();void EnQueue(QT &);void DnQueue(QT &);bool Empty();private:LQNode<QT> *front;LQNode<QT> *rear;};template<typename QT>MyQueue<QT>::MyQueue(){front=rear=new LQNode<QT>;}template<typename QT>MyQueue<QT>::~MyQueue(){}template<typename QT>void MyQueue<QT>::EnQueue(QT &temp){LQNode<QT> *node=new LQNode<QT>(temp);rear->next=node;node->next=NULL;rear=rear->next;}template<typename QT>void MyQueue<QT>::DnQueue(QT &temp){if(Empty())cout<<"对空"<<endl;elsetemp=front->next->data;return;}template<typename QT>bool MyQueue<QT>::Empty()return front->next==NULL;}Main.cpp#include"AirLine.h"#include<iostream>using std::cout;using std::cin;using std::endl;#include<iomanip>using std::setw;using std::setfill;void InitAirLine(AirLine *line);void InquireAirLine(AirLine* line);void BookTicket(AirLine *line);void ReturnTicket(AirLine *line);void IfAwait(AirLine &line,int tiNum,int whichWeek);void TransactBookTicket(AirLine &line,int tiNum,int whichWeek);void IfBookTicket(AirLine *line,string fiNum,int tiNum,int whichWeek); bool IsQuit();const int size=7;const int maxSeatNum=120;int main(){AirLine line[size];int select;InitAirLine(line);bool flag=false;while(!flag){cout<<"-------------------------------------------------------------------"<<endl;cout<<" 航空客运订票系统"<<endl;cout<<" 1 查询航线"<<endl<<" 2 订票业务"<<endl<<" 3 退票业务"<<endl;cout<<"-------------------------------------------------------------------"<<endl;cin>>select;while(cin.fail()||select<1||select>3){cout<<"输入错误,重新输入"<<endl;cin.clear();cin.ignore();cin>>select;}switch(select){case 1:InquireAirLine(line);break;case 2:BookTicket(line);break;case 3:ReturnTicket(line);break;default:cout<<"error";break;}system("pause");flag=IsQuit();system("cls");}return 0;}bool IsQuit(){char change;cout<<"是否退出该系统Y/y是N/n否"<<endl;while(true){cin>>change;switch(change){case'Y':case'y':return true;break;case'n':case'N':return false;break;default:cout<<"输入错误,重新输入"<<endl;break;}}return true;}void InquireAirLine(AirLine *line){string inquirePoint;cout<<"输入终点名:"<<endl;cin>>inquirePoint;for(int i=0;i<size;i++)if(line[i].GetEndPoint()==inquirePoint){cout<<line[i];return;}cout<<"对不起,没有到达该地的航班"<<endl; }void BookTicket(AirLine *line){int tiNum;int whichWeek;string fiNum;cout<<"输入航班号:"<<endl;cin>>fiNum;for(int i=0;i<size;i++)if(line[i].GetFlightNum()==fiNum){cout<<line[i];cout<<"输入订票额:"<<endl;cin>>tiNum;while(cin.fail()){cout<<"输入错误,重新输入"<<endl;cin.clear();cin.ignore();cin>>tiNum;}if(tiNum>maxSeatNum){cout<<"对不起,本公司暂时没有这么大的客机,请分开订票"<<endl;return;}cout<<"输入订票时间:"<<endl;cout<<"1星期一、星期二..."<<endl;cin>>whichWeek;while(cin.fail()||whichWeek>8||whichWeek<1||!line[i].IsFly(whichW eek)){cout<<"输入错误,重新输入"<<endl;cin.clear();cin.ignore();cin>>whichWeek;}if(tiNum>line[i].GetSeatRemain(whichWeek))IfAwait(line[i],tiNum,whichWeek);elseTransactBookTicket(line[i],tiNum,whichWeek);return;}cout<<"对不起,没有到达该地的航班"<<endl;}void ReturnTicket(AirLine *line){cout<<"为您办理退票业务:"<<endl;string fiNum;int whichWeek;int tiNum;int i;string name;cout<<"输入名字"<<endl;cin>>name;cout<<"输入航班号:"<<endl;cin>>fiNum;for(i=0;i<size;i++)if(line[i].GetFlightNum()==fiNum)break;if(i==size){cout<<"无此航班,请核对后输入"<<endl;return;}cout<<"输入订票时间:"<<endl;cout<<"1星期一、星期二..."<<endl;cin>>whichWeek;while(cin.fail()||whichWeek>8||whichWeek<1||!line[i].IsFly(whichW eek)){cout<<"输入错误,重新输入"<<endl;cin.clear();cin.ignore();cin>>whichWeek;}cout<<"输入订票额:"<<endl;cin>>tiNum;while(cin.fail()){cout<<"输入错误,重新输入"<<endl;cin.clear();cin.ignore();cin>>tiNum;}Passenger temp(name,tiNum,1,whichWeek);if(line[i].DeletePassenger(temp)==true){cout<<"办理退票完毕,谢谢合作"<<endl;IfBookTicket(line,fiNum,tiNum,whichWeek);}elsecout<<"您没有订票或输入信息错误,请核实后办理"<<endl; }void IfAwait(AirLine &line,int tiNum,int whichWeek){cout<<"空座不够,是否排队候补?Y/y是N/n否"<<endl;char change;bool flags=true;while(flags){cin>>change;switch(change){case'Y':case'y':{flags=false;Passenger temp(" ",tiNum,1,whichWeek);line.InsertAwait(temp);cout<<"已为您登记排队候补,请耐心等候"<<endl;}break;case'n':case'N':flags=false;cout<<"谢谢合作,再见。
UML 建模设计 航 空 订 票 系 统
UML 建模设计航空订票系统姓名:卫飞班级:1528学号:201515614375一、背景1.1背景概述随着知识经济的到来,人类已经逐步进入信息化社会,信息增长的速度越来越快,人们希望利用先进的管理理论方法手段来得到并处理越来越多的信息,以提高工作效率和管理水平。
由于信息资源对人们生活的重要性,不断提高信息的收集,传输,加以利用等活动,日益成为人们社会生活的重要组成部分。
网上机票预订管理系统的产生和发展正好满足人们的这种需求1.2 主要组成及功能1、新用户注册,新用户可以注册,注册时输入用户名可以查询用户可不可用,可用就可以注册,注册时可以判断用户输入的密码和验证密码是否相同,相同才给以注册,如果满意可以点注册,注册成功后用户可以选择不用在回到登陆界面,可以直接陆到用户主界面,以后就可以用这个用户登录了,如果不满意,点取消,所有信息清空,重新输入。
2、验证登陆名密码,正确进入主菜单,根据登录时所选的登录方式(客户、管理员)的不同分别对用户设定不同的访问权限(如果是输入的客户用户名和密码正确,选择以客户方式登陆则主界面里面的管理员界面不能用,如果输入的是管理员的相应用户密码正确,以管理员的方式登陆则管理员界面可用)不正确则清空登录框,最多可以输入三次,三次不正确系统会自动关闭3.我的航班界面。
你可以点击你想查询的有关机票的信息的按钮(舱位信息查询,客机信息查询,航线查询,客户类型信息查询)获得相关信息的表,根据表的内容,你可以在下面的下拉框中选择你要定的票信息,点确定后在下面会显示你的机票的相关内容,如果满意可以点击订票,把相关信息添加到机票数据库表中,如果不满意,可以点重置,所有信息清空,再重新选择。
4.退票功能。
用户可以根据用户信息表中的我的机票信息查询,找出机票号,在输入到机票号查询里,点击查询获得你的机票信息以及价格显示,点击退票则在数据库机票信息表中删除本条信息二、使用Rose绘制图分别有:用例图、类图、包图、顺序图、协作图、状态图、活动图、组件图、部署图情景:机票预订系统是某航空公司推出的一款网上选票系统。
订票系统文档
订票系统介绍订票系统是一种用于预订机票、火车票、电影票等各种票务的系统。
随着互联网和移动互联网的快速发展,订票系统已经成为现代人生活中不可或缺的一部分。
本文将介绍订票系统的功能以及使用方法。
功能1.用户注册和登录:订票系统提供用户注册和登录功能,用户可以通过自己的账号和密码进行登录,从而方便地进行票务预订。
2.票务查询:订票系统提供了全面的票务查询功能,用户可以根据目的地、时间、票价等条件对票务进行筛选,并查看相关的票务信息。
2.订票:一旦用户找到心仪的票务,可以通过订票系统直接进行订票。
用户需要选择座位、支付方式等相关信息,并填写必要的个人信息,完成订票过程。
3.订单管理:订票系统会保留用户的订票记录,用户可以通过订单管理功能查看自己的订单,了解订单的状态、支付情况等信息。
4.支付:订票系统支持多种支付方式,用户可以选择适合自己的支付方式进行付款,完成订票流程。
5.退票:用户可以在一定的时间范围内进行退票申请,订票系统会根据退票政策进行处理,并将相应的款项退还给用户。
6.售后服务:订票系统提供售后服务,用户可以通过系统客服渠道与客服人员联系,解决遇到的问题或提出意见和建议。
使用方法以下是使用订票系统的基本步骤:1.用户注册:用户需要点击系统的注册按钮,填写相关信息(如用户名、密码、手机号码等),完成注册过程。
也可以选择第三方账号快速注册。
2.用户登录:注册成功后,用户可以使用注册时填写的用户名和密码进行登录,进入订票系统的主界面。
3.票务查询:用户可以在主界面的搜索框中输入相关的查询条件(如目的地、时间、票价等),然后点击搜索按钮进行查询。
系统会根据用户的查询条件返回相应的票务信息。
4.订票:在查询结果中找到心仪的票务后,用户可以点击选择座位并填写必要的个人信息(如姓名、身份证号码等),然后选择支付方式付款。
5.订单管理:用户可以在系统的订单管理页面查看自己的订单,了解订单的状态和支付情况。
中国民航订座系统操作手册
中国民航订座系统操作手册中国民航的发展在近年来取得了长足的进步,航空业也逐渐成为人们出行的重要选择。
作为航空公司的重要一环,民航订座系统的操作十分关键。
在这里,我将为大家介绍一份中国民航订座系统的操作手册,希望能够帮助大家更好地了解和使用这一系统。
首先,在使用民航订座系统之前,我们需要了解一些基本的操作步骤。
首先,打开民航官方网站或者相关应用程序,找到订座系统入口。
其次,选择出发地和目的地城市,输入出行日期和航班时间。
接着,系统将显示符合条件的航班列表,根据自己的需求选择合适的航班。
最后,填写乘客信息并支付机票费用,完成预订。
在选择航班时,我们需要注意一些细节。
首先,要根据个人出行需求选择合适的舱位类型,如经济舱、商务舱或头等舱。
其次,要注意航班的起降时间和中转时间,确保在出行计划中留有充足的时间。
此外,还需要关注航班的准点率和航空公司的服务质量,选择信誉良好的航空公司。
在填写乘客信息时,我们需要确保信息的准确性和完整性。
首先,要填写与乘机人身份证件一致的姓名和证件号码,以确保乘机顺利。
其次,要填写联系人信息,以便紧急情况下能够及时联系到乘客。
最后,要选择座位偏好和餐食需求,提前告知航空公司,以便他们为您提供更好的服务。
在支付机票费用时,我们需要注意保护个人信息和选择安全支付方式。
首先,要选择正规渠道支付,避免使用不明来源的支付平台。
其次,要确保支付页面的安全性,避免泄露个人银行账号和密码。
最后,要保存好支付凭证和订单信息,以备日后查询和退改签。
总的来说,中国民航订座系统的操作并不复杂,只要掌握好基本步骤和注意事项,就能够轻松完成订票。
希望这份操作手册能够帮助大家更好地使用民航订座系统,享受舒适便捷的出行体验。
祝大家旅途愉快!。
客运站售票系统
客运站售票系统1. 系统介绍客运站售票系统是用于管理和运营客运站售票服务的软件系统。
该系统主要功能是实现客运站的票务管理和销售功能,包括车票预订、票务查询、座位管理、退票和改签等操作。
它可以帮助客运站提高运营效率,更好地服务旅客。
2. 功能需求2.1 车票预订客运站售票系统应该提供方便快捷的车票预订功能。
旅客可以通过系统选择出发地、目的地、乘车日期和座位类型等信息进行查询,并且可以根据查询结果选择合适的车次和座位进行预订。
2.2 票务查询系统需要提供票务查询功能,旅客可以通过系统查询特定日期的车票余量和票价等信息。
同时,客运站工作人员也可以通过系统查询车票销售情况和票务统计等信息。
2.3 座位管理系统需要实现座位管理功能,包括座位的预留、锁定和释放等操作。
在旅客预订车票后,系统应确保相应座位在一定时间内被锁定,以防止其他旅客同时预订。
2.4 退票和改签客运站售票系统应该支持旅客进行退票和改签操作。
旅客可以通过系统提交退票和改签申请,并且系统应根据规定的退改签政策进行处理。
系统需要及时更新座位状态和车票销售信息。
2.5 系统管理客运站售票系统需要提供维护和管理功能,包括用户管理、车辆管理、线路管理等功能。
系统管理员可以通过系统管理界面对用户权限进行管理,添加和删除用户账号。
车辆管理和线路管理功能可以帮助客运站管理车辆和线路信息,确保系统的准确性和完整性。
3. 技术设计3.1 架构设计客运站售票系统可以采用分层架构设计,将系统分为前端展示层、应用逻辑层和数据访问层。
前端展示层负责用户界面的展示和交互,应用逻辑层负责处理用户的请求和业务逻辑,数据访问层负责与数据库进行交互。
3.2 技术选型•前端展示层可以使用HTML、CSS和JavaScript技术进行开发,可选择一些流行的前端框架如React或Vue.js来提高开发效率。
•应用逻辑层可以使用Java语言进行开发,使用Spring框架来实现控制反转和面向切面编程等功能。
机票订票系统需求规格说明书
机票订票系统需求规格说明书机票订票系统需求规格说明书1.引言1.1 目的本文档旨在描述机票订票系统的需求规格,以确保系统开发人员和客户对系统功能和性能的期望一致。
1.2 背景随着航空业的快速发展和人们出行需求的增加,机票订票系统成为了一个必不可少的工具。
该系统可以方便快捷地为客户提供机票预订服务,提高航空公司的运营效率。
2.总体描述2.1 产品功能机票订票系统应具备以下主要功能:- 用户注册和登录:用户可以通过注册账号并登录系统来使用订票功能。
- 机票查询和预订:用户可以根据出发地、目的地、日期等信息查询航班,并选择合适的航班进行预订。
- 订单管理:用户可以查看和管理自己的订单,包括取消订单、改签等操作。
- 支付功能:用户可以选择合适的支付方式进行支付。
- 退款功能:用户可以申请退款,并根据航空公司的规定进行退款流程。
- 系统管理:管理员可以管理用户信息、航班信息、机票价格等。
2.2 用户特点机票订票系统的用户群体主要包括以下几类:- 普通用户:希望通过系统快速、方便地查询和预订机票。
- 航空公司:希望通过系统管理航班、机票价格等信息,并提供客服支持。
- 管理员:负责系统的日常管理和维护。
2.3 运行环境机票订票系统将在以下环境中运行:- 操作系统:支持Windows、Mac、Linux等主流操作系统。
- 浏览器:支持主流浏览器,如Chrome、Firefox、Safari等。
- 硬件要求:支持常见的个人电脑、笔记本电脑等设备。
3.详细需求描述3.1 用户注册和登录3.1.1 用户注册用户可以通过提供必要的个人信息进行注册,包括姓名、手机号码、邮箱等。
3.1.2 用户登录用户可以使用注册时的手机号码和密码进行登录,以便使用系统的各项功能。
3.2 机票查询和预订3.2.1 机票查询用户可以根据出发地、目的地、日期等信息进行机票查询,并获取符合条件的航班列表。
3.2.2 航班选择用户可以从航班列表中选择合适的航班进行预订,包括选择座位、舱位等。
中国民航订座系统操作手册
中国民航订座系统操作手册中国民航订座系统操作手册目录1. 引言2. 登录与注册2.1. 注册新账户2.2. 登录现有账户3. 航班查询与预订3.1. 单程和往返航班查询3.2. 舱位选择和预订3.3. 旅行日期选择3.4. 乘客信息输入3.5. 订单确认和支付4. 机票管理4.1. 航班变更和退票4.2. 行李规定查询5. 其他功能5.1. 会员服务5.2. 报销凭证生成5.3. 旅客保险购买6. 常见问题解答7. 结束语1. 引言欢迎使用中国民航订座系统操作手册。
本手册将详细介绍如何利用该系统进行航班查询、预订和机票管理等操作,以及其他功能的使用方法和常见问题解答。
请按照手册的指引一步一步操作,以便顺利完成所需任务。
2. 登录与注册2.1. 注册新账户a. 打开中国民航订座系统网站,点击注册按钮。
b. 输入个人信息,包括姓名、手机号码、电子邮箱等,并创建密码。
c. 验证码校验后,点击确认提交注册申请。
d. 系统将发送确认邮件至注册时提供的邮箱,点击确认邮件中的链接完成注册。
2.2. 登录现有账户a. 打开中国民航订座系统网站,点击登录按钮。
b. 输入注册时使用的手机号码或邮箱,以及密码。
c. 点击登录按钮完成登录。
3. 航班查询与预订3.1. 单程和往返航班查询a. 在主页的航班查询栏中选择单程或往返。
b. 输入出发地和目的地城市名或三字码,并选择出发日期。
c. 点击查询按钮,系统将列出符合条件的航班信息。
3.2. 舱位选择和预订a. 在航班列表中选择合适的航班。
b. 在舱位列表中选择希望预订的舱位类型和价格。
c. 点击预订按钮,进入乘客信息输入页面。
3.3. 旅行日期选择a. 在航班查询结果页面中,点击日期选择器。
b. 选择合适的出发日期。
c. 点击查询按钮,系统将显示该日期的航班信息。
3.4. 乘客信息输入a. 根据系统提示,输入乘客的姓名、证件号码、性别等基本信息。
b. 根据需要选择座位要求、餐食要求等其他选项。
客舱网统一登录
客舱网统一登录概述:随着数字化时代的到来,互联网技术在旅行和航空业务领域的应用日益普及。
航空公司为了提供更好的旅行体验和方便的管理操作,开始引入客舱网统一登录系统。
客舱网统一登录系统是一个集成多个航空公司服务的平台,旨在为乘客提供一站式的登录和管理解决方案。
通过客舱网统一登录系统,乘客可以方便地访问航空公司的各种服务,如查询航班信息、预订机票、选座、办理在线值机等操作。
特点:1. 统一登录:客舱网统一登录系统允许乘客使用一个账号和密码登录,即可访问多个航空公司的服务。
无需记住多个账号和密码,大大提高了用户体验。
2. 一站式服务:客舱网统一登录系统整合了多家航空公司的服务,通过一个平台即可满足乘客的各种需求。
无需跳转多个网站或应用程序,节省了时间和精力。
3. 个性化推荐:客舱网统一登录系统可以根据乘客的历史记录和偏好,提供个性化的服务和推荐。
通过分析乘客的行为数据,系统可以向乘客推荐适合的机票、酒店和旅行服务,提高了用户满意度。
4. 多平台适配:客舱网统一登录系统可以在多种终端上使用,包括电脑、手机和平板电脑。
无论乘客在哪个终端上登录,都能够方便地获取航空公司的服务。
实施步骤:1. 航空公司接入:航空公司需要与客舱网统一登录系统提供商进行合作,将自身的服务接入系统中。
这包括航班信息、机票预订、值机、选座等服务内容。
2. 用户注册:乘客需要在客舱网统一登录系统上注册一个账号,填写相关个人信息并设置账号密码。
注册完成后,乘客可以使用该账号登录系统。
3. 航班查询和预订:乘客登录后,可以查看不同航空公司的航班信息,包括航班时刻表、航班状态、航线等。
乘客可以根据需求选择适合自己的航班,并进行在线预订。
4. 办理在线值机:乘客可以通过客舱网统一登录系统办理在线值机手续。
乘客可以选择座位、打印登机牌等操作,提前完成值机,避免排队等待。
5. 各类服务管理:乘客可以在客舱网统一登录系统上管理自己的航空服务。
包括修改个人信息、查看历史订单、申请退票等功能。
旅客服务系统名词解释
旅客服务系统名词解释旅客服务系统,又称为旅客信息系统(Passenger Service System,缩写为PSS),是指航空公司或铁路公司等运输公司用于管理旅客信息和提供旅客服务的计算机系统。
该系统集成了多个模块和功能,包括预订、登机、行李跟踪、票务退改签、乘客信息管理等。
以下是一些与旅客服务系统相关的名词解释:1. 预订系统(Reservation System):旅客可以通过此系统预订机票或车票,并进行座位选择、支付等操作。
2. 登机系统(Check-In System):用于检查旅客的登机信息和办理登机手续,提供电子登机牌和行李标签等。
3. 行李跟踪系统(Baggage Tracking System):负责追踪旅客托运的行李的位置,确保行李的准确运送和及时返还。
4. 退改签系统(Ticketing System):允许旅客退改机票或车票,并处理相关费用和手续。
5. 出票系统(Ticket Issuance System):用于生成和打印机票或车票,包括行程单、电子票等。
6. 乘客信息管理系统(Passenger Information Management System):存储和管理旅客的个人信息、机票历史记录、优惠券等数据,以便进行个性化服务和相应的市场活动。
7. 舱位管理系统(Inventory Management System):控制和管理各航班或列车的座位分配和价格调整,以实现舱位的最大利用和优化收益。
8. 售后服务系统(After-sales Service System):解决旅客在旅途中遇到的问题和投诉,提供客户服务和售后支持。
旅客服务系统的目标是提高旅客满意度,增强运输公司的竞争力,实现高效、便捷和安全的旅行体验。
航空订票系统(软件测试报告)
航空订票系统(软件测试报告)-CAL-FENGHAI.-(YICAI)-Company One1航空订票系统测试计划说明书目录1引言 (4)1.1编写目的 (4)1.2测试计划概述 (4)1.3被测试系统概述 (4)1.4测试计划制定依据 (5)1.5预期读者 (5)2任务概述 (5)2.1目标 (5)2.2运行环境 (5)2.3需求概述 (5)3测试范围 (6)3.1测试用例 (7)3.2测试特性与软件需求的对应关系 (9)3.3被测试特性 (10)4术语定义 (10)4.1软件错误与缺陷定义 (10)4.2其他术语的定义 (11)5测试目标与策略 (11)5.1测试目标 (11)5.2测试方法 (11)5.3测试工具 (11)5.4测试地点 (11)6测试状态转换标准和再启动要求 (11)7测试通过准则 (12)8应提供的测试文档 (12)9测试资源需求 (12)9.1硬件需求 (12)9.2软件需求 (12)9.3网络需求 (12)9.4人员需求 (13)9.5其他需求 (13)10人员、职责及培训要求 (13)10.1人员组成 (13)10.2人员分工与职责 (13)10.3培训要求 (13)11测试进度 (13)12风险和应急 (14)12.1影响计划的潜在因素 (14)12.2应急措施 (14)13测试的局限性 (15)14计划的批准 (15)15参考文档 (15)附录Ⅰ软件错误与缺陷的定义 (16)附录Ⅱ测试状态转换标准和再启动要求 (17)附录Ⅲ测试通过准则 (19)附录Ⅳ人员分工与职责 (20)1引言1.1编写目的为保证《飞机订票系统》的测试工作有序进行,保证《飞机订票系统》正确实现需求规格说明书中的功能定义,特制本计划供软件测试相关人员执行。
1.2测试计划概述计划名称:航空订票系统测试计划文档编号:ticket/2009-06-11测试部门:软件测试部计划作者:金振方赵豪王山计划审核:在windows平台下运行航空订票系统,针对该项目中各个模块应实现的不同功能,生成测试用例文档,再手动进行测试。
数据结构课程设计题目(最终版)-2012
数据结构课程设计题目1、医务室模拟。
问题描述:假设只有一位医生,在一段时间内随机地来几位病人;假设病人到达的时间间隔为0~14分钟之间的某个随机值,每个病人所需处理时间为1~9分钟之间的某个随机值。
试用队列结构进行模拟。
实现要求:要求输出医生的总等待时间和病人的平均等待时间。
程序设计思路:计算机模拟事件处理时,程序按模拟环境中的事件出现顺序逐一处理,在本程序中体现为医生逐个为到达病人看病。
当一个病人就诊完毕而下一位还未到达时,时间立即推进为下一位病人服务,中间时间为医生空闲时间。
当一个病人还未结束之前,另有一位病人到达,则这些病人应依次排队,等候就诊。
2、招聘模拟问题描述:某集团公司为发展生产向社会公开招聘m个工种的工作人员,每个工种各有不同的编号(0,1,2,…,m-1)和计划招聘人数,参加招聘的人数有n个(编号为0,1,2,。
,n-1)。
每位应聘者可以申报两个工种,并参加公司组织的考试。
公司将按应聘者的成绩,从高到低的顺序排队录取。
公司的录取原则是:从高分到低分依次对每位应聘者按其第一志愿录取;当不能按第一志愿录取时,便将他的成绩扣去5分后,重新排队,并按其志愿考虑录取。
程序为每个工种保留一个录取者的有序队列。
录取处理循环直至招聘额满,或已对全部应聘者都做了录用处理。
实现要求:要求程序输出每个工种录用者的信息(编号、成绩),以及落选者的信息(编号、成绩)。
3、组织机构问题问题描述:以青岛理工大学为例,实现对我校组织结构的管理。
要求把我校的组织结构以树型结构存储,实现要求:(1)树中每个结点保存部门名称;(2)假定处级部门(含院系)在树中第二层,科级部门在第三层(即最后一层),软件应该能计算出处级部门有几个,有哪几个?(3)软件可以查询某部门下面的具体编制?4、最少换车次数问题问题描述:设某城市有n个车站,并有m条公交线路连接这些车站。
设这些公交车站都是单向的,这n个车站被顺序编号为0~n-1。
航空客运系统程序清单 加报告
课 程 设 计一、 题目分析从课程设计的题目要求可以知道,我们需要建立的是具有能对数据的插入, 删除 , 检索功能的软件。
由于乘客的数量较大且不固定,因此选择用链表来保存乘客的基本信息:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量等等,由于预约人数无法预计,队列也应以链表作存储结构。
所以我们建立一个可以插入和删除节点的链表,并能检索这个链表,在必要的时候将链表的内容保存到文件中。
系统主要实现的操作和功能是:查询航线、订票功能、退票功能。
要实现这些功能,首先要使程序能实现查找功能,在查找出到有效信息的前提之下,通过链表的赋值,更新信息和删除退票人信息,满足客户的要求。
二、设计过程(1)图1为程序总体流程图,首先直接调初始化函数,调用增加航班,查询航线,修改航线,删除航线,预定机票,退定机票,函数。
调用命令模式函数无实参,进行命令模式函数时,输入查找信息:终点站,如果决定订票,则输入5进行订票,如果不订票则输入8退出;输入7清屏。
如果以上操作输入有误,系统则输出提示:输入错误,请重新输入查询信息。
图1 程序总体流程图开始增加航线 Fligh tInser t()查询航线 Fligh tLoo kup()修改航线 Fligh tRew ork()删除航线 Fligh tDele te()订票 Fligt Buyti cket()退票 Fligh tCan celtic ket()清空系统 Fligh tclent ()退出系统结束12345678(2)图2为初始化函数流程图,主要是对链表中数据域置空,对链表初始化。
开始建立链表对链表头结点置空,使链表初始化建立新链表并赋给已定义链表返回图2 初始化函数流程图(3)图3为增加航线函数流程图,主要功能是把新航班信息写入新建的链表中,然后把新链表与储存航班的链表合并,得到新的航班信息,实现对新航线的增加。
开始建立新的链表用strcpy函数输新增航班信息建立新链表通过对新链表置空,使订票表头初始化返回图3增加航线函数流程图(4)图4为查询航班函数流程图,先输入查找信息,然后判断此查找信息是否存在,如果存在,则输出查找信息,如果不存在,则退出。
航空客运订票系统源代码
航空客运订票系统源代码#include <windows.h>//dos控制命令头文件#include <iostream>//输入输出头文件#include <iomanip>//控制格式头文件#include <conio.h>//getchar()用到#include <string>//字符串函数using namespace std;//标准命名空间#define OK 1//函数结果状态码#define ERROR 0//函数结果状态码#define TRUE 1//函数结果状态码#define FALSE 0//函数结果状态码typedef int status;//函数结果状态码static int cusnum=1;//顾客数(全局变量)static int airnum=1;//航线数(全局变量)//顾客结构体struct customer{char name[9];// 顾客名char line_num[8];// 航班号int piaonum;// 座位号struct customer *next;// 下一个结点};typedef customer *Linkcustomer;//候补顾客结构体typedef struct houbuNode{//候补顾客结构体char name[9];//姓名char end_place[10];//终点站int pnum;//票数struct houbuNode *next;//指针域}* houbucustomer;struct LinkQueue{houbucustomer front,rear;//队头队尾指针};//航线结构体struct airline{char line_num[8];// 航班号char plane_num[8];// 飞机号char end_place[20];// 目的的char fly_data[20];// 飞行周日int total;// 座位总数int left;// 剩余座位Linkcustomer custom;// 订票顾客指针LinkQueue houbucus;// 候补顾客指针struct airline *next;// 下一个结点};typedef airline *Linkairline;//初始化航线链表void init_airline(Linkairline &l){l=new airline[sizeof(airline)];//产生头结点,并始l指向此头结点if(!l){//存储分配失败exit(0);//退出}l->next=NULL;//头结点的指针域为空}//初始化顾客链表(同初始化航线链表)void init_customer(Linkcustomer &l){l=new customer[sizeof(customer)];if(!l){exit(0);}l->next=NULL;}//初始化候补顾客队列链表(同初始化航线链表)void init_houbucustomer(LinkQueue &Q){Q.front=Q.rear=new houbuNode[sizeof(houbuNode)];//if(!Q.front){exit(0);}Q.front->next=NULL;}//判断airline链表是否为空status airLineEmpty(Linkairline L){if(L->next)//非空return FALSE;elsereturn TRUE;}// airline链表插入操作status insert_airline(Linkairline L,int i,char *line_num,char *plane_num,char *end_place, char *fly_data,int total,int left,Linkcustomer custom,LinkQueue houbucus){int j=0;//计数器Linkairline s,p=L;//p指向头结点while(p&&j<i-1)//寻找第i-1个结点{j++;p=p->next;}if(!p||j>i-1)//i小于1或大于表长return ERROR;//插入失败s=new airline[sizeof(airline)];//生成新结点strcpy(s->line_num , line_num);//给新结点赋值strcpy(s->plane_num , plane_num);strcpy(s->end_place , end_place);strcpy(s->fly_data , fly_data);s->total =total;s->left =left;s->custom=custom;s->houbucus=houbucus;s->next=p->next;//新结点指向原第i个结点p->next=s;//原第i-1个结点指向新结点return OK;//插入成功}// customer链表插入操作(同airline链表插入操作)status insert_customer(Linkcustomer L,int i,char *name,char *line_num,int piaonum){ int j=0;Linkcustomer s,p=L;while(p&&j<i-1){j++;p=p->next;}if(!p||j>i-1)return ERROR;s=new customer[sizeof(customer)];strcpy(s->name , name);strcpy(s->line_num , line_num);s->piaonum=piaonum;s->next=p->next;p->next=s;return OK;}// houbucustomer入队操作void insert_houbucustomer(LinkQueue &Q,char *name,char *end_place,int pnum){ houbucustomer p;p=new houbuNode[sizeof(houbuNode)];strcpy(p->name , name);strcpy(p->end_place , end_place);p->pnum=pnum;p->next=NULL;Q.rear->next=p;Q.rear=p;}// houbucustomer出队操作status del_houbucustomer(LinkQueue &Q,houbuNode &hbnode){houbucustomer p;p=Q.front->next;strcpy(,p->name);strcpy(hbnode.end_place,p->end_place);hbnode.pnum=p->pnum;Q.front->next=p->next;if(Q.rear==p)Q.rear=Q.front;delete p;return OK;}//houbucustomer输出操作void print_houbucustomer(LinkQueue Q){houbucustomer p=Q.front->next;cout<<"候补顾客为:"<<endl;cout<<"姓名终点站票数"<<endl;while(p){cout<<p->name<<" "<<p->end_place<<" "<<p->pnum;p=p->next;}cout<<endl;}// 打印航线信息status print_airline(Linkairline l){cout<<endl<<"航班号飞机号目的地飞行周日总票数余票数订票客户替补客户"<<endl;Linkairline p=l->next ;for(;p!=NULL;p=p->next ){cout<<setiosflags(ios::left)<<setw(9);cout<<p->line_num<<setw(10)<<p->plane_num<<setw(9)<<p->end_place<<setw(12)<<p->fly_data<<setw(10)<<p->total<<setw(8)<<p->left<<setw(12)<<&(p->houbucus)<<setw(10)<<&(p->custom)<<endl;}return OK;}// 打印航线信息(print_airline重载)status print_airline(Linkairline l,string name,int N){string info;bool flag=true;Linkairline p=l->next;for(;p!=NULL;p=p->next ){if(N==1)info=p->end_place;elseinfo=p->line_num;if(info==name){flag=false;cout<<endl<<"航班号飞机号目的地飞行周日总票数余票数订票客户替补客户"<<endl;cout<<setiosflags(ios::left)<<setw(9);//输出格式控制cout<<p->line_num<<setw(10)<<p->plane_num<<setw(9)<<p->end_place<<setw(12)<<p->fly_data<<setw(10)<<p->total<<setw(8)<<p->left<<setw(12)<<&(p->custom)<<setw(10)<<&(p->houbucus)<<endl;break;}}if(flag){if(N==1)cout<<"对不起,没有终点站为"<<name<<"的航班"<<endl;elsecout<<"对不起,没有航班号为"<<name<<"的航班"<<endl;}return OK;}// 打印顾客信息status print_customer(Linkcustomer l){Linkcustomer p=l->next ;for(;p!=NULL;p=p->next ){cout<<setiosflags(ios::left);//输出格式控制cout<<setw(10)<<p->name<<setw(12)<<p->line_num<<p->piaonum<<endl;}return OK;}//航班信息录入status addmoreairline(Linkairline l,Linkcustomer custom,LinkQueue houbucus){char line_num1[8],plane_num1[8],fly_data1[8],end_place1[8];int total1=100,left1=80;cout<<"请输入以下信息:"<<endl<<endl;cout<<"航班号:";cin>>line_num1;cout<<"飞机号:";cin>>plane_num1;cout<<"目的地:";cin>>end_place1;cout<<"飞行周日:";cin>>fly_data1;cout<<"总票数:";cin>>total1;cout<<"余票数:";cin>>left1;insert_airline(l,airnum,line_num1,plane_num1,end_place1,fly_data1,total1,left1,custom,ho ubucus);airnum++;cout<<"添加成功!"<<endl;print_airline(l);return OK;}// 修改airline链表中的数据status modefy_airline(Linkairline l,char *line_num){Linkairline p=l->next;for(;p!=NULL;p=p->next ){if(strcmp(line_num,p->line_num )==0){p->left++;return OK;}}cout<<"没有这个航班,无法完成修改任务!"<<endl;return ERROR;}//订票status book(Linkairline l,char *end_place,Linkcustomer c,char *name,int num,LinkQueue houbu){Linkairline p=l->next;//p指向第一个结点Linkcustomer q=c->next;//q指向第一个结点for(;p!=NULL;p=p->next)//查找{if(strcmp(end_place,p->end_place )==0){if(p->left-num >=0)//剩余票数大于订票数{cout<<"订票成功!"<<endl;insert_customer(c,cusnum,name,p->line_num,num);//向顾客链表插入记录p->left-=num;//订票成功,剩余票数减少cusnum++;//顾客数加一return OK;}else//剩余票数小于订票数{char pd;cout<<"对不起,余票不足!"<<endl;cout<<"是否需要排队候补(Y/N):";cin>>pd;if(pd=='Y'||pd=='y')//需要排队候补{insert_houbucustomer(houbu,name,end_place,num);//向候补队列插入记录cout<<"候补登记成功!"<<endl;print_houbucustomer(houbu);}else{}}return 0;}}cout<<"对不起,没有终点站为"<<end_place<<"的航班!"<<endl;return ERROR;}//退票status delete_cus(Linkcustomer h,Linkairline l,char *name,LinkQueue houbu){Linkcustomer p=h->next,pr=h;//p指向顾客链表首结点char line_num[8];houbuNode hbnode;while(p!=NULL)//循环查找退票顾客{if(strcmp(name,p->name )==0){strcpy(line_num,p->line_num );for(int i=0;i<p->piaonum;i++)//更改该航线的剩余票数modefy_airline(l,line_num);pr->next =p->next ;cout<<"顾客"<<p->name<<"退票成功!"<<endl;cusnum--;//顾客数减一if(houbu.front->next==NULL){}else{del_houbucustomer(houbu,hbnode);//候补顾客出队if(l->next->left>=hbnode.pnum)//剩余票数多于排在第一位的客户订的票数{//为排在第一位的客户办理订票业务book(l,hbnode.end_place,h,,hbnode.pnum,houbu);cout<<"候补顾客"<<<<"订票成功!"<<endl;}else//剩余票数少于排在第一位的客户订的票数{cout<<"票数仍然不足!";}}return OK;}pr=pr->next ;p=pr->next ;}cout<<"无此顾客,无法退票!"<<endl;//未查到顾客信息return ERROR;}//打开进度条,程序信息简介void open(){cout<<"\n\n\n\n 课程设计\n";cout<<"\n ╔-------------------------------╗";cout<<"\n ││";cout<<"\n │名称: 航空订票系统│";cout<<"\n ││";cout<<"\n │作者: 乐升平│";cout<<"\n ││";cout<<"\n │学号: 6 │";cout<<"\n ││";cout<<"\n │班级:12计科(2)班│";cout<<"\n ││";cout<<"\n │工具: VC++6.0 C++语言│";cout<<"\n ││";cout<<"\n ╚-------------------------------╝\n";system("pause");system("cls");cout<<"\n\n\n\n\n\n ****************欢迎使用航空订票系统**************\n\n\n";const int M=25;int k;cout<<"\n 〓程序加载中>>>> ";for (k=1;k<=M;k++){cout<<"■";Sleep(100);}system("cls");cout<<endl<<"【载入完成】\a"<<endl<<endl;cout<<" 前言"<<endl<<endl;cout<<" 欢迎使用『航空订票系统』,本程序实现了以下功能:\n\n";cout<<" ①录入功能:可以录入航班情况\n\n";cout<<" ②查询功能:根据客户提供的终点站名或航班号进行查询。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通达学院程序设计报告(2017 / 2018 学年第一学期)题目:航空客运订票系统专业计算机科学与技术学生姓名班级学号指导教师吴晓诗指导单位计算机学院计算机科学与技术系日期2017.11.21-2017.12.8航空客运订票系统一、课题内容和要求1.航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。
要求在TC或VC环境下设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。
2.要求:(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日期(星期几)、乘员定额、余票量、已经订票的客户名单(包括姓名、订票量)以及等候替补的客户名单(包括姓名、所需票量)。
(2)作为模拟系统,全部数据可以只存放在内存中。
(3)通过此系统可以实现如下功能:①录入功能:可以录入航班情况②查询功能:根据客户提供的终点站名进行查询,可以输出以下信息:航班号、飞机号、星期几飞行和余票量等。
也可以根据航班号,查询飞机某个航线的情况。
③订票功能:根据客户提出的要求(姓名、终点站名、订票数量)查询该航班的余票量情况。
如尚有足够的余票,则为客户办理订票手续;若已满员或余票量少于订票数量,则需要重新询问客户要求,如需要,可登记排队候补。
二、需求分析)运行环境(软、硬件环境)Window10 64位codeblocks使用语言:c++2)输入的形式和输入值的范围由航空公司输入航线情况并以单链表的形式存储在内存里面3)输出的形式描述通过客户的输入输出相应的内容4)功能描述用户通过本系统实现该航空公司的查询、订票(包括候补)、和退票功能 5)测试数据三、概要设计1)流程图示意2)抽象数据类型定义描述(对各类的成员及成员函数进行抽象描述,参见书或ppt 及实验)一条航线包括了目的地、航班号、飞机号、飞行周日、总票数、余票量、订票人员、候补人员等信息,我们可以将航线看成一类,定义为一个类,而订票人员通用的属性是:姓名、订票张数和舱位等级,候补人员通用属性是姓名和订票张数,可以将订票人员和候补人员定义为结构体,航线定义为一个类,类包括了两个结构体。
具体定义如下:class transportNode//航线类节点{friend class transport;private:char end_place [10];//目的地char line_num [8];//航班名int plane_num[8];//航班号int fly_data;//飞行日期int total;//乘员限额int left;//余票struct booknode{public:char name[10];//乘客姓名int pnum;//票数};struct sparenode{public:char name[10];//乘客姓名int pnum;//票数int houbuNode;//记录排队等候的顾客的数量transportNode *next;3)功能模块设计(如主程序模块设计)主程序中录入航线的信息,然后进入主菜单,再实现其他的功能,类transport 中包括了除去主菜单以外的所有的功能函数class transportpublic:transport();//无参构造函数构造头节点status addmoreairline ();//记录航班信息string end_name,air_line ();//实现根据输入的目的地查询的功能status book ();//实现旅客的订票功能status delete_cus ();//实现退票功能private:transportNode *head;};void open();//进入主菜单四:详细设计#include <windows.h> //dos控制命令头文件#include <iostream> //输入输出头文件#include <iomanip> //控制格式头文件#include <conio.h> //getchar()用到#include <string> //字符串函数using namespace std; //标准命名空间#define OK 1 //函数结果状态码#define ERROR 0 //函数结果状态码#define TRUE 1 //函数结果状态码#define FALSE 0 //函数结果状态码typedef int status; //函数结果状态码static int cusnum=1; //顾客数(全局变量)static int airnum=1; //航线数(全局变量)struct customer{ //顾客结构体char name[9]; // 顾客名char line_num[8]; // 航班号int piaonum; // 座位号struct customer *next; // 下一个结点};typedef customer *Linkcustomer; //候补顾客结构体typedef struct houbuNode{ //候补顾客结构体char name[9]; //姓名char end_place[10]; //终点站int pnum; //票数struct houbuNode *next; //指针域}* houbucustomer;struct LinkQueue{houbucustomer front,rear; //队头队尾指针};struct airline{ //航线结构体char line_num[8]; // 航班号char plane_num[8]; // 飞机号char end_place[20]; // 目的的char fly_data[20]; // 飞行周日int total; // 座位总数int left; // 剩余座位Linkcustomer custom; // 订票顾客指针LinkQueue houbucus; // 候补顾客指针struct airline *next; // 下一个结点};typedef airline *Linkairline; //初始化航线链表void init_airline(Linkairline &l){l=new airline[sizeof(airline)]; //产生头结点,并始l指向此头结点if(!l){ //存储分配失败exit(0); //退出}l->next=NULL; //头结点的指针域为空}void init_customer(Linkcustomer &l){ //初始化顾客链表(同初始化航线链表) l=new customer[sizeof(customer)];if(!l){exit(0);}l->next=NULL;}//初始化候补顾客队列链表(同初始化航线链表)void init_houbucustomer(LinkQueue &Q){Q.front=Q.rear=new houbuNode[sizeof(houbuNode)];//if(!Q.front){exit(0);}Q.front->next=NULL;}status airLineEmpty(Linkairline L) //判断airline链表是否为空{if(L->next) //非空return FALSE;elsereturn TRUE;}// airline链表插入操作status insert_airline(Linkairline L,int i,char *line_num,char *plane_num,char *end_place, char *fly_data,int total,int left,Linkcustomer custom,LinkQueue houbucus){int j=0; //计数器Linkairline s,p=L; //p指向头结点while(p&&j<i-1) //寻找第i-1个结点{j++;p=p->next;}if(!p||j>i-1) //i小于1或大于表长return ERROR; //插入失败s=new airline[sizeof(airline)]; //生成新结点strcpy(s->line_num , line_num); //给新结点赋值strcpy(s->plane_num , plane_num);strcpy(s->end_place , end_place);strcpy(s->fly_data , fly_data);s->total =total;s->left =left;s->custom=custom;s->houbucus=houbucus;s->next=p->next; //新结点指向原第i个结点p->next=s; //原第i-1个结点指向新结点return OK; //插入成功}// customer链表插入操作(同airline链表插入操作)status insert_customer(Linkcustomer L,int i,char *name,char *line_num,int piaonum){ int j=0;Linkcustomer s,p=L;while(p&&j<i-1){j++;p=p->next;}if(!p||j>i-1)return ERROR;s=new customer[sizeof(customer)];strcpy(s->name , name);strcpy(s->line_num , line_num);s->piaonum=piaonum;s->next=p->next;p->next=s;return OK;}// houbucustomer入队操作void insert_houbucustomer(LinkQueue &Q,char *name,char *end_place,int pnum){ houbucustomer p;p=new houbuNode[sizeof(houbuNode)];strcpy(p->name , name);strcpy(p->end_place , end_place);p->pnum=pnum;p->next=NULL;Q.rear->next=p;Q.rear=p;}// houbucustomer出队操作status del_houbucustomer(LinkQueue &Q,houbuNode &hbnode){houbucustomer p;p=Q.front->next;strcpy(,p->name);strcpy(hbnode.end_place,p->end_place);hbnode.pnum=p->pnum;Q.front->next=p->next;if(Q.rear==p)Q.rear=Q.front;delete p;return OK;}//houbucustomer输出操作void print_houbucustomer(LinkQueue Q){houbucustomer p=Q.front->next;cout<<"候补顾客为:"<<endl;cout<<"姓名终点站票数"<<endl;while(p){cout<<p->name<<" "<<p->end_place<<" "<<p->pnum;p=p->next;}cout<<endl;}status print_airline(Linkairline l) // 打印航线信息{cout<<endl<<"航班号飞机号目的地飞行周日总票数余票数"<<endl;Linkairline p=l->next ;for(;p!=NULL;p=p->next ){cout<<setiosflags(ios::left)<<setw(9);cout<<p->line_num<<setw(10)<<p->plane_num<<setw(9)<<p->end_place<<setw(12)<<p->fly_data<<setw(10)<<p->total<<setw(8)<<p->left<<setw(12)< <<endl;}return OK;}status print_airline(Linkairline l,string name,int N)// 打印航线信息(print_airline重载){string info;bool flag=true;Linkairline p=l->next;for(;p!=NULL;p=p->next ){if(N==1)info=p->end_place;elseinfo=p->line_num;if(info==name){flag=false;cout<<endl<<"航班号飞机号目的地飞行周日总票数余票数"<<endl;cout<<setiosflags(ios::left)<<setw(9);//输出格式控制cout<<p->line_num<<setw(10)<<p->plane_num<<setw(9)<<p->end_place<<setw(12)<<p->fly_data<<setw(10)<<p->total<<setw(8)<<p->left<<setw(12)<<endl;break;}}if(flag){if(N==1)cout<<"对不起,没有终点站为"<<name<<"的航班"<<endl;elsecout<<"对不起,没有航班号为"<<name<<"的航班"<<endl;}return OK;}status print_customer(Linkcustomer l) // 打印顾客信息{Linkcustomer p=l->next ;for(;p!=NULL;p=p->next ){cout<<setiosflags(ios::left);//输出格式控制cout<<setw(10)<<p->name<<setw(12)<<p->line_num<<p->piaonum<<endl;}return OK;}//航班信息录入status addmoreairline(Linkairline l,Linkcustomer custom,LinkQueue houbucus){char line_num1[8],plane_num1[8],fly_data1[8],end_place1[8];int total1=100,left1=80;cout<<"请输入以下信息:"<<endl<<endl;cout<<"航班号:";cin>>line_num1;cout<<"飞机号:";cin>>plane_num1;cout<<"目的地:";cin>>end_place1;cout<<"飞行周日:";cin>>fly_data1;cout<<"总票数:";cin>>total1;cout<<"余票数:";cin>>left1;insert_airline(l,airnum,line_num1,plane_num1,end_place1,fly_data1,total1,left1,custom,houbuc us);airnum++;cout<<"添加成功!"<<endl;print_airline(l);return OK;}// 修改airline链表中的数据status modefy_airline(Linkairline l,char *line_num){Linkairline p=l->next;for(;p!=NULL;p=p->next ){if(strcmp(line_num,p->line_num )==0){p->left++;return OK;}}cout<<"没有这个航班,无法完成修改任务!"<<endl;return ERROR;}status book(Linkairline l,char *end_place,Linkcustomer c,char *name, //订票int num,LinkQueue houbu){Linkairline p=l->next; //p指向第一个结点Linkcustomer q=c->next; //q指向第一个结点for(;p!=NULL;p=p->next) //查找{if(strcmp(end_place,p->end_place )==0){if(p->left-num >=0) //剩余票数大于订票数{cout<<"订票成功!"<<endl;insert_customer(c,cusnum,name,p->line_num,num);//向顾客链表插入记录p->left-=num; //订票成功,剩余票数减少cusnum++; //顾客数加一return OK;}else //剩余票数小于订票数{char pd;cout<<"对不起,余票不足!"<<endl;cout<<"是否需要排队候补(Y/N):";cin>>pd;if(pd=='Y'||pd=='y')//需要排队候补{insert_houbucustomer(houbu,name,end_place,num);//向候补队列插入记录cout<<"候补登记成功!"<<endl;print_houbucustomer(houbu);}else{}}return 0;}}cout<<"对不起,没有终点站为"<<end_place<<"的航班!"<<endl;return ERROR;}status delete_cus(Linkcustomer h,Linkairline l,char *name,LinkQueue houbu) //退票{Linkcustomer p=h->next,pr=h; //p指向顾客链表首结点char line_num[8];houbuNode hbnode;while(p!=NULL) //循环查找退票顾客{if(strcmp(name,p->name )==0){strcpy(line_num,p->line_num );for(int i=0;i<p->piaonum;i++)//更改该航线的剩余票数modefy_airline(l,line_num);pr->next =p->next ;cout<<"顾客"<<p->name<<"退票成功!"<<endl;cusnum--; //顾客数减一if(houbu.front->next==NULL){}else{del_houbucustomer(houbu,hbnode);//候补顾客出队if(l->next->left>=hbnode.pnum)//剩余票数多于第一位的客户订的票数{//为排在第一位的客户办理订票业务book(l,hbnode.end_place,h,,hbnode.pnum,houbu);cout<<"候补顾客"<<<<"订票成功!"<<endl;}else //剩余票数少于排在第一位的客户订的票数{cout<<"票数仍然不足!";}}return OK;}pr=pr->next ;p=pr->next ;}cout<<"无此顾客,无法退票!"<<endl; //未查到顾客信息return ERROR;}void open() //打开进度条,程序信息简介{cout<<"\n\n\n\n\n\n **************欢迎使用航空订票系统************\n\n\n";const int M=25;int k;cout<<"\n 〓程序加载中>>>> ";for (k=1;k<=M;k++){cout<<"■";Sleep(100);}system("cls");cout<<endl<<"【载入完成】\a"<<endl<<endl;cout<<" 前言"<<endl<<endl;cout<<" 欢迎使用『航空订票系统』,本程序实现了以下功能:\n\n";cout<<" ①录入功能:可以录入航班情况\n\n";cout<<" ②查询功能:根据客户提供的终点站名或航班号进行查询。