C语言课程设计报告航班管理系统方案Word格式.docx
《C语言课程设计报告航班管理系统方案Word格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告航班管理系统方案Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
二、设计及实验要点
1功能分析
如图一所示航班管理系统主要有以下
第一:
具有乘客乘坐飞机的起点、终点、日期和可以使用的座位等基本信息。
第二:
售票/订票系统:
包括乘客信息添加、修改、删除、查询。
第三:
可以在顾客退票时,及时让侯票的顾客补到票
第四:
顾客可以及时的查询自己是不是订票成功。
第五:
顾客可以在无票时能预定票数。
(图一:
航班管理系统功能的主要模块)
查询所有的航班信息(包括航班号,票数,以及时间和到达地点等)
查询要到的目的地的所有航线。
客票预订,调用book()函数,
办理退票,调用back-ticket()函数,
查看资料,调用Getlem()函数,
(图二:
航班管理系统的主流程图)
2、总体设计
(一)、功能模块设计
1.航班管理系统的功能主流程
2.管理系统的查询功能
3.顾客进行订票的功能模块
4.退票的功能模块
5.续票的功能模块
6.在订票续票功能完成之后,对顾客订票信息的查询功能模块
7.退出系统的功能模块
(二)、数据结构设计
此程序中运用了C语言的结构体,数据结构中链表和队列的相关知识,为了便于理解陈旭,这里分别来介绍。
1.订票顾客的结构体
typedefstructPassengerNode//订票客户结点
{
。
。
}PassengerNode;
//已订票客户结点
typedefstruct
PassengerNode结构体在系统中用来存储顾客的一些基本信息,如以上定义一样,包括顾客的姓名订票客户身份号码顾客的电话号码订票的数量和舱位等级以及用“PassengerNode*next;
”来指向下一个订票客户结点。
2.待订票客户的结构体
typedefstructWPassengerNode
}WPassengerNode;
//待订票客户结点
WpassengerNode结构体在系统中用来存储待订票客户的一些基本信息,如以上定义,包括待订票客户的姓名待订票客户的身份证号待订票客户电话号码待订票客户机票需求量以及用“WPassengerNode*next;
”来指向下一个待订票客户节点。
3./订票客户链表
}passengerLink;
//已订票客户单链表(按ID有序)
在该链表中,用“PassengerNode*passenger;
”来指向订票客户,用“intlength;
”来统计订票的人数
4.待订票客户的队列
typedefstruct
{
}WpassengerQueue;
//侍订票客户链队列
在该队列中,“WPassengerNode*front;
”用来指向队列中的第一个人,即为头指针,“WPassengerNode*rear;
”指向队尾。
4.航班节点(即每一个航班的结构体)
typedefstructflightnode//航班结点
}flightnode;
//航班结点
在该航班节点中,用来存储每一个航班的信息,其中有终点站名称航班编号飞机编号飞行周日飞机能载最大人数还余下多少张票等基本信息
并用“flightnode*next;
”来指向下一个航班节点,用“WpassengerQueuenpassenger;
”来指向本次航班带票客户队列,用“passengerLinkpassenger;
”来指向本次航班已定票的客户链表。
5.航班顺序表的定义
}SqFlight;
//航班顺序线性表
此结构体中用“flightnode*flight;
”来指向系统中的所有航班的头指针,用“intlength;
”来统计航班的数量。
(三)、函数功能描述
1.ask_passenger()
函数原型intask_passenger(flightnode*p,SqFlightLF)
该函数用来完成顾客续票的操作
2.back_ticket()
函数原型intback_ticket(intnumber,SqFlight&
LF)
该函数用来完成为顾客办理退票业务。
3.book()
函数原型intbook(intnumber,SqFlight&
该函数用来完成顾客的订票业务
4.GetElem()
函数原型intGetElem(SqFlightLF,intnumber)
该函数用来完成顾客查询基本资料的一些操作
5.InitFlightNode()
函数原型intInitFlightNode(SqFlight&
LF)
该函数用来完成对航班顺序表中的每一个航班进行赋值并将赋值后的航班连接到航班顺序表中
6.InitList_Sq()
函数原型intInitList_Sq(SqFlight&
LF)
此函数用来构造一个空的线性表LF飞机航班结点
7.InitList_pa()
函数原型intInitList_pa(passengerLink&
PA)
该函数用来为已订票客户链表建一个空链表
8.InitList_WPQ()
函数原型intInitList_WPQ(WpassengerQueue&
WPQ)
该函数用来为待票客户建一个空的队列
9.lookup()
函数原型intlookup(char*cityname,SqFlightLF)
用来查找航班,形参指针cityname指向查询时输入的航线的首地址,引用航班顺序线性表LF
10.searchID()
函数原型PassengerNode*searchID(flightnode*p,char*ID)
p是指向某个航班结点的指,ID是要查询的ID,该函数是通过ID号来查询航班,,并返回已订票顾客节点
11.searchNUM()
函数原型flightnode*searchNUM(intnumber,SqFlightLF)
该函数通过number来按航班号查询航班,并返回相关的航班节点
12.system1()
函数原型voidsystem1(SqFlightLF)
该函数主要实现/显示主菜单能实现的操作等并像用户提供进行选择的界面。
13.wbook()
函数原型intwbook(SqFlight&
LF,flightnode*p)
该函数是续票函数的补充,主要实现将待票客户插入到待票队列的队尾
14.main()
函数原型voidmain()
该函数先通过system("
color0A"
);
来实现改变背景和前景颜色的效果,继而分别通过InitList_Sq(LF);
InitFlightNode(LF);
来完成对航班顺序表的初始化。
最后通过system1(LF);
来进入显示系统的主界面,以供用户选择。
三、源程序(见附录)
四、程序实现
(一)源码分析
1.程序预处理
2.主函数main()
主函数实现功能主要是为进入系统做好准备,并完成航班的初始化,即对各个航班赋上初值。
voidmain()
system("
//改变背景和前景颜色
modecon:
cols=70lines=35"
//调整显示方框的大小
SqFlightLF;
InitList_Sq(LF);
system1(LF);
printf("
\n"
}
3管理系统的查询功能
该功能主要实在主函数初始化的前提下,调用lookup()函数来完成所有航班的查询。
另外也可以通过目的地,输入目的地的大写字母来调用lookup.()来完成。
intlookup(char*cityname,SqFlightLF)
{//查询系统
//形参指针cityname指向查询时输入的航线的首地址
//引用航班顺序线性表LF
其操作实现的结果按如图1所示。
当输入目的地的结果如图2所示。
查询完以后,按任意键有可进入主界面
图1
图2(输入目的地的准确查询)
4.顾客订票的功能模块
实现结果如图3所示
图3(订票成功)
5.顾客退票的功能模块
在完成订票后,如果要退票,顾客可在在主界面中选择4进行退票,此时通过调用函数back_ticket()来完成,在此函数中,先通过searchNUM(number,LF)找到要办理航班的航班,继而通过修改订票人的链表和剩余票数来删除要退票的人的信息。
具体操作如下所示
intback_ticket(intnumber,SqFlight&
LF)//办理退票业务
实现结果如图4所示
图4(退票成功)
5.顾客续票的功能模块
在有待票客户的前提下,系统通过ask_passenger()来完成待票人的补订,并将其加入到已定票人的序列中,具体操作如下
intask_passenger(flightnode*p,SqFlightLF)
具体实现的结果如以下所示
图5是有待票人的情况。
图5(没有足够的票,进入到待票的队列中)
图6为在有人退票的情况下进行的补票
即在显示退票的情况下,即显示“退票成功”后会出现待票人的一些信息,并询问是不是要购票。
在1.要2.不要的界面中,如果选择1,则系统再次运用函数bookup()函数来完成订票。
选择2则退出系统
图6(待票人再次订票成功的界面)
(二)运行结果
具体的运行结果以上图所示(即图1——6所示)
五、不足之处
在系统中应该减少顾客输入的次数,比如在待票人在次订票时,只需要输入是不是要订票即可,而不要在输入一次客户的必要信息,由于水平有限,程序中可能存在不足之处,敬请老师批评和指导。
六、参考文献
何钦铭,颜辉。
C语言程序设计[M]。
杭州:
浙江科技出版社,2004
管理系统的源代码如下所示