航空订票系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
淮阴工学院
算法设计技能训练报告
学号:
姓名:
班级:NIIT1151
学院:计算机与软件工程学院
专业:计算机科学与技术
题目:
航空订票系统
指导教师:
2016年12月
目录
1 课题任务描述 (1)
1.1查询航线: (1)
1.2承办订票业务: (1)
1.3承办退票业务: (1)
1.4实现提示: (1)
2 系统设计 (1)
2.1主界面模块 (1)
2.2算法设计 (2)
3.详细设计 (3)
3.1.录入航班 (3)
3.2.主界面选择 (3)
3.3查询 (3)
3.4.订票 (4)
3.5.退票 (4)
3.6关键代码 (4)
4 测试 (15)
结论 (17)
致谢 (18)
参考文献 (19)
1 课题任务描述
每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。
1.1查询航线:
根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;
1.2承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少余订票额,则需重新询问客户要求。若需要,可登记排队候补;
1.3承办退票业务:
根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
1.4实现提示:
两个客户名单可分别由线性表和队列实现。为查找方便,已订票客户的线性表应按客户姓名有序,并且,为了插入和删除方便,应以链表作为存储结构。由于预约人数无法预计,队列也应以链表作为存储结构。
2 系统设计
2.1主界面模块
表1
文字命令Case功能命令函数
查询已有航线1输出所有航班信息ShowAllFlight(FlightNo
de *F)
录入新的航班信息2保存新的航班信息addFlight(FlightNode *F)
查询单条航线3查询目的地(单次)ShowOneFlight(FlightN
ode *F)
查询乘客信息4输出所有乘客信息ShowAllCkNode(CkNo
de *C)
查询我的订票信息5查询乘客名字(单次)ShowOneCkNode(CkNo
de *C)
订票6
录入乘客信息;
选择是否录入候补信息
BookTicket(FlightNode
*F,CkNode
*C,WaitNode *W);
退票7删除乘客信息;
查询候补信息
ReturnTicket(FlightNod
e *F,CkNode
*C,WaitNode *W)
查看候补乘客8输出候补乘客信息ShowAllWaitNode(Wait Node *W)
退出9退出系统return
2.2算法设计
本程序定义了三个类,分别为乘客类,候补乘客类,航班类,并定义了若干函数(如:输出所有航班函数,输出所有乘客函数,增加航班函数等),用主函数将他们联系起来,实现了预订航班查询航班的快捷操作。
使用前需要首先由工作人员进行录入航班,然后再使用。使用中通过用户的选择不同,程序执行不同的操作。
对于此程序的时间空间复杂度,主要是对于调用各种输入输出函数的复杂度分析:时间复杂度:O(n);空间复杂度:O(n)。
刚开始编写时,只定义了两个类,乘客类和航班类,在做候补名单时不方便操作,而且不能单图处理候补乘客,因为其意义和普通乘客不一样,所以也不能将各种
信息录入到乘客类中。
解决方法:重新定义一个类,单独用来保存候补乘客信息
由于本程序的时间要求只是用星期表示,所以只有1到7的选择,刚开始没
有考虑到这个问题,所以输入时可以输入比7大的数,这样就不符合要求,使录
入信息无意义。
解决方法:使用判定语句,如果大于7,则叫用户重新输入
当每个单独的功能实现后,应该返回哪一步,刚开始编写程序时,是使全部返回主界面,这使得很多操作过于繁琐,比如当用户查找了所有航班,想单独查看某一航班时间,必须首先退回主界面重新选择。
解决方法:通过把功能的图画出来,搞清哪些程序功能相互关联,在该程序和做一个选择语句,让用于自己决定是否返回。
在飞机票订票功能是如何进入候补选择;在退票功能结束如何调用候补名单。由于刚开始编写时在订票失败后直接要求用户返回或者重新选择航班,没有提供候补的选项。同样在退票完成时只是返回主界面。
解决方法:订票失败后,让用户选择是否成为候补,也可以选择放弃返回,否则进行录入候补名单操作;退票成功,先查找是否有在候补该航班的乘客,如果用输出他的信息,没有则返回
3.详细设计
录入航班
3.1.
3.2.
3.3
查询
3.4.
订票
3.5.
退票
3.6关键代码
1定义乘客类.class CkNode {
public:
int Add;
char Name[50]; int Fly;
CkNode(const int Add=0,char N[50]="",const int F=0);};
2,定义航班类