航空售票系统.docx
- 文档编号:7958678
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:16
- 大小:140.83KB
航空售票系统.docx
《航空售票系统.docx》由会员分享,可在线阅读,更多相关《航空售票系统.docx(16页珍藏版)》请在冰豆网上搜索。
航空售票系统
数据结构程序设计(C语言)
课程设计(报告)
数据结构程序设计-航空票务管理系统
王重阳
计算机科学与技术0902班
计算机科学与技术学部
黄胜
题目
组长
班级
学部
指导教师
2010年12月
摘要
随着城市生活节奏的加快,飞机已经成为人们使用越来越频繁的交通工具,随之而来的问题是,如何能让旅客最快、最便捷的订到机票。
这就需要一个合适的订票系统来处理航班、机票、旅客等信息,方便售票人员查询,插入,删除各种信息。
本课程设计结合实际的订票、售票制度,经过实际的需求分析,采用功能强大的VC++作为开发工具开发出来的飞机订票管理系统。
本文首先阐述了飞机订票管理系统的需求分析,描绘了本飞机订票管理系统的基本模型图。
该设计要求对飞机航班信息进行排序和查找。
可按航班的班号、起点站、到达站、起飞时间以及到达时间等信息时行查询。
对于本设计,主要是通过线性表的逻辑结构、存储结构,线性表及队列上基本运算实现的。
可以让我们学会如何把学到的知识用于解决实际问题。
详细给出了从飞机订票管理系统分析到总体设计详细设计与实现及测试的各个环节,最后对本系统做出了客观评价,指明了系统的现实意义、缺点以及系统的升级方向。
关键词:
C语言;航班信息;票务管理
任务分配表
姓名
学号
主要工作
组长
王重阳
1、负责程序的主要框架构建选择程序的主存储结构;
2、程序具备哪些功能;
3、主函数的实现;
4、程序最后的测试与调试;
5、实现查询函数;
6、实现主界面的提示信息;
7、实现删除函数;
8、主界面的排版;
9、主结构体、索引结构体的定义;
11、实现输出查询信息函数。
第1章绪论-1-
1.1课题简介-1-
1.2设计目的-1-
1.3设计内容-1-
第2章系统功能分析-2-
2.1系统功能分析-2-
2.2可行性分析-2-
2.2.1技术可行性分析-2-
2.2.2经济可行性分析-2-
2.3系统需求分析-3-
2.3.1性能需求-3-
第3章总体概况设计-4-
3.1系统目标-4-
3.2系统功能设计-4-
3.3系统模块图-4-
3.4系统功能流程图-5-
第4章程序细节设计-6-
4.1关键模块设计-6-
4.2存储结构-6-
4.2.1结构的简略介绍-6-
4.2.2代码实现-6-
4.3系统主界面设计-7-
4.4功能函数详细实现-9-
4.4.1录入功能实现-9-
4.4.2查询功能实现-9-
4.4.3订票功能实现-9-
4.4.4退票功能实现-9-
第5章系统测试-10-
5.1系统测试目标-10-
5.2主函数调用各功能函数测试-10-
5.2.1录入功能测试-10-
5.2.2查询功能测试-10-
5.2.3订票功能测试-12-
5.2.4退票功能测试-12-
第6章总结-13-
参考文献-14-
第1章绪论
1.1课题简介
飞机在现今的社会中已是越来越重要了,人们在旅游、工作、学习等生活中对飞机几乎是不可缺少了。
而由乘坐飞机所引起的问题也深入到了计算机领域,飞机订票系统就是解决这种问题的一种途径。
如人们常常在订票前要对问很多信息(飞机的起落时间,机票的价格,乘坐的人数以及是否有票等等)。
1.2设计目的
1、数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发
2、通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。
3、学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。
4、航空空订票系统:
(1)熟练掌握链表存储结构及其建立过程和常用操作;
(2)熟练掌握队列的建立过程和常用操作;
(3)学会自己调试程序的方法并掌握一定的技巧
1.3设计内容
航空客运订票的业务活动包括:
查询航线、客票预订和办理退票等。
设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。
第2章系统功能分析
2.1系统功能分析
航空售票系统主要是对航空的票务管理,具体包括以下几点:
1、对航班号、飞机号、终点站、飞行日期等信息的录入,并且可以多次录入;2、可以通过目的地或者航班号,查询票务情况;3、通过输入航班号,列出该航班的所有信息,比如剩余票额,然后进行录入姓名订票;4、通过输入航班号,查询该航班信息,录入客户姓名及退票数额,完成退票。
2.2可行性分析
2.2.1技术可行性分析
本系统是运用了C语言编程语言写的,C语言具有有效性、灵活性、便于移植等特点,可方便地构造出模拟现实问题的实体和操作;编写出的程序具有结构清晰、易于扩充等优良特性,适合于各种应用软件、系统软件的程序设计。
用C语言编写的程序可读性好,生成的代码质量高,运行效率优良。
2.2.2经济可行性分析
1、本系统的开发成本包括开发时间,软件,硬件。
2、开发时间为一个月,由本组人员利用课余的时间完成。
3、软件成本为现有软件,已经网上找到的免费开发工具,完全可以胜任开发要求。
4、硬件成本是已有的一台笔记本电脑,相关现有的外围设备。
开发本系统的经济条件具备,可以开发。
2.3系统需求分析
1、每条航线所涉及的信息有:
终点站名、航班号、飞机号、飞行日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量);
2、全部数据可以只放在内存中;
3、系统能实现的操作和功能如下:
a)录入航班航线信息:
手动录入航班航线,以及该航班票务、日期等信息;
b)查询航线:
根据旅客提出的终点站名输出下列信息:
航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;
c)承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续;若没有余票,则询问用户是否预定其他票;
d)退票业务:
根据客户提供的情况(航班),为客户办理退票手续。
2.3.1性能需求
1、CPU:
奔腾166以上,内存:
32M以上,显示器色彩解析度:
256色以上;
2、硬盘可用空间:
100M以上;
3、操作系统:
WIN2000/WINXP/WIN2003/WIN7。
第3章总体概况设计
3.1系统目标
随着全球交通的便利,航空票务管理系统成了航空管理中一个不可忽视的方面。
信息化技术的发展帮助公司解决了这个难题,从票务的信息的查询到管理实现了自动化的模式,从而提高了工作效率和减少工作中的出错率,对航空公司票务管理更加方便。
3.2系统功能设计
系统是为航空公司票务管理设计的。
该系统具有的功能是:
根据实际情况对航线等信息进行录入、查询、删除、修改、追加、统计、显示等。
对各功能模块的界面采用菜单显示方式。
本系统具有通用性,即可广泛适用于多个航空公司,多功能的使用,并且系统采用模块化设计,主体为一个主函数,分别可以调用其他模块,利用不同子模块具有的不同功能,综合完成系统功能,不但主体与子模块间有相互联系,各个子模块间也有相互作用,从而实现了预期的功能。
3.3系统模块图
系统模块图如图1.1所示
图1.1系统功能图
3.4系统功能流程图
系统功能流程如图1.2所示。
图1.2系统功能流程图
第4章程序细节设计
4.1关键模块设计
此次设计的航空票务管理系统主要包括两大模块:
主函数模块、相应功能实现模块。
主函数模块主要实现调用各功能子函数,以及系统提示界面的显示;相关功能实现模块主要实现用户要求进行的相关的功能,如:
查询、删除、修改等。
4.2存储结构
4.2.1结构的简略介绍
1、预定客户以及未预定客户结构体采用单链表形式。
2、剩余空间结构体,主要用于在程序运行中进行了删除操作时,记录被删除数据的位置;将该位置存储到剩余空间队列中。
当下一次进行插入数据操作时,可直接从队列中弹出第一个元素,而弹出的这个元素即为要插入的位置。
而当该队列的队首指针与队尾指针相等时,表示主结构体空间已满,需追加主结构体的存储空间;或者表示当前未删除任何数据,新增数据应保存在主结构体中最后的位置。
4.2.2代码实现
//-------------存储结构-------------
typedefstructCustomers_Booking{//单链表
charname[15];//已订票的客户姓名
intNumber_Of_Booking;//已订票数量
structCustomers_Booking*next1;//
}Customers_Booking,*Link;
typedefstructNo_Booking{//单链队
charname[15];//预订票的客户姓名
intyudingpiao;//要订票数量
structNo_Booking*next2;//下一个链队结点指针
}No_Booking,*Qptr;
typedefstruct{
Qptrfront;//单链队头结点
Qptrrear;//单链队尾结点
}linkQueue;
typedefstructAir_Line{//创建一个含有六个信息的结构体
charFlight_Number[15];//航班号-
charPlane_Number[15];//飞机号
intDeparture_Time;//起飞时间
intNumber_Of_Seats;//座位数
intRemaining_Tickets;//余票
charTerminal[15];//降落城市
structAir_Line*next;//指向下一个链结点的指针
structCustomers_Booking*yiding;//定义一个指向已订票客户的头结点指针
structNo_Booking*yudingqueue;
}Air_Line,*Linklist;
4.3系统主界面设计
航空票务管理系统主界面主要实现显示提示信息,方便用户选择功能序号。
当用户选择相关功能序号后便执行对应子功能函数。
1、程序运行初始界面如图4.1所示,初始界面代码:
voidmain()
{
H=(structCustomers_Booking*)malloc(sizeof(Customers_Booking));
Q.front=Q.rear=(Qptr)malloc(sizeof(No_Booking));
InitLinklist();
intn;
do{
printf("\t欢迎使用航空客运订票系统\n");
printf("WelcomeToAirlineReservationSystems\n");
printf("\n");
printf("\t++++++++++++++++++++++++++++++++++++\n");
printf("\t**1.录入功能(Input)**\n");
printf("\n");
printf("\t**2.查询功能(Inquire)**\n");
printf("\n");
printf("\t**3.订票功能(Booking)**\n");
printf("\n");
printf("\t**4.退票功能(Refund)**\n");
printf("\n");
printf("\t**5.退出(Exit)**\n");
printf("\t++++++++++++++++++++++++++++++++++++\n");
printf("\t请选择(Pleaseselect):
");
scanf("%d",&n);printf("\n");
}while(n==1||n==2||n==3||n==4);
}
图4.1界面实现
2、功能调用如图4.2所示,功能调用代码设计:
switch(n)
{
case1:
Input_Function();//录入功能
break;
case2:
Inquire_Function();//查询功能
break;
case3:
Booking_Function();//订票功能
break;
case4:
Refund_Function();//退票功能
break;
default:
exit(0);//退出}
4.4功能函数详细实现
4.4.1录入功能实现
录入功能主要是实现票务系统初始化,手动录入航班信息,飞机编号,起飞日期,乘客数目以及票数。
并且,提问是否继续录入,可以实现多次录入。
4.4.2查询功能实现
查询功能主要是实现根据用户要求,查看航班信息以及票额剩余。
可提供两种查询方法:
1、通过目的地查询,输入目的地后,相关航线信息列出;2、通过航班号查询,输入航班号码后,相关航线信息列出。
4.4.3订票功能实现
订票功能主要是实现根据用户要求,实现订票。
先输入航班号,然后会列出该航班的相关信息以及剩余票额。
用户输入姓名和订票数量后,实现订票功能。
当剩余票额数目较少时,询问用户是否重新订票。
4.4.4退票功能实现
退票功能主要是实现用户退票。
通过输入航班号,然后列出该航班信息,然后属于用户名以及要退票数额,实习退票功能。
如果不存在用户名或者该用户未定航班,则要求重新输入。
第5章系统测试
5.1系统测试目标
系统测试的目标是想以最少的时间和人力发现系统中潜在的各种错误和缺陷。
如果成功的实现了测试,就能够发现系统中的错误,并及时的更改过来。
测试的另一个收获是它能够证明此次设计的系统功能和性能与需求说明相符。
5.2主函数调用各功能函数测试
5.2.1录入功能测试
输入1后,开始录入航班的相关信息,并提示是否继续录入。
5.2.2查询功能测试
查询功能分两种,下图为按照目的地查询;
下图为按照航班号查询。
如果输入航班有误,则出现无此航班信息提示。
5.2.3订票功能测试
输入终点站名称,列出该航班信息,输入订票数额以及用户名称,订票成功。
如果输入终点站名称有误,则显示无此航班。
5.2.4退票功能测试
通过输入航班号,列出航班信息,输入用户名以及订票数额,实现退票功能。
如果输入数字不对,则程序不予响应,继续输入。
第6章总结
1、总体过程
编译和调试工具:
选择VisualC++6.0,该工具稳定,其中有一个强大的调试工具,但我不是熟悉。
还需要进一步的练习。
2、在一周半的时间里,不断地对程序及各模块进行修改、编译、调试、运行,其间遇到很多问题:
(1)因本人能力有限,在编写的时候只使用了相对较为简单的基础语言,代替了相对较为复杂的语言,降低了运行效率。
(2)程序在起初设计的时候,经常出现溢出错误,而且不只一处。
为了修正这些溢出错误,耗费了大量的时间,修正解释之后再看源程序,才发现原来只是因为开始的函数定义的数据类型出现了问题,对函数的定义不清楚,字符的不正确定义造成了后期大量的纠错工作,
(3)由于忘记了一些c语言的规范使得在调试过程中一些错误没有发现。
例如,调用函数时,数组只需要传递数组名即可;字符‘0’和整形的0是不同的文明不可以直接对其画等号。
(4)测试用例具有一定的广泛性。
运行程序时输入了多种不同字符信息,经过多次修改结果达到了预期效果。
说明程序具有一定的可靠性和稳定性。
3、通过调试我自己认为,在哈夫曼编码译码系统中用出栈入栈进行哈夫曼译码编码译码要简单于使用数组,而使用结构体数组来存储待编译的字符,编码译码时通过结构体数组来实现要优于使用链表。
4、调试体会
经过这次实习,我对调试掌握的更加熟练了,改变了过去只调试不知道如何对照程序语言修改程序的坏习惯,对调试也有了新的认识,意识到了程序语言的规范性以及我们在编程时要有严谨的态度,同时在写程序时如果加一定量的注释,既增加了程序的可读性,也可以使自己在读程序时更容易。
参考文献
[1]严蔚敏、吴伟明·数据结构(C语言版),1997年第1版,清华大学出版社
[2]丁有和、郑进、周怡君·VisualC++实用教程(第3版),电子工业出版社
[3]姚诗斌·数据库系统基础·计算机工程与应用
[4][美]S巴斯·计算机算法:
设计和分析引论·上海:
复旦大学出版社
[5]CSDN论坛
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空 售票 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)