admin管理员组

文章数量:1637805

【免费】基于JAVA的机场航班起降与协调管理系统.zip资源-CSDN文库https://download.csdn/download/JW_559/89395025

基于JAVA的机场航班起降与协调管理系统

摘   要

随着社会的发展和科技的进步,信息化时代的到来,各种智能的用电设备也随之而来,到目前为止最原始、最普遍的也就是计算机的使用,计算机软件的出现是计算机科学进步的非常大的转折点,对于计算机软件,现代计算机软件编写程序语言中用途最广泛的莫过于JAVA。在各种编程语言发展的今天,其仍然牢牢占据着计算机语言的核心地位,并衍生出Jsp、JavaEE和Struts2等多种先进的计算机技术,为计算机和软件科学的发展做出了巨大的贡献,也为人类的生产和现代社会的发展做出了非常卓越的贡献,各种基于Java的电脑软件和手机app面向市场开放。在航班飞行安全方面,据不完全统计,航班83.5%的事故发生在航班的起飞和降落阶段,2016年10月11日发生的虹桥机场跑道入侵事件充分说明了在机场调度和机长与塔台沟通的及时和清楚的指令发布对航班飞行安全的重要性,为了安全地帮助地面指挥员实行航班调度中与航班机长交流和指令发布的重大职责,航班起降与协调管理系统就显得尤为重要了,他能实时管理航班信息,及时且清晰地对航班发送指令和收到航班发出的请求,并对请求和指令进行编号,清晰地记录每一项数据。

现在航班调度这一功能大部分还需要地面指挥员人工对机场航班进行调度,只用无线电进行通讯。此航班协调管理系统除了使用无线电外,对塔台和飞机引入了一套清晰的信息查看和指令发布系统,引入了可以看得见的指令发布系统,大大地减少了地面指挥人员指挥和指令发布的失误率,很大程度上规避了安全风险。

本文以技术介绍、机长端需求分析、地面指挥人员端需求分析、系统分析与设计、代码实现几个方面为目标,主要运用了Java(jdk-7u15-windows-i586)技术、mysql-essential-5.1.32-win32、Eclipse IDE for Java DevelopersVersion: Luna Service Release 2 (4.4.2)、apache-tomcat-7.0.77等开发环境与工具;Java、Jsp、JDBC、Servlet和javascript技术以及easyui架包设计实现了机场航班起降与协调管理系统。

关键词: Java;Jsp ;客户端;机场航班;起降与协调管理

Airport flight coordination management system based on JAVA

Abstract

With the development of society and the progress of science and technology, the advent of the information era, a variety of intelligent electrical equipment also followed, by far the most original, the most common is the use of computers, computer software is a very big turning point for the progress of computer science, computer software, computer software programming language in modern the most widely used is JAVA. The development in various programming languages today, it is still firmly occupy the core position in the computer language, and developed the computer technology Jsp, JavaEE and Struts2 and other advanced, and made great contributions to the development of computer science and software, has also made remarkable contributions to the development of human production and modern society. A variety of Java computer software and app for open markets based on mobile phone. In flight safety, according to incomplete statistics, the accident occurred in the flight 83.5% flight takeoff and landing stage occurred in October 11, 2016, Hongqiao airport runway intrusion event fully demonstrates the importance of communication in the airport and the captain and the tower in a timely and clear instructions issued to flight safety, in order to help secure the ground commander the implementation of major responsibilities of flight scheduling and flight captain communication and command is issued, flights and coordination management system is particularly important, he can real-time flight information management, timely and clear to send commands to the flight and flight from the receipt of the request, and the number of requests and instructions, a clear record of each item data.

Now most of the functions of flight scheduling also requires the ground commander to manually schedule flights to the airport, only radio communication. The flight management system in addition to the use of radio, the tower and aircraft introduced a clear view and instruction information release system, introduces the visible instruction release system, greatly reducing the ground commanders and command directives issued by the error rate, largely to avoid security risks.

Based on the technology introduction, analysis, demand analysis, Captain end ground commanders end demand system analysis and design, code implementation aspects as the goal, the main use of the Java (jdk-7u15-windows-i586), mysql-essential-5.1.32-win32 Eclipse IDE for technology, Java DevelopersVersion: Luna Service Release 2 (4.4.2), apache-tomcat-7.0.77 development environment and tools; Java, Jsp JDBC, Servlet and javascript technology and easyUI package design and implementation of Airport Flights taking off and landing and coordination management system.

Keywords: Java; Jsp; client; airport flight; take off and coordinate management

1  绪论

1.1 项目背景

随着社会的发展和科技的进步,信息化时代的到来,各种智能的用电设备也随之而来,到目前为止最原始、最普遍的也就是计算机的使用,计算机软件的出现是计算机科学进步的非常大的转折点,对于计算机软件,现代计算机软件编写程序语言中用途最广泛的莫过于JAVA。在各种编程语言发展的今天,其仍然牢牢占据着计算机语言的核心地位,并衍生出Jsp、JavaEE和Struts2等多种先进的计算机技术,为计算机和软件科学的发展做出了巨大的贡献,也为人类的生产和现代社会的发展做出了非常卓越的贡献,各种基于Java的电脑软件和手机app面向市场开放。在航班飞行安全方面,据不完全统计,航班83.5%的事故发生在航班的起飞和降落阶段,2016年10月11日发生的虹桥机场跑道入侵事件充分说明了在机场调度和机长与塔台沟通的及时和清楚的指令发布对航班飞行安全的重要性,为了安全地帮助地面指挥员实行航班调度的重大职责,航班起降与协调管理系统就显得尤为重要了,他能实时管理航班信息,建立地面指挥员与机长之间的指令通信,这样对于航班飞行安全尤其是在机场及其空域时的航班飞行安全起到了至关重要的作用。

Java语言在现代计算机编程上是核心的且运用范围最广的语言,Java是面向对象的开元的一种计算机语言,运用广泛且灵活,且Java系统稳定,用Java语言进行编程是一种很好的选择。

1.2 项目目的

通过此次项目编写一个基于Java的机场航班起降与协调系统(机场航班调度系统)。通过此系统帮助机场地面指挥人员进行更加明确的航班调度和指令发送,尽可能减少航班调度的错误率,尽可能规避航班调度错误的风险,极大程度地避免空难的发生。减少地面指挥人员指令发布的失误率,与航班建立数据上的可视的指令发布,使航班在可能的无线电干扰的情况下可以正常起降。实时管理航班信息,建立地面指挥员与机长之间的指令通信。

1.3 项目可行性分析

本次项目是设计一个基于JAVA的机场航班起降与协调管理系统。

(1)在经济可行性上来分析的话,该软件是机场内部使用的一个指挥协调软件,属于航空安全投资,本软件开发成本并不高,软件和服务器数据库可以用机场原有的数据库进行开发,比起空难给航空公司造成的损失来说九牛一毛。

(2)在技术可行性上来分析的话,该软件主要运用了Java技术、jQuery-easyui和Mysql数据库技术。Java是到目前来说最稳定的、最可靠的软件开发工具;jQuery-easyui虽然是比较新的前台开发技术,但是他的界面新颖整洁,适合于功能性软件的开发;Mysql数据库也是许多大公司都采用的软件项目开发数据库,不仅稳定而且性能可靠,可以用作本次软件的开发。

(3)在法律可行性上来分析的话,该软件使用的技术都为开源的软件开发工具和语言,虽然Java等开发技术都存在Sun公司的版权问题,但是Java技术是可以免费使用的,没有涉及到法律上的侵权。

(4)在方案可行性上来分析的话,此次软件开发的很大一部分精力都放在了软件的需求分析和设计方面,设计出来的软件可以很好地去实现我们所要完成的软件预先设计的功能。

2  技术介绍

2.1Java技术

2.1.1 Java技术简介

在1995年5月Sun Micro systems公司推出了在计算机和软件领域跨时代的Java程序设计语言,即Java语言,Java语言技术的跨平台、动态的Web、Internet计算迅速被世界各大互联网和计算机软件公司看好,成为了全球运用最广泛的计算机程序设计语言。

Java是支持Internet计算的面向对象程序设计语言,它在C++语言面向对象的基础上增加了许多新的特性,成为了一种更加完善的面向对象的计算机语言。Java语言是高级计算机语言,比C语言更加简单、方便,而且和C++语言相比去除了多继承等的特性,Java语言只有单继承和接口继承等,使程序员写起程序来更加地方便、快捷。Java语言具有一定的健壮性,其安全检查机制是一个非常好的机制,可以及时地发现程序的错误和隐患,以及进行异常处理。Java语言除了本身的安全特性外还提供了防止恶意代码攻击的安全机制,Java语言和它的系统都具有很强的可移植性。

Java程序中的类可以动态地被载入到运行环境中,可以方便地去移植项目。Java的面向对象的特性以及多线程、可移植、高性能和动态性的特征,还有平台兼容的特性导致了Java技术被广泛运用。

2.1.2 Java面向对象的特征

抽象:

抽象就是只选择其中的一部分,不需要了解全部问题,以此来充分表现出当前主题,抽象主要包括过程抽象和数据抽象这两个方法,过程抽象就是利用我们的计算机代码来表现对象的行为特征;而数据抽象就是利用我们的计算机代码来表现对象的特征。它们一个是针对对象的行为特征,一个是针对对象的属性特征。

继承:

继承是一种联结类的层次模型,就是从已经存在的类里面去派生一个新的类,这个新类被成为子类,原来的类被称为父类。Java只支持单继承,是通过extends方法来实现的。Java的单继承不但提高了代码的复用性,同时也使软件的开发效率有了进一步的提高。

封装:

封装就是把过程和数据包装起来,隐藏了类的内部实现机制,对数据的访问只能通过已定义的界面。其实是基于一个基本概念,即被描绘成完全封装对象的现实世界,通过一个被保护的接口来访问对象。从而在不影响使用者使用的前提下,可以改变类的内部结构,并且保护了数据。

多态性:

多态性就是不同类的对象对同一内容作出的不同反应,它包括参数化多态性和包含多态性,而且它具有灵活、抽象、行为共享等的有点,而且也很好地解决了函数的同名问题。

2.2Javascript和jQuery技术

2.2.1 Javascript技术简介

Javascript是一种基于Internet浏览器的脚本语言,他具有一定的网络安全性能,javascript可以和HTML以及CSS和基于Java的服务器语言组成一个完整的具有响应能力和数据处理能力的web网页,他是用来开发客户端的脚本语言,可以实现和用户进行软件前端的交互。Javascript既包括了Java服务器的特点,又包括了HTML的前端开发能力,他是两者的合二为一,他弥补了HTML的部分缺陷,也简化了客户端页面的跳转,但是又不会完全取代HTML和Java在网页和客户端设计中的重要性。

总的来说,Javascript是基于对象和事件驱动的一种具有简单性、安全性、动态性和跨平台性的描述语言,他可以直接实现页面的跳转而不经过服务器的处理,是一种与HTML兼容的脚本语言。

2.2.2jQuery-easyui技术简介

jQuery EasyUI是一组基于jQueryUI插件集合体,它是为了帮助web前端开发程序员创造用户体验更好的、页面更丰富美观的客户端和网页而存在的,他是基于jQuery的一个插件,它有如comboboxmenu以及tree等运用方法简单的UI控件。开发过程简单,运用相当方便,用它书写出来的页面简洁大方,是前端程序员很方便的开发工具。

jQuery EasyUI有以下几个特点:

1、基于jquery用户界面插件的集合;

2、为一些当前用于交互的js应用提供必要的功能;

3、EasyUI支持JavascriptHTML两种渲染方式;

4、支持HTML5(通过data-options属性);

5、开发产品时可节省时间和资源;

6、简单,但很强大;

7、支持扩展,可根据自己的需求扩展控件;

8、EasyUI还存在很多不足,正在通过更新版本来不断完善。

2.3Jsp技术

Jsp的全称是Java Server Pages,是由Sun公司提出的一种动态网页技术标准,它和Java一样具有跨平台性,可以在现在流行的windows和Linux以及其他操作系统上运行。JSP通过Java语言编写的类XML和scriptlets来封装产生动态网页的处理逻辑,其网页还能通过tags访问服务器端的资源应用逻辑。Jsp最大的特点就是将网页的前端设计和后台程序分离,更加清楚和方便地进行网页和客户端的开发。

JSP的工作原理是web服务器在遇到Jsp网页操作和访问发出的页面请求时,首先执行我们所访问和需要相应的程序段然后将结果反馈给客户,Jsp里的Java服务器程序段进行数据库和服务器的响应然后实现动态网页的功能。所以Jsp和serverlet一样是通过服务器的响应来实现网页的动态响应的。

自从Jsp推出后就备受互联网巨头的喜爱和追捧,迅速成为了现在非常流行和应用广泛的服务器端语言,很多互联网公司都建立了兼容Jsp的服务器,比如IBM和Oracle公司。

2.4Mysql

MySQL是一种高性能的数据库管理系统,它的功能强大,具有非常强的灵活性以及多选择的API接口,它的特点就是成本低、性能高、可靠性良好,还有他的健壮性和易用性以及它的快速响应,使他不需要多少人力物力去创建和维护,运用很低廉的成本就可以做出高性能的数据库服务器。它是一个多用户、多线程的SQL数据库服务器,它所支持的SQL语言也成为了现在软件行业应用最广的数据库语言,说起SQL语言,它是一种标准化的语言,运用它来存取信息会非常方便和容易,上手度非常高,非常简单易学。MySQL被广泛运用到一些中小型的企业和网站,并且它的应用范围在逐渐地扩大,他的组织和管理很庞大的信息和基于web的库存查询是MySQL最突出的优点。它还可以减少记录编档的时间、灵活查找序列、灵活输出格式和多个用户同时访问MySQL数据库记录,成为了许多项目数据库的不二之选。

3  需求分析

3.1需求分析

需求分析就是指对要研究的问题进行详细的分析,仔细思考这个的要求,其中主要包括要输入的数据,要得到的结果。在做系统之前,我们必须做的就是需求分析。它主要就是确定开发出来的软件是做什么用的,它可以达到怎样的效果。

在软件的开发过程中,软件需求分析是尤为重要的一个步骤,它的主要工作是描述系统的范围、定义、功能以及性能需求,要用这个软件完成一个什么样的目的,这为了分析软件所有做的工作被成为需求分析。在软件开发的过程中它是至关重要的一个过程,它直接决定着软件设计方案是否会实现他的顾客要求的预期功能,是否会让顾客满意。

在此航班起降与协调管理系统中,参与到的人员有地面指挥人员和机长,地面指挥人员可以进行航班信息浏览、搜索和操作航班信息、发布航班指令、接收航班请求和获取航班动态。

图3-1 地面指挥人员端用例图

机长端具有查看航班资料信息、发送航班请求、接收塔台指令、更新航班状态等功能。

图3-2 机长端用例图

确定准备开发的软件的主要功能和系统的性能好坏是需求分析阶段的主要任务。在过去很长的一段时间中软件开发人员都忽略了软件需求分析的重要性,随着现在软件开发技术的成熟,广大软件公司开始重视这件事情了。如果在需求分析时我们没有认识到客户的正真需要,那么实际上最后设计出来的软件也不可能符合客户的期望,所以重做软件是一件非常耗时耗力的事情,我们要从需求分析开始就将软件项目做得更加精准。由于我做的航班调度系统分为地面指挥和机长两个部分,所以在需求分析方面,我也就这两个部分分开讨论。

3.2 地面指挥端需求分析

3.2.1地面指挥端需求描述

地面指挥端的需求分析:首先用户可以先可以在所设计的软件里浏览航班信息,可以搜索航班信息。可以对因为某种原因需要修改、删除的航班进行信息的修改和删除,对加出来的航班班次进行添加操作,发出航班指令和接收航班请求,还可以接收航班的实时状态。所以整理如下:

1.登录

2.浏览航班信息

3.搜索航班信息

4.操作航班信息

修改航班信息

增加航班信息

删除航班信息

5.发送航班指令

6.接收航班请求

7.修改航班指令

8.获取航班状态

3.2.2用户端用例表

表3-1指挥员登录用例表

用例名称

指挥员登录

功能简述

地面指挥员在上岗工作时需要进行登录以验证身份

前置条件

后置条件

指挥员进入指挥界面

基本流

通过输入指挥员编号、密码,并点击登录进入主界面

扩展流

如果指挥员编号与密码不符合,则提示出错。

表3-2航班信息浏览用例表

用例名称

航班信息浏览

功能简述

指挥员进入塔台指挥系统,对到港和出港航班信息进行浏览

前置条件

后置条件

对起飞航班进行排序、接收航班请求、发送航班指令

基本流

点击航班信息,对航班具体信息进行浏览

表3-3 航班信息编辑用例表

用例名称

航班信息编辑

功能简述

指挥员对航班信息进行编辑,对取消的航班进行删除

前置条件

后置条件

发出航班指令、接收航班请求

基本流

对航班信息进行删除、添加、修改操作

表3-4搜索航班信息用例表

用例名称

搜索航班信息

功能简述

对在港航班和即将到港航班信息进行搜索

前置条件

后置条件

通过搜索航班信息的结果,发送航班指令

基本流

通过输入航班号、降落和起飞时间,实现发送航班指令

表3-5发出航班指令用例表

用例名称

发出航班指令

功能简述

对所选择航班发出起飞、降落或者滑行指令

前置条件

已了解航班信息并选择发送指令的航班架次

后置条件

对航班发出指令,航班接收塔台指令

基本流

塔台发送航班指令

表3-6接收航班请求用例表

用例名称

接收航班请求

功能简述

塔台收到来自航班的起飞、降落或者滑行请求

前置条件

航班对塔台发出请求

后置条件

塔台对航班进行回应

基本流

塔台收到指定航班请求

表3-7航班信息修改用例表

用例名称

航班指令、请求修改

功能简述

在航班命令发送错误时对航班命令进行修改

前置条件

已发送航班指令

后置条件

基本流

对指挥命令进行修改操作

表3-8获取航班动态用例表

用例名称

获取航班动态

功能简述

收到指定航班的航班的已起飞、待起飞、已降落、待降落的状态

前置条件

机长反馈航班动态

后置条件

指挥员发送航班指令

基本流

塔台获取航班反馈的动态

3.3机长端需求分析

3.3.1机长端需求描述

机长端的需求分析:首先机长可以登录查看自己所飞航班的信息,可以对塔台发送航班请求,接收塔台所发送的航班指令,并实时更新和反馈航班状态所以整理如下:

1.登录

  1. 查看航班信息
  2. 接收塔台指令
  3. 发送航班请求
  4. 修改航班请求
  5. 更新航班状态

3.3.2机长端用例表

表3-9机长登录用例表

用例名称

机长登录

功能简述

机长飞行前需要登录系统

前置条件

后置条件

基本流

机长输入编号和密码并点击登录按钮

扩展流

如果机长编号与密码不符合,则提示出错。

表3-10航班资料信息用例表

用例名称

航班资料信息

功能简述

系统显示此次航班资料信息

前置条件

机长登录

后置条件

发送航班请求

基本流

系统显示此次航班飞行区间、起飞和降落时间

表3-11发送航班请求用例表

用例名称

发送航班请求

功能简述

航班在待起飞或待降落时向塔台发送航班请求

前置条件

了解此次航班信息

后置条件

接收塔台指令

基本流

机长发送航班请求指令

表3-12接收塔台指令用例表

用例名称

接收塔台指令

功能简述

塔台对航班发送指令机长接收塔台指令

前置条件

塔台对指定航班发送指令

后置条件

基本流

机长接收塔台指令

表3-13发送航班请求用例表

用例名称

修改航班请求

功能简述

航班在请求信息出错时修改航班请求信息

前置条件

已发送航班请求

后置条件

接收塔台指令

基本流

机长对航班请求信息进行修改

表3-14更新航班状态用例表

用例名称

更新航班状态

功能简述

飞机在完成起飞或降落操作或准备完成起飞和降落操作时向塔台发送航班状态

前置条件

后置条件

塔台发送航班指令

基本流

机长反馈航班的实时状态

3.4机场航班起降与协调管理系统模块图

图3-3 功能模块图

3.5机场起降与协调管理系统E-R图

图3-4 E-R图

4  系统及功能设计

4.1 项目组成

4.1.1 数据库端

数据库端主要把地面指挥员、机长及其相关的各种信息存储在数据库表中,方便服务器对数据的增删改查,从而达到客户端对数据库信息的增删改查。这里用Mysql中的表来记录各种数据。

4.1.2 服务器端

服务器端与客户端交互,把客户端所传来的数据,请求相对应的操作,调用方法,连接数据库对数据库进行相对应地面指挥员及机长想对数据做出的增删改查,从而达到记录数据的效果。

4.1.3 客户端

客户端安装于机场塔台和航班的设备中,与用户直接交互,对于用户的操作向服务器端发出请求,等待服务器响应。服务器成功响应从而达到地面指挥员和机长想得到的信息及做出相应的操作。这里用eclipse中的浏览器代替。

4.2 数据库的分析与设计

数据库是软件进行信息管理的命门,数据库设计是否清晰、简介直接关系到系统开发和维护的成本。数据库分析包括概念结构设计、逻辑结构设计和物理结构设计。在此系统进行需求分析时已经分析并画出了数据库E-R图(概念结构设计),所以这里着重讨论数据库的逻辑结构设计和数据库表的分析和设计(物理结构设计)。

4.2.1 数据库逻辑结构设计

数据库的逻辑结构设计就是把概念结构设计阶段设计好的基本E-R图转换为与选用的 DBMS产品所支持的数据模型相符合的逻辑结构。在进行数据库逻辑的设计时,要确认数据库的逻辑结构,还要保证数据库的完整性和安全性,明确指出数据记录由哪些表项组成,以及数据库数据的类型和取值范围。

在数据库逻辑结构设计中,由我们之前设计的机场航班起降与协调管理系统E-R图可以得出以下关系数据模型(关系中下划实线为主键,下画虚线为外键):

机长(机长编号,姓名,密码);

地面指挥(指挥员编号,姓名,密码);

机长客户端(机长编号);

地面指挥客户端(指挥员编号);

航班信息(航班编号,航班号,飞行区间,起降时间,航班状态,指挥员编号机长编号);

指挥信息(编号,指令、请求编号,指令、请求名称,发出端,指令、请求内容,

航班编号,发布时间,指挥员编号机长编号)。

4.2.2 数据库表的分析

根据对地面指挥员端和机长端的需求分析,首先必须登录才可以进行进一步操作,所以首先需要有指挥员表:t_User;机长表:t_Polit;还需要航班信息表t_Grade;在航班进行实时通信时,还需要航班请求和指令表:t_Standard,整理如下:

  1. 指挥员表:t_User
  2. 机长表:t_Polit
  3. 航班信息表:t_Grade
  4. 航班指挥信息表:t_Standrad

4.2.3 数据库表的设计

  1. 机长表的设计:t_Pilot包括机长编号PoliteId(主键)、机长姓名PoliteName、机长密码PolitePassword。

表4-1 机长表

字段名

字段类型

是否可为空

字段含义

注释

PoliteId

INT

N

机长编号

主键

PoliteName

VARCHAR2(20)

N

机长姓名

PolitePassword

VARCHAR2(20)

N

机长密码

  1. 航班信息表:t_Grade包括航班编号gradeId(主键)、航班号gradeName、起降时间gradeDate、飞行区间gradeLine、航班状态gradeState。

表4-2 航班信息表

字段名

字段类型

是否可为空

字段含义

注释

gradeId

INT

N

航班编号

主键

gradeName

VARCHAR2(20)

N

航班号

gradeLine

VARCHAR2(100)

N

飞行区间

gradeDate

VARCHAR2(100)

N

起降时间

gradeState

VARCHAR(100)

N

航班状态

  1. 航班指挥信息表:t_Standard包括编号;编号staId(主键);指令、请求编号staNo;指令、请求名称staName;指令、请求发出端sex;指令、请求内容staDesc;航班编号gradeId(外键);指令、请求发出时间staDate。

表4-3 航班指挥信息表

字段名

字段类型

是否可为空

字段含义

注释

staId

INT

N

编号

主键

staNo

VARCHAR2(20)

N

指令、请求编号

staName

VARCHAR2(20)

N

指令、请求名称

sex

VARCHAR2(10)

N

发出端

staDesc

VARCHAR2(300)

N

指令、请求内容

gradeId

INT

N

航班编号

外键

staDate

VARCHAR2(50)

N

发布时间

  1. 指挥员表:t_User包括指挥员编号userId(主键)、指挥员姓名userName、指挥员密码userPassword。

表4-4 指挥员表

字段名

字段类型

是否可为空

字段含义

注释

userId

INT

N

指挥员编号

主键

userName

VARCHAR2(20)

N

指挥员姓名

userPassword

VARCHAR2(20)

N

指挥员密码

4.2.4 数据库表的关联

机场航班起降与协调管理系统程序共有四个数据库表,机长表t_Pilot和指挥员表t_User存储机长和指挥员的登录信息数据,不需要关联。而航班指挥信息需要指定是某一航班对应的指挥信息,所以航班信息表t_Grade和航班指挥信息表t_Standard需要建立主外键关联,如图所示:

图4-1 数据库关联图

4.3 项目流程图

本项目分为地面指挥人员端和机长端两个端口来进行描述。

1.地面指挥人员端在未登陆的情况下,不能进入系统主界面,只有在登录后才可以进入指挥员界面,对航班信息进行浏览;然后查看是否有飞机晚点航班信息需要修改、取消航班以及添加航班;之后获取指定航班动态,并发送与接收指令,直至航班离开机场管辖空域脱离管制。对待降落航班下达降落指令和接收航班请求,直至航班降落完成。

图4-2 用户端流程图

2.机长端在登录状态下,才可以进行机长端操作,机长首先查看航班信息,然后更新航班状态,对塔台发送请求并接收塔台指令,并实时更新航班状态,直至航班完成起飞或降落动作。

图4-3 机长端流程图

4.4 指挥员端功能设计

首先建立DynamicWebProject工程:CommandInfoManage;其次建立后台数据库链接和服务器连接,需要建立以下包:

数据库链接:com.java1234.dao;

工程模型:com.java1234model;

工具类:com.java1234.util;

服务器:com.java1234.web;

如图4-4所示

图4-4 指挥员服务器

需要建立与指挥员交会的客户端,如图4-5所示:

图4-5 指挥员客户端

4.5 机长端功能设计

首先建立DynamicWebProject工程:AcceptInfoManage;其次建立后台数据库链接和服务器连接,需要建立以下包:

数据库链接:com.java1234.dao;

工程模型:com.java1234model;

工具类:com.java1234.util;

服务器:com.java1234.web;

如图4-6所示

图4-6 机长系统服务器

需要建立与指挥员交会的客户端,如图4-7所示:

4-7 机长系统客户端

5  项目环境的搭建

5.1 JDK的安装

5.1.1 JDK-7u15的安装

安装JDK-7u15,如图5-1所示:

5-1 安装JDK-7u15

5.1.2 JDK环境变量的配置

配置JDK环境变量,如图5-2,图5-3,图5-4所示:

图5-2 配置JDK环境变量JAVA_HOME

图5-3 配置JDK环境变量CLASSPATH

图5-4 配置JDK环境变量Path

5.2 数据库的安装

5.2.1 数据库Mysql的安装与配置

mysql-essential-5.1.32-win32数据库的安装,如图5-5所示:

图5-5 mysql-essential-5.1.32-win32数据库的安装

mysql-essential-5.1.32-win32数据库的配置,如图5-6所示:

图5-6 mysql-essential-5.1.32-win32数据库的配置

5.2.2 SQLyog10.2的安装与配置

SQLyog10.2是32位Mysql数据库的图形界面直接解压就可以使用了,安装如图5-7所示:

图5-7 SQLyog10.2的安装

5.3 服务器端的安装

5.3.1eclipse LUNA的安装与配置

eclipse LUNA直接解压就可以使用,如图5-8所示:

图5-8 eclipse LUNA的安装

5.3.2 apache-tomcat-7.0.77的安装与配置

apache-tomcat-7.0.77的安装如图5-9所示:

图5-9 apache-tomcat-7.0.77的安装

apache-tomcat-7.0.77安装完成后需要在eclipse LUNA中配置tomcat服务器并启动运行,结果如图5-10所示:

图5-10 apache-tomcat-7.0.77运行结果

6  系统的实现

6.1登录功能的实现

6.1.1 指挥员登陆

打开软件,进入地面指挥登录界面,如图6-1所示:

图6-1 地面指挥登录界面

地面指挥员登录页面用户名为userName,密码为password,登录按钮为submit按钮,重置按钮为button按钮。

当点击登录时,服务器会进行用户名密码的验证,当用户名和密码为空时,显示用户名密码为空;当用户名密码错误时显示用户名密码错误。当验证正确时,跳转到index.jsp页面,运用到了数据传递的doget和dopost的方法。下面列出了doGet和doPost的主要方法,服务器端部分代码如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String userName=request.getParameter("userName");

String password=request.getParameter("password");

request.setAttribute("userName", userName);

request.setAttribute("password", password);

}

      1. 机长登录

打开软件,出现机长登录界面,如图6-2所示:

图6-2 机长登录界面

机长登录页面用户名为userName,密码为password,登录按钮为submit按钮,重置按钮为button按钮。

当点击登录时,服务器会进行用户名密码的验证,当用户名和密码为空时,显示用户名密码为空、当用户名密码错误时显示用户名密码错误。当用户名密码验证正确时,跳转到index.jsp页面服务器端代码与地面指挥端服务器代码一致。

    1. 主界面的实现

6.2.1 地面指挥端主界面的实现

当登录成功后,进入地面指挥端主界面,主界面由功能菜单和含有两个分页的树组成主界面的功能,主界面由jquery-easyui实现。右上角可以读取当前登录的指挥员姓名和现在时间,左侧功能栏可以选择隐藏和显示。当点击树中相应的按钮时,触发服务器响应弹出对应窗口,窗口可以关闭。如图6-3所示:

图6-3 地面指挥系统主界面

左侧树中两个分页运用了jquery获取分页的值,其的跳转代码为:

$(function(){

//数据

var treeData=[{

text:"根",

children:[{

text:"航班信息管理",

attributes:{

url:"gradeInfoManage.jsp"

}

},{

text:"航班指挥信息管理",

attributes:{

url:"standardInfoManage.jsp"

}

}]

}];

右侧从登录页面获取地面指挥员的登录名,运用了jQuery语言,其代码为:

<div style="padding-top:10px;padding-rignt:20px;">当前用户: <font color="red" size="4">${currentUser.userName}</font></div>

若用户想不经过登录直接访问主页面,则是行不通的,因为页面中还加入了权限设置,防止跳过登录直接访问main页面,其代码为:

if(session.getAttribute("currentUser")==null){

response.sendRedirect("index.jsp");

return;

}

在网页中还加入了一个时间控件,其代码为:

 function startTime()     

     {     

         var today=new Date();//定义日期对象     

         var yyyy = today.getFullYear();//通过日期对象的getFullYear()方法返回年      

         var MM = today.getMonth()+1;//通过日期对象的getMonth()方法返回年      

         var dd = today.getDate();//通过日期对象的getDate()方法返回年       

         var hh=today.getHours();//通过日期对象的getHours方法返回小时     

         var mm=today.getMinutes();//通过日期对象的getMinutes方法返回分钟     

         var ss=today.getSeconds();//通过日期对象的getSeconds方法返回秒     

         // 如果分钟或小时的值小于10,则在其值前加0,比如如果时间是下午3点20分9秒的话,则显示15:20:09     

         MM=checkTime(MM);  

         dd=checkTime(dd);  

         mm=checkTime(mm);     

         ss=checkTime(ss);      

         var day; //用于保存星期(getDay()方法得到星期编号)  

         if(today.getDay()==0)   day   =   "星期日 "   

         if(today.getDay()==1)   day   =   "星期一 "   

         if(today.getDay()==2)   day   =   "星期二 "   

         if(today.getDay()==3)   day   =   "星期三 "   

         if(today.getDay()==4)   day   =   "星期四 "   

         if(today.getDay()==5)   day   =   "星期五 "   

         if(today.getDay()==6)   day   =   "星期六 "   

         document.getElementById('nowDateTimeSpan').innerHTML=yyyy+"-"+MM +"-"+ dd +" " + hh+":"+mm+":"+ss+"   " + day;     

         setTimeout('startTime()',1000);//每一秒中重新加载startTime()方法   

     }

      1. 机长端主界面的实现

当登录成功后,进入机长端主界面,主界面由功能菜单和含有两个分页的树组成主界面的功能,主界面由jquery-easyui实现。右上角可以读取当前登录的机长姓名和现在时间,左侧功能栏可以选择隐藏和显示。当点击树中相应的按钮时,触发服务器响应弹出对应窗口,窗口可以关闭,和地面指挥端功能相类似。如图6-4所示:

图6-4 机长系统客户端主界面

    1. 地面指挥管理功能的实现

6.3.1 地面指挥端航班信息管理功能的实现

点击地面指挥端中的航班信息管理按钮,弹出航班信息管理界面,界面可以关闭和刷新。航班可以进行搜索、添加、修改和删除等操作。若地面指挥人员想要查看指定信息的航班,那么输入航班名称即可搜索出对应的航班;若航班加出班次,则地面指挥人员可以点击添加添加航班信息,但是航班状态需要由机长进行填写;若航班班次取消,则点击删除按钮删除要取消的航班,若误点了已经起飞或者降落的航班的删除按钮,则弹出窗口航班正在运行,不能进行删除;若航班修改了架次,则点击修改按钮进行航班信息的修改。如图6-5所示

图6-5 航班信息管理

显示航班信息需要读取数据库,进行搜索操作时也需要读取数据库,其读取数据库的部分代码如下:

public ResultSet gradeList(Connection con,PageBean pageBean,Grade grade)throws Exception{

StringBuffer sb=new StringBuffer("select * from t_grade");

PreparedStatement pstmt=con.prepareStatement(sb.toString().replaceFirst("and", "where"));

return pstmt.executeQuery();

}

public int gradeCount(Connection con,Grade grade)throws Exception{

StringBuffer sb=new StringBuffer("select count(*) as total from t_grade");

}

服务器端需要读取每一条数据的行和页,这里服务器端也运用了doget和dopost方法。

数据操作有添加功能、删除功能和修改功能,如图所示:

图6-6 添加航班信息

图6-7 修改航班信息

图6-8 删除航班信息

在增加、修改航班信息时,航班信息的每个信息都是必输入项,所以设置一个输入字符的验证,用jquery进行验证直接调用easyui语句:required="true"

在执行增加、删除和修改操作时,会在数据库中读取和写入信息以数据删除和添加为例,其代码为:

public int gradeDelete(Connection con,String delIds)throws Exception{

String sql="delete from t_grade where id in("+delIds+")";

PreparedStatement pstmt=con.prepareStatement(sql);

return pstmt.executeUpdate();

}

public int gradeAdd(Connection con,Grade grade)throws Exception{

String sql="insert into t_grade values(null,?,?,?,?)";

PreparedStatement pstmt=con.prepareStatement(sql);

pstmt.setString(1, grade.getGradeName());

pstmt.setString(2, grade.getGradeDate());

pstmt.setString(3, grade.getGradeLine());

pstmt.setString(4, grade.getGradeState());

return pstmt.executeUpdate();

}

6.3.2 地面指挥端航班指挥信息管理功能的实现

从主页面点击航班指挥信息页面,打开航班指挥信息分页,如图6-9所示:

图6-9 航班指挥信息管理

航班指挥信息管理的主要功能是航班指令的发布、航班指令的修改和删除,还有不同的条件查询。我们这里提供了各种不同条件的航班指令信息查询方法方便航班指令信息的查看和管理。当收到航班发出的请求或者遇到情况时,地面指挥端点击发布指令进行指令的发布,在发布指令界面可以向任意一搜航班发送信息。当信息发送错误时,可以点击修改指令进行修改,或者点击删除指令重新对指令进行发布。如图:

图6-10 指令信息发布

图6-11修改指令信息

图6-12 删除指令信息

在显示航班指令信息和执行航班指令信息的操作时,都需要访问数据库或者将修改写入数据库,以指令信息的读取为例,则我们需要如下代码:

public ResultSet standardList(Connection con,PageBean pageBean,Standard standard)throws Exception{

StringBuffer sb=new StringBuffer("select * from t_standard s,t_grade g where s.gradeId=g.id");

return pstmt.executeQuery();

}

public int standardCount(Connection con,Standard standard)throws Exception{

StringBuffer sb=new StringBuffer("select count(*) as total from t_standard s,t_grade g where s.gradeId=g.id");

PreparedStatement pstmt=con.prepareStatement(sb.toString());

ResultSet rs=pstmt.executeQuery();

}

在删除航班信息时,如果航班已经发出指令,则不能删除航班,这就涉及到数据库的关联操作:

public boolean getStandardByGradeId(Connection con,String gradeId)throws Exception{

String sql="select * from t_standard where gradeId=?";

PreparedStatement pstmt=con.prepareStatement(sql);

pstmt.setString(1, gradeId);

ResultSet rs=pstmt.executeQuery();

if(rs.next()){

return true;

}else{

return false;

}

}

    1. 机长端功能的实现

6.4.1 机长端航班信息显示的实现

点击机长端中的航班信息查询按钮,弹出航班信息查询界面,界面可以关闭和刷新。可以查看此次航班的信息,并对航班现在的状态进行实时的更新。在机长想要查看自己所飞航班的信息时,点击下拉框,选择自己将要飞行的航班班次;若航班状态发生改变,则点击更新航班状态按钮对航班状态进行实时更新。如图6-13所示:

图6-13 航班信息查询

显示航班信息需要读取数据库,进行搜索操作时也需要读取数据库,其读取数据库的代码与地面指挥端的代码基本一致。

服务器端需要读取每一条数据的行和页,这里服务器端dopost和doget方法代码也和地面指挥端的代码基本一致。

对指定航班状态进行更新,如图所示:

图6-14 更新航班状态

在更新航班状态时,会在数据库中读取和写入信息,代码为:

public int gradeCount(Connection con,Grade grade)throws Exception{

StringBuffer sb=new StringBuffer("select count(*) as total from t_grade");

if(StringUtil.isNotEmpty(grade.getGradeName())){

sb.append(" and gradeName like '%"+grade.getGradeName()+"%'");

}

PreparedStatement pstmt=con.prepareStatement(sb.toString().replaceFirst("and", "where"));

ResultSet rs=pstmt.executeQuery();

}

public int gradeModify(Connection con,Grade grade)throws Exception{

String sql="update t_grade set gradeName=?,gradeDate=?,gradeLine=?,gradeState=? where id=?";

PreparedStatement pstmt=con.prepareStatement(sql);

pstmt.setString(1, grade.getGradeName());

pstmt.setString(2, grade.getGradeDate());

pstmt.setString(3, grade.getGradeLine());

pstmt.setString(4, grade.getGradeState());

pstmt.setInt(5, grade.getId());

return pstmt.executeUpdate();

}

6.4.2 地面指挥端航班指挥信息管理功能的实现

机长端航班指挥信息管理的主要功能是航班指令的发布、航班指令的修改和删除,还有不同的条件查询。我们这里提供了各种不同条件的航班指令信息查询方法方便航班指令信息的查看和管理。当收到塔台发出的请求或者遇到情况时,机长端点击发布指令进行请求指令的发布,在发布指令界面可以向塔台发送信息。当信息发送错误时,可以点击修改指令进行修改,或者点击删除指令重新对指令进行发布。如图6-15所示:

图6-15 航班指挥信息管理

航班指挥信息管理的主要功能是航班请求的发布、航班请求的修改和删除,还有不同的条件查询,如图:

图6-16 请求信息发布

图6-17修改请求信息

图6-12 删除请求信息

在显示航班指令信息和执行航班指令信息的操作时,都需要访问数据库或者将修改写入数据库,则我们需要如下代码来访问数据库:

public ResultSet standardList(Connection con,PageBean pageBean,Standard standard)throws Exception{

StringBuffer sb=new StringBuffer("select * from t_standard s,t_grade g where s.gradeId=g.id");

PreparedStatement pstmt=con.prepareStatement(sb.toString());

return pstmt.executeQuery();

}

public int standardCount(Connection con,Standard standard)throws Exception{

StringBuffer sb=new StringBuffer("select count(*) as total from t_standard s,t_grade g where s.gradeId=g.id");

PreparedStatement pstmt=con.prepareStatement(sb.toString());

ResultSet rs=pstmt.executeQuery();

}

7  系统的测试与维护

7.1 测试描述

在软件开发的生命周期中,软件测试是无处不在的,它是软件开发整个过程的非常重要的组成部分,软件完成的好坏就是由软件测试决定的。软件测试有静态测试和动态测试,所谓静态测试就是不需要去执行软件,而是直接用人脑的思维去评判软件的好坏;动态测试需要进行软件的运行,来检测软件的好坏。在软件的不同阶段也有着不同的软件测试程序,在软件初步开发阶段有单元测试,在软件开发中后期有集成测试和系统测试,最后在软件验收前有验收测试。从软件工程的算法角度分还有黑盒和白盒测试。

7.2 测试目的

1.确定该系统中的各数据信息和该测试的各个部件。

2.确定该系统能够很好的处理以下的几点功能:

地面指挥员端:

1.指挥员登录

2.航班信息的浏览

3.航班信息的操作

航班的删除

航班的添加

航班信息的修改

航班信息的搜索

4.指挥信息的操作

指挥信息的查询

指令的发布

指令的修改

指令的删除

机长端:

1.机长登录

2.航班信息的查询

3.航班指挥信息的操作

航班指挥信息查询

航班请求的发布

航班请求的删除

航班请求的修改

7.3 测试范围

1.单元测试,是指对软件开发中的最小可运行单元进行动态运行测试和静态测试,单元测试通常被用于测试在特定场景下所被测试的函数行为特征。

2.集成测试是单元测试的更高级阶段,它用来测试每个单元的协同配合情况,测试每个单元集成起来是否可以达到预期的效果。

3.系统测试是对系统整体在开发阶段进行的测试,他是测试所有集成模块所组成的完整系统的功能是否完善,是否与需求分析时确定的系统功能所吻合,是否应该对程序的某一部分进行最后的修改。

4.验收测试主要以用户测试为主,主要测试客户的满意度;或者是软件测试人员陪同客户进行程序的功能和客户满意度测评,是软件开发阶段的最后一个步骤,测试通过则系统就可以交付使用。

7.4 测试用例

表7-1 部分测试用例

功能点

测试用例描述

测试用例操作

预期结果

实际结果

地面指挥人员登录

输入用户名和密码,点击登录按钮

正确的用户名“myx”和密码“123456”

登录成功跳转至主界面

成功跳转至主界面

错误的用户名“myx”和密码“123123”或没有输入

错误处理:提示用户名密码错误或者用户名密码为空

错误处理:成功弹出提示用户名密码错误或者用户名密码为空。

机长登录

输入用户名和密码,点击登录按钮

正确的用户名“polit”和密码“123456”

登录成功跳转至主界面

成功跳转至主界面

错误的用户名“polit”和密码“123123”或没有输入

错误处理:提示用户名密码错误或者用户名密码为空

错误处理:成功弹出提示用户名密码错误或者用户名密码为空。

航班信息查询

输入航班名称,点击查询按钮

输入“MU0001”,点击查询按钮

系统显示查询的MU0001航班信息

系统成功显示MU0001航班信息

航班信息删除

点击删除按钮,点击删除按钮

选中要删除航班,点击删除按钮

系统显示删除成功

系统显示删除成功

未选中航班点击删除

系统显示请选择航班

系统显示请选择航班

选中已经下达指令的航班

系统显示该航班为运行航班,不能删除

系统显示该航班为运行航班,不能删除

航班信息添加

点击添加按钮,输入航班信息,点击添加航班

点击添加航班按钮,在弹出框中输入航班信息,点击确定

系统显示添加成功,并在航班信息栏中出现添加的信息

系统显示添加成功,并在航班信息栏中出现添加的信息

航班信息修改

点击修改按钮,输入需要修改的航班信息,点击修改航班信息

选择航班,点击修改按钮,在弹出框中输入航班信息,点击确定

系统显示修改成功,并在航班信息栏中出现修改后的信息

系统显示修改成功,并在航班信息栏中出现修改后的信息

未选中航班,点击修改按钮

弹出请选择航班

弹出请选择航班

航班指令信息查询

选择或输入航班查询条件,点击查询按钮

在指令名称中输入“请求起飞”,点击查询按钮

系统显示查询的所有发送了请求起飞的航班的指令

系统显示查询的所有发送了请求起飞的航班的指令

航班指令删除

点击删除按钮,点击删除按钮

选中要删除指令,点击删除按钮

系统显示删除成功

系统显示删除成功

未选中指令点击删除

系统显示请选择航班

系统显示请选择航班

航班指挥信息发布

点击发布按钮,输入航班指挥信息,点击确定

点击添加航班指挥信息按钮,在弹出框中输入航班信息,点击确定

系统显示发布成功,并在航班指挥信息栏中出现添加的指令

系统显示发布成功,并在航班指挥信息栏中出现添加的指令

航班指挥信息修改

点击修改按钮,输入需要修改的航班指挥信息,点击修改

选择航班指令,点击修改按钮,在弹出框中输入航班指挥信息,点击确定

系统显示修改成功,并在航班指令信息栏中出现修改后的信息

系统显示修改成功,并在航班指令信息栏中出现修改后的信息

未选中航班,点击修改按钮

弹出请选择航班指令

弹出请选择航班指令

7.5 测试结果分析

本基于JAVA的机场航班起降与协调管理系统,在所有的按钮的测试、输入框和其他功能组建的测试中,顺利实现功能,并且功能相对完善,经过各项测试,本系统基本完成了系统的开发目的,通过了单元测试、集成测试、系统测试及验收测试,基本达到了测试的要求,完成测试,软件可以进行验收。

8  结束语

经过为期两个月的基于JAVA的机场航班起降与协调管理系统的设计与实现,从技术上看,我对Java语言书写服务器和数据库连接的设计有一个更全面的了解,巩固了所学的Java的知识,对Java中出现的一些问题有了更加深刻的理解和相对应的解决办法,对整体架构、编程思想有了更加深刻的理解,对控件的熟练运用也有了一定提高。我通过基于JAVA的机场航班起降与协调管理系统的实现,学会了一种新的前台设计框架,那就是现在比较好用的jquery-easyui。我也明白了要设计一个功能体验较好的程序,首先需要对它做出全面的分析,从需求到设计每一步都要有一个整体框架,还需要对细节进行处理,这样才能保证下一步的顺利进行。在我的设计中就出现了对应的问题: 在软件设计中,没有考虑到绕过登录系统也可以通过网页和篡改代码进行主页面的访问,于是我增加了用户名和密码的返回值验证来进行主页面的权限验证。我没有考虑到在删除时,发出指令的航班不能进行删除,于是我设置了数据库的连带删除功能。

此次毕业设计,是学校对我们四年来学习成果的一次检验,基于JAVA的机场航班起降与协调管理系统的设计与实现基本上自己在大学生活中学习的大部分知识都融入了进去,但是还不够,在许多方面还没有考虑全面,相信自己在进入工作中会更加努力,做出更加完美、用户体验更好的系统。

本文标签: 管理系统航班源码机场论文