航空客运订票系统的设计与实现

合集下载

航空票务销售系统的设计与实现

航空票务销售系统的设计与实现

航空票务销售系统的设计与实现随着航空业的发展和人们对航空出行的需求增加,航空票务销售系统成为了航空公司和旅行社等机构必备的工具。

这种系统通过互联网平台提供航空机票的预订、支付、退改签等功能,为乘客提供方便快捷的服务,同时也为航空公司提供了有效管理和业务拓展的工具。

本文将着重讨论航空票务销售系统的设计与实现。

一、需求分析在设计航空票务销售系统之前,首先需要进行需求分析。

这包括从用户和企业两个角度考虑系统所需要具备的功能和特点。

以下是航空票务销售系统的基本需求:1. 机票查询和预订功能:用户可以根据出发地、目的地、航班日期等参数查询航班信息,并进行机票的预订。

2. 航班信息展示:系统需要能够准确展示航班的起降时间、航程、航班准点率等信息,以帮助用户做出选择。

3. 价格与库存管理:系统需要及时更新航班票价和剩余库存的信息,确保用户获得准确的价格和可用机票的数量。

4. 安全支付功能:用户在系统内进行支付时,需要保障支付过程的安全性和隐私保护,例如使用加密技术和第三方支付方式。

5. 会员管理与优惠政策:系统应提供会员注册和积分系统,为常客提供各种优惠政策,如折扣、里程兑换等。

6. 退改签服务:系统需要提供退票、改签等服务,用户可以在系统内简单操作完成,同时需要根据航空公司的政策进行相应处理。

7. 数据分析和报表导出:系统应该具备数据分析功能,能够进行数据统计并生成相应的报表,为航空公司管理层提供决策依据。

二、系统设计与实现1. 架构设计:航空票务销售系统的架构设计应该具备良好的可扩展性和可维护性,可分为前端和后端两个部分。

前端部分需要提供用户友好的界面,可以是网页端或移动端应用,通过界面与用户进行交互,包括机票查询、预订、支付等功能。

后端部分需要处理前端的请求,与数据库进行交互,包括用户信息、航班信息、支付信息等的存取。

同时,后端还需要与第三方支付或航空公司系统进行对接。

2. 数据库设计:数据库设计是航空票务销售系统的重要组成部分。

航空客运订票系统的设计与实现

航空客运订票系统的设计与实现

课程设计说明书课程名称题目航空客运订票系统的设计与实现院系_电子信息工程学院____班级__计算机科学与技术__学生姓名______________指导教师_____________日期_ 2011.12.19-2011.12.30__数据结构课程设计任务书指导教师:时间: 2011.12.8航空客运订票系统的设计与实现一、简介1.设计目的:1.数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。

3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。

航空空订票系统:(1)熟练掌握链表存储结构及其建立过程和常用操作;(2)熟练掌握队列的建立过程和常用操作;(3)学会自己调试程序的方法并掌握一定的技巧。

2.问题的描述:航空客运订票的业务包括查询航线和客票预定的信、客票预定和办理退票等,设计一个程序以使上述任务借助计算机完成。

二、数据结构的设计:(1)航班信息:飞机抵达城市、航班号、飞机号、起降时间、航班票价、票价折扣、总位置和剩余位置、以訂票的客户名单。

(2)客户信息:客户姓名、证件号、座位号。

三、功能(函数)设计:1.每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日(星期几)、载客量、余票量、票价格,折扣,已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量); 2.全部数据可以只放在内存中;3.系统能实现的操作和功能如下:a) 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;b) 承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求。

航空订票系统设计报告

航空订票系统设计报告

一绪论11.1 课题背景及现状 (1)1.2 开发工具介绍 (1)二需求分析 (2)(一)航空售票系统的数据需求(二)数据字典(三) 主要数据流图三概要设计 (6)四逻辑设计 (7)五详细设计 (7)(一)基本查询语句(二) 程序流图中某些加工实现采用IPO图的方式描述(三)数据库的逻辑结构设计六测试结果 (12)七小结 (17)参考文献 (18)附录(主要源代码) (19)一绪论1.1 课题背景及现状随着旅游业的逐渐的成熟发达,航空客运量大幅度的提高,国内国际的旅游航班的增加,这些都对航空的信息管理系统提出了更高的要求,所以要不断的完善更新航空售票系统,提高航空售票系统的工作效率。

航空公司为方便旅客,需开发一个订票系统。

系统的操作者是有登录密码和用户名的售票员。

系统要实现的基本功能是航班的调整,售票,订票,取票,退票,乘客信息的管理,乘客购票的统计;而系统在以后扩展时还可以实现的功能有:对机组工作人员的管理,预定机票的送票情况管理等。

此系统的开发由我们分模块完成,而我所负责的模块是实现系统的航班调整,售票,订票,退票,取票,航班查询功能。

举一个旅客订票的例子:预定机票的旅客信息,包括姓名、性别、地址、证件号、目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。

旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。

要求系统能有效、快速、安全、可靠和无误的完成上述操作。

并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。

航空售票系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。

对于前者要求建立起数据一致性和完整性强、数据安全性好的库。

而对于后者则要求应用程序功能完备,易使用等特点1.2 开发工具介绍本次课程设计应用的开发工具主要是用java语言和SQL Server 2005 。

航空订票系统的设计与实现毕业论文

航空订票系统的设计与实现毕业论文

航空订票系统的设计与实现毕业论⽂引⾔1 引⾔1.1选题背景21世纪的特征是数字化、⽹络化和信息化,它是⼀个以数据库技术为核⼼的信息时代。

⽽随着信息技术的发展,航空售票业也成为⼀个⾼度依赖信息业的⾏业。

信息技术的飞速发展不仅使航空售票⼯作者逐渐摆脱了繁重的⼿⼯劳动、提⾼了⼯作效率,⽽且推着航空事业向现代化管理迈进。

现代化的航空售票也应该有现代化的管理系统。

在科技⽇益发达的今天,⼈们对旅游出⾏更加重视。

因此,航空售票进⾏现代化管理就变的尤为重要。

今天,信息资源已成为各个部门的重要财富,建⽴⼀个满⾜航空售票信息处理要求的⾏之有效的信息系统也成为⼀个航空公司发展的重要条件。

航空售票管理系统,它是航空部门机票管理系统的⼀部分,其作⽤是对所有待售机票和已售机票进⾏有效的管理。

通过本系统不仅可以进⾏售票⼯作,⽽且还可以对和机票相对应的旅客情况和航班情况进⾏查询,并可随时进⾏增加,修改,删除等⼯作,使售票⼈员能够有效地对机票进⾏有效的控制和管理。

因此,通过航空售票管理系统,使航空售票管理⼯作系统化,规范化,⾃动化,从⽽⼤⼤提⾼了售票管理⼯作的效率。

1.2 ⽬的和意义随着信息技术的发展,使⼈们上⽹容易成为现实,⽽售票厅往往⼈群拥挤⼀票难求,现实中去站点购票要受时间及地点的限制,由于现在⼈们⽣活节凑变快,时间资源相当保贵,有时为定购⼀张票需要坐上⼏个⼩时的车到售票处去排队买票,有时还会因为信息的缺乏,不能有效的了解票的销售情况,使旅⾏计划受阻,给顾客带来了很多的不便。

⽹上订票系统,新⼀种新型的售票模式。

⽤户可以通过⽹络查询航班的情况及机票的销售情况,以便更好的制定旅⾏计划,⽤户通过互联⽹在⽹上预订机票,极⼤的提⾼的旅客的订票效率,节省了订票的时间,缓解了售票窗⼝的拥挤的现状。

⽹上订票系统的成功实施,提⾼了售票的信息化管理⽔平,减⼩了⼯作⼈员的⼯作强度,为航空运输⾏业提供了新型的管理模式。

第1页(共38页)航空订票系统的设计与实现1.3 技术要求和设计范围航空售票系统提供的是⼀种⾯向较⼴区域的⽤户群系统。

数据结构课程设计-航空订票系统

数据结构课程设计-航空订票系统

数据结构课程设计报告设计题目:航空客运订票系统院系年级学生学号指导教师2015年11月26日目录一、课程设计目的 3二、需求分析 3三、概要设计1.设计步骤 42.系统整体结构图 53.功能模块及调用关系说明 5四、详细设计和源代码1.实现概要设计中定义数据的存储结构 62.查询航线信息功能的算法设计73.订票功能的算法设计94.退票功能的算法设计125.录入功能的算法设计 146.总航线预览功能的程序源代码15五、调试分析1.各功能的具体实例分析162.实验过程中出现的问题及解决方法 20六、课程设计总结20七、参考资料21一、课程设计目的(1) 熟练使用 C 语言编写程序,解决实际问题;(2) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;(3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;(4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;航空订票系统:(1)熟练掌握链表存储结构及其建立过程和常用操作;(2)熟练掌握队列的建立过程和常用操作;(3)学会自己调试程序的方法并掌握一定的技巧。

二、需求分析问题描述:航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。

试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。

设计任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;订票:(订票情况可以存在一个数据文件中,结构自己设定)根据客户提出的要求(日期、航班号、订票数额)查询该航班票额情况,若尚有余额,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需要重新询问客户要求。

航空客运订票系统本科课程设计

航空客运订票系统本科课程设计

石家庄经济学院本科生课程设计报告书题目航空客运订票系统航空客运订票系统1 需求分析【问题描述】试设计一个航空客运订票系统,方便乘客通过购票系统购买自己的所需要的飞机票,而航空客运订票的业务活动包括:1.查询航线;2.客票预订;3.办理退票。

【系统能实现的功能】①录入:由设计者录入航班情况,数据存储在文件中;②查询航线:由用户输入终点站名,出发时间,输出下列信息:所有可能的航班号,当天航班的余票数目;③承办订票业务:根据用户提出的要求(航班号、出发时间、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;已满员或余票额少于订票额,则需重新询问客户是否需要进入预约人数中。

④承办退票业务:根据用户提供的情况(日期、航班、票数等),为客户办理退票手续。

然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票数目能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。

【测试实例】例子某客户输入订票信息:北京到上海,2014年5月3日,所需票数3张;系统输出:所有可能航班号1000,1001,1002 余票分别为40张,50张,55张;该客户选择航班号为1000的航班;则该航班余票变为37张;2 概要设计航线的情况和已订票客户登录在一张线性表上,分别用顺序表和单链表实现;ADT list{数据对象:D = {ai | ai∈ElemSet,i = 1,2,…,n,n>=0}数据关系:R1 = {<ai-1,ai>|ai-1,ai∈D,i = 2, …,n}基本操作:InitList70219(&L)操作结果:构造一个空的线性表L;ListInsert70219(&L,i,e)初始条件:线性表L已经存在;操作结果:在L中第i个位置之前插入新的元素e,L的长度加1;ListDelete70219(&L,i,&e)初始条件:线性表L已经存在且非空,操作结果:删除L的第i个位置的元素,并用e返回其值,L的长度减1;}预约客户信息的存储使用队列。

航空客运订票系统—VC毕业设计(论文)

航空客运订票系统—VC毕业设计(论文)

航空客运订票系统—VC毕业设计(论文) 航空客运订票系统 1 问题描述航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。

试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。

1.1 每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量)1.2 作为示意系统,全部数据可以只放在内存中1.3 系统能实现的操作和功能如下:1.3.1 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额1.3.2 承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。

若需要,可登记排队候补 1.3.3 承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户 2 概要设计2.1 存储结构设计typedef struct Al_Custom //已订票客户{char name[15];//姓名int count;//订票量int level;//舱位等级Al_Custom *next;//下一节点指针}Al_Custom,*Al_CustomLink;typedef struct Wait_Custom//等候替补的客户{char name[15];//姓名int count;//所需票量Wait_Custom *next;//下一节点指针 }Wait_Custom; typedef struct Wait_Queue//等待队列 {Wait_Custom *front;//队列头指针Wait_Custom *rear;//尾指针 }Wait_Queue; typedef struct Flight//航线{char terminus[15];//终点站名char flight_no[10];//航班号char plane_no[10];//飞机号int week;//飞行周日int count;//乘客定额int rest;//余票量Al_CustomLink Al_link;//指向成员名单链表的头指针Wait_Queue wait_queue;//等待替补队列 }Flight;2.2 主要算法设计2.2.1 主程序模块:void main(){初始化;do{接受命令;处理命令;}while(命令!="退出");}2.2.2 查询航线模块——实现查询功能 void findFlight() { 提示输入要查询航线的终点站名;如果存在该航线,则输出该航线信息;否则提示不存在该航线;}2.2.3 承办订票业务模块——实现订票功能 void dingpiao() {提示输入航班号和订票数;若不存在该航班号,则提示不存在该航线;否则{如果有余票,则办理业务;否则提示没有足够的余票,询问是否候补;若是,则排队候补;}}2.2.4 承办退票业务模块——实现退票功能 void tuipiao() {提示输入航班号和飞行周日;确认航班号和飞行周日都存在,并且客户有订票,则 {执行退票;为排队候补的客户办理订票业务;}否则{提示有误}}2.3 测试用例设计2.3.1 航线3条:1001 hp001 shanghai 2 501002 hp002 beijing 5 501003 hp003 guangzhou 7 502.3.2 查询航线:shanghai2.3.3 承办订票业务:航班号1001 数额30 姓名chengangjie 舱位等级22.3.4 承办订票业务:航班号1001 数额23 姓名zhenxi 舱位等级32.3.5 承办退票业务:姓名chengangjie 航班号1001 飞行周日2 2.3.6 查询航线:终点站名:shanghai3 调试分析3.1 本次的设计比较困难,需要实现较多的功能,所以在调试过程中不太顺利,主要是指针的修改。

航空客运订票系统的设计与实现

航空客运订票系统的设计与实现

课程设计说明书之阿布丰王创作课程名称题目航空客运订票系统的设计与实现院系_电子信息工程学院____班级__计算机科学与技术__学生姓名______________指导教师_____________日期___数据结构课程设计任务书航空客运订票系统的设计与实现一、简介1.设计目的:1.数据结构课程设计是综合运用数据结构课程中学到的几种典范数据结构,以及法式设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验陈说等环节,进一步掌握应用系统设计的方法和步伐,灵活运用并深刻理解典范数据结构在软件开发中的应用 .3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力.航空空订票系统:(1)熟练掌握链表存储结构及其建立过程和经常使用把持;(2)熟练掌握队列的建立过程和经常使用把持;(3)学会自己调试法式的方法并掌握一定的技巧.2.问题的描述:航空客运订票的业务包括查询航线和客票预定的信、客票预定和规画退票等,设计一个法式以使上述任务借助计算机完成.二、数据结构的设计:(1)航班信息:飞机抵达城市、航班号、飞机号、起降时间、航班票价、票价折扣、总位置和剩余位置、以訂票的客户名单.(2)客户信息:客户姓名、证件号、座位号.三、功能(函数)设计:1.每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日(星期几)、载客量、余票量、票价格,折扣,已订票的客户名单(包括姓名、订票量、舱位品级1,2或3)以及等待替补的客户名单(包括姓名、所需票量);2.全部数据可以只放在内存中;3.系统能实现的把持和功能如下:a) 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;b) 承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户规画订票手续,输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求.若需要,可挂号排队候补;c) 退票业务:根据客户提供的情况(日期、航班),为客户规画退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他规画订票手续,否则依次询问其他排队候补的客户.系统结构图(功能模块图)功能模块说明(1)显示已初始化的全部航线信息(2)浏览已订票客户信息(3)根据客户提出的终点站名,调用find()函数寻找航线信息,调用list()函数输返航线信息(4)规画订票业务:根据客户提供的航班号进行查询航线信息,若客户订票额超越乘员定票总额,退出,若客户订票额末超越余票量,订票胜利并挂号信息,在订票乘员名单域中添加客户信息;如果暂时没有票,询问客户是否要排队等侯,如果是,则在等待队列增加该客户的订票信息.(5)规画退票业务:调用查询函数,根据客户提供的航线进行搜索根据客户提供的姓名到订票客户名单域进行查询.退票胜利后,重新将航线名单域指向订票单链表的头指针.根据队列中从出的客户信息判断是否满足要求,如果满足,则将该客户的信息拔出到乘客信息链表中.(6)退出本系统四、界面设计:界面简洁易懂,包括1.浏览航线信息;2.浏览已订票客户信息;3.查询航线;4.规画订票业务;5.规画退票业务;6.检查剩余票数并排序.五、法式设计:六、运行与测试:1、测试的数据及其结果:(1)通过按键“1”浏览航线信息,结果输出五行事先输入的数据.(2)通过按键“3”查询航线,输入终点站名后,结果输出相关航线信息.(3)通过按键“4”规画订票业务,依次输入航班号,订票数量,客户姓名,证件号后,结果输出客户的座位号,订票胜利.(4)通过按键“2”浏览已定票客户信息,输入航班号后,结果显示客户信息.(5)通过按键“5”规画退票业务,输入航班号,客户名后,结果退票胜利.(6)通过按键“6”检查剩余票数并排序,结果正确.(7)通过按键“0”退出系统,结果正确.2、运行与测试期间遇到的问题及其解决法子.(1)因自己能力有限,在编写的时候只使用了相对较为简单的基础语言 ,取代了相对较为复杂的语言,降低了运行效率.(2)法式在起初设计的时候,经常呈现溢犯毛病,而且不只一处.为了修正这些溢犯毛病,耗费了年夜量的时间,修正解释之后再看源法式,才发现原来只是因为开始的函数界说的数据类型呈现了问题,对函数的界说不清楚,字符的不正确界说造成了后期年夜量的纠错工作,(3)由于忘记了一些c语言的规范使得在调试过程中一些毛病没有发现.例如,调用函数时,数组只需要传递数组名即可;字符‘0’和整形的0是分歧的文明不成以直接对其画等号.(4)测试用例具有一定的广泛性.运行法式时输入了多种分歧字符信息,经过屡次修改结果到达了预期效果.说明法式具有一定的可靠性和稳定性.七、设计后的思考:经过这次课程设计,我对换试掌握的更加熟练了,改变了过去只调试不知道如何对比法式语言修改法式的坏习惯,对换试也有了新的认识,意识到了法式语言的规范性以及我们在编程时要有严谨的态度,同时在写法式时如果加一定量的注释,既增加了法式的可读性,也可以使自己在读法式时更容易.代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#define MAXSIZE 5typedef struct wat_ros{ char name[10];int req_amt;struct wat_ros *next;}qnode,*qptr;typedef struct pqueue { qptr front;qptr rear;}linkqueue;typedef struct ord_ros { char name[10];int ord_amt;int grade;struct ord_ros *next; }linklist;struct airline{ char ter_name[10]; char air_num[10]; char plane_num[10]; char date[7];int tkt_amt;int tkt_sur;int tkt_pri;int tkt_reb;linklist *order;linkqueue wait;}lineinfo;struct airline *start;struct airline air[MAXSIZE]={{"北京","1","A1401","星期日",3,1,800,9},{"上海","2","H1102","星期一",2,5,600,6},{"洛阳","3","L1003","星期五",1,3,100,4},{"杭州","4","H1035","星期三",5,4,700,5},{"呼和浩特","5","F1100","星期六",6,3,800,5}};void display(struct airline *info){printf("%8s\t%3s\t%s\t%7s\t%7d\t%10d\t%5d\t%3d\n",info->ter_name,info->air_num,info->plane_num,info->date,info->tkt_amt,info->tkt_sur,info->tkt_pri,info->tkt_reb);}void list(){ struct airline *info;int i=0;info=start;printf("终点站\t\t航班号\t飞机号\t飞行日期\t载客量\t 余票量\t票价格\t折扣\n");while(i<MAXSIZE){display(info);info++;i++;}printf("\n\n");}void search(){ struct airline *info,*find();char name[10];int i=0;info=start;printf("请输入终点站名:");scanf("%s",name);while(i<MAXSIZE){if(!strcmp(name,info->ter_name)) break; info++;i++;}if(i>=MAXSIZE)printf("对不起,该航线未找到!\n");else{printf("终点站\t\t航班号\t飞机号\t飞行日期\t载客量\t余票量\t票价格\t折扣\n");display(info);}}struct airline *find(){ struct airline *info;char number[10];int i=0;info=start;printf("请输入航班号:");scanf("%s",number);while(i<MAXSIZE){if(!strcmp(number,info->air_num)) return info;info++;i++;}printf("对不起,该航线末找到!\n");return NULL;}void prtlink(){ linklist *p;struct airline *info;info=find();p=info->order;if(p!=NULL){printf("客户姓名订票数额客户证件号\n");while(p){printf("%s\t\t%d\t%d\n",p->name,p->ord_amt,p->grade);p=p->next;}}elseprintf("该航线没有客户信息!!\n");}linklist *insertlink(linklist *head,int amount,char name[],int grade){ linklist *p1,*new1;p1=head;new1=(linklist *)malloc(sizeof(linklist));if(!new1) {printf("\nOut of memory!!\n");return NULL;} strcpy(new1->name,name);new1->ord_amt=amount;new1->grade=grade;new1->next=NULL;if(head==NULL){head=new1;new1->next=NULL;}elsehead=new1;new1->next=p1;return head;}linkqueue appendqueue(linkqueue q,char name[],int amount) { qptr new1;new1=(qptr)malloc(sizeof(qnode));strcpy(new1->name,name);new1->req_amt=amount;new1->next=NULL;if(q.front==NULL)q.front=new1;elseq.rear->next=new1;q.rear=new1;return q;}void order(){ struct airline *info;int amount,grade;char name[10];info=start;if(!(info=find())) return;printf("请输入你订票所需要的数量:");scanf("%d",&amount);if(amount>info->tkt_amt){ printf("\n对不起,您输入的票的数量已经超越乘员定额!");return;}if(amount<=info->tkt_sur){int i;printf("请输入您的姓名(订票客户):");scanf("%s",name);printf("请输入%s票的证件号:",name);scanf("%d",&grade);info->order=insertlink(info->order,amount,name,grade);for(i=0;i<amount;i++)printf("%s的座位号是:%d\n",name,info->tkt_amt-info->tkt_sur+i+1);info->tkt_sur-=amount;printf("\n祝您乘坐愉快!\n");}else{ char r;printf("\n已经没有更多的票,您需要排队等待吗?(Y/N)"); r=getch();printf("%c",r);if(r=='Y'||r=='y'){ printf("\n请输入您的姓名(排队订票客户):");scanf("%s",name);info->wait=appendqueue(info->wait,name,amount);printf("\n注册胜利!\n");}else printf("\n欢迎您下次再次订购!\n");}}void return_tkt(){ struct airline *info;qnode *t,*back,*f,*r;int grade;linklist *p1,*p2,*head;char cusname[10];if(!(info=find())) return;head=info->order;p1=head;printf("请输入你的姓名(退票客户):");scanf("%s",cusname);while(p1!=NULL) {if(!strcmp(cusname,p1->name)) break;p2=p1;p1=p1->next;}if(p1==NULL){ printf("对不起,你没有订过票!\n");return;} else{if(p1==head) head=p1->next;else p2->next=p1->next;info->tkt_sur+=p1->ord_amt;grade=p1->grade;printf("%s胜利退票!\n",p1->name);free(p1);}info->order=head;f=(info->wait).front;r=(info->wait).rear;t=f;while(t){if(info->tkt_sur=info->wait.front->req_amt){int i;info->wait.front=t->next;printf("%s订票胜利!\n",t->name);for(i=0;i<t->req_amt;i++)printf("%s的座位号是:%d\n",t->name,(info->tkt_sur)-i);info->tkt_sur-=t->req_amt;info->order=insertlink(info->order,t->req_amt,t->name,grade);free(t);break;}back=t;t=t->next;if((info->tkt_sur)>=(t->req_amt)&&t!=NULL){ int i;back->next=t->next;printf("%s订票胜利!\n",t->name);for(i=0;i<t->req_amt;i++)printf("<%s>'s seat number is:%d\n",t->name,(info->tkt_sur)-i);info->tkt_sur-=t->req_amt;info->order=insertlink(info->order,t->req_amt,t->name,grade);free(t);break;}if(f==r) break;}}void sort_tkt(){int j;struct airline t,*info,*p,*q;p=info=air;for(p=info;(p+1)->tkt_sur;p++)for(q=p+1;q->tkt_sur;q++){if(p->tkt_sur<q->tkt_sur){t=*p;*p=*q;*q=t;}}printf("终点站\t\t航班号\t飞机号\t飞行日期\t载客量\t余票量\t票价格\t折扣\n");for(j=0;j<MAXSIZE;j++){display(info);info++;}}int menu_select(){ int c;char s[20];printf("\n *航空客运订票系统*\n");printf("***************************** *********************************\n");printf(" 1.浏览航线信息2.浏览已订票客户信息\n");printf(" 3.查询航线4.规画订票业务\n");printf(" 5.规画退票业务6.检查剩余票数并排序\n");printf(" 0.退出系统\n");printf("********************************************* ***********************************\n");do{printf("请选择:");scanf("%s",s);c=atoi(s);}while(c<0||c>7);return c;}void main(){start=air;for(;;){switch(menu_select()){case 1:list();break;case 2:prtlink();break;case 3:search();break;case 4:order();break;case 5:return_tkt();break;case 6:sort_tkt();break;case 0:printf("\n欢迎您的使用,再见!\n");exit(0); }printf("\nPress any key to continue!\n");getch();}}时间:二O二一年七月二十九日电子信息工程学院数据结构课程设计指导教师评分表时间:二O二一年七月二十九日。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计说明书课程名称题目航空客运订票系统的设计与实现院系_电子信息工程学院____班级__计算机科学与技术__学生______________指导教师_____________日期_ 2011.12.19-2011.12.30__数据结构课程设计任务书指导教师:时间: 2011.12.8航空客运订票系统的设计与实现一、简介1.设计目的:1.数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。

3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。

航空空订票系统:(1)熟练掌握链表存储结构及其建立过程和常用操作;(2)熟练掌握队列的建立过程和常用操作;(3)学会自己调试程序的方法并掌握一定的技巧。

2.问题的描述:航空客运订票的业务包括查询航线和客票预定的信、客票预定和办理退票等,设计一个程序以使上述任务借助计算机完成。

二、数据结构的设计:(1)航班信息:飞机抵达城市、航班号、飞机号、起降时间、航班票价、票价折扣、总位置和剩余位置、以訂票的客户。

(2)客户信息:客户、证件号、座位号。

三、功能(函数)设计:1.每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日(星期几)、载客量、余票量、票价格,折扣,已订票的客户(包括、订票量、舱位等级1,2或3)以及等候替补的客户(包括、所需票量);2.全部数据可以只放在存中;3.系统能实现的操作和功能如下:a) 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;b) 承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求。

若需要,可登记排队候补;c) 退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。

系统结构图(功能模块图)功能模块说明(1)显示已初始化的全部航线信息(2)浏览已订票客户信息(3)根据客户提出的终点站名,调用find()函数寻找航线信息,调用list ()函数输出航线信息(4)办理订票业务:根据客户提供的航班号进行查询航线信息,若客户订票额超过乘员定票总额,退出,若客户订票额末超过余票量,订票成功并登记信息,在订票乘员域中添加客户信息;如果暂时没有票,询问客户是否要排队等侯,如果是,则在等候队列增加该客户的订票信息。

(5)办理退票业务:调用查询函数,根据客户提供的航线进行搜索根据客户提供的到订票客户域进行查询。

退票成功后,重新将航线域指向订票单链表的头指针。

根据队列中从出的客户信息判断是否满足要求,如果满足,则将该客户的信息插入到乘客信息链表中。

(6)退出本系统四、界面设计:界面简洁易懂,包括1.浏览航线信息;2.浏览已订票客户信息;3.查询航线;4.办理订票业务;5.办理退票业务;6.查看剩余票数并排序。

五、程序设计:六、运行与测试:1、测试的数据及其结果:(1)通过按键“1”浏览航线信息,结果输出五行事先输入的数据。

(2)通过按键“3”查询航线,输入终点站名后,结果输出相关航线信息。

(3)通过按键“4”办理订票业务,依次输入航班号,订票数量,客户,证件号后,结果输出客户的座位号,订票成功。

(4)通过按键“2”浏览已定票客户信息,输入航班号后,结果显示客户信息。

(5)通过按键“5”办理退票业务,输入航班号,客户名后,结果退票成功。

(6)通过按键“6”查看剩余票数并排序,结果正确。

(7)通过按键“0”退出系统,结果正确。

2、运行与测试期间遇到的问题及其解决办法。

(1)因本人能力有限,在编写的时候只使用了相对较为简单的基础语言,代替了相对较为复杂的语言,降低了运行效率。

(2)程序在起初设计的时候,经常出现溢出错误,而且不只一处。

为了修正这些溢出错误,耗费了大量的时间,修正解释之后再看源程序,才发现原来只是因为开始的函数定义的数据类型出现了问题,对函数的定义不清楚,字符的不正确定义造成了后期大量的纠错工作,(3)由于忘记了一些c语言的规使得在调试过程中一些错误没有发现。

例如,调用函数时,数组只需要传递数组名即可;字符‘0’和整形的0是不同的文明不可以直接对其画等号。

(4)测试用例具有一定的广泛性。

运行程序时输入了多种不同字符信息,经过多次修改结果达到了预期效果。

说明程序具有一定的可靠性和稳定性。

七、设计后的思考:经过这次课程设计,我对调试掌握的更加熟练了,改变了过去只调试不知道如何对照程序语言修改程序的坏习惯,对调试也有了新的认识,意识到了程序语言的规性以及我们在编程时要有严谨的态度,同时在写程序时如果加一定量的注释,既增加了程序的可读性,也可以使自己在读程序时更容易。

代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#define MAXSIZE 5typedef struct wat_ros{ char name[10];int req_amt;struct wat_ros *next;}qnode,*qptr;typedef struct pqueue{ qptr front;qptr rear;}linkqueue;typedef struct ord_ros{ char name[10];int ord_amt;int grade;struct ord_ros *next;}linklist;struct airline{ char ter_name[10];char air_num[10];char plane_num[10];char date[7];int tkt_amt;int tkt_sur;int tkt_pri;int tkt_reb;linklist *order;linkqueue wait;}lineinfo;struct airline *start;struct airline air[MAXSIZE]={{"","1","A1401","星期日",3,1,800,9},{"","2","H1102","星期一",2,5,600,6},{"","3","L1003","星期五",1,3,100,4},{"","4","H1035","星期三",5,4,700,5},{"呼和浩特","5","F1100","星期六",6,3,800,5}};void display(struct airline *info){printf("%8s\t%3s\t%s\t%7s\t%7d\t%10d\t%5d\t%3d\n",info->ter_name,info->air_num,info->plane_num,info->date,info->tkt_amt,info->tkt_sur,info->tkt_pri,info->tkt_reb);}void list(){ struct airline *info;int i=0;info=start;printf("终点站\t\t航班号\t飞机号\t飞行日期\t载客量\t余票量\t票价格\t折扣\n");while(i<MAXSIZE){display(info);info++;i++;}printf("\n\n");}void search(){ struct airline *info,*find();char name[10];int i=0;info=start;printf("请输入终点站名:");scanf("%s",name);while(i<MAXSIZE){if(!strcmp(name,info->ter_name)) break;info++;i++;}if(i>=MAXSIZE)printf("对不起,该航线未找到!\n");else{printf("终点站\t\t航班号\t飞机号\t飞行日期\t载客量\t余票量\t票价格\t折扣\n");display(info);}}struct airline *find(){ struct airline *info;char number[10];int i=0;info=start;printf("请输入航班号:");scanf("%s",number);while(i<MAXSIZE){if(!strcmp(number,info->air_num)) return info;info++;i++;}printf("对不起,该航线末找到!\n");return NULL;void prtlink(){ linklist *p;struct airline *info;info=find();p=info->order;if(p!=NULL){printf("客户订票数额客户证件号\n");while(p){printf("%s\t\t%d\t%d\n",p->name,p->ord_amt,p->grade);p=p->next;}}elseprintf("该航线没有客户信息!!\n");}linklist *insertlink(linklist *head,int amount,char name[],int grade) { linklist *p1,*new1;p1=head;new1=(linklist *)malloc(sizeof(linklist));if(!new1) {printf("\nOut of memory!!\n");return NULL;}strcpy(new1->name,name);new1->ord_amt=amount;new1->grade=grade;new1->next=NULL;if(head==NULL){head=new1;new1->next=NULL;}elsehead=new1;new1->next=p1;return head;}linkqueue appendqueue(linkqueue q,char name[],int amount){ qptr new1;new1=(qptr)malloc(sizeof(qnode));strcpy(new1->name,name);new1->req_amt=amount;new1->next=NULL;if(q.front==NULL)q.front=new1;elseq.rear->next=new1;q.rear=new1;return q;void order(){ struct airline *info;int amount,grade;char name[10];info=start;if(!(info=find())) return;printf("请输入你订票所需要的数量:");scanf("%d",&amount);if(amount>info->tkt_amt){ printf("\n对不起,您输入的票的数量已经超过乘员定额!");return;}if(amount<=info->tkt_sur){int i;printf("请输入您的(订票客户):");scanf("%s",name);printf("请输入%s票的证件号:",name);scanf("%d",&grade);info->order=insertlink(info->order,amount,name,grade);for(i=0;i<amount;i++)printf("%s的座位号是:%d\n",name,info->tkt_amt-info->tkt_sur+i+1); info->tkt_sur-=amount;printf("\n祝您乘坐愉快!\n");}else{ char r;printf("\n已经没有更多的票,您需要排队等候吗?(Y/N)");r=getch();printf("%c",r);if(r=='Y'||r=='y'){ printf("\n请输入您的(排队订票客户):");scanf("%s",name);info->wait=appendqueue(info->wait,name,amount);printf("\n注册成功!\n");}else printf("\n欢迎您下次再次订购!\n");}}void return_tkt(){ struct airline *info;qnode *t,*back,*f,*r;int grade;linklist *p1,*p2,*head;char cusname[10];if(!(info=find())) return;head=info->order;p1=head;printf("请输入你的(退票客户):");scanf("%s",cusname);while(p1!=NULL) {if(!strcmp(cusname,p1->name)) break;p2=p1;p1=p1->next;}if(p1==NULL){ printf("对不起,你没有订过票!\n");return;}else{if(p1==head) head=p1->next;else p2->next=p1->next;info->tkt_sur+=p1->ord_amt;grade=p1->grade;printf("%s成功退票!\n",p1->name);free(p1);}info->order=head;f=(info->wait).front;r=(info->wait).rear;t=f;while(t){if(info->tkt_sur=info->wait.front->req_amt){int i;info->wait.front=t->next;printf("%s订票成功!\n",t->name);for(i=0;i<t->req_amt;i++)printf("%s的座位号是:%d\n",t->name,(info->tkt_sur)-i);info->tkt_sur-=t->req_amt;info->order=insertlink(info->order,t->req_amt,t->name,grade); free(t);break;}back=t;t=t->next;if((info->tkt_sur)>=(t->req_amt)&&t!=NULL){ int i;back->next=t->next;printf("%s订票成功!\n",t->name);for(i=0;i<t->req_amt;i++)printf("<%s>'s seat number is:%d\n",t->name,(info->tkt_sur)-i);info->tkt_sur-=t->req_amt;info->order=insertlink(info->order,t->req_amt,t->name,grade);free(t);break;}if(f==r) break;}}void sort_tkt(){int j;struct airline t,*info,*p,*q;p=info=air;for(p=info;(p+1)->tkt_sur;p++)for(q=p+1;q->tkt_sur;q++){if(p->tkt_sur<q->tkt_sur){t=*p;*p=*q;*q=t;}}printf("终点站\t\t航班号\t飞机号\t飞行日期\t载客量\t余票量\t票价格\t折扣\n"); for(j=0;j<MAXSIZE;j++){display(info);info++;}}int menu_select(){ int c;char s[20];printf("\n *航空客运订票系统*\n");printf("**************************************************************\n");printf(" 1.浏览航线信息 2.浏览已订票客户信息\n");printf(" 3.查询航线 4.办理订票业务\n");printf(" 5.办理退票业务 6.查看剩余票数并排序\n");printf(" 0.退出系统\n");printf("*********************************************************** *********************\n");do{printf("请选择:");scanf("%s",s);c=atoi(s);}while(c<0||c>7);return c;}void main(){start=air;for(;;){switch(menu_select()){case 1:list();break;case 2:prtlink();break;case 3:search();break;case 4:order();break;case 5:return_tkt();break;case 6:sort_tkt();break;case 0:printf("\n欢迎您的使用,再见!\n");exit(0); }printf("\nPress any key to continue!\n");getch();}}电子信息工程学院数据结构课程设计指导教师评分表。

相关文档
最新文档