C程序课程设计报告
题目:航班管理系统 班级: 学号:
:
指导教师:
年 月 日
一、问题描述 ........................................................ 3 二、设计及实验要点 ................................................... 3
.专业.整理.
下载可编辑
1功能分析 ........................................................ 3 2、总体设计 ....................................................... 5
(一)、功能模块设计 ........................................... 5 1.航班管理系统的功能主流程 .................................... 5 2.管理系统的查询功能 .......................................... 5 3.顾客进行订票的功能模块 ...................................... 5 4.退票的功能模块 .............................................. 5 5.续票的功能模块 .............................................. 6 6.在订票续票功能完成之后,对顾客订票信息的查询功能模块 ........ 6 7.退出系统的功能模块 .......................................... 6 (二)、数据结构设计 ........................................... 6 (三)、函数功能描述 ........................................... 7 三、源程序(见附录) ................................................. 9 四、程序实现 ........................................................ 9
(一)源码分析 .................................................... 9 1.程序预处理 .................................................. 9 2.主函数main() ............................................. 9 3管理系统的查询功能 .......................................... 9 4.顾客订票的功能模块 ......................................... 11 5.顾客退票的功能模块 ......................................... 11 5.顾客续票的功能模块 ......................................... 12 (二)运行结果 ................................................... 14 五、不足之处 ....................................................... 14 六、参考文献 ....................................................... 14
航班管理系统
.专业.整理.
下载可编辑
一、问题描述
航班售票是民航业务管理的一项最基本业务。表面上看,他只是民航业务
的一个简单部分,但是她涉及的业务量大、客户多,还涉及资金管理与客户服务等多方面,因此这项业务并不像看上去那么简单。过去传统的售票方式已不能满足现代航空业务流量剧增的客户要求,本次设计便是利用目前先进的开发工具Delphi7.0以及SQL server 2000开发一个航班售票管理系统,她能方便快捷的运用在民航业务的营运之中。本系统是对民航飞机售票业务的一种模拟。
此次的开发系统主要是完成航班售票管理的各种自动化服务,通过计算机的运行完成各项事务,设计一个航班售票管理的数据管理系统。通过开发此系统,可稳定简便地通过计算机来执行一系列操作,减少人工劳动强度,达到省时省力的目的,容包括乘客信息添加、修改、删除、查询;航班的售票订票的添加、修改、删除、查询;航空公司的航班时刻表的查询等。在此次课程设计的实验中,便是利用C语言和数据结构的一些知识模拟航班管理系统。
二、设计及实验要点
1功能分析
如图一 所示航班管理系统主要有以下
第一: 具有乘客乘坐飞机的起点、终点、日期和可以使用的座位等基本信息。 第二: 售票/订票系统:包括乘客信息添加、修改、删除、查询。 第三: 可以在顾客退票时,及时让侯票的顾客补到票 第四: 顾客可以及时的查询自己是不是订票成功。 第五: 顾客可以在无票时能预定票数。
.专业.整理.
下载可编辑
航班管理系统 所有航班查询航线 客票预订 办理退票 的信息 (图一:航班管理系统功能的主要模块)
开始
查询所有的航班信息(包括航班号,
票数,以及时间和到达地点等)
查询要到的目的地的所有航线。
客票预订,调用book( )函数,
办理退票,调用back-ticket( ) 函数,
.专业.整理.
查看资料 下载可编辑 查看资料,调用Getlem( )函数,
结束
(图二:航班管理系统的主流程图)
2、总体设计
(一)、功能模块设计 1.航班管理系统的功能主流程
2.管理系统的查询功能
3.顾客进行订票的功能模块
4.退票的功能模块
.专业.整理.
下载可编辑
5.续票的功能模块
6.在订票续票功能完成之后,对顾客订票信息的查询功能模块 7.退出系统的功能模块
(二)、数据结构设计
此程序中运用了C语言的结构体,数据结构中链表和队列的相关知识,为了便于理解旭,这里分别来介绍。 1. 订票顾客的结构体
typedef struct PassengerNode //订票客户结点 { 。。。。。。
}PassengerNode; //已订票客户结点 typedef struct
PassengerNode结构体在系统中用来存储顾客的一些基本信息,如以上定义一样,包括 顾客的 订票客户身份 顾客的 订票的数量 和舱位等级以及用“PassengerNode *next;”来指向下一个订票客户结点。
2. 待订票客户的结构体
typedef struct WPassengerNode { 。。。。。。
}WPassengerNode; //待订票客户结点
WpassengerNode结构体在系统中用来存储待订票客户的一些基本信息,如以上定义,包括待订票客户的 待订票客户的身份证号 待订票客户 待订票客户机票需求量以及用“WPassengerNode *next;”来指向下一个待订票客户节点。
3. /订票客户链表 typedef struct { 。。。。。。
}passengerLink; //已订票客户单链表(按ID有序)
在该链表中,用“ PassengerNode *passenger;”来指向订票客户,用“ int length;”来统计订票的人数
.专业.整理.
下载可编辑
4. 待订票客户的队列 typedef struct { 。。。。。。
}WpassengerQueue; //侍订票客户链队列 在该队列中,“WPassengerNode *front;”用来指向队列中的第一个人,即为头指针,“WPassengerNode *rear;”指向队尾。
4.航班节点(即每一个航班的结构体) typedef struct flightnode //航班结点 { 。。。。。。
}flightnode;//航班结点
在该航班节点中,用来存储每一个航班的信息,其中有终点站名称 航班编号 飞机编号 飞行周日 飞机能载最大人数 还余下多少票等基本信息
并用“flightnode *next;”来指向下一个航班节点,用“ WpassengerQueue npassenger;”来指向本次航班带票客户队列,用“passengerLink passenger;”来指向本次航班已定票的客户链表。
5.航班顺序表的定义 typedef struct { 。。。。。。
}SqFlight;//航班顺序线性表 此结构体中用“flightnode *flight;”来指向系统中的所有航班的头指针,用“int length;”来统计航班的数量。
(三)、函数功能描述
1. ask_passenger()
函数原型int ask_passenger(flightnode *p,SqFlight LF) 该函数用来完成顾客续票的操作 2. back_ticket()
函数原型int back_ticket(int number,SqFlight &LF) 该函数用来完成为顾客办理退票业务。 3. book()
函数原型int book(int number,SqFlight &LF) 该函数用来完成顾客的订票业务 4. GetElem()
函数原型int GetElem(SqFlight LF,int number) 该函数用来完成顾客查询基本资料的一些操作 5. InitFlightNode()
函数原型int InitFlightNode(SqFlight& LF)
该函数用来完成对航班顺序表中的每一个航班进行赋值并将赋值后的航班连接到航
.专业.整理.
下载可编辑
班顺序表中
6. InitList_Sq()
函数原型int InitList_Sq(SqFlight &LF)
此函数用来构造一个空的线性表LF 飞机航班结点 7. InitList_pa()
函数原型int InitList_pa(passengerLink &PA) 该函数 用来为已订票客户链表建一个空链表 8. InitList_WPQ()
函数原型int InitList_WPQ(WpassengerQueue &WPQ) 该函数 用来为待票客户建一个空的队列 9. lookup()
函数原型int lookup(char *cityname,SqFlight LF)
用来查找航班,形参指针cityname指向查询时输入的航线的首地址,引用航班顺序线性表LF
10. searchID()
函数原型PassengerNode *searchID(flightnode *p,char *ID)
p是指向某个航班结点的指,ID是要查询的ID,该函数是通过ID号来查询航班,,并返回已订票顾客节点 11. searchNUM()
函数原型flightnode *searchNUM(int number,SqFlight LF) 该函数通过number来按航班号查询航班,并返回相关的航班节点 12. system1()
函数原型void system1(SqFlight LF)
该函数主要实现/显示主菜单 能实现的操作等并像用户提供进行选择的界面。 13. wbook()
函数原型int wbook(SqFlight & LF,flightnode *p)
该函数是续票函数的补充,主要实现将待票客户插入到待票队列的队尾 14. main()
函数原型void main()
该函数先通过system(\"color 0A\"); 来实现改变背景和前景颜色的效果,继而分别通过InitList_Sq(LF);
InitFlightNode(LF);来完成对航班顺序表的初始化。最后通过system1(LF); 来进入显示系统的主界面,以供用户选择。
.专业.整理.
下载可编辑
三、源程序(见附录) 四、程序实现 (一)源码分析
1.程序预处理 2.主函数main()
主函数实现功能主要是为进入系统做好准备,并完成航班的初始化,即对各个航班赋上初值。 void main() {
system(\"color 0A\");//改变背景和前景颜色
system(\"mode con: cols=70 lines=35\");//调整显示方框的大小 SqFlight LF; InitList_Sq(LF); InitFlightNode(LF); system1(LF); printf(\"\\n\"); }
3管理系统的查询功能
该功能主要实在主函数初始化的前提下,调用lookup( )函数来完成所有航班的查询。另外也可以通过目的地,输入目的地的大写字母来调用lookup.( )来完成。 int lookup(char *cityname,SqFlight LF) { //查询系统
//形参指针cityname指向查询时输入的航线的首地址 //引用航班顺序线性表LF 。。。。。。 }
其操作实现的结果按如图 1 所示。 当输入目的地的结果如图 2 所示。 查询完以后,按任意键有可进入主界面
.专业.整理.
下载可编辑
图 1
图 2 (输入目的地的准确查询)
.专业.整理.
下载可编辑
4.顾客订票的功能模块
。。。。。
实现结果如图 3 所示
图 3 (订票成功)
5.顾客退票的功能模块
在完成订票后,如果要退票,顾客可在在主界面中选择 4 进行退票,此时通过调用函数back_ticket()来完成,在此函数中,先通过searchNUM(number,LF) 找到要办理航班的航班,继而通过修改订票人的链表和剩余票数来删除要退票的人的信息。 具体操作如下所示
int back_ticket(int number,SqFlight &LF)//办理退票业务 { 。。。。。。 }
实现结果如图 4 所示
.专业.整理.
下载可编辑
图 4 (退票成功)
5.顾客续票的功能模块
在有待票客户的前提下,系统通过ask_passenger()来完成待票人的补订,并将其加入到已定票人的序列中,具体操作如下
int ask_passenger(flightnode *p,SqFlight LF) { 。。。。。。 }
具体实现的结果如以下所示 图 5是有待票人的情况。
.专业.整理.
下载可编辑
图 5 (没有足够的票,进入到待票的队列中) 图 6 为在有人退票的情况下进行的补票
即在显示退票的情况下,即显示“退票成功”后会出现待票人的一些信息,并询问是不是要购票。在1.要 2.不要 的界面中,如果选择 1,则系统再次运用函数bookup( ) 函数来完成订票。选择 2 则退出系统
.专业.整理.
下载可编辑
图 6 (待票人再次订票成功的界面)
(二)运行结果
具体的运行结果以上图 所示(即图 1——6 所示)
五、不足之处
在系统中应该减少顾客输入的次数,比如在待票人在次订票时,只需要输入是不是要订票即可,而不要在输入一次客户的必要信息,由于水平有限,程序中可能存在不足之处,敬请老师批评和指导。
六、参考文献
何钦铭,颜辉。C语言程序设计[M]。:科技,2004
.专业.整理.
下载可编辑
管理系统的源代码如下所示 。。。。。。
.专业.整理.
因篇幅问题不能全部显示,请点此查看更多更全内容