航空客运订票系统
飞机订票系统测试报告

飞机订票系统测试报告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. 熟悉航空购票系统的基本原理和功能;2. 掌握航空购票系统的设计和开发方法;3. 提高团队合作能力和实践能力;4. 为今后的工作积累经验。
三、实训内容1. 系统需求分析在实训过程中,我们首先对航空购票系统进行了需求分析。
通过查阅相关资料和与航空公司的技术人员沟通,我们了解到航空购票系统主要包括以下功能:(1)航班信息查询:用户可以查询到航班号、起飞时间、到达时间、机型、票价等信息;(2)机票预订:用户可以选择航班、座位、票价等,进行机票预订;(3)订单管理:用户可以查看、修改、取消订单;(4)支付管理:用户可以选择在线支付或线下支付;(5)个人信息管理:用户可以查看、修改个人信息;(6)客服中心:用户可以咨询航班、订票等问题。
2. 系统设计根据需求分析,我们制定了以下系统设计:(1)系统架构:采用B/S架构,前端使用HTML、CSS、JavaScript等技术,后端使用Java语言和SSM框架(Spring、SpringMVC、MyBatis)进行开发;(2)数据库设计:使用MySQL数据库,存储航班信息、用户信息、订单信息等;(3)功能模块设计:将系统分为航班信息模块、机票预订模块、订单管理模块、支付管理模块、个人信息管理模块和客服中心模块。
3. 系统实现在系统实现过程中,我们遵循以下步骤:(1)前端开发:使用HTML、CSS、JavaScript等技术,完成航班信息查询、机票预订、订单管理、个人信息管理等功能模块的前端页面设计;(2)后端开发:使用Java语言和SSM框架,完成航班信息查询、机票预订、订单管理、支付管理、个人信息管理等功能模块的后端逻辑实现;(3)数据库设计:使用MySQL数据库,创建数据表,存储航班信息、用户信息、订单信息等;(4)系统集成:将前端页面和后端逻辑进行集成,实现整个系统的功能。
中国民航订座系统操作手册

中国民航订座系统操作手册一、引言中国民航发展迅速,为了提升服务效率和乘客体验,订座系统成为了必备工具。
本操作手册旨在指导用户熟悉和操作中国民航订座系统,确保订座流程顺畅、准确。
二、系统登录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、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
洛阳理工学院课程设计报告课程名称数据结构课程设计设计题目航空客运订票系统专课程设计任务书设计题目:航空客运订票系统__________________________________ _________________________________________________________ 设计内容与要求:内容:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
课程设计评语成绩:指导教师:_______________年月日目录一.问题描述 (2)二.基本要求 (2)三.数据结构 (2)四.总体设计 (3)五.详细设计 (4)5.1录入功能 void lurugongneng() (4)5.2查询功能 void chaxungongnen() (4)5.3订票功能 void dingpiaogongnen() (6)5.4退票功能 void tuipiaogongnen() (7)5.5修改功能 void xiugaigongnen() (8)六.测试与调试 (9)6.1 程序的模块 (9)6.2 程序的调试 (9)6.3 测试结果 (9)七.源程序清单 (16)一.问题描述通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件二.基本要求根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
三.数据结构typedef struct Yidingkehu //单链表{char name[15];//已订票的客户姓名char ID[15];//已订票的客户证件号int dingpiaoshu;//已订票数量struct Yidingkehu *next1;}Yidingkehu,*Link;typedef struct Weidingkehu//单链队{char name[15];//预订票的客户姓名char ID[15];//预订票的客户证件号int yudingpiao;//要订票数量struct Weidingkehu *next2;//下一个链队结点指针}Weidingkehu,*Qptr;typedef struct{Qptr front;//单链队头结点Qptr rear;//单链队尾结点}linkQueue;typedef struct Hangxian//创建一个航线的结构体{char hangbanhao[15];//航班号char feijihao[15];//飞机号int qifeishijian;//起飞时间int jiangluoshijian;int level;//仓位int yupiao;//余票int piaojia;//票价int zhekou;//折扣char zhongdianzhan[15];//降落城市struct Hangxian *next;//指向下一个链结点的指针struct Yidingkehu *yiding;//定义一个指向已订票客户的头结点指针struct Weidingkehu *yudingqueue;}Hangxian,*Linklist;四.总体设计五.详细设计5.1录入功能 void lurugongneng()通过调用Linklist InitLinklist()和int InsertLinklist(Linklist &L)函数录入航线信息,通过1或者2来控制是否继续输入,输入的航线信息包括航班号,飞机号,终点站,起飞时间,降落时间,仓位,票价,折扣和余票数。
5 .2查询功能 void chaxungongnen()查询分为按目的地查询和按航班号查询,通过void chaxungongnen()函数调用voidmddchaxun()//通过目的地查询函数和void hbhchaxun()//通过航班号查询函数。
通过n控制功能选择,通过输入的目的地和航班号查询是否有该航班信息,若找到,则输出该航班信息,否则提示用户没找到,退出。
5.3订票功能 void dingpiaogongnen()定义Linklist类型的L来指向链表头Yidingkehu *h=H,*h1定义客户的结点,方便插入与删除,int m=1,piao,n(票数); int ydpiao=0,yd=0; 订票时输入终点站,,如果找到,输入用户姓名,证件号和票数,如果余票不足,提醒用户重新订票,否则订票成功,否则提示用户无此航班。
5.4退票功能 void tuipiaogongnen()int m=1,piao定义相应变量,通过输入航班号查找是否有退票的航班,如果有,输出该航班的信息并输入用户的姓名和订票数,如果符合,使余票数减一,退票成功,如果没有,提示用户输入有误,退出。
5.5修改功能 void xiugaigongnen()定义Linklist p=L;int m,输入要修改的飞机号,如果找到,输出该航班信息并且输入修改后的航班信息,如果没找到,提示用户无此航班,退出。
六.测试与调试6.1 程序的模块录入功能:原始数据的输入。
查询功能:根据客户需要,查询相关航线。
订票功能:满足客户的订票任务。
退票功能:根据客户的不同情况,支持客户的退票请求。
修改功能:根据要求修改航班信息。
退出功能:退出系统。
6.2 程序的调试(1)程序在起初设计的时候,经常出现溢出错误,而且不只一处。
为了修正这些溢出错误,耗费了大量的时间,修正解释之后再看源程序,才发现原来只是因为开始的函数定义的数据类型出现了问题,对函数的定义不清楚,字符的不正确定义造成了后期大量的纠错工作(2)由于忘记了一些c语言的规范使得在调试过程中一些错误没有发现。
例如,调用函数时,数组只需要传递数组名即可;字符‘0’和整型的0是不同的,不可以直接对其画等号。
(3)测试用例具有一定的广泛性。
运行程序时输入了多种不同字符信息,经过多次修改结果达到了预期效果,说明程序具有一定的可靠性和稳定性。
6.3 测试结果图 6-1 录入功能图 6-2 通过目的地查询图 6-3 通过航班号查询图 6-4 订票功能图 6-5 退票功能图 6-6 修改功能七.源程序清单#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#define ok 1typedef struct Yidingkehu //单链表{char name[15];//已订票的客户姓名char ID[15];//已订票的客户证件号int dingpiaoshu;//已订票数量struct Yidingkehu *next1;}Yidingkehu,*Link;typedef struct Weidingkehu//单链队{char name[15];//预订票的客户姓名char ID[15];//预订票的客户证件号int yudingpiao;//要订票数量struct Weidingkehu *next2;//下一个链队结点指针}Weidingkehu,*Qptr;typedef struct{Qptr front;//单链队头结点Qptr rear;//单链队尾结点}linkQueue;typedef struct Hangxian//创建一个航线的结构体{char hangbanhao[15];//航班号char feijihao[15];//飞机号int qifeishijian;//起飞时间int jiangluoshijian;int level;//仓位int yupiao;//余票int piaojia;//票价int zhekou;//折扣char zhongdianzhan[15];//降落城市struct Hangxian *next;//指向下一个链结点的指针struct Yidingkehu *yiding;//定义一个指向已订票客户的头结点指针struct Weidingkehu *yudingqueue;}Hangxian,*Linklist;struct Hangxian *L=NULL;//定义全局量struct Yidingkehu *H;//为已订票客户链队来申请空间linkQueue Q; //linkQueue类型的来申请空间Linklist InitLinklist();//声明int InsertLinklist(Linklist &head1);//声明void hbhchaxun();//通过航班号查询void mddchaxun(); //通过目的地查询void lurugongneng();//初始化录入功能void chaxungongnen();//查询功能void dingpiaogongnen();//订票功能void tuipiaogongnen();//退票功能void xiugaigongnen();//修改功能void main(){H=(struct Yidingkehu*)malloc(sizeof(Yidingkehu));Q.front=Q.rear=(Qptr)malloc(sizeof(Weidingkehu));InitLinklist();int n;do//菜单{printf("\t 欢迎使用航空客运订票系统\n");printf("\t++++++++++++++++++++++++++++++\n");printf("\t== >1. 录入功能 ==\n");printf("\t== >2. 查询功能 ==\n");printf("\t== >3. 订票功能 ==\n");printf("\t== >4. 退票功能 ==\n");printf("\t== >5. 修改功能 ==\n");printf("\t== >6. 退出 ==\n");printf("\t++++++++++++++++++++++++++++++\n");printf("\t请选择:");scanf("%d",&n);printf("\n");switch(n){case 1: lurugongneng();break; //录入功能case 2: chaxungongnen(); break; // 查询功能case 3: dingpiaogongnen(); break; // 订票功能case 4: tuipiaogongnen();break;//退票功能case 5: xiugaigongnen();break; //修改功能default :exit(0);}}while(n==1||n==2||n==3||n==4||n==5);}void lurugongneng(){int j=1,m;do{if(!InsertLinklist((Linklist) L))//向其中加入航班信息{printf("内存已满\n");exit(OVERFLOW);}//向链表中加一结点printf("\t是否要输入下一个航线记录?\n");printf("\t是请输入1\n");printf("\t否请输入2\n\t");scanf("%d",&m);//在这里依靠人来决定是否输入下一条航线记}while(m==1);}Linklist InitLinklist(){L=(Linklist)malloc(sizeof(Hangxian));if(!L) exit(OVERFLOW);L->next=NULL;//建立一个带有头结点的单链表return (L);}int InsertLinklist(Linklist &L)//向航线链表添加新的结点{Linklist p;p=(Linklist)malloc(sizeof(Hangxian));//为一个新的结点分配空间if(!p) exit(OVERFLOW);printf("\t请依次输入下面几项内容:\n\n");printf("航班号:");scanf("%s",p->hangbanhao);printf("飞机号:");scanf("%s",p->feijihao);printf("终点站:");scanf("%s",p->zhongdianzhan);printf("起飞时间:");scanf("%d",&p->qifeishijian);printf("降落时间:");scanf("%d",&p->jiangluoshijian);printf("仓位:");scanf("%d",&p->level);printf("票价:");scanf("%d",&p->piaojia);printf("折扣:");scanf("%d",&p->zhekou);printf("余票数:");scanf("%d",&p->yupiao);p->yiding=(Yidingkehu*)malloc(sizeof(Yidingkehu));//为它申请空间p->yudingqueue=Q.front=Q.rear=(Qptr)malloc(sizeof(Weidingkehu));//为它申请空间p->next=L->next;L->next=p;//链表中的插入一个结点return (ok);}void chaxungongnen(){int n;printf("\t 查找航班信息 \n");printf("\t+++++++++++++++++++++++++++++\n");printf("\t==>1. 通过目的地查询 ==\n");printf("\t==>2. 通过航班号查询 ==\n");printf("\t+++++++++++++++++++++++++++++\n");printf("\t请选择:");scanf("%d",&n);switch(n){case 1:mddchaxun(); break;case 2:hbhchaxun(); break;default :break;}}void mddchaxun()//通过目的地查询{char c[15];Linklist p=L;int m;printf("\t请输入要查询的目的地:");scanf("%s",c);do{p=p->next;if(p){if(strcmpi((*p).zhongdianzhan,c)==0){printf("\t*航班信息*\n");printf("\t飞机号:%s\n",p->feijihao);printf("\t起飞时间:%d\n",p->qifeishijian);printf("\t降落时间:%d\n",p->jiangluoshijian);printf("\t余票:%d\n",p->yupiao);printf("\t票价:%d\n",p->piaojia);printf("\t折扣:%d\n",p->zhekou);break;}}else //如果不匹配的话{printf("\t对不起没有你要找的目的地:\n");m=0;}}while(m!=0);}void hbhchaxun()//通过航班号查询{char c[15];Linklist p=L;int m;printf("\t请输入要查询的航班号:");scanf("%s",c);do{p=p->next;if(p){if(strcmpi((*p).hangbanhao,c)==0){printf("\t*航班信息*\n");printf("\t航班号:%s\n",p->hangbanhao);printf("\t飞机号:%s\n",p->feijihao);printf("\t起飞时间:%d\n",p->qifeishijian);printf("\t降落时间:%d\n",p->jiangluoshijian);printf("\t余票:%d\n",p->yupiao);printf("\t票价:%d\n",p->piaojia);printf("\t折扣:%d\n",p->zhekou);break;}}else //如果不匹配的话printf("\t对不起没有你要找的航班号:\n");m=0;}}while(m!=0);}void dingpiaogongnen(){int i;Linklist p=L;//Linklist类型的L来指向链表头Yidingkehu *h=H,*h1;//Yidingkehu 定义客户的结点,方便插入与删除linkQueue q=Q;//linkQueue类型的来,方便插入与删除struct Weidingkehu *q3;char c[15];int m=1,piao,n;int ydpiao=0,yd=0;printf("请输入终点站名:\n");scanf("%s",c);p=L->next;if(p){do//查找一下,是否有这个航班{if(!p){printf("对不起没有你要找的航班:\n\n");}m=strcmpi(p->zhongdianzhan,c);//通过比较来判定if(m==0){printf("\t*航班信息*\n");printf("\t航班号:%s\n",p->hangbanhao);printf("\t飞机号:%s\n",p->feijihao);printf("\t起飞时间:%d\n",p->qifeishijian);printf("\t降落时间:%d\n",p->jiangluoshijian);printf("\t余票:%d\n",p->yupiao);printf("\t票价:%d\n",p->piaojia);printf("\t折扣:%d\n",p->zhekou);break;}else p=p->next;}while(m!=0);if(m==0) //当有该航班时,进行订票do{printf("\n请输入你要定的票数:\n");scanf("%d",&piao);if(piao<=p->yupiao){h=p->yiding;if(h){h1=h;h=h->next1;h=(struct Yidingkehu*)malloc(sizeof(Yidingkehu));for(i=0;i<piao;i++){printf("请输入你的名字:\n");scanf("%s",h->name);printf("请输入你的证件号:\n");scanf("%s",h->ID);h->dingpiaoshu=piao;h->next1=h1->next1;h1->next1=h;p->yupiao=p->yupiao-piao;printf("订票成功\n编号为%s\n",h->ID);}m=2;}}else //余票量不足时{printf("余票量:%d\n",p->yupiao);printf("对不起,余票%d张不足,不能完成订票\n",p->yupiao);printf("是否要重新订票?\n");printf("需要请输入1 否则请按2 预定请输入3 : \n");scanf("%d",&m);while(m==3){printf("对不起,该航班的票已售完\n");q.front=p->yudingqueue;if(q.front==q.rear)printf("没有人预定票,是否要预定?\n");else if(q.front!=q.rear)printf("已有人预定票,是否要预定?\n");printf("预定请输入1 否则请输入2 : \n");scanf("%d",&n);{q3=(Qptr)malloc(sizeof(Weidingkehu));printf("请输入你的姓名\n");scanf("%s",q3->name);printf("请输入你的证件号:\n");scanf("%s",h->ID);printf("请输入订票数\n");scanf("%d",&q3->yudingpiao);q3->next2=NULL;q.rear->next2=q3;q.rear=q3;printf("你已经预定了!\n");break;}}}}while(m==1);}}}void tuipiaogongnen(){Linklist p=L;Yidingkehu *h=H,*h1,*h2;//linkQueue q=Q;char c[15],name1[15];int m=1,piao;//定义相应变量printf("请输入航班号:\n");scanf("%s",c);p=L->next;if(p){do//使用do while来查找是否有此航班{if(!p) // 如果是到了表尾且没有匹配{printf("\n对不起,没有你要找的航班:\n");}if(strcmpi(p->hangbanhao,c)==0)//比较航班号输出信息{printf("\t*航班信息!*\n");printf("\t飞机号:%s\n",p->feijihao);printf("\t起飞时间:%d\n",p->qifeishijian);printf("\t降落时间:%d\n",p->jiangluoshijian);printf("\t余票:%d\n",p->yupiao);printf("\t票价:%d\n",p->piaojia);printf("\t折扣:%d\n",p->zhekou);m=0;}else p=p->next;}while(m!=0);if(m==0) //如果找到了,就来给他退票{do{h=p->yiding;if(h){printf("请输入你的姓名:\n");scanf("%s",name1);printf("请输入你定的票数:\n");scanf("%d",&piao);h1=h;h=h->next1;if(strcmpi(h->name,name1)==0&&h->dingpiaoshu==piao)//如果名字和订的票数相等,则就给他取消订票{p->yupiao+=h->dingpiaoshu;h2=h;h1->next1=h->next1;free(h2);printf("你取消订票成功\n");break;}}}while(m==1);}}}void xiugaigongnen(){char c[15];Linklist p=L;printf("\t请输入要修改的飞机号:");scanf("%s",&c);do{p=p->next;if(p){if(strcmpi((*p).feijihao,c)==0){printf("\t*航班信息*\n");printf("\t航班号:%s\n",p->hangbanhao);printf("\t飞机号:%s\n",p->feijihao);printf("\t起飞时间:%d\n",p->qifeishijian);printf("\t降落时间:%d\n",p->jiangluoshijian);printf("\t余票:%d\n",p->yupiao);printf("\t票价:%d\n",p->piaojia);printf("\t折扣:%d\n",p->zhekou);printf("\n\n");printf("修改为:");printf("\t请依次输入下面几项内容:\n\n");printf("航班号:");scanf("%s",p->hangbanhao);printf("飞机号:");scanf("%s",p->feijihao);printf("终点站:");scanf("%s",p->zhongdianzhan);printf("起飞时间:");scanf("%d",&p->qifeishijian);printf("降落时间:");scanf("%d",&p->jiangluoshijian);printf("仓位:");scanf("%d",&p->level);printf("票价:");scanf("%d",&p->piaojia);printf("折扣:");scanf("%d",&p->zhekou);printf("余票数:");scanf("%d",&p->yupiao);p->yiding=(Yidingkehu*)malloc(sizeof(Yidingkehu));p->yudingqueue=Q.front=Q.rear=(Qptr)malloc(sizeof(Weidingkehu));p->next=L->next;printf("\t修改成功!\n");break;}}else{printf("\t对不起没有你要找的目的地:\n");m=0;}}while(m!=0);}。