航空客运订票系统

合集下载

飞机订票系统测试报告

飞机订票系统测试报告

飞机订票系统测试报告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("定票成功。

航空购票系统实训报告

航空购票系统实训报告

一、实训背景随着我国航空事业的快速发展,航空客运订票系统在航空公司的运营中发挥着越来越重要的作用。

为了更好地了解和掌握航空购票系统的设计、开发和运行,我们小组进行了为期一个月的航空购票系统实训。

二、实训目的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)系统能实现的操作和功能如下:①查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;②承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。

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

[测试数据]由读者指定。

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

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

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

整个系统需汇总各条航线的情况登录在一张线性表上,由于航线基本不变,可采用顺序存储结构,并按航班有序或按终点站名有序。

每条航线是这张表上的一个记录,包含上述八个域、其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。

[选做内容]当客户订票要求不能满足时,系统可向客户提供到达同一目的地的其它航线情况。

读者还可充分发挥自己的想象力,增加你的系统的功能和其它服务项目。

航班订票系统可行性分析

航班订票系统可行性分析

航班订票系统可行性分析引言随着航空业的快速发展,航空公司面临着越来越多的订票需求。

传统的人工订票方式不仅效率低下,而且存在很多问题,例如订票过程繁琐、容易出现错误、实时查询困难等。

为了提高订票效率和顾客满意度,航空公司亟需开发一套高效、智能的航班订票系统。

本文将对航班订票系统的可行性进行分析,包括技术可行性、经济可行性和操作可行性。

技术可行性首先,航班订票系统需要具备强大的技术支持。

现代信息技术的发展使得构建一个高效的航班订票系统成为可能。

以下是技术可行性的分析:1. 必要的硬件设备航班订票系统需要运行在稳定的硬件环境中。

航空公司需要投入一定的资金购买服务器、计算机和网络设备等硬件设备,以保证系统的稳定性和安全性。

2. 强大的软件支持航班订票系统需要使用先进的软件工具和技术进行开发。

例如,可以采用面向对象的编程语言如Java或Python来编写系统的后端逻辑,采用先进的前端开发框架如React或Vue.js来设计用户界面。

此外,系统还需要使用数据库管理系统如MySQL或Oracle来存储和管理数据。

3. 数据安全和网络安全航班订票系统需要保证数据的安全性和网络的稳定性。

系统需要采取必要的措施保护用户的个人信息,例如使用SSL协议加密数据传输通道,限制对敏感数据的访问权限等。

同时,系统还需要具备防止黑客攻击和恶意行为的能力。

经济可行性进行经济可行性分析可以帮助航空公司评估开发航班订票系统所需的投资和预期收益。

以下是经济可行性的分析:1. 投资成本开发航班订票系统需要投入人力、物力和财力等资源。

航空公司需要支付软件开发人员的工资,购买硬件设备、服务器租用费用和网络运营费用等。

这些投资成本需要在系统投入使用之前进行预估和筹措。

2. 维护成本航班订票系统的开发只是一个开始,系统还需要进行后续的维护和更新。

维护成本包括人力成本、服务器运维费用和软件升级等。

航空公司需要评估每年的维护成本,以确保航班订票系统的长期可行性。

航空订票系统代码

航空订票系统代码

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<<"谢谢合作,再见。

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

航空客运订票系统 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】课程设计报告课程名称数据结构课题名称航空客运订票系统专业通信工程班级学号姓名指导教师2013 年 6 月 29 日湖南工程学院课程设计任务书课程名称数据结构课题航空客运订票系统专业班级学生姓名学号指导老师张鏖烽田娟秀李杰君审批任务书下达日期 2013 年 6 月 23 日任务完成日期 2013 年 6 月 29 日目录1.需求分析 (1)2.概要设计 (1)定义“航线”类型 (2)主函数 (2)调用关系 (3)3.详细设计 (3)航线与客户的存储结构 (3)各个系统模块 (3)算法设计 (4)主函数功能 (6)整个系统的流程图 (7)存储结构设计 (7)4.调试分析 (7)5.用户使用说明 (8)6.测试结果 (10)7.心得体会 (12)8.附录 (13)课题名称航空客运订票系统1.需求分析航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。

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

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

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

初始化航班信息如下:通过输入0~5这六个数字选择相应的操作,如:查询航班,订票,退票等操作;2.概要设计两个客户名单可分别由线性表和队列实现。

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

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

整个系统需汇总各条航线的情况登录在一张线性表上,由于航线基本不变,可采用顺序存储结构,并按航班有序或按终点站名有序。

每条航线是这张表上的一个记录,包含上述8个域、其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。

注:由于“航线”可只用一条单链表记录,故采用全局变量,减少参数的传递。

定义“航线”类型ADT Lairline{数据对象:D={ai|ai∈航线链表集,i=1,2,3……,n,n>=0}数据关系:R1={<ai-1,ai>| ai-1,ai∈D,i=1,2,3……,n }基本操作:Lairline search_line() 照航班查找Lairline search_line(){char a[10];airline *p;p=L->next;P("Please input the number of line:"); S("%s",a);for(;p;p=p->next)if(!strcmp(a,p->line_num )) break;return p;}注:通过建立节点p实现链表的遍历,利用for循环挨个查找,直到找到为止,再返回找到的这个节点,实现传递。

2.订票系统void book(){ int i; int flag=0;airline *p;customer *cst, *c;P("Please choose the way of viewing:\n"); 始化航线void InitLine() 班查询void search(){int i; int flag=0;airline *p;P("Please input the way of viewing the flight:\n");P("The number of the flight------------>1\n");照Array飞机型号查找{char a[10];airline *p;p=L->next;P("Please input the number of plane:");S("%s",a);for(;p;p=p->next)if(!strcmp(a,p->plane_num)) break;return p;}Lairline search_date()照日期查询航班{int a;airline *p;p=L->next;P("Please input the date of plane:");S("%d",&a); 航班终点查找航班{char a[20];airline *p; p=L->next;P("Please input the final address of the plane:");S("%s",a);for(;p;p=p->next)if(!strcmp(a,p->ter_address)) break;return p;}/******************主界面******************/void boundary(){P(" ***********欢迎您进入航空订票客服系统*********** \n ");P("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");P(" O(∩_∩)O 请选择您要进行的业务:\n");P("\t\t显示所有航线 ==>请输入1\n");P("\t\t查询航线信息 ==>请输入2\n");P("\t\t进入订票系统 ==>请输入3\n");P("\t\t进入退票系统 ==>请输入4\n");P("\t\t退出客服系统 ==>请输入0\n");P("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");P("\t\t清除屏幕信息 ==>请输入5\n");P("请按照以上的信息提示进行操作: \t");}/*********显示乘客信息*****************/void print_customer(airline *p){customer *c;if(p->booked){c=p->booked;P("已经购票的乘客的信息\n\t票数\t姓名\t\n");for(;c;c=c->next)P("%5d\t\t %s\n",c->num,c->name);P("\n\n");}else P("╮(╯_╰)╭暂时没有客户订票!\n\n");if(p->wait){c=p->wait;P("排队购票的乘客的信息\n\t票数\t姓名\t\n\n");for(;c;c=c->next)P("%5d\t\t %s\n",c->num,c->name);P("\n\n");}elseP("暂时没有客户排队订票\n\n");}/*********插入新航班(创建链表)*****************/void insert_line(){ airline *p,*q;int flag=1;for(;flag;){q=(Lairline)malloc(sizeof(airline));P("Please input the number of the plane: ");S("%s",q->line_num);for(p=L;p->next;p=p->next)if(strcmp(p->next->line_num,q->line_num)>=0) break;if(p->next&&strcmp(p->next->line_num,q->line_num)==0){P("航班已存在,请重新输入\n");continue; ,q->next->name,q->next->num);P("Do you want to book the tickets YES(1) NO(0)");S("%d",&flag);if(flag) //如果选择订票{ q0=q->next; q->next=q->next->next; //插入q0节点q0->next=p->booked; p->booked=q0;p->remain=p->remain-q0->num; //q0定完票后,余票进行修改P("SUCCESS O(∩_∩)O\n\n\n");}else q=q->next;//没有选择订票 }else q=q->next;//余票不足时} p->wait=h->next;}/***********************退票系统*****************************/void Refund(){int flag;char a[20];airline *p;customer *c,*c1;p=search_line(); //查找到对应的航班c=p->booked; //已经订票的客户为cif(!p){P("The airline is not exist\n\n");boundary(); //返回主界面return;}P("Please input your name:");S("%s",a);if(!p->booked->name) //如果未找到这个人的信息{P("Sorry!Your information isn't found!╮(╯_╰)╭\n");boundary(); //返回主界面return;}if(!strcmp(a,p->booked->name)) //{P("The information of returning tickets:\n"); //退票信息 P("Name:%s\t Final Address:%s\t Tickets:%d\t\n",p->booked->name,p->ter_address,p->booked->num);P("Do you want to return the tickets YES(1) NO(0)\n"); //是否退票S("%d",&flag);if(flag) //如果退票{p->booked=p->booked->next; //删除节点操作p->remain=p->remain+c->num; //余票数目增加free(c);P("SUCCESS! O(∩_∩)O \n\n\n\n\n"); //退票成功waited(p); //再次询问是否排队订票boundary(); //返回主菜单}}else{for(;c->next;c=c->next)if(!strcmp(a,c->next->name)) //查找这个订票人的信息break;if(!c->next) //没有找到这个人的信息{P("Sorry!Can't find your information!\n\n");boundary(); return;}else //找到了此人的订票信息{P("The information of returning tickets:\n");P("Name:%s\t Final Address:%s\t Tickets:%d\t\n",p->booked->name,p->ter_address,p->booked->num);P("Do you want to return the tickets YES(1)NO(0)\n"); //是否退票S("%d",&flag);if(flag) //确定退票{ c1=c->next;c->next=c->next->next; //删除节点p->remain=p->remain+c1->num; //余票数目增加free(c1);P("The operation is successful O(∩_∩)O\n\n");waited(p);boundary();}}}}/***************航班查询系统*****************************/void search(){int i; int flag=0;airline *p;P("Please input the way of viewing the flight:\n"); //请输入查询航班的方式P("The number of the flight------------>1\n"); //航班号P("The number of the plane------------->2\n"); //飞机号码P("The date of the flight-------------->3\n"); //航班日期P("The final address of the flight----->4\n"); //航班终点S("%d",&i); for(;!flag;)switch(i) //按照选择项进行操作{ case 1: p=search_line();flag=1;break;case 2: p=search_plane();flag=1;break;case 3: p=search_date();flag=1;break;case 4: p=search_address();flag-=1;break;default:P("Wrong,input again!\n");break;}if(p){P("终点站航班号飞机号飞行周日余票量\n");P("%-9s%9s%13s%10d%15d\n",p->ter_address,p->line_num,p->plane_num,p->date,p->remain);P("Booking the tickets(Sure,please input 1;Else input any number! )");S("%d",&i);if(i==1) book();Else P("\n\n\n\n");boundary();}Else P("The flight is not exist╮(╯_╰)╭\n\n\n"); } /********************显示所有航班信息***************************/void printline(){ int flag; airline *p; p=L->next;P("终点站航班号飞机号飞行周日余票量\n");for(;p;p=p->next){P("%-15s%7s%15s%8d%12d\n",p->ter_address,p->line_num,p->plane_num,p->date,p->remain);}P("\n\n\n\n\n");boundary(); }/*********************初始化航线信息****************************/void InitLine(){ airline *p,*q;L=(airline *)malloc(sizeof(airline)); L->booked=NULL;//初始化航线信息L->wait=NULL;L->next=NULL;strcpy(L->ter_address,"00000000");strcpy(L->line_num,"000");strcpy(L->plane_num,"0000000");L->date=L->remain=L->total=0;q=L;p=(airline *)malloc(sizeof(airline)); //航线一p->booked=NULL;p->wait=NULL;strcpy(p->ter_address,"jiangsu");strcpy(p->line_num,"003");strcpy(p->plane_num,"3333333");p->date=1;p->remain=120;p->total=120;p->next=q->next;q->next=p;p=(airline *)malloc(sizeof(airline)); //航线二p->booked=NULL;p->wait=NULL;strcpy(p->ter_address,"shanghai");strcpy(p->line_num,"002");strcpy(p->plane_num,"2222222");p->date=2;p->remain=120;p->total=120;p->next=q->next;q->next=p;p=(airline *)malloc(sizeof(airline)); //航线三p->booked=NULL;p->wait=NULL;strcpy(p->ter_address,"hunan");strcpy(p->line_num,"001");strcpy(p->plane_num,"1111111");p->date=3;p->remain=120;p->total=120;p->next=q->next;q->next=p;} void main(){ int flag=1; boundary(); InitLine();do{ switch(getchar()){case '1':printline();break;case '2':search();break;case '3':book();break;case '4':Refund();break;case '5':system("cls");boundary();break;case '0':flag=0;break;}}while(flag);}课程设计评分表课程名称:数据结构教师签名:日期:。

相关文档
最新文档