ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:123.04KB ,
资源ID:6041245      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6041245.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(航空客运订票系统.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

航空客运订票系统.docx

1、航空客运订票系统一、需求分析航空客运订票系统,功能如下:1、查询航线:根据旅客提出的终点站名(例:输入:济南),输出下列信息:航班号、飞机号、星期几飞行、余票数2、承办订票业务:根据客户提出的要求(航班号(输入字符串)、订票数额(输入整型数)查询该航班票额情况,若有余票,为客户办理订票手续,若已满员或余票额少于订票额,则询问客户是否登记排队等候。3、承办退票业务:根据客户提供的情况(日期(输入17表示星期几)、航班(字符串表示),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的用户,若能满足他,则为其办理订票手续,否则依次询问其他候补客户。二、概要设计1、链表抽象数据类型

2、ADT List 数据对象:D= ai | ai EleSet , i = 1 , 2 , , n , n 0 数据关系:R1= | ai-1 , aiD , i = 2 , , n 基本操作:MyList(); 操作结果:初始化一个链表 void InsertNode(LT &);初始条件:链表已经存在操作结果:插入一个结点 bool DeleteNode(LT &); 初始条件:链表已经存在操作结果:删除一个结点ADT List2、队列抽象数据类型ADT Queue数据对象:D= ai | ai EleSet , i = 1 , 2 , , n , n 0 数据关系:R1= | ai-1

3、, aiD , i = 2 , , n 约定其中a1端为对列头,an端为队列尾基本操作: MyQueue(); 操作结果:初始化一个队列 void EnQueue(QT &); 初始条件:队列已经存在操作结果:进对列 void DnQueue(QT &);初始条件:队列已经存在操作结果:出对列 bool Empty();初始条件:队列已经存在操作结果:队列是否为空ADT Queue3、主程序流程图:三、详细设计1、 链表及链队列结点类型templateclass LQNode friend class MyList; friend class MyQueue;public: LQNode();

4、/初始化结点 LQNode(T); /利用参数的值初始化结点 LQNode();private: T data;/存放结点数据 LQNode *next;/指向下一个结点;2、链表类型templateclass MyListpublic: MyList();/初始化链表,为头指针分配存储空间,并使头接点next域指向空。 MyList(); void InsertNode(LT &);/插入一个结点,取得链表头指针,生成一个新结点p,为新结点赋值,利用头插入法,/将结点插入链表p-next=head-next ; head=p ; bool DeleteNode(LT &);/删除一个结点,利

5、用一个临时指针p,通过while循环,p=p-next,找到要删除的结/点,将其前一个结点的next域指向他的下一个结点。private: LQNode *head;/链表头指针;3、链队列类型templateclass MyQueuepublic: MyQueue(); /初始化队列 , front=rear=new LQNode MyQueue(); void EnQueue(QT &); /入队列,生成一个新结点node,为结点赋值,rear-next=node , node-next=NULL; void DnQueue(QT &); /出对列,对头元素出队,若对列不空 front=f

6、ront-next bool Empty(); /判断一个队列是否为空,若front-next=NULL 则队列为空private: LQNode *front;/ 指向队列头的指针 LQNode *rear;/指向队列尾的指针;4、其他类型设计/ class AirLineclass AirLine/将航线抽象为一种抽象数据类型 类 friend void InitAirLine(AirLine *line); friend ostream &operator(ostream &output,const AirLine& line);public: AirLine(void); /初始化类成

7、员 AirLine(void); string GetEndPoint(); /取得终点站站名 int GetSeatNum(int); /取得票数 int GetSeatRemain(int); /取得剩余票数 void SetSeatRemain(int num,int whickWeek); /修改剩余票数 string GetFlightNum(void);/取得航班号 void InsertPassenger(Passenger& temp);/有乘客订票时,保存该乘客的信息,pList.InsertNode() bool IsFly(int whichWeek) const; /查

8、询该天有没有航班 void InsertAwait(Passenger& temp);/有登记候补的乘客时,保存该乘客的信息,pQueue.EnQueue() bool DeletePassenger(Passenger&); /从链表中删除乘客信息,pList.DeleteNode() int IfAwaitBook(int tiNum, int whichWeek); /遍历队列,查看是否有符合条件的候补乘客 / Passenger node ; / while(!pQueue.Empty() /if(有符合的)/ 返回1/ /返回 0private: string endPoint; s

9、tring flightNum; string airNum; bool week8; int seatNum8; int seatRemain8; MyList pList; MyQueue pQueue; ; / class Passengerenum TicketGradeAA,BB,CC;class Passengerpublic: Passenger(void); Passenger(const string &passengerName= ,int tick=0,int g=1,int w=1); /初始化 bool operator=(Passenger & d); /重载的=运

10、算符 int GetTickets(); /取得订票额 int GetWeek(); /取得日期private: string name; int tickets; TicketGrade grade; int flightWeek;4、主程序和其他伪码算法/ main int main() while(用户不推出程序) switch(用户选择要做的操作) case 1: 查询航线信息 case 2: 承办订票业务 case 3: 承办退票业务 bool IsQuit()/询问用户是否退出系统提示用户是否退出系统 Y/y 是 N/n 否switch(用户输入)case Y:case y:ret

11、urn true;case N:case n:return false;void InquireAirLine(AirLine *line)/根据用户输入信息查询相关航线 用户输入终点名 for(不到顺序表结束) if(顺序表中记录的终点名=用户输入) 输出本航线相关信息 返回 cout对不起,没有到达该地的航班linei.GetSeatRemain(whichWeek)/没有足够的机票数 IfAwait(linei,tiNum,whichWeek);/办理登记候补 else TransactBookTicket(linei,tiNum,whichWeek);/有足够的票数,办理订票void

12、ReturnTicket(AirLine *line)/办理退票业务输入名字输入航班号输入订票时间输入订票额 if(linei.DeletePassenger(temp)=true)/调用链表的DeletePassenger(),若删除成功 cout办理退票完毕,谢谢合作endl; IfBookTicket(line,fiNum,tiNum,whichWeek);/查询是否有满足订票条件候补客户 else cout您没有订票或输入信息错误,请核实后办理endl;void IfAwait(AirLine &line,int tiNum,int whichWeek)/办理登记候补 cout空座不够

13、,是否排队候补?Y/y是N/n否endl; 是 办理候补 否 cout谢谢合作,再见。endl;void TransactBookTicket(AirLine &line,int tiNum,int whichWeek) 输入姓名输入舱位等级 line.InsertPassenger(temp); GetSeatNum(whichWeek);/取得该航班总票数 GetSeatRemain(whichWeek);/取得剩余票数 输出座位号 SetSeatRemain(tiNum,whichWeek);/设置剩余票数void IfBookTicket(AirLine *line,string fi

14、Num,int tiNum,int whichWeek) for(int i=0;isize;i+)/遍历每个航线 if(linei.GetFlightNum()=fiNum) int ti=linei.IfAwaitBook(tiNum,whichWeek); if(ti=0) cout没有符合条件的候补客户endl; else 为登记候补的客户办理订票业务 return ;void InitAirLine(AirLine *line) 初始化航线信息5、函数调用关系图四、调试分析调试的过程中,对程序做了几点改进,增加了程序的容错能力,不论用户输入什么内容,程序都能安全检查,若输入的有误,则

15、提示用户重新输入,或重新办理业务。从本实习题的编制过程中容易看出,线性表的应用广泛,线性表可以直接作为一种数据结构使用,也可以作为栈或队列的存储结构,构成链栈或链队列使用。五、用户手册1、本程序运行环境为DOS操作系统,执行文件为planeTicket.exe。2、进入演示程序后,即显示用户界面为:3用户根据提示进行操作。六、测试结果根据提示,用户输入选项:1查询航线,2订票业务3退票业务4输入错误时的显示:七、附录源程序文件名清单AirLine.hAirLine.cppPassenger.hPassenger.cpp DataStructure.hMain.cpp (注:可编辑下载,若有不当之处,请指正,谢谢!)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1