数据结构课程设计航空订票系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
总体设计 (2)
概要设计 (2)
详细设计 (3)
调试分析 (11)
测试数据及截图 (11)
时间复杂度分析 (15)
问题思考 (15)
算法的改进设想 (15)
课设总结体会 (15)
附录 (17)
程序说明 (17)
源代码 (17)
主要参考文献 (30)
总体设计
通过此系统可以实现如下功能:
1).录入:可以录入航班情况(数据存储在一个数据文件中)
2).查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
可以输入起飞抵达城市,查询飞机航班情况;
3).订票:(订票情况存在一个数据文件中)
可以订票,如果该航班已经无票,可以提供相关可选择航班;
4).退票:可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
5).修改航班信息:
当航班信息改变可以修改航班数据文件
概要设计
每个模块的算法设计说明如下:
(1)录入模块:
查找单链表的链尾,在链头插入一个“航班信息”的新结点。
(2)浏览模块:
顺着单链表输出航班信息。
(3)修改模块:
输入密码,确认是否有权限对航班信息进行修改,有则进行修改,否则不能修改。
提供两种修改方式:添加航班和对已有的航班信息进行改动(修改和删除),1添加航线,0对已有的航班信息进行改动(修改和删除)。
对已有的航班信息进行改动(修改和删除):顺着单链表查找,若找到则进行相关操作。
(4)查询模块:
提供两种查方式:按航号和起飞抵达城市查询,0代表按航号查询,1代表按起飞抵达
城市查询。
顺着单链表查找,如果与航班号(起飞抵达城市)一致,输出相关信息并询问乘客是否要订票,若订进入订票模块;否则,查询不成功。
(5)订票模块:
查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功;否则查找这个月此乘客起飞城市和降落城市的有空位航班,供乘客选择,若有则订票,若无则订票不成功并把此乘客的信息录入此航班等候订票队列中,退出订票。
(6)退票模块:
输入要退票的乘客姓名以及所退票的编号,查找乘客资料的链表中是否有这位乘客,有则删去此结点,并判断是否有等候订票的乘客(有则通知等候订票乘客订票,无则余票加乘客所退票数);无则退票失败。
(7)文件模块:
顺着单链表把链表的信息写入文件。
详细设计
将航线信息写入文件
将乘客信息写入文件
修改操作
删除操作
查找操作
录入操作
浏览操作
查询操作
说明:
订票操作
文件操作
由于此系统流程图太多,流程图所对应的源代码较长,所占篇幅也较大,并且流程图所对应的源程序在订票系统源程序中都有,这里就不再赘述。需要说明的是插入、查找、修改和删除这些线性表的基本操作的流程图在订票系统源程序中没有单独函数,是因为此系统主要是运用线性表的基本操作解决实际问题,具体问题所对应的基本操作代码有所不同,但思维是相同的,所以这几个操作的源代码已经对应写入了其他具体操作的函数中,这里也不再给出。
根据订票系统功能的需要定义了如下的结构体:
typedef struct wat_ros /*等候订票乘客的信息*/
{ char name[20];/*姓名*/
char phone[15];/*等候订票乘客的联系方式*/
struct wat_ros *next;
}qnode,*qptr;
typedef struct pqueue
{ qptr front;/*等候替补客户名单域的头指针*/
qptr rear;/*等候替补客户名单域的属指针*/
}linkqueue;
typedef struct ord_ros
{ char name[20];/*客户姓名*/
char IDnum[20];/*客户有效证件的编号*/
char airnum[7];/*航班号*/
int dpl;/*订票量*/
char piaohaio[20];//票的编号,由航班号起飞日期此航班订票前的余票量
struct ord_ros *next;
}Lnode ,*linklist;
typedef struct airline
{ char qdname[20];/*起点站名*/
char zhname[20];/*终点站名*/
char air_num[7];/*航班号*/
char plane_num[10];/*飞机型号*/
char year[5];
char month[3];
char day[3];/*飞行日期*/
char qhour[3];
char qminute[3];/*起飞时间*/
char jhour[3];
char jminute[3];/*降落时间*/
float zhekou;/*没有折扣为十折*/
float price;/*票价*/
int tkt_amt;/*乘员定额*/
int tkt_sur;/*余票量*/
Lnode *order;/*本航班乘客名单域,指向乘客名单链表的头指针*/
linkqueue *wait;/*本航班等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/
struct airline *next;/*指向下一个结点*/
}lineinfo,*lineair;
调试分析
测试数据及截图