数据结构-航空客运订票系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告
课程名称:数据结构
设计题目:航空客运订票系统院系:
班级:
设计者:
学号:
指导教师:
课程设计报告
一、题目分析
主要功能包括:
1、录入:可以录入航班情况(如:输入航班号,飞机编号,查询起降时间,起飞抵达城市,剩余的票数)。
2、查询:可以查询某个航线的情况(如:输入航班号,飞机编号,查询起降时间,起飞抵达城市,剩余的票数);可以输入降落城市及航班号,查询飞机航班情况。
3、订票:根据客户要求(航班号、订票数量)查询该航班的余票数情况,若有余票,则可以订票;若余票数不足,则需要重新询问客户要求,否则不能完成订票。
4、退票:可退票,根据客户的姓名,订票数量查询是否为真实信息,为客户办理退票。
5、退出系统。
二、总体设计
拿到课程设计题目后,经过仔细的研究,还是决定做航空客运订票系统,它可以使自己很好的巩固在数据结构当中所学到的知识以及各算法,做到学以致用,并在运用的基础上,进一步去创新。
1、主程序流程图及其说明
主程序的流程图如下图所示:
利用switch语句,用户只需根据自己的需要,输入相应的命令即可达到效果。例如,若需要查询航班信息时,则输入2;需要为客户预定机票时,则输入4;若需要退出系统,则输入5即可。
2、子程序流程图及其说明
⑴、录入航班信息的流程图及其说明:
主要功能是将新的航班信息写入新建链表中,然后把新链表与储存航班的链表合并,得到新的航班信息,实现对新航班的增加。
录入航班信息的流程图如下图所示:
⑵、查询航班信息流程图及其说明:
先输入所要查找的航班,可通过降落城市查询或根据航班号查询。然后判断该航班是否存在,若存在,则输出相关的航班信息;若不存在,则提示该航班不存在。
查询航班信息的流程图如下图所示:
⑶、订票、退票流程图及其说明:
订票说明:先输入降落城市,找到该航班并显示该航班信息,若找不到则提示不存在该航班。再通过需要订票的数量来判断余票量是否足够。若足够则录入客户姓名,完成订票;若余票不足,则提示是否要取消并重新订票。
订票的流程图如下图所示:
退票说明:先通过输入客户的姓名及订票数目,确定是否存在该客户信息,若符合条件,则完成退票;若无该客户信息,则提示该航班没有人订票或者是该客户没有订该航班的票。退票的流程图如下图所示:
三、详细设计
1、数据结构设计
typedef struct booked
{ //单链表
char name1[15]; //已订票客户姓名
int number1; //已订票数量
struct booked *next1;
}booked,*Link;
typedef struct book
{ //单链表
char name2[15]; //预定票客户姓名
int number2; //要订票数量
struct book *next2; //下一个链队结点指针
}book,*Qptr;
typedef struct{
Qptr front; //单链队头结点
Qptr rear; //单链队尾结点
}linkQueue;
2、函数说明
(1) 主函数
main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。
(2) 其他各功能函数包括
3、分工函数设计(截图分析及相关说明)
⑴、主函数
void main()
{
H=(struct booked*)malloc(sizeof(booked));
Q.front=Q.rear=(Qptr)malloc(sizeof(book)); //申请空间并初始化队列InitLinklist();
int n;
do{ //打印主界面
printf("\t+++++++++++++++++++++++++++++\n\n");
printf("\t*->1. 录入航班信息*\n\n");
printf("\t*->2. 查询航班信息*\n\n");
printf("\t*->3. 订票功能*\n\n");
printf("\t*->4. 退票功能*\n\n");
printf("\t*->5. 退出*\n\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t请选择:");
scanf("%d",&n);
printf("\n");
switch(n)
{
case 1:enter(); //录入功能
break;
case 2:refer(); //查询功能
break;
case 3:reserve(); //订票功能
break;
case 4:refund(); //退票功能
break;
case 5:
printf("【感谢使用航空客运订票系统】\n");
break; //退出
}
}while(n==1 ||n==2||n==3||n==4);
}
[运行结果]:
⑵、录入航班信息
void enter() //录入航班信息
{
int j=1,m;
do{
if(!InsertLinklist(L)) //向其中加入航班信息
{
printf("内存已满\n");
}//向链表中加一结点
printf("\t 是否要输入下一个航线记录?\n");
printf("\t 是请输入1\n");
printf("\t 否请输入2\n");