java航空订票系统论文_第1页
java航空订票系统论文_第2页
java航空订票系统论文_第3页
java航空订票系统论文_第4页
java航空订票系统论文_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计课程定做 QQ1714879127本科毕业论文java航空订票系统学 院: 计算机与信息工程学院专 业: 05计科双学位学 号: 04040361姓 名: 周楷指导教师: 李建荣职 称: 论文提交日期:二八年四月摘 要当前中国民航市场扩大迅速,随着生活水平的提高,越来越多的人选择飞机出行,对航空公司的服务要求的越来越高,为了适应快速发展的需求,管理大量数据,有效地稳定的管理航空公司,我们要为某航空公司开发一套国内机票售票系统,要求能通过分布在全国各主要城市的该航空公司的营业网点为顾客提供航班查询,购买机票以及退票的服务。该系统的工作流程如下:当顾客到达营业网点后向航空公司营业员提供出发地,目的地和出发日期,营业员根据以上信息,操作软件,连接航空公司的服务器,查询满足条件的航班,然后根据顾客的要求选择某个航班,输入乘客信息,以及舱位信息,然后执行出票操作。该系统在营业网点内能够完成营业员登录,查询航班,出票等功能。在航空公司内部能够完成添加或删除航班,添加或删除营业网点,添加或删除营业员等功能。除此之外,该系统还要求能统计每个营业网点的业务量,以及每位营业员的工作量,并将这些信息保存在服务器端,并能在服务器端随时查询。关键词: 民航 管理系统 分层部署 Abstract The current Chinese commercial aviation expansion of market is rapid, along with the living standard enhancement, more and more many people chooses the airplane journey, to airlines service request more and more high, in order to adapt the fast development demand, the management mass datas, the stable management airline, we must develop a set of domestic airplane ticket booking system effectively for some airline, the request can through distribute provide the scheduled flight inquiry in the national each main city this airlines business mesh point for the customer, the service which the purchase airplane ticket as well as returns a ticket.This system work flow is as follows: When the customer arrives business mesh point backward airline shop employees to provide embarks above, the destination and embarks the date, the shop employee according to the information, operates the software, the connection airlines server, the inquiry satisfies the condition the scheduled flight, then chooses some scheduled flight according to customers request, inputs the passenger information, as well as the seat on a ship information, then the execution shows a ticket the operation.This system can complete the shop employee in business mesh point to register, the inquiry scheduled flight, shows a ticket and so on the functions.Can complete the increase or the deletion scheduled flight in the airline interior, the increase or the deletion business mesh point, the increase or deletes functions and so on shop employee.In addition, this system also requests to be able to count each business mesh point the business volume, as well as each shop employees work load, and these information preservation in the server end, and can inquire as necessary in the server end.Key words :The commercial aviation the management system management system the lamination deployment目 录1.引言1.1民航发展概况1.2 技术选择1.3 开发工具1.2.1CS与BS 1.2.2java技术1.3 技术选择2.需求分析: 2.1软件分层与部署: 2.2系统功能模块: 2.3系统活动图: 2.3用例图: 2.31客户端用例: 2.3.2服务器端用例:3.概要设计: 3.1业务模型: 3.2数据库设计 3.2.1飞机机型表(AIRPLANE_MODEL): 3.2.2航班计划表(FLIGHT_SCHEDULER): 3.2.3航班表(FLIGHT): 3.2.4营业网点表(BRANCH): 3.2.5出票记录表(TICKET_ORDER): 3.3DAO接口设计 3.3.1FlightDAO: 3.3.2BranchDAO: 3.3.3TicketOrderDAO: 3.4主要工作流程: 3.5详细时序图4.详细设计4.1流程详细分析 4.2用表格显示表单 4.3 hibernate映射关系5.后续改进6.总结致谢参考文献毕业设计课程定做 QQ171487912729内蒙古农业大学学士学位论文1.引言1.1民航发展概况2007年,民用航空行业完成旅客总周转量2776.3亿人公里、旅客运输量19452.1万人、货物周转量115.6亿吨公里,民用航空货运量394.9万吨,比2006年同期分别增长18.7%、1.7%和14.3%。国内航线(含港澳)三项指标分别完成232.5亿吨公里、1952.1万人和272万吨,同比分别增长17.1%、16.1%和12.3%;国际航线三项指标分别完成129.1亿吨公里、1884.1万人和119.4万吨,同比分别增长26.4%、20.8%和26.2%。在人民币持续升值预期明确、燃油成本波动相对较平和以及2008年奥运会、2010年世博会、亚运会等相对积极因素推动下,行业正处于景气度不断提升时期。 根据计划,中国民用航空工业“十一五”期间将在以下5个方面取得积极进展:重点民用航空产品;加快民用航空产业化进程;增强民用航空科研生产能力;增强民用航空工业的自主创新能力;履行政府职能,进一步加强行业管理。在“十一五”期间,中国将投入约1400亿元人民币用于机场建设。这将为民航业的发展创造有利条件。预计2006年至2010年间,中国民航航空运输总周转量年均增长保持在14%左右,2010年民航运输飞机将达到1550架,年均增长12%。本报告在对中国民用航空市场进行分析的同时,也将行业主力厂商的重点信息收入其中,并对行业内的上市公司企业进行深入的财务分析;在市场集中度分析方面,本报告力求全面反映中国民用航空市场占有率的真实情况,深入挖掘市场CR4和CR8等核心市场数据,并在此基础上对产业价值链进行深度的剖析,是中国民用航空市场极具研究价值的行业性分析报告。 根据研究院的预测,2008年全球航空运输业的表现将不及2007年。预计今年全行业的毛收入大约为5140亿美元,净利润是50亿美元,盈利率为1%。 从目前到2026年,全球市场新增客机和货机的数量将达24300架。我们对市场的预测认为,民用客机的最大需求来自亚太地区,其中中国仍然是最大市场之一。全球航空客运预计以平均每年4.9%的速度增长,在20年内增长将近3倍,全球航空公司100座以上飞机机队的规模也将成倍增长,由目前的13300架增加到2026年的28550架,预计接近8150架旧飞机需要更新,这就意味着市场需要23400架新飞机,价值2.6万亿美元。与此同时,全球航空货运预计以更快的速度增长,年平均增长率达到5.8%。加上机队更新所需的飞机数,预计未来20年内需要3800多架新货机,其中900多架将由新我们要为某机票代理公司开发一套机票预定系统,该系统要求通过分布在每一个代理点的客户端机器完成查询航班和出票的功能。该软件系统由两部分组成,安装在代理点机器上的程序是该系统的客户端软件;另外还有安装在代理公司机器上的服务器端软件。客户端软件能够完成与服务器的通信,根据给定的出发地和目的地以及出发日期向服务器发送航班查询请求和出票的请求。服务器端软件能够接受客户端请求,完成航班查询和出票功能,并向客户端返回结果。同时,服务器端软件还能进行代理商的管理,记录并统计每个代理点的业务量并以日志文件的方式保存下来。飞机来满足。1.2 技术选择1.2.1 CS结构与BS结构B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。浏览器通过eb Server 同数据库进行数据交互。用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。/采用Internet/Intranet技术,适用于广域网环境 /支持更多的客户。可根据访问量动态配置WEB服务器、应用服务器,以保证系统性能。 /客户端只需标准的浏览器 /采用面向对象技术,代码可重用性好 /系统扩展维护简单 /开发费用较高,开发周期较长 C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。早期的软件系统多以此作为首选设计标准。 B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。 C/S 与 B/S 区别: Client/Server是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的. 1硬件环境不同: C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务. B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行 2对安全要求不同 C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息. B/S 建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群. 3对程序架构不同 C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑. B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟. 4软件重用不同 C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好. B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子 5系统维护不同 系统维护是软件生存周期中,开销大, -重要 C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统 B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级. 6处理问题不同 C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统 B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小. 7用户接口不同 C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高 B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本. 8信息流不同 C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低 B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更象交易中心1.2.2Java技术 Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动感的web,internate计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新。Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.4,最近版本为Java1.6。 Java分为三个体系JavaSE,JavaEE,JavaME。Java语言Java语言是一个支持网络计算的面向对象程序设计语言。Java语言吸收了Smalltalk语言和C+语言的优点,并增加了其它特性,如支持并发程序设计、网络通信、和多媒体数据控制等。主要特性如下:1、Java语言是简单的。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。2、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。4、Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。5、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 6、Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。 7、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。8、Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。9、Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C+。 10、Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。11、Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。1.3 开发工具Eclipse:Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。JDBC:JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。 hibernate:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五的核心接口分别加以介绍。Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。Transaction接口:Transaction接口负责事务相关的操作。它是可选的,可发人员也可以设计编写自己的底层事务处理代码。Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。2需求分析:2.1软件分层与部署:我把软件非为三个层次:分别是表现层,业务层,和持久层。表现层即是客户端,客户端包装请求,通过socket发放服务器。服务器通过控制器,把请求转发给不同的模块处理。模块调用相应的Dao访问数据库。软件分层实现了格模块功能之间的松散耦合,有利于功能扩展,系统维护。图1 部署图2.2系统功能模块:主要的系统功能模块如下:客户端模块: 1,代理商登陆模块BranchDAO.getBrancht()2,查询航班模块(A):FlightDAO.getAllFlights()3,订票模块(A)OrderTicketDAO.order()4,修改密码模块(A):AgentDAO.modifyPassword() 服务器模块: 1,添加营业网点模块(B):BranchDAO.addBranch() 2,删除营业网点模块(B):BranchDAO.removeBranch() 3,查询营业网点模块(B):BranchDAO.addBranch() 4,添加飞机型号模块(B):PlaneModelDAO.addPlaneModel()5,添加航班计划模块(B):FlightDAO.addFlightSchedular()6,查询航班计划模块(B) FlightDAO.getAllFlightSchedulars()7,添加航班模块(B):FlightlDAO.addFlightl()8,统计所有出票记录模块:TicketOrderDAO.getAllTicketOrder()9,统计网点出票记录模块: TicketOrderDAO.getBranchTicketOrder()图2 模块划分2.3系统活动图:系统活动过程如下:服务器读取配置文件,启动。之后可以进行航班管理,网点管理,统计信息等。客户端读取配置文件,启动,连接服务器,登陆成功后,才可以进行航班查询修改密码,订票等操作。每一步操作都要发往服务器处理。服务器同时可以服务多个客户端线程。图3 系统活动图2.3用例图:2.31客户端用例:此图描述了客户端的各功能依赖关系图4 客户端用例图2.3.2服务器端用例:此图描述了服务器各功能关系。图5 服务器端用例图3.概要设计:3.1业务模型:通过上面的分析,我建立了下列业务模型航班计划(Flight Scheduler):用来描述由某个航空公司执行的某个定期航班的计划表。例如:由中国国际航空公司执行的每天早上8:00从北京起飞,上午10:00到达上海的CA1202就是一个航班计划。属性:航班号,起始日期,结束日期,出发地,目的地,离港时间,到港时间,里程,飞机机型,班期,基准票价。航班(Flight):用来描述在某个确定日期执行某个定期航班计划的一次航班。例如:2008年5月25日从北京飞上海的CA1202就是一个航班的实例。属性:航班计划,出发日期,各舱剩余座位数,折扣。起始日期(Start Date):用来描述某个航班计划开始的日期。结束日期(End Date):用来描述某个航班计划结束的日期。营业网点(Branch):用来描述航空公司的某个分支机构,该机构能使用该系统为顾客提供查询航班和出票的服务。营业网点通过若干台终端机器与航空公司的服务器相连,属性:编号,名称,密码,城市,地址,。航班号(planemodel):由航空公司给航班计划定义的唯一标识号码,该号码由2位英文字符和4位数字组成,2位英文字符是航空公司编码,4位数字是航班编码。例如:CA1202就是一个航班计划的航班号,其中CA代表中国国际航空公司,1202代表航班的编号。出发地(From City):用来描述某个航班计划的起飞城市和机场,所有国内机场均用三个英文字母的代码表示,详情请见附录I(国内机场代码表)。目的地(To City):用来描述某个航班计划的到达城市和机场,所有国内机场均用三个英文字母的代码表示,详情请见附录I(国内机场代码表)。离港时间:(Departure):用来描述某个航班计划的从出发地机场离开的时刻,离港时间一般代表飞机舱门关闭,不再接收乘客的时刻。该时间精确到分钟。到港时间:(Arrival):用来描述某个航班计划到达目的地机场的时间,到港时间一般代表飞机舱门开启,允许乘客下飞机的时刻,该时间精确到分钟。出发日期(Date):用来描述某个航班的出发日期,该日期精确到某一天。班期(Scheduler):用来描述某个航班计划在一周之内哪些天有航班,哪些天没有航班。舱位等级:(Cabin Class):用来描述航班的不同舱位,一般分为三种:头等舱(F),公物舱(C),经济舱(Y)。不同的舱位等级具有不同的机票折扣,详情请参见舱位折扣和机票价格。*实际情况中航空公司定义的舱位等级可能更复杂,在本项目中为简化业务模型,只对舱位等级作上述三种划分。乘客类型:(Passenger type):用来描述乘坐航班的乘客的类型,一般分为三种:成人(A)(age12),儿童(C)(2age=12),婴儿(I)(0=age=2)。不同的乘客类型具有不同的机票折扣,详情请见乘客折扣。在这三种乘客类型中,成人和儿童占用座位,而婴儿不占用座位,婴儿票不能单独出售,一张婴儿票必须凭一张成人票售出。飞机机型:(Airplane Model):用来描述执行某个航班计划的飞机的型号,一般来讲,一个航班计划的各次航班都应该采用同种机型的飞机来执行。不同的飞机型号有不同的航程及各舱座位数。详情请参见附录II民航飞机型号一览表。*实际情况中,各种机型的座位数是不一样的,同一机型还分好几个系列,如B737(波音737)有B737-200、B737-300.B737-900等多个系列,每个系列座位数都不一样。即使是同一型号、同一系列的机型,所属的航空公司不同,座位数也会不同,因为航空公司在购买飞机时,会根据自己的需要要求厂家采用不同的布局,不同的布局会有不同的头等舱、公务舱、经济舱座位数。在本项目中为简化业务模型,我们认为同种型号的飞机各舱座位数是固定的。基准票价:(Full Price):是指某个航班在没有季节折扣时的一张经济舱成人票的价格,该价格作为该航班计划的基准价格,最终机票价格应该在此基础上乘以季节折扣,舱位折扣和乘客类型折扣。季节折扣:(priceoff):航空公司根据不同季节的客流状况调整的航班的折扣,只有经济舱的成人票才享受季节折扣。舱位折扣:(Class Discount):不同舱位在基准价格基础上的价格系数,头等舱为1.5,公务舱为1.3,经济舱为1.0乘客类型折扣:(Passenger Discount):不同乘客类型在基准票价基础上的价格系数,成人为1.0,儿童为0.5,婴儿为0.1。机票订单(Ticket Order):一张成功出票的机票记录,机票价格:(Ticket Price):一张机票的价格,机票价格由以下公式计算:经济舱成人票票价=基准价格*季节折扣其他舱位乘客票价=基准价格*舱位折扣*乘客类型折扣其中抽象出以下数据类型:其总舱位等级和机票类型为枚举类型。图6 类图3.2数据库设计根据数据模型,设计数据库如下:其中航班计划表有一个外间引用飞机机型表,航班表引用航班计划表,订单表引用航班表和网点表。3.2.1飞机机型表(AIRPLANE_MODEL):表1 飞机机型表字段名描述类型约束model机型VARCHAR (20)PRIMARY KEYmaxlength最大航程NUMBER(6)NOT NULLfirst_class_seats头等舱座位数NUMBER(3)NOT NULLbusiness_class_seats公务舱座位数NUMBER(3)NOT NULLeconomy_class_seats经济舱座位数NUMBER(3)NOT NULL3.2.2航班计划表(FLIGHT_SCHEDULER):表2 航班计划表字段名描述类型约束flight_number航班号CHAR(6)PRIMARY KEYstart_date开始日期DATENOT NULLend_date结束日期DATENOT NULLFromaddress出发地机场CHAR(3)REFERENCES airport.airport_codetoaddress目的地机场CHAR(3)REFERENCES airport.airport_codeNOT NULLstarttime离港时间DATENOT NULLendtime到港时间DATENOT NULLairplane执行机型VARCHAR(20)REFERENCES airplane_model.modelNOT NULLscheduler班期CHAR(7)NOT NULLsail_length航程NUMBER(5)NOT NULL3.2.3航班表(FLIGHT):表3 航班表字段名描述类型约束id航班编号NUMBER(8)PRIMARY KEYflight_number航班号CHAR (6)REFERENCES flight_scheduler. flight_numbercalendar出发日期DATENOT NULLfirst_class_remain_seats头等舱剩余座位数NUMBER(3)NOT NULLbusiness_class_remain _seats公务舱剩余座位数NUMBER(3)NOT NULLeconomy_class_remain _seats经济舱剩余座位数NUMBER(3)NOT NULLpriceoff季节折扣NUMBER(4,2)NOT NULL DEFAULT 1.03.2.4营业网点表(BRANCH):表4 营业网点表字段名描述类型约束备注id网点编号NUMBER (4)PRIMARY KEYname网点名称VARCHAR(40)NOT NULLpassword密码VARCHAR (15)NOT NULLaddress地址VARCHAR(50)NOT NULLcity所在城市VARCHAR(10)NOT NULL3.2.5出票记录表(TICKET_ORDER):表5 出票记录表字段名描述类型约束id机票编号NUMBER(10)PRIMARY KEYflight_id航班编号NUMBER(8)NOT NULLREFERENCES FLIGHT.idpassengername乘客姓名VARCHAR(40)NOT NULLpassengerid证件号码VARCHAR(20)NOT NULLCalendar出票日期DATENOT NULLcabinclass舱位等级CHAR(1)NOT NULL CHECK IN(F,C,Y)tickettype乘客类型CHAR(1)NOT NULL CHECK IN(A,C,I)branch_id营业网点编号NUMBER(4)NOT NULL REFERENCES BRANCH.id3.3 DAO接口设计设计了通用的DAO接口,flightDAO用来航班计划,航班的数据访问。BranchDAO用来访问网点数据。TicketOrderDAO用来访问票单数据。可以创建不同的实现类来实现接口,使标准制定和标准实现分离。如从文件中读取数据可以定义FlightDaoFromFile,利用JDBC访问数据可以定义FlightDaoFromJDBC,利用hibernate访问数据可以定义FlightDaoFromHibernate等。3.3.1FlightDAO:package com.tarena.abs.dao;import com.tarena.abs.model.*;import java.util.*;/* * 对航班和航班计划数据访问的接口。 * author zhoukai * */public interface FlightDAO/* * 根据指定出发地,目的地和出发日期在底层数据源中查找 * 得到所有的航班对象的集合。 * param fromAddr 出发地 * param toAddr 目的地 * param date 出发日期 * return 航班集合 */public Set getAllFlights(String fromAddr,String toAddr,Calendar date);/* * 执行出票的操作。 * param ord 订单对象 * return 若出票成功返回true,否则返回false。 */public boolean order(Order ord);/* * 添加指定的航班计划对象。 * param fs 要添加的航班计划对象。 * return 添加成功返回true,否则返回false。 */public boolean addFlightSchedular(FlightSchedular fs);/* * 根据给定的航班编号在底层数据源中删除该航班计划,以及该计划下的所有航班。 * param flightNumber 要删除的航班计划的航班编号。 * return 删除成功返回true,否则返回false。 */public boolean removeFlightSchedular(String flightNumber); * 得到所有航班计划对象 * return */public Set getAllFlightSchedulars();/*添加航班*/public boolean addFlight(Flight fl);3.3.2 BranchDAO:package com.tarena.abs.dao;import com.tarena.abs.model.*;import java.util.*;/* * 对网点数据进行访问的接口。 * author zhoukai * */public interface BranchDAO/* * 根据给定的姓名和密码在底层数据源中查找代理商的纪录, * 若找到,则返回该代理商对象,若没找到或密码错误则返回null。 * param name 网点名称 * param passwd 网点密码密码 * return 找到的网点对象或null */public Branch getBranch(String name,St

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论