五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

基于JAVA的機(jī)場(chǎng)航班起降與協(xié)調(diào)管理系統(tǒng)(論文+PPT+源碼)

2023-01-03 00:53 作者:考研保研直通車  | 我要投稿



















畢業(yè)設(shè)計(jì)(論文)任務(wù)書

第1頁

畢業(yè)設(shè)計(jì)(論文)題目:基于JAVA的機(jī)場(chǎng)航班起降與協(xié)調(diào)管理系統(tǒng)畢業(yè)設(shè)計(jì)(論文)要求及原始數(shù)據(jù)(資料):1.綜述機(jī)場(chǎng)航班調(diào)度對(duì)于飛行安全的背景和意義;2.深入了解機(jī)場(chǎng)航班調(diào)度系統(tǒng)編寫所需的編譯語言(java)、工具和數(shù)據(jù)庫等的相關(guān)技術(shù);3.熟練掌握jdk組件的設(shè)計(jì)、數(shù)據(jù)庫的分析與設(shè)計(jì)、使用eclipse及myeclipse編寫java客戶端及服務(wù)器端程序;4.設(shè)計(jì)并實(shí)現(xiàn)機(jī)場(chǎng)調(diào)度系統(tǒng)客戶端和服務(wù)器端;5.深入分析機(jī)場(chǎng)調(diào)度系統(tǒng)所用到的關(guān)鍵技術(shù)與編寫語言;6.訓(xùn)練檢索文獻(xiàn)資料和利用文獻(xiàn)資料的能力; 7.訓(xùn)練撰寫技術(shù)文檔與學(xué)位論文的能力。

第2頁

畢業(yè)設(shè)計(jì)(論文)主要內(nèi)容:1.綜述機(jī)場(chǎng)航班調(diào)度系統(tǒng)在機(jī)場(chǎng)飛機(jī)起降和協(xié)調(diào)以及飛行安全的作用及其重要的意義;2.了解機(jī)場(chǎng)航班調(diào)度系統(tǒng)的開發(fā)所需的編程語言java、編程工具eclipse及myeclipse和mysql數(shù)據(jù)庫的相關(guān)技術(shù);3.熟悉機(jī)場(chǎng)航班調(diào)度系統(tǒng)的開發(fā)環(huán)境; 4.設(shè)計(jì)并實(shí)現(xiàn)機(jī)場(chǎng)航班調(diào)度系統(tǒng);5. 深入分析機(jī)場(chǎng)航班調(diào)度系統(tǒng)中的關(guān)鍵技術(shù)與所實(shí)現(xiàn)功能的設(shè)計(jì)流程;6.熟練掌握基于java的應(yīng)用程序的編寫;7.設(shè)計(jì)與實(shí)現(xiàn)基于java的機(jī)場(chǎng)航班調(diào)度系統(tǒng)的程序。學(xué)生應(yīng)交出的設(shè)計(jì)文件(論文):1.內(nèi)容完整、層次清晰、敘述流暢、排版規(guī)范的畢業(yè)設(shè)計(jì)論文;2.包括畢業(yè)設(shè)計(jì)論文、源程序等內(nèi)容在內(nèi)的畢業(yè)設(shè)計(jì)電子文檔及其它相關(guān)材料。

第3頁

主要參考文獻(xiàn)(資料):周雪芹. 基于java的軟件開發(fā)全過程實(shí)戰(zhàn)[M]. 北京:科學(xué)出版社,2016.李恩臨.基于Java的面向?qū)ο箝_發(fā)技術(shù)[M].北京:中國(guó)財(cái)富出版社,2016.郭衛(wèi).機(jī)場(chǎng)航班運(yùn)作管理信息系統(tǒng)設(shè)計(jì)與應(yīng)用 [J]. 計(jì)算機(jī)工程, 2005,(13):3.及燕麗,彭小衛(wèi),宋賢群. 一種基于UML類圖的關(guān)系數(shù)據(jù)庫表設(shè)計(jì)方法[A]. 2008.于鳳波.機(jī)場(chǎng)航班信息管理系統(tǒng)的設(shè)計(jì)[J].民航科技,2004,(05):2.羅崢等. 機(jī)場(chǎng)航班信息顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京:北京郵電大學(xué),2006.唐遠(yuǎn)新等.Oracle數(shù)據(jù)庫實(shí)用教程[M].北京:高等教育出版社,2005..李愛萍.系統(tǒng)分析與設(shè)計(jì)[M].北京:人民郵電出版社,2015.Wigglesworth.Java programming[M].Course Technology,1999.James Wightman. Pro SQL Server 2005 Integration Services[B]. Apress, 2008Aart van Harten .Intercontinental airline flight schedule design[C]. Scientific and Technical Documents Publishing House,1998.專業(yè)班級(jí)學(xué)生要求設(shè)計(jì)(論文)工作起止日期指導(dǎo)教師簽字日期教研室主任審查簽字日期系主任批準(zhǔn)簽字日期

基于JAVA的機(jī)場(chǎng)航班起降與協(xié)調(diào)管理系統(tǒng)


摘 要

隨著社會(huì)的發(fā)展和科技的進(jìn)步,信息化時(shí)代的到來,各種智能的用電設(shè)備也隨之而來,到目前為止最原始、最普遍的也就是計(jì)算機(jī)的使用,計(jì)算機(jī)軟件的出現(xiàn)是計(jì)算機(jī)科學(xué)進(jìn)步的非常大的轉(zhuǎn)折點(diǎn),對(duì)于計(jì)算機(jī)軟件,現(xiàn)代計(jì)算機(jī)軟件編寫程序語言中用途最廣泛的莫過于JAVA。在各種編程語言發(fā)展的今天,其仍然牢牢占據(jù)著計(jì)算機(jī)語言的核心地位,并衍生出Jsp、JavaEE和Struts2等多種先進(jìn)的計(jì)算機(jī)技術(shù),為計(jì)算機(jī)和軟件科學(xué)的發(fā)展做出了巨大的貢獻(xiàn),也為人類的生產(chǎn)和現(xiàn)代社會(huì)的發(fā)展做出了非常卓越的貢獻(xiàn),各種基于Java的電腦軟件和手機(jī)app面向市場(chǎng)開放。在航班飛行安全方面,據(jù)不完全統(tǒng)計(jì),航班83.5%的事故發(fā)生在航班的起飛和降落階段,2016年10月11日發(fā)生的虹橋機(jī)場(chǎng)跑道入侵事件充分說明了在機(jī)場(chǎng)調(diào)度和機(jī)長(zhǎng)與塔臺(tái)溝通的及時(shí)和清楚的指令發(fā)布對(duì)航班飛行安全的重要性,為了安全地幫助地面指揮員實(shí)行航班調(diào)度中與航班機(jī)長(zhǎng)交流和指令發(fā)布的重大職責(zé),航班起降與協(xié)調(diào)管理系統(tǒng)就顯得尤為重要了,他能實(shí)時(shí)管理航班信息,及時(shí)且清晰地對(duì)航班發(fā)送指令和收到航班發(fā)出的請(qǐng)求,并對(duì)請(qǐng)求和指令進(jìn)行編號(hào),清晰地記錄每一項(xiàng)數(shù)據(jù)。?

現(xiàn)在航班調(diào)度這一功能大部分還需要地面指揮員人工對(duì)機(jī)場(chǎng)航班進(jìn)行調(diào)度,只用無線電進(jìn)行通訊。此航班協(xié)調(diào)管理系統(tǒng)除了使用無線電外,對(duì)塔臺(tái)和飛機(jī)引入了一套清晰的信息查看和指令發(fā)布系統(tǒng),引入了可以看得見的指令發(fā)布系統(tǒng),大大地減少了地面指揮人員指揮和指令發(fā)布的失誤率,很大程度上規(guī)避了安全風(fēng)險(xiǎn)。

本文以技術(shù)介紹、機(jī)長(zhǎng)端需求分析、地面指揮人員端需求分析、系統(tǒng)分析與設(shè)計(jì)、代碼實(shí)現(xiàn)幾個(gè)方面為目標(biāo),主要運(yùn)用了Java(jdk-7u15-windows-i586)技術(shù)、mysql-essential-5.1.32-win32、Eclipse IDE for Java DevelopersVersion: Luna Service Release 2 (4.4.2)、apache-tomcat-7.0.77等開發(fā)環(huán)境與工具;Java、Jsp、JDBC、Servlet和javascript技術(shù)以及easyui架包設(shè)計(jì)實(shí)現(xiàn)了機(jī)場(chǎng)航班起降與協(xié)調(diào)管理系統(tǒng)。

關(guān)鍵詞: Java;Jsp ;客戶端;機(jī)場(chǎng)航班;起降與協(xié)調(diào)管理

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 緒論11

1.1 項(xiàng)目背景11

1.2 項(xiàng)目目的11

1.3 項(xiàng)目可行性分析2

2 技術(shù)介紹33

2.1 Java技術(shù)3

2.1.1 Java技術(shù)簡(jiǎn)介3

2.1.2 Java面向?qū)ο蟮奶卣?

2.2Javascript和jQuery技術(shù)4

2.1.1 Javascript 簡(jiǎn)介4

2.2.2 jQuery-easyui簡(jiǎn)介4

2.3Jsp技術(shù)5

2.4 Mysql5

3 需求分析6

3.1需求分析6

3.2 地面指揮端需求分析8

3.2.1地面指揮端需求描述8

3.2.2地面指揮端用例表8

3.3機(jī)長(zhǎng)端需求分析11

3.3.1機(jī)長(zhǎng)端需求描述11

3.3.2機(jī)長(zhǎng)端用例表11

3.4航班起降與協(xié)調(diào)系統(tǒng)功能模塊圖13

3.5航班起降與協(xié)調(diào)系統(tǒng)E-R圖13

4 系統(tǒng)及功能設(shè)計(jì)14

4.1 項(xiàng)目組成14

4.1.1 數(shù)據(jù)庫端14

4.1.2 服務(wù)器端14

4.1.3 客戶端14

4.2 數(shù)據(jù)庫的分析與設(shè)計(jì)14

4.2.1 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)14

4.2.2 數(shù)據(jù)庫表的分析15

4.2.3 數(shù)據(jù)庫表的設(shè)計(jì)15

4.2.4 數(shù)據(jù)庫表的關(guān)聯(lián)17

4.3 項(xiàng)目流程圖18

4.4 服務(wù)器端功能設(shè)計(jì)20

4.5 客戶端功能設(shè)計(jì)21

5 項(xiàng)目環(huán)境的搭建22

5.1 JDK的安裝22

5.1.1 JDK-7u15的安裝22

5.1.2 JDK環(huán)境變量的配置22

5.2 數(shù)據(jù)庫的安裝23

5.2.1 Mysql的安裝與配置23

5.2.2 SQLyog10.2的安裝與配置24

5.3 服務(wù)器端和客戶端的安裝25

5.3.1 eclipse LUNA的安裝與配置25

5.3.2 apache-tomcat-7.0.77的安裝與配置26

6 系統(tǒng)的實(shí)現(xiàn)27

6.1 登錄功能的實(shí)現(xiàn)27

6.1.1指揮員登錄27

6.1.2機(jī)長(zhǎng)登錄28

6.2主界面的實(shí)現(xiàn)29

6.2.1 地面指揮端主界面的實(shí)現(xiàn)29

6.2.2 機(jī)長(zhǎng)端主界面的實(shí)現(xiàn)31

6.3 地面指揮管理功能的實(shí)現(xiàn)32

6.3.1 地面指揮端航班信息管理功能的實(shí)現(xiàn)32

6.3.2 地面指揮端航班指揮信息管理功能的實(shí)現(xiàn)35

6.4 機(jī)長(zhǎng)端功能實(shí)現(xiàn)37

6.4.1 機(jī)長(zhǎng)端信息顯示的實(shí)現(xiàn)37

6.4.2地面指揮端航班指揮信息管理功能的實(shí)現(xiàn)39

7 系統(tǒng)的測(cè)試與維護(hù)43

7.1 測(cè)試描述43

7.2 測(cè)試目的43

7.3 測(cè)試范圍44

7.4 測(cè)試用例44

7.5 測(cè)試結(jié)果分析46

8 結(jié)束語47

參考文獻(xiàn)48

致謝49

外文原文50

中文翻譯61

1 緒論

1.1 項(xiàng)目背景

隨著社會(huì)的發(fā)展和科技的進(jìn)步,信息化時(shí)代的到來,各種智能的用電設(shè)備也隨之而來,到目前為止最原始、最普遍的也就是計(jì)算機(jī)的使用,計(jì)算機(jī)軟件的出現(xiàn)是計(jì)算機(jī)科學(xué)進(jìn)步的非常大的轉(zhuǎn)折點(diǎn),對(duì)于計(jì)算機(jī)軟件,現(xiàn)代計(jì)算機(jī)軟件編寫程序語言中用途最廣泛的莫過于JAVA。在各種編程語言發(fā)展的今天,其仍然牢牢占據(jù)著計(jì)算機(jī)語言的核心地位,并衍生出Jsp、JavaEE和Struts2等多種先進(jìn)的計(jì)算機(jī)技術(shù),為計(jì)算機(jī)和軟件科學(xué)的發(fā)展做出了巨大的貢獻(xiàn),也為人類的生產(chǎn)和現(xiàn)代社會(huì)的發(fā)展做出了非常卓越的貢獻(xiàn),各種基于Java的電腦軟件和手機(jī)app面向市場(chǎng)開放。在航班飛行安全方面,據(jù)不完全統(tǒng)計(jì),航班83.5%的事故發(fā)生在航班的起飛和降落階段,2016年10月11日發(fā)生的虹橋機(jī)場(chǎng)跑道入侵事件充分說明了在機(jī)場(chǎng)調(diào)度和機(jī)長(zhǎng)與塔臺(tái)溝通的及時(shí)和清楚的指令發(fā)布對(duì)航班飛行安全的重要性,為了安全地幫助地面指揮員實(shí)行航班調(diào)度的重大職責(zé),航班起降與協(xié)調(diào)管理系統(tǒng)就顯得尤為重要了,他能實(shí)時(shí)管理航班信息,建立地面指揮員與機(jī)長(zhǎng)之間的指令通信,這樣對(duì)于航班飛行安全尤其是在機(jī)場(chǎng)及其空域時(shí)的航班飛行安全起到了至關(guān)重要的作用。

Java語言在現(xiàn)代計(jì)算機(jī)編程上是核心的且運(yùn)用范圍最廣的語言,Java是面向?qū)ο蟮拈_元的一種計(jì)算機(jī)語言,運(yùn)用廣泛且靈活,且Java系統(tǒng)穩(wěn)定,用Java語言進(jìn)行編程是一種很好的選擇。

1.2 項(xiàng)目目的

通過此次項(xiàng)目編寫一個(gè)基于Java的機(jī)場(chǎng)航班起降與協(xié)調(diào)系統(tǒng)(機(jī)場(chǎng)航班調(diào)度系統(tǒng))。通過此系統(tǒng)幫助機(jī)場(chǎng)地面指揮人員進(jìn)行更加明確的航班調(diào)度和指令發(fā)送,盡可能減少航班調(diào)度的錯(cuò)誤率,盡可能規(guī)避航班調(diào)度錯(cuò)誤的風(fēng)險(xiǎn),極大程度地避免空難的發(fā)生。減少地面指揮人員指令發(fā)布的失誤率,與航班建立數(shù)據(jù)上的可視的指令發(fā)布,使航班在可能的無線電干擾的情況下可以正常起降。實(shí)時(shí)管理航班信息,建立地面指揮員與機(jī)長(zhǎng)之間的指令通信。

1.3 項(xiàng)目可行性分析

本次項(xiàng)目是設(shè)計(jì)一個(gè)基于JAVA的機(jī)場(chǎng)航班起降與協(xié)調(diào)管理系統(tǒng)。

(1)在經(jīng)濟(jì)可行性上來分析的話,該軟件是機(jī)場(chǎng)內(nèi)部使用的一個(gè)指揮協(xié)調(diào)軟件,屬于航空安全投資,本軟件開發(fā)成本并不高,軟件和服務(wù)器數(shù)據(jù)庫可以用機(jī)場(chǎng)原有的數(shù)據(jù)庫進(jìn)行開發(fā),比起空難給航空公司造成的損失來說九牛一毛。

(2)在技術(shù)可行性上來分析的話,該軟件主要運(yùn)用了Java技術(shù)、jQuery-easyui和Mysql數(shù)據(jù)庫技術(shù)。Java是到目前來說最穩(wěn)定的、最可靠的軟件開發(fā)工具;jQuery-easyui雖然是比較新的前臺(tái)開發(fā)技術(shù),但是他的界面新穎整潔,適合于功能性軟件的開發(fā);Mysql數(shù)據(jù)庫也是許多大公司都采用的軟件項(xiàng)目開發(fā)數(shù)據(jù)庫,不僅穩(wěn)定而且性能可靠,可以用作本次軟件的開發(fā)。

(3)在法律可行性上來分析的話,該軟件使用的技術(shù)都為開源的軟件開發(fā)工具和語言,雖然Java等開發(fā)技術(shù)都存在Sun公司的版權(quán)問題,但是Java技術(shù)是可以免費(fèi)使用的,沒有涉及到法律上的侵權(quán)。

(4)在方案可行性上來分析的話,此次軟件開發(fā)的很大一部分精力都放在了軟件的需求分析和設(shè)計(jì)方面,設(shè)計(jì)出來的軟件可以很好地去實(shí)現(xiàn)我們所要完成的軟件預(yù)先設(shè)計(jì)的功能。

2 技術(shù)介紹

2.1Java技術(shù)

2.1.1 Java技術(shù)簡(jiǎn)介

在1995年5月Sun Micro systems公司推出了在計(jì)算機(jī)和軟件領(lǐng)域跨時(shí)代的Java程序設(shè)計(jì)語言,即Java語言,Java語言技術(shù)的跨平臺(tái)、動(dòng)態(tài)的Web、Internet計(jì)算迅速被世界各大互聯(lián)網(wǎng)和計(jì)算機(jī)軟件公司看好,成為了全球運(yùn)用最廣泛的計(jì)算機(jī)程序設(shè)計(jì)語言。

Java是支持Internet計(jì)算的面向?qū)ο蟪绦蛟O(shè)計(jì)語言,它在C++語言面向?qū)ο蟮幕A(chǔ)上增加了許多新的特性,成為了一種更加完善的面向?qū)ο蟮挠?jì)算機(jī)語言。Java語言是高級(jí)計(jì)算機(jī)語言,比C語言更加簡(jiǎn)單、方便,而且和C++語言相比去除了多繼承等的特性,Java語言只有單繼承和接口繼承等,使程序員寫起程序來更加地方便、快捷。Java語言具有一定的健壯性,其安全檢查機(jī)制是一個(gè)非常好的機(jī)制,可以及時(shí)地發(fā)現(xiàn)程序的錯(cuò)誤和隱患,以及進(jìn)行異常處理。Java語言除了本身的安全特性外還提供了防止惡意代碼攻擊的安全機(jī)制,Java語言和它的系統(tǒng)都具有很強(qiáng)的可移植性。

Java程序中的類可以動(dòng)態(tài)地被載入到運(yùn)行環(huán)境中,可以方便地去移植項(xiàng)目。Java的面向?qū)ο蟮奶匦砸约岸嗑€程、可移植、高性能和動(dòng)態(tài)性的特征,還有平臺(tái)兼容的特性導(dǎo)致了Java技術(shù)被廣泛運(yùn)用。?

2.1.2 Java面向?qū)ο蟮奶卣?/h1>

抽象:

抽象就是只選擇其中的一部分,不需要了解全部問題,以此來充分表現(xiàn)出當(dāng)前主題,抽象主要包括過程抽象和數(shù)據(jù)抽象這兩個(gè)方法,過程抽象就是利用我們的計(jì)算機(jī)代碼來表現(xiàn)對(duì)象的行為特征;而數(shù)據(jù)抽象就是利用我們的計(jì)算機(jī)代碼來表現(xiàn)對(duì)象的特征。它們一個(gè)是針對(duì)對(duì)象的行為特征,一個(gè)是針對(duì)對(duì)象的屬性特征。

繼承:

繼承是一種聯(lián)結(jié)類的層次模型,就是從已經(jīng)存在的類里面去派生一個(gè)新的類,這個(gè)新類被成為子類,原來的類被稱為父類。Java只支持單繼承,是通過extends方法來實(shí)現(xiàn)的。Java的單繼承不但提高了代碼的復(fù)用性,同時(shí)也使軟件的開發(fā)效率有了進(jìn)一步的提高。

封裝:

封裝就是把過程和數(shù)據(jù)包裝起來,隱藏了類的內(nèi)部實(shí)現(xiàn)機(jī)制,對(duì)數(shù)據(jù)的訪問只能通過已定義的界面。其實(shí)是基于一個(gè)基本概念,即被描繪成完全封裝對(duì)象的現(xiàn)實(shí)世界,通過一個(gè)被保護(hù)的接口來訪問對(duì)象。從而在不影響使用者使用的前提下,可以改變類的內(nèi)部結(jié)構(gòu),并且保護(hù)了數(shù)據(jù)。

多態(tài)性:

多態(tài)性就是不同類的對(duì)象對(duì)同一內(nèi)容作出的不同反應(yīng),它包括參數(shù)化多態(tài)性和包含多態(tài)性,而且它具有靈活、抽象、行為共享等的有點(diǎn),而且也很好地解決了函數(shù)的同名問題。

2.2Javascript和jQuery技術(shù)

2.2.1 Javascript技術(shù)簡(jiǎn)介

Javascript是一種基于Internet瀏覽器的腳本語言,他具有一定的網(wǎng)絡(luò)安全性能,javascript可以和HTML以及CSS和基于Java的服務(wù)器語言組成一個(gè)完整的具有響應(yīng)能力和數(shù)據(jù)處理能力的web網(wǎng)頁,他是用來開發(fā)客戶端的腳本語言,可以實(shí)現(xiàn)和用戶進(jìn)行軟件前端的交互。Javascript既包括了Java服務(wù)器的特點(diǎn),又包括了HTML的前端開發(fā)能力,他是兩者的合二為一,他彌補(bǔ)了HTML的部分缺陷,也簡(jiǎn)化了客戶端頁面的跳轉(zhuǎn),但是又不會(huì)完全取代HTML和Java在網(wǎng)頁和客戶端設(shè)計(jì)中的重要性。

總的來說,Javascript是基于對(duì)象和事件驅(qū)動(dòng)的一種具有簡(jiǎn)單性、安全性、動(dòng)態(tài)性和跨平臺(tái)性的描述語言,他可以直接實(shí)現(xiàn)頁面的跳轉(zhuǎn)而不經(jīng)過服務(wù)器的處理,是一種與HTML兼容的腳本語言。

2.2.2jQuery-easyui技術(shù)簡(jiǎn)介

jQuery EasyUI是一組基于jQuery的UI插件集合體,它是為了幫助web前端開發(fā)程序員創(chuàng)造用戶體驗(yàn)更好的、頁面更豐富美觀的客戶端和網(wǎng)頁而存在的,他是基于jQuery的一個(gè)插件,它有如combobox、menu以及tree等運(yùn)用方法簡(jiǎn)單的UI控件。開發(fā)過程簡(jiǎn)單,運(yùn)用相當(dāng)方便,用它書寫出來的頁面簡(jiǎn)潔大方,是前端程序員很方便的開發(fā)工具。

jQuery EasyUI有以下幾個(gè)特點(diǎn):

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

2、為一些當(dāng)前用于交互的js應(yīng)用提供必要的功能;

3、EasyUI支持Javascript和HTML兩種渲染方式;

4、支持HTML5(通過data-options屬性);

5、開發(fā)產(chǎn)品時(shí)可節(jié)省時(shí)間和資源;

6、簡(jiǎn)單,但很強(qiáng)大;

7、支持?jǐn)U展,可根據(jù)自己的需求擴(kuò)展控件;

8、EasyUI還存在很多不足,正在通過更新版本來不斷完善。

2.3Jsp技術(shù)

Jsp的全稱是Java Server Pages,是由Sun公司提出的一種動(dòng)態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn),它和Java一樣具有跨平臺(tái)性,可以在現(xiàn)在流行的windows和Linux以及其他操作系統(tǒng)上運(yùn)行。JSP通過Java語言編寫的類XML和scriptlets來封裝產(chǎn)生動(dòng)態(tài)網(wǎng)頁的處理邏輯,其網(wǎng)頁還能通過tags訪問服務(wù)器端的資源應(yīng)用邏輯。Jsp最大的特點(diǎn)就是將網(wǎng)頁的前端設(shè)計(jì)和后臺(tái)程序分離,更加清楚和方便地進(jìn)行網(wǎng)頁和客戶端的開發(fā)。

JSP的工作原理是web服務(wù)器在遇到Jsp網(wǎng)頁操作和訪問發(fā)出的頁面請(qǐng)求時(shí),首先執(zhí)行我們所訪問和需要相應(yīng)的程序段然后將結(jié)果反饋給客戶,Jsp里的Java服務(wù)器程序段進(jìn)行數(shù)據(jù)庫和服務(wù)器的響應(yīng)然后實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁的功能。所以Jsp和serverlet一樣是通過服務(wù)器的響應(yīng)來實(shí)現(xiàn)網(wǎng)頁的動(dòng)態(tài)響應(yīng)的。

自從Jsp推出后就備受互聯(lián)網(wǎng)巨頭的喜愛和追捧,迅速成為了現(xiàn)在非常流行和應(yīng)用廣泛的服務(wù)器端語言,很多互聯(lián)網(wǎng)公司都建立了兼容Jsp的服務(wù)器,比如IBM和Oracle公司。

2.4Mysql

MySQL是一種高性能的數(shù)據(jù)庫管理系統(tǒng),它的功能強(qiáng)大,具有非常強(qiáng)的靈活性以及多選擇的API接口,它的特點(diǎn)就是成本低、性能高、可靠性良好,還有他的健壯性和易用性以及它的快速響應(yīng),使他不需要多少人力物力去創(chuàng)建和維護(hù),運(yùn)用很低廉的成本就可以做出高性能的數(shù)據(jù)庫服務(wù)器。它是一個(gè)多用戶、多線程的SQL數(shù)據(jù)庫服務(wù)器,它所支持的SQL語言也成為了現(xiàn)在軟件行業(yè)應(yīng)用最廣的數(shù)據(jù)庫語言,說起SQL語言,它是一種標(biāo)準(zhǔn)化的語言,運(yùn)用它來存取信息會(huì)非常方便和容易,上手度非常高,非常簡(jiǎn)單易學(xué)。MySQL被廣泛運(yùn)用到一些中小型的企業(yè)和網(wǎng)站,并且它的應(yīng)用范圍在逐漸地?cái)U(kuò)大,他的組織和管理很龐大的信息和基于web的庫存查詢是MySQL最突出的優(yōu)點(diǎn)。它還可以減少記錄編檔的時(shí)間、靈活查找序列、靈活輸出格式和多個(gè)用戶同時(shí)訪問MySQL數(shù)據(jù)庫記錄,成為了許多項(xiàng)目數(shù)據(jù)庫的不二之選。

3 需求分析

3.1需求分析

需求分析就是指對(duì)要研究的問題進(jìn)行詳細(xì)的分析,仔細(xì)思考這個(gè)的要求,其中主要包括要輸入的數(shù)據(jù),要得到的結(jié)果。在做系統(tǒng)之前,我們必須做的就是需求分析。它主要就是確定開發(fā)出來的軟件是做什么用的,它可以達(dá)到怎樣的效果。

在軟件的開發(fā)過程中,軟件需求分析是尤為重要的一個(gè)步驟,它的主要工作是描述系統(tǒng)的范圍、定義、功能以及性能需求,要用這個(gè)軟件完成一個(gè)什么樣的目的,這為了分析軟件所有做的工作被成為需求分析。在軟件開發(fā)的過程中它是至關(guān)重要的一個(gè)過程,它直接決定著軟件設(shè)計(jì)方案是否會(huì)實(shí)現(xiàn)他的顧客要求的預(yù)期功能,是否會(huì)讓顧客滿意。

在此航班起降與協(xié)調(diào)管理系統(tǒng)中,參與到的人員有地面指揮人員和機(jī)長(zhǎng),地面指揮人員可以進(jìn)行航班信息瀏覽、搜索和操作航班信息、發(fā)布航班指令、接收航班請(qǐng)求和獲取航班動(dòng)態(tài)。

圖3-1 地面指揮人員端用例圖

機(jī)長(zhǎng)端具有查看航班資料信息、發(fā)送航班請(qǐng)求、接收塔臺(tái)指令、更新航班狀態(tài)等功能。

圖3-2 機(jī)長(zhǎng)端用例圖

確定準(zhǔn)備開發(fā)的軟件的主要功能和系統(tǒng)的性能好壞是需求分析階段的主要任務(wù)。在過去很長(zhǎng)的一段時(shí)間中軟件開發(fā)人員都忽略了軟件需求分析的重要性,隨著現(xiàn)在軟件開發(fā)技術(shù)的成熟,廣大軟件公司開始重視這件事情了。如果在需求分析時(shí)我們沒有認(rèn)識(shí)到客戶的正真需要,那么實(shí)際上最后設(shè)計(jì)出來的軟件也不可能符合客戶的期望,所以重做軟件是一件非常耗時(shí)耗力的事情,我們要從需求分析開始就將軟件項(xiàng)目做得更加精準(zhǔn)。由于我做的航班調(diào)度系統(tǒng)分為地面指揮和機(jī)長(zhǎng)兩個(gè)部分,所以在需求分析方面,我也就這兩個(gè)部分分開討論。

3.2 地面指揮端需求分析

3.2.1地面指揮端需求描述

地面指揮端的需求分析:首先用戶可以先可以在所設(shè)計(jì)的軟件里瀏覽航班信息,可以搜索航班信息。可以對(duì)因?yàn)槟撤N原因需要修改、刪除的航班進(jìn)行信息的修改和刪除,對(duì)加出來的航班班次進(jìn)行添加操作,發(fā)出航班指令和接收航班請(qǐng)求,還可以接收航班的實(shí)時(shí)狀態(tài)。所以整理如下:

1.登錄

2.瀏覽航班信息

3.搜索航班信息

4.操作航班信息

修改航班信息

增加航班信息

刪除航班信息

5.發(fā)送航班指令

6.接收航班請(qǐng)求

7.修改航班指令

8.獲取航班狀態(tài)

3.2.2用戶端用例表

表3-1指揮員登錄用例表

用例名稱指揮員登錄功能簡(jiǎn)述地面指揮員在上崗工作時(shí)需要進(jìn)行登錄以驗(yàn)證身份前置條件無后置條件指揮員進(jìn)入指揮界面基本流通過輸入指揮員編號(hào)、密碼,并點(diǎn)擊登錄進(jìn)入主界面擴(kuò)展流如果指揮員編號(hào)與密碼不符合,則提示出錯(cuò)。

表3-2航班信息瀏覽用例表

用例名稱航班信息瀏覽功能簡(jiǎn)述指揮員進(jìn)入塔臺(tái)指揮系統(tǒng),對(duì)到港和出港航班信息進(jìn)行瀏覽前置條件無后置條件對(duì)起飛航班進(jìn)行排序、接收航班請(qǐng)求、發(fā)送航班指令基本流點(diǎn)擊航班信息,對(duì)航班具體信息進(jìn)行瀏覽

表3-3 航班信息編輯用例表

用例名稱航班信息編輯功能簡(jiǎn)述指揮員對(duì)航班信息進(jìn)行編輯,對(duì)取消的航班進(jìn)行刪除前置條件無后置條件發(fā)出航班指令、接收航班請(qǐng)求基本流對(duì)航班信息進(jìn)行刪除、添加、修改操作

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

用例名稱搜索航班信息功能簡(jiǎn)述對(duì)在港航班和即將到港航班信息進(jìn)行搜索前置條件無后置條件通過搜索航班信息的結(jié)果,發(fā)送航班指令基本流通過輸入航班號(hào)、降落和起飛時(shí)間,實(shí)現(xiàn)發(fā)送航班指令

表3-5發(fā)出航班指令用例表

用例名稱發(fā)出航班指令功能簡(jiǎn)述對(duì)所選擇航班發(fā)出起飛、降落或者滑行指令前置條件已了解航班信息并選擇發(fā)送指令的航班架次后置條件對(duì)航班發(fā)出指令,航班接收塔臺(tái)指令基本流塔臺(tái)發(fā)送航班指令

表3-6接收航班請(qǐng)求用例表

用例名稱接收航班請(qǐng)求功能簡(jiǎn)述塔臺(tái)收到來自航班的起飛、降落或者滑行請(qǐng)求前置條件航班對(duì)塔臺(tái)發(fā)出請(qǐng)求后置條件塔臺(tái)對(duì)航班進(jìn)行回應(yīng)基本流塔臺(tái)收到指定航班請(qǐng)求

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

用例名稱航班指令、請(qǐng)求修改功能簡(jiǎn)述在航班命令發(fā)送錯(cuò)誤時(shí)對(duì)航班命令進(jìn)行修改前置條件已發(fā)送航班指令后置條件無基本流對(duì)指揮命令進(jìn)行修改操作

表3-8獲取航班動(dòng)態(tài)用例表

用例名稱獲取航班動(dòng)態(tài)功能簡(jiǎn)述收到指定航班的航班的已起飛、待起飛、已降落、待降落的狀態(tài)前置條件機(jī)長(zhǎng)反饋航班動(dòng)態(tài)后置條件指揮員發(fā)送航班指令基本流塔臺(tái)獲取航班反饋的動(dòng)態(tài)

3.3機(jī)長(zhǎng)端需求分析

3.3.1機(jī)長(zhǎng)端需求描述

機(jī)長(zhǎng)端的需求分析:首先機(jī)長(zhǎng)可以登錄查看自己所飛航班的信息,可以對(duì)塔臺(tái)發(fā)送航班請(qǐng)求,接收塔臺(tái)所發(fā)送的航班指令,并實(shí)時(shí)更新和反饋航班狀態(tài)所以整理如下:

1.登錄

  1. 查看航班信息

  2. 接收塔臺(tái)指令

  3. 發(fā)送航班請(qǐng)求

  4. 修改航班請(qǐng)求

  5. 更新航班狀態(tài)

3.3.2機(jī)長(zhǎng)端用例表

表3-9機(jī)長(zhǎng)登錄用例表

用例名稱機(jī)長(zhǎng)登錄功能簡(jiǎn)述機(jī)長(zhǎng)飛行前需要登錄系統(tǒng)前置條件無后置條件無基本流機(jī)長(zhǎng)輸入編號(hào)和密碼并點(diǎn)擊登錄按鈕擴(kuò)展流如果機(jī)長(zhǎng)編號(hào)與密碼不符合,則提示出錯(cuò)。

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

用例名稱航班資料信息功能簡(jiǎn)述系統(tǒng)顯示此次航班資料信息前置條件機(jī)長(zhǎng)登錄后置條件發(fā)送航班請(qǐng)求基本流系統(tǒng)顯示此次航班飛行區(qū)間、起飛和降落時(shí)間

表3-11發(fā)送航班請(qǐng)求用例表

用例名稱發(fā)送航班請(qǐng)求功能簡(jiǎn)述航班在待起飛或待降落時(shí)向塔臺(tái)發(fā)送航班請(qǐng)求前置條件了解此次航班信息后置條件接收塔臺(tái)指令基本流機(jī)長(zhǎng)發(fā)送航班請(qǐng)求指令

表3-12接收塔臺(tái)指令用例表

用例名稱接收塔臺(tái)指令功能簡(jiǎn)述塔臺(tái)對(duì)航班發(fā)送指令機(jī)長(zhǎng)接收塔臺(tái)指令前置條件塔臺(tái)對(duì)指定航班發(fā)送指令后置條件無基本流機(jī)長(zhǎng)接收塔臺(tái)指令

表3-13發(fā)送航班請(qǐng)求用例表

用例名稱修改航班請(qǐng)求功能簡(jiǎn)述航班在請(qǐng)求信息出錯(cuò)時(shí)修改航班請(qǐng)求信息前置條件已發(fā)送航班請(qǐng)求后置條件接收塔臺(tái)指令基本流機(jī)長(zhǎng)對(duì)航班請(qǐng)求信息進(jìn)行修改

表3-14更新航班狀態(tài)用例表

用例名稱更新航班狀態(tài)功能簡(jiǎn)述飛機(jī)在完成起飛或降落操作或準(zhǔn)備完成起飛和降落操作時(shí)向塔臺(tái)發(fā)送航班狀態(tài)前置條件無后置條件塔臺(tái)發(fā)送航班指令基本流機(jī)長(zhǎng)反饋航班的實(shí)時(shí)狀態(tài)

3.4機(jī)場(chǎng)航班起降與協(xié)調(diào)管理系統(tǒng)模塊圖

圖3-3 功能模塊圖

3.5機(jī)場(chǎng)起降與協(xié)調(diào)管理系統(tǒng)E-R圖

圖3-4 E-R圖

4 系統(tǒng)及功能設(shè)計(jì)

4.1 項(xiàng)目組成

4.1.1 數(shù)據(jù)庫端

數(shù)據(jù)庫端主要把地面指揮員、機(jī)長(zhǎng)及其相關(guān)的各種信息存儲(chǔ)在數(shù)據(jù)庫表中,方便服務(wù)器對(duì)數(shù)據(jù)的增刪改查,從而達(dá)到客戶端對(duì)數(shù)據(jù)庫信息的增刪改查。這里用Mysql中的表來記錄各種數(shù)據(jù)。

4.1.2 服務(wù)器端

服務(wù)器端與客戶端交互,把客戶端所傳來的數(shù)據(jù),請(qǐng)求相對(duì)應(yīng)的操作,調(diào)用方法,連接數(shù)據(jù)庫對(duì)數(shù)據(jù)庫進(jìn)行相對(duì)應(yīng)地面指揮員及機(jī)長(zhǎng)想對(duì)數(shù)據(jù)做出的增刪改查,從而達(dá)到記錄數(shù)據(jù)的效果。

4.1.3 客戶端

客戶端安裝于機(jī)場(chǎng)塔臺(tái)和航班的設(shè)備中,與用戶直接交互,對(duì)于用戶的操作向服務(wù)器端發(fā)出請(qǐng)求,等待服務(wù)器響應(yīng)。服務(wù)器成功響應(yīng)從而達(dá)到地面指揮員和機(jī)長(zhǎng)想得到的信息及做出相應(yīng)的操作。這里用eclipse中的瀏覽器代替。

4.2 數(shù)據(jù)庫的分析與設(shè)計(jì)

數(shù)據(jù)庫是軟件進(jìn)行信息管理的命門,數(shù)據(jù)庫設(shè)計(jì)是否清晰、簡(jiǎn)介直接關(guān)系到系統(tǒng)開發(fā)和維護(hù)的成本。數(shù)據(jù)庫分析包括概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)和物理結(jié)構(gòu)設(shè)計(jì)。在此系統(tǒng)進(jìn)行需求分析時(shí)已經(jīng)分析并畫出了數(shù)據(jù)庫E-R圖(概念結(jié)構(gòu)設(shè)計(jì)),所以這里著重討論數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計(jì)和數(shù)據(jù)庫表的分析和設(shè)計(jì)(物理結(jié)構(gòu)設(shè)計(jì))。

4.2.1 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)

數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計(jì)就是把概念結(jié)構(gòu)設(shè)計(jì)階段設(shè)計(jì)好的基本E-R圖轉(zhuǎn)換為與選用的 DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。在進(jìn)行數(shù)據(jù)庫邏輯的設(shè)計(jì)時(shí),要確認(rèn)數(shù)據(jù)庫的邏輯結(jié)構(gòu),還要保證數(shù)據(jù)庫的完整性和安全性,明確指出數(shù)據(jù)記錄由哪些表項(xiàng)組成,以及數(shù)據(jù)庫數(shù)據(jù)的類型和取值范圍。

在數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)中,由我們之前設(shè)計(jì)的機(jī)場(chǎng)航班起降與協(xié)調(diào)管理系統(tǒng)E-R圖可以得出以下關(guān)系數(shù)據(jù)模型(關(guān)系中下劃實(shí)線為主鍵,下畫虛線為外鍵):

機(jī)長(zhǎng)(機(jī)長(zhǎng)編號(hào),姓名,密碼);

地面指揮(指揮員編號(hào),姓名,密碼);

機(jī)長(zhǎng)客戶端(機(jī)長(zhǎng)編號(hào));

地面指揮客戶端(指揮員編號(hào));

航班信息(航班編號(hào),航班號(hào),飛行區(qū)間,起降時(shí)間,航班狀態(tài),指揮員編號(hào),機(jī)長(zhǎng)編號(hào));

指揮信息(編號(hào),指令、請(qǐng)求編號(hào),指令、請(qǐng)求名稱,發(fā)出端,指令、請(qǐng)求內(nèi)容,

航班編號(hào),發(fā)布時(shí)間,指揮員編號(hào),機(jī)長(zhǎng)編號(hào))。

4.2.2 數(shù)據(jù)庫表的分析

根據(jù)對(duì)地面指揮員端和機(jī)長(zhǎng)端的需求分析,首先必須登錄才可以進(jìn)行進(jìn)一步操作,所以首先需要有指揮員表:t_User;機(jī)長(zhǎng)表:t_Polit;還需要航班信息表t_Grade;在航班進(jìn)行實(shí)時(shí)通信時(shí),還需要航班請(qǐng)求和指令表:t_Standard,整理如下:

  1. 指揮員表:t_User

  2. 機(jī)長(zhǎng)表:t_Polit

  3. 航班信息表:t_Grade

  4. 航班指揮信息表:t_Standrad

4.2.3 數(shù)據(jù)庫表的設(shè)計(jì)

  1. 機(jī)長(zhǎng)表的設(shè)計(jì):t_Pilot包括機(jī)長(zhǎng)編號(hào)PoliteId(主鍵)、機(jī)長(zhǎng)姓名PoliteName、機(jī)長(zhǎng)密碼PolitePassword。
    表4-1 機(jī)長(zhǎng)表

字段名字段類型是否可為空字段含義注釋PoliteIdINTN機(jī)長(zhǎng)編號(hào)主鍵PoliteNameVARCHAR2(20)N機(jī)長(zhǎng)姓名PolitePasswordVARCHAR2(20)N機(jī)長(zhǎng)密碼

  1. 航班信息表:t_Grade包括航班編號(hào)gradeId(主鍵)、航班號(hào)gradeName、起降時(shí)間gradeDate、飛行區(qū)間gradeLine、航班狀態(tài)gradeState。
    表4-2 航班信息表

字段名字段類型是否可為空字段含義注釋gradeIdINTN航班編號(hào)主鍵gradeNameVARCHAR2(20)N航班號(hào)gradeLineVARCHAR2(100)N飛行區(qū)間gradeDateVARCHAR2(100)N起降時(shí)間gradeStateVARCHAR(100)N航班狀態(tài)

  1. 航班指揮信息表:t_Standard包括編號(hào);編號(hào)staId(主鍵);指令、請(qǐng)求編號(hào)staNo;指令、請(qǐng)求名稱staName;指令、請(qǐng)求發(fā)出端sex;指令、請(qǐng)求內(nèi)容staDesc;航班編號(hào)gradeId(外鍵);指令、請(qǐng)求發(fā)出時(shí)間staDate。
    表4-3 航班指揮信息表

字段名字段類型是否可為空字段含義注釋staIdINTN編號(hào)主鍵staNoVARCHAR2(20)N指令、請(qǐng)求編號(hào)staNameVARCHAR2(20)N指令、請(qǐng)求名稱sexVARCHAR2(10)N發(fā)出端staDescVARCHAR2(300)N指令、請(qǐng)求內(nèi)容gradeIdINTN航班編號(hào)外鍵staDateVARCHAR2(50)N發(fā)布時(shí)間

  1. 指揮員表:t_User包括指揮員編號(hào)userId(主鍵)、指揮員姓名userName、指揮員密碼userPassword。

表4-4 指揮員表

字段名字段類型是否可為空字段含義注釋userIdINTN指揮員編號(hào)主鍵userNameVARCHAR2(20)N指揮員姓名userPasswordVARCHAR2(20)N指揮員密碼

4.2.4 數(shù)據(jù)庫表的關(guān)聯(lián)

機(jī)場(chǎng)航班起降與協(xié)調(diào)管理系統(tǒng)程序共有四個(gè)數(shù)據(jù)庫表,機(jī)長(zhǎng)表t_Pilot和指揮員表t_User存儲(chǔ)機(jī)長(zhǎng)和指揮員的登錄信息數(shù)據(jù),不需要關(guān)聯(lián)。而航班指揮信息需要指定是某一航班對(duì)應(yīng)的指揮信息,所以航班信息表t_Grade和航班指揮信息表t_Standard需要建立主外鍵關(guān)聯(lián),如圖所示:

圖4-1 數(shù)據(jù)庫關(guān)聯(lián)圖

4.3 項(xiàng)目流程圖

本項(xiàng)目分為地面指揮人員端和機(jī)長(zhǎng)端兩個(gè)端口來進(jìn)行描述。

1.地面指揮人員端在未登陸的情況下,不能進(jìn)入系統(tǒng)主界面,只有在登錄后才可以進(jìn)入指揮員界面,對(duì)航班信息進(jìn)行瀏覽;然后查看是否有飛機(jī)晚點(diǎn)航班信息需要修改、取消航班以及添加航班;之后獲取指定航班動(dòng)態(tài),并發(fā)送與接收指令,直至航班離開機(jī)場(chǎng)管轄空域脫離管制。對(duì)待降落航班下達(dá)降落指令和接收航班請(qǐng)求,直至航班降落完成。

圖4-2 用戶端流程圖

2.機(jī)長(zhǎng)端在登錄狀態(tài)下,才可以進(jìn)行機(jī)長(zhǎng)端操作,機(jī)長(zhǎng)首先查看航班信息,然后更新航班狀態(tài),對(duì)塔臺(tái)發(fā)送請(qǐng)求并接收塔臺(tái)指令,并實(shí)時(shí)更新航班狀態(tài),直至航班完成起飛或降落動(dòng)作。?

圖4-3 機(jī)長(zhǎng)端流程圖

4.4 指揮員端功能設(shè)計(jì)

首先建立DynamicWebProject工程:CommandInfoManage;其次建立后臺(tái)數(shù)據(jù)庫鏈接和服務(wù)器連接,需要建立以下包:

數(shù)據(jù)庫鏈接:com.java1234.dao;

工程模型:com.java1234model;

工具類:com.java1234.util;

服務(wù)器:com.java1234.web;

如圖4-4所示

圖4-4 指揮員服務(wù)器

需要建立與指揮員交會(huì)的客戶端,如圖4-5所示:

圖4-5 指揮員客戶端

4.5 機(jī)長(zhǎng)端功能設(shè)計(jì)

首先建立DynamicWebProject工程:AcceptInfoManage;其次建立后臺(tái)數(shù)據(jù)庫鏈接和服務(wù)器連接,需要建立以下包:

數(shù)據(jù)庫鏈接:com.java1234.dao;

工程模型:com.java1234model;

工具類:com.java1234.util;

服務(wù)器:com.java1234.web;

如圖4-6所示

圖4-6 機(jī)長(zhǎng)系統(tǒng)服務(wù)器

需要建立與指揮員交會(huì)的客戶端,如圖4-7所示:

圖4-7 機(jī)長(zhǎng)系統(tǒng)客戶端

5 項(xiàng)目環(huán)境的搭建

5.1 JDK的安裝

5.1.1 JDK-7u15的安裝

安裝JDK-7u15,如圖5-1所示:

圖5-1 安裝JDK-7u15

5.1.2 JDK環(huán)境變量的配置

配置JDK環(huán)境變量,如圖5-2,圖5-3,圖5-4所示:

圖5-2 配置JDK環(huán)境變量JAVA_HOME

圖5-3 配置JDK環(huán)境變量CLASSPATH

圖5-4 配置JDK環(huán)境變量Path

5.2 數(shù)據(jù)庫的安裝

5.2.1 數(shù)據(jù)庫Mysql的安裝與配置

mysql-essential-5.1.32-win32數(shù)據(jù)庫的安裝,如圖5-5所示:

圖5-5 mysql-essential-5.1.32-win32數(shù)據(jù)庫的安裝

mysql-essential-5.1.32-win32數(shù)據(jù)庫的配置,如圖5-6所示:

圖5-6 mysql-essential-5.1.32-win32數(shù)據(jù)庫的配置

5.2.2 SQLyog10.2的安裝與配置

SQLyog10.2是32位Mysql數(shù)據(jù)庫的圖形界面直接解壓就可以使用了,安裝如圖5-7所示:

圖5-7 SQLyog10.2的安裝

5.3 服務(wù)器端的安裝

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服務(wù)器并啟動(dòng)運(yùn)行,結(jié)果如圖5-10所示:

圖5-10 apache-tomcat-7.0.77運(yùn)行結(jié)果

6 系統(tǒng)的實(shí)現(xiàn)

6.1登錄功能的實(shí)現(xiàn)

6.1.1 指揮員登陸

打開軟件,進(jìn)入地面指揮登錄界面,如圖6-1所示:

圖6-1 地面指揮登錄界面

地面指揮員登錄頁面用戶名為userName,密碼為password,登錄按鈕為submit按鈕,重置按鈕為button按鈕。

當(dāng)點(diǎn)擊登錄時(shí),服務(wù)器會(huì)進(jìn)行用戶名密碼的驗(yàn)證,當(dāng)用戶名和密碼為空時(shí),顯示用戶名密碼為空;當(dāng)用戶名密碼錯(cuò)誤時(shí)顯示用戶名密碼錯(cuò)誤。當(dāng)驗(yàn)證正確時(shí),跳轉(zhuǎn)到index.jsp頁面,運(yùn)用到了數(shù)據(jù)傳遞的doget和dopost的方法。下面列出了doGet和doPost的主要方法,服務(wù)器端部分代碼如下:

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. 機(jī)長(zhǎng)登錄
    打開軟件,出現(xiàn)機(jī)長(zhǎng)登錄界面,如圖6-2所示:


圖6-2 機(jī)長(zhǎng)登錄界面
機(jī)長(zhǎng)登錄頁面用戶名為userName,密碼為password,登錄按鈕為submit按鈕,重置按鈕為button按鈕。
當(dāng)點(diǎn)擊登錄時(shí),服務(wù)器會(huì)進(jìn)行用戶名密碼的驗(yàn)證,當(dāng)用戶名和密碼為空時(shí),顯示用戶名密碼為空、當(dāng)用戶名密碼錯(cuò)誤時(shí)顯示用戶名密碼錯(cuò)誤。當(dāng)用戶名密碼驗(yàn)證正確時(shí),跳轉(zhuǎn)到index.jsp頁面服務(wù)器端代碼與地面指揮端服務(wù)器代碼一致。

  1. 主界面的實(shí)現(xiàn)
    6.2.1 地面指揮端主界面的實(shí)現(xiàn)
    當(dāng)?shù)卿洺晒?,進(jìn)入地面指揮端主界面,主界面由功能菜單和含有兩個(gè)分頁的樹組成主界面的功能,主界面由jquery-easyui實(shí)現(xiàn)。右上角可以讀取當(dāng)前登錄的指揮員姓名和現(xiàn)在時(shí)間,左側(cè)功能欄可以選擇隱藏和顯示。當(dāng)點(diǎn)擊樹中相應(yīng)的按鈕時(shí),觸發(fā)服務(wù)器響應(yīng)彈出對(duì)應(yīng)窗口,窗口可以關(guān)閉。如圖6-3所示:


圖6-3 地面指揮系統(tǒng)主界面
左側(cè)樹中兩個(gè)分頁運(yùn)用了jquery獲取分頁的值,其的跳轉(zhuǎn)代碼為:

$(function(){
//數(shù)據(jù)
var treeData=[{
text:"根",
children:[{
text:"航班信息管理",
attributes:{
url:"gradeInfoManage.jsp"
}
},{
text:"航班指揮信息管理",
attributes:{
url:"standardInfoManage.jsp"
}
}]
}];


右側(cè)從登錄頁面獲取地面指揮員的登錄名,運(yùn)用了jQuery語言,其代碼為:

<div style="padding-top:10px;padding-rignt:20px;">當(dāng)前用戶:&nbsp;<font color="red" size="4">${currentUser.userName}</font></div>


若用戶想不經(jīng)過登錄直接訪問主頁面,則是行不通的,因?yàn)轫撁嬷羞€加入了權(quán)限設(shè)置,防止跳過登錄直接訪問main頁面,其代碼為:

if(session.getAttribute("currentUser")==null){
response.sendRedirect("index.jsp");
return;
}


在網(wǎng)頁中還加入了一個(gè)時(shí)間控件,其代碼為:

function startTime()??
{??
var today=new Date();//定義日期對(duì)象??
var yyyy = today.getFullYear();//通過日期對(duì)象的getFullYear()方法返回年??
var MM = today.getMonth()+1;//通過日期對(duì)象的getMonth()方法返回年??
var dd = today.getDate();//通過日期對(duì)象的getDate()方法返回年??
var hh=today.getHours();//通過日期對(duì)象的getHours方法返回小時(shí)??
var mm=today.getMinutes();//通過日期對(duì)象的getMinutes方法返回分鐘??
var ss=today.getSeconds();//通過日期對(duì)象的getSeconds方法返回秒??
// 如果分鐘或小時(shí)的值小于10,則在其值前加0,比如如果時(shí)間是下午3點(diǎn)20分9秒的話,則顯示15:20:09??
MM=checkTime(MM);??
dd=checkTime(dd);??
mm=checkTime(mm);??
ss=checkTime(ss);??
var day; //用于保存星期(getDay()方法得到星期編號(hào))??
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. 機(jī)長(zhǎng)端主界面的實(shí)現(xiàn)
    當(dāng)?shù)卿洺晒?,進(jìn)入機(jī)長(zhǎng)端主界面,主界面由功能菜單和含有兩個(gè)分頁的樹組成主界面的功能,主界面由jquery-easyui實(shí)現(xiàn)。右上角可以讀取當(dāng)前登錄的機(jī)長(zhǎng)姓名和現(xiàn)在時(shí)間,左側(cè)功能欄可以選擇隱藏和顯示。當(dāng)點(diǎn)擊樹中相應(yīng)的按鈕時(shí),觸發(fā)服務(wù)器響應(yīng)彈出對(duì)應(yīng)窗口,窗口可以關(guān)閉,和地面指揮端功能相類似。如圖6-4所示:


圖6-4 機(jī)長(zhǎng)系統(tǒng)客戶端主界面

  1. 地面指揮管理功能的實(shí)現(xiàn)
    6.3.1 地面指揮端航班信息管理功能的實(shí)現(xiàn)
    點(diǎn)擊地面指揮端中的航班信息管理按鈕,彈出航班信息管理界面,界面可以關(guān)閉和刷新。航班可以進(jìn)行搜索、添加、修改和刪除等操作。若地面指揮人員想要查看指定信息的航班,那么輸入航班名稱即可搜索出對(duì)應(yīng)的航班;若航班加出班次,則地面指揮人員可以點(diǎn)擊添加添加航班信息,但是航班狀態(tài)需要由機(jī)長(zhǎng)進(jìn)行填寫;若航班班次取消,則點(diǎn)擊刪除按鈕刪除要取消的航班,若誤點(diǎn)了已經(jīng)起飛或者降落的航班的刪除按鈕,則彈出窗口航班正在運(yùn)行,不能進(jìn)行刪除;若航班修改了架次,則點(diǎn)擊修改按鈕進(jìn)行航班信息的修改。如圖6-5所示


圖6-5 航班信息管理
顯示航班信息需要讀取數(shù)據(jù)庫,進(jìn)行搜索操作時(shí)也需要讀取數(shù)據(jù)庫,其讀取數(shù)據(jù)庫的部分代碼如下:

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");
}


服務(wù)器端需要讀取每一條數(shù)據(jù)的行和頁,這里服務(wù)器端也運(yùn)用了doget和dopost方法。
數(shù)據(jù)操作有添加功能、刪除功能和修改功能,如圖所示:


圖6-6 添加航班信息


圖6-7 修改航班信息


圖6-8 刪除航班信息
在增加、修改航班信息時(shí),航班信息的每個(gè)信息都是必輸入項(xiàng),所以設(shè)置一個(gè)輸入字符的驗(yàn)證,用jquery進(jìn)行驗(yàn)證直接調(diào)用easyui語句:required="true"
在執(zhí)行增加、刪除和修改操作時(shí),會(huì)在數(shù)據(jù)庫中讀取和寫入信息以數(shù)據(jù)刪除和添加為例,其代碼為:

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 地面指揮端航班指揮信息管理功能的實(shí)現(xiàn)
從主頁面點(diǎn)擊航班指揮信息頁面,打開航班指揮信息分頁,如圖6-9所示:


圖6-9 航班指揮信息管理
航班指揮信息管理的主要功能是航班指令的發(fā)布、航班指令的修改和刪除,還有不同的條件查詢。我們這里提供了各種不同條件的航班指令信息查詢方法方便航班指令信息的查看和管理。當(dāng)收到航班發(fā)出的請(qǐng)求或者遇到情況時(shí),地面指揮端點(diǎn)擊發(fā)布指令進(jìn)行指令的發(fā)布,在發(fā)布指令界面可以向任意一搜航班發(fā)送信息。當(dāng)信息發(fā)送錯(cuò)誤時(shí),可以點(diǎn)擊修改指令進(jìn)行修改,或者點(diǎn)擊刪除指令重新對(duì)指令進(jìn)行發(fā)布。如圖:


圖6-10 指令信息發(fā)布


圖6-11修改指令信息


圖6-12 刪除指令信息
在顯示航班指令信息和執(zhí)行航班指令信息的操作時(shí),都需要訪問數(shù)據(jù)庫或者將修改寫入數(shù)據(jù)庫,以指令信息的讀取為例,則我們需要如下代碼:

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();

}


在刪除航班信息時(shí),如果航班已經(jīng)發(fā)出指令,則不能刪除航班,這就涉及到數(shù)據(jù)庫的關(guān)聯(lián)操作:

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. 機(jī)長(zhǎng)端功能的實(shí)現(xiàn)

6.4.1 機(jī)長(zhǎng)端航班信息顯示的實(shí)現(xiàn)

點(diǎn)擊機(jī)長(zhǎng)端中的航班信息查詢按鈕,彈出航班信息查詢界面,界面可以關(guān)閉和刷新??梢圆榭创舜魏桨嗟男畔ⅲ?duì)航班現(xiàn)在的狀態(tài)進(jìn)行實(shí)時(shí)的更新。在機(jī)長(zhǎng)想要查看自己所飛航班的信息時(shí),點(diǎn)擊下拉框,選擇自己將要飛行的航班班次;若航班狀態(tài)發(fā)生改變,則點(diǎn)擊更新航班狀態(tài)按鈕對(duì)航班狀態(tài)進(jìn)行實(shí)時(shí)更新。如圖6-13所示:

圖6-13 航班信息查詢

顯示航班信息需要讀取數(shù)據(jù)庫,進(jìn)行搜索操作時(shí)也需要讀取數(shù)據(jù)庫,其讀取數(shù)據(jù)庫的代碼與地面指揮端的代碼基本一致。

服務(wù)器端需要讀取每一條數(shù)據(jù)的行和頁,這里服務(wù)器端dopost和doget方法代碼也和地面指揮端的代碼基本一致。

對(duì)指定航班狀態(tài)進(jìn)行更新,如圖所示:

圖6-14 更新航班狀態(tài)

在更新航班狀態(tài)時(shí),會(huì)在數(shù)據(jù)庫中讀取和寫入信息,代碼為:

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 地面指揮端航班指揮信息管理功能的實(shí)現(xiàn)

機(jī)長(zhǎng)端航班指揮信息管理的主要功能是航班指令的發(fā)布、航班指令的修改和刪除,還有不同的條件查詢。我們這里提供了各種不同條件的航班指令信息查詢方法方便航班指令信息的查看和管理。當(dāng)收到塔臺(tái)發(fā)出的請(qǐng)求或者遇到情況時(shí),機(jī)長(zhǎng)端點(diǎn)擊發(fā)布指令進(jìn)行請(qǐng)求指令的發(fā)布,在發(fā)布指令界面可以向塔臺(tái)發(fā)送信息。當(dāng)信息發(fā)送錯(cuò)誤時(shí),可以點(diǎn)擊修改指令進(jìn)行修改,或者點(diǎn)擊刪除指令重新對(duì)指令進(jìn)行發(fā)布。如圖6-15所示:

圖6-15 航班指揮信息管理

航班指揮信息管理的主要功能是航班請(qǐng)求的發(fā)布、航班請(qǐng)求的修改和刪除,還有不同的條件查詢,如圖:

圖6-16 請(qǐng)求信息發(fā)布

圖6-17修改請(qǐng)求信息

圖6-12 刪除請(qǐng)求信息

在顯示航班指令信息和執(zhí)行航班指令信息的操作時(shí),都需要訪問數(shù)據(jù)庫或者將修改寫入數(shù)據(jù)庫,則我們需要如下代碼來訪問數(shù)據(jù)庫:

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 系統(tǒng)的測(cè)試與維護(hù)

7.1 測(cè)試描述

在軟件開發(fā)的生命周期中,軟件測(cè)試是無處不在的,它是軟件開發(fā)整個(gè)過程的非常重要的組成部分,軟件完成的好壞就是由軟件測(cè)試決定的。軟件測(cè)試有靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試,所謂靜態(tài)測(cè)試就是不需要去執(zhí)行軟件,而是直接用人腦的思維去評(píng)判軟件的好壞;動(dòng)態(tài)測(cè)試需要進(jìn)行軟件的運(yùn)行,來檢測(cè)軟件的好壞。在軟件的不同階段也有著不同的軟件測(cè)試程序,在軟件初步開發(fā)階段有單元測(cè)試,在軟件開發(fā)中后期有集成測(cè)試和系統(tǒng)測(cè)試,最后在軟件驗(yàn)收前有驗(yàn)收測(cè)試。從軟件工程的算法角度分還有黑盒和白盒測(cè)試。

7.2 測(cè)試目的

1.確定該系統(tǒng)中的各數(shù)據(jù)信息和該測(cè)試的各個(gè)部件。

2.確定該系統(tǒng)能夠很好的處理以下的幾點(diǎn)功能:

地面指揮員端:

1.指揮員登錄

2.航班信息的瀏覽

3.航班信息的操作

航班的刪除

航班的添加

航班信息的修改

航班信息的搜索

4.指揮信息的操作

指揮信息的查詢

指令的發(fā)布

指令的修改

指令的刪除

機(jī)長(zhǎng)端:

1.機(jī)長(zhǎng)登錄

2.航班信息的查詢

3.航班指揮信息的操作

航班指揮信息查詢?

航班請(qǐng)求的發(fā)布

航班請(qǐng)求的刪除

航班請(qǐng)求的修改

7.3 測(cè)試范圍

1.單元測(cè)試,是指對(duì)軟件開發(fā)中的最小可運(yùn)行單元進(jìn)行動(dòng)態(tài)運(yùn)行測(cè)試和靜態(tài)測(cè)試,單元測(cè)試通常被用于測(cè)試在特定場(chǎng)景下所被測(cè)試的函數(shù)行為特征。

2.集成測(cè)試是單元測(cè)試的更高級(jí)階段,它用來測(cè)試每個(gè)單元的協(xié)同配合情況,測(cè)試每個(gè)單元集成起來是否可以達(dá)到預(yù)期的效果。

3.系統(tǒng)測(cè)試是對(duì)系統(tǒng)整體在開發(fā)階段進(jìn)行的測(cè)試,他是測(cè)試所有集成模塊所組成的完整系統(tǒng)的功能是否完善,是否與需求分析時(shí)確定的系統(tǒng)功能所吻合,是否應(yīng)該對(duì)程序的某一部分進(jìn)行最后的修改。

4.驗(yàn)收測(cè)試主要以用戶測(cè)試為主,主要測(cè)試客戶的滿意度;或者是軟件測(cè)試人員陪同客戶進(jìn)行程序的功能和客戶滿意度測(cè)評(píng),是軟件開發(fā)階段的最后一個(gè)步驟,測(cè)試通過則系統(tǒng)就可以交付使用。

7.4 測(cè)試用例

表7-1 部分測(cè)試用例

功能點(diǎn)測(cè)試用例描述測(cè)試用例操作預(yù)期結(jié)果實(shí)際結(jié)果地面指揮人員登錄輸入用戶名和密碼,點(diǎn)擊登錄按鈕正確的用戶名“myx”和密碼“123456”登錄成功跳轉(zhuǎn)至主界面成功跳轉(zhuǎn)至主界面錯(cuò)誤的用戶名“myx”和密碼“123123”或沒有輸入錯(cuò)誤處理:提示用戶名密碼錯(cuò)誤或者用戶名密碼為空錯(cuò)誤處理:成功彈出提示用戶名密碼錯(cuò)誤或者用戶名密碼為空。機(jī)長(zhǎng)登錄輸入用戶名和密碼,點(diǎn)擊登錄按鈕正確的用戶名“polit”和密碼“123456”登錄成功跳轉(zhuǎn)至主界面成功跳轉(zhuǎn)至主界面錯(cuò)誤的用戶名“polit”和密碼“123123”或沒有輸入錯(cuò)誤處理:提示用戶名密碼錯(cuò)誤或者用戶名密碼為空錯(cuò)誤處理:成功彈出提示用戶名密碼錯(cuò)誤或者用戶名密碼為空。航班信息查詢輸入航班名稱,點(diǎn)擊查詢按鈕輸入“MU0001”,點(diǎn)擊查詢按鈕系統(tǒng)顯示查詢的MU0001航班信息系統(tǒng)成功顯示MU0001航班信息航班信息刪除點(diǎn)擊刪除按鈕,點(diǎn)擊刪除按鈕選中要?jiǎng)h除航班,點(diǎn)擊刪除按鈕系統(tǒng)顯示刪除成功系統(tǒng)顯示刪除成功未選中航班點(diǎn)擊刪除系統(tǒng)顯示請(qǐng)選擇航班系統(tǒng)顯示請(qǐng)選擇航班選中已經(jīng)下達(dá)指令的航班系統(tǒng)顯示該航班為運(yùn)行航班,不能刪除系統(tǒng)顯示該航班為運(yùn)行航班,不能刪除航班信息添加點(diǎn)擊添加按鈕,輸入航班信息,點(diǎn)擊添加航班點(diǎn)擊添加航班按鈕,在彈出框中輸入航班信息,點(diǎn)擊確定系統(tǒng)顯示添加成功,并在航班信息欄中出現(xiàn)添加的信息系統(tǒng)顯示添加成功,并在航班信息欄中出現(xiàn)添加的信息航班信息修改點(diǎn)擊修改按鈕,輸入需要修改的航班信息,點(diǎn)擊修改航班信息選擇航班,點(diǎn)擊修改按鈕,在彈出框中輸入航班信息,點(diǎn)擊確定系統(tǒng)顯示修改成功,并在航班信息欄中出現(xiàn)修改后的信息系統(tǒng)顯示修改成功,并在航班信息欄中出現(xiàn)修改后的信息未選中航班,點(diǎn)擊修改按鈕彈出請(qǐng)選擇航班彈出請(qǐng)選擇航班航班指令信息查詢選擇或輸入航班查詢條件,點(diǎn)擊查詢按鈕在指令名稱中輸入“請(qǐng)求起飛”,點(diǎn)擊查詢按鈕系統(tǒng)顯示查詢的所有發(fā)送了請(qǐng)求起飛的航班的指令系統(tǒng)顯示查詢的所有發(fā)送了請(qǐng)求起飛的航班的指令航班指令刪除點(diǎn)擊刪除按鈕,點(diǎn)擊刪除按鈕選中要?jiǎng)h除指令,點(diǎn)擊刪除按鈕系統(tǒng)顯示刪除成功系統(tǒng)顯示刪除成功未選中指令點(diǎn)擊刪除系統(tǒng)顯示請(qǐng)選擇航班系統(tǒng)顯示請(qǐng)選擇航班航班指揮信息發(fā)布點(diǎn)擊發(fā)布按鈕,輸入航班指揮信息,點(diǎn)擊確定點(diǎn)擊添加航班指揮信息按鈕,在彈出框中輸入航班信息,點(diǎn)擊確定系統(tǒng)顯示發(fā)布成功,并在航班指揮信息欄中出現(xiàn)添加的指令系統(tǒng)顯示發(fā)布成功,并在航班指揮信息欄中出現(xiàn)添加的指令航班指揮信息修改點(diǎn)擊修改按鈕,輸入需要修改的航班指揮信息,點(diǎn)擊修改選擇航班指令,點(diǎn)擊修改按鈕,在彈出框中輸入航班指揮信息,點(diǎn)擊確定系統(tǒng)顯示修改成功,并在航班指令信息欄中出現(xiàn)修改后的信息系統(tǒng)顯示修改成功,并在航班指令信息欄中出現(xiàn)修改后的信息未選中航班,點(diǎn)擊修改按鈕彈出請(qǐng)選擇航班指令彈出請(qǐng)選擇航班指令

7.5 測(cè)試結(jié)果分析

本基于JAVA的機(jī)場(chǎng)航班起降與協(xié)調(diào)管理系統(tǒng),在所有的按鈕的測(cè)試、輸入框和其他功能組建的測(cè)試中,順利實(shí)現(xiàn)功能,并且功能相對(duì)完善,經(jīng)過各項(xiàng)測(cè)試,本系統(tǒng)基本完成了系統(tǒng)的開發(fā)目的,通過了單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試及驗(yàn)收測(cè)試,基本達(dá)到了測(cè)試的要求,完成測(cè)試,軟件可以進(jìn)行驗(yàn)收。

8 結(jié)束語

經(jīng)過為期兩個(gè)月的基于JAVA的機(jī)場(chǎng)航班起降與協(xié)調(diào)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),從技術(shù)上看,我對(duì)Java語言書寫服務(wù)器和數(shù)據(jù)庫連接的設(shè)計(jì)有一個(gè)更全面的了解,鞏固了所學(xué)的Java的知識(shí),對(duì)Java中出現(xiàn)的一些問題有了更加深刻的理解和相對(duì)應(yīng)的解決辦法,對(duì)整體架構(gòu)、編程思想有了更加深刻的理解,對(duì)控件的熟練運(yùn)用也有了一定提高。我通過基于JAVA的機(jī)場(chǎng)航班起降與協(xié)調(diào)管理系統(tǒng)的實(shí)現(xiàn),學(xué)會(huì)了一種新的前臺(tái)設(shè)計(jì)框架,那就是現(xiàn)在比較好用的jquery-easyui。我也明白了要設(shè)計(jì)一個(gè)功能體驗(yàn)較好的程序,首先需要對(duì)它做出全面的分析,從需求到設(shè)計(jì)每一步都要有一個(gè)整體框架,還需要對(duì)細(xì)節(jié)進(jìn)行處理,這樣才能保證下一步的順利進(jìn)行。在我的設(shè)計(jì)中就出現(xiàn)了對(duì)應(yīng)的問題: 在軟件設(shè)計(jì)中,沒有考慮到繞過登錄系統(tǒng)也可以通過網(wǎng)頁和篡改代碼進(jìn)行主頁面的訪問,于是我增加了用戶名和密碼的返回值驗(yàn)證來進(jìn)行主頁面的權(quán)限驗(yàn)證。我沒有考慮到在刪除時(shí),發(fā)出指令的航班不能進(jìn)行刪除,于是我設(shè)置了數(shù)據(jù)庫的連帶刪除功能。

此次畢業(yè)設(shè)計(jì),是學(xué)校對(duì)我們四年來學(xué)習(xí)成果的一次檢驗(yàn),基于JAVA的機(jī)場(chǎng)航班起降與協(xié)調(diào)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)基本上自己在大學(xué)生活中學(xué)習(xí)的大部分知識(shí)都融入了進(jìn)去,但是還不夠,在許多方面還沒有考慮全面,相信自己在進(jìn)入工作中會(huì)更加努力,做出更加完美、用戶體驗(yàn)更好的系統(tǒng)。

參考文獻(xiàn)

[1]周雪芹. 基于java的軟件開發(fā)全過程實(shí)戰(zhàn)[M]. 北京:科學(xué)出版社,2016.

[2]李恩臨.基于Java的面向?qū)ο箝_發(fā)技術(shù)[M].北京:中國(guó)財(cái)富出版社,2016.

[3]郭衛(wèi).機(jī)場(chǎng)航班運(yùn)作管理信息系統(tǒng)設(shè)計(jì)與應(yīng)用 [J]. 計(jì)算機(jī)工程, 2005,(13):3.

[4]及燕麗,彭小衛(wèi),宋賢群. 一種基于UML類圖的關(guān)系數(shù)據(jù)庫表設(shè)計(jì)方法[A]. 2008.

[5]于鳳波.機(jī)場(chǎng)航班信息管理系統(tǒng)的設(shè)計(jì)[J].民航科技,2004,(05):2.

[6]羅崢等. 機(jī)場(chǎng)航班信息顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京:北京郵電大學(xué),2006.

[7]唐遠(yuǎn)新等.Oracle數(shù)據(jù)庫實(shí)用教程[M].北京:高等教育出版社,2005..

[8]李愛萍.系統(tǒng)分析與設(shè)計(jì)[M].北京:人民郵電出版社,2015.

[9]Wigglesworth.Java programming[M].Course Technology,1999.

[10]James Wightman. Pro SQL Server 2005 Integration Services[B]. Apress, 2008

[11]Aart van Harten .Intercontinental airline flight schedule design[C]. Scientific and Technical Documents Publishing House,1998.

致 謝

在論文完成之際,首先感謝校內(nèi)指導(dǎo)老師對(duì)我的幫助,這個(gè)過程中,兩位老師給了很大的幫助,他們豐富的知識(shí)和敏捷的思維都給我留下極其深刻的印象,論文和畢業(yè)設(shè)計(jì)過程中,我碰到很多這樣或那樣的小問題,他們都幫助我解決了,同時(shí),很多同學(xué)也給予了我很大的鼓勵(lì),感謝他們。

最后借此之際,我向我的兩位指導(dǎo)老師和各位同學(xué)們表示深切的感謝!

外文原文

y benefit from looking at JavaScript or VBScript before committing to Java, since they might fit your needs handily and you’ll be more productive sooner.to run its applets withi

5.ActiveX

To some degree, the competitor to Java is Microsoft’s ActiveX, although it takes a completely different approach. ActiveX was originally a Windows-only solution, although it is now being developed via an independent consortium to become cross-platform. Effectively, ActiveX says “if your program connects to its environment just so, it can be dropped into a Web page and run under a browser that supports ActiveX.” (IE directly supports ActiveX and Netscape does so using a plug-in.) Thus, ActiveX does not constrain you to a particular language. If, for example, you’re already an experienced Windows programmer using a language such as C++, Visual Basic, or Borland’s Delphi, you can create ActiveX components with almost no changes to your programming knowledge. ActiveX also provides a path for the use of legacy code in your Web pages.

6.Security

Automatically downloading and running programs across the Internet can sound like a virus-builder’s dream. ActiveX especially brings up the thorny issue of security in client-side programming. If you click on a Web site, you might automatically download any number of things along with the HTML page: GIF files, script code, compiled Java code, and ActiveX components. Some of these are benign; GIF files can’t do any harm, and scripting languages are generally limited in what they can do. Java was also designed to run its applets within a “sandbox” of safety, which prevents it from writing to disk or accessing memory outside the sandbox.?

ActiveX is at the opposite end of the spectrum. Programming with ActiveX is like programming Windows—you can do anything you want. So if you click on a page that downloads an ActiveX component, that component might cause damage to the files on your disk. Of course, programs that you load onto your computer that are not restricted to running inside a Web browser can do the same thing. Viruses downloaded from Bulletin-Board Systems (BBSs) have long been a problem, but the speed of the Internet amplifies the difficulty.

The solution seems to be “digital signatures,” whereby code is verified to show who the author is. This is based on the idea that a virus works because its creator can be anonymous, so if you remove the anonymity individuals will be forced to be responsible for their actions. This seems like a good plan because it allows programs to be much more functional, and I suspect it will eliminate malicious mischief. If, however, a program has an unintentional destructive bug it will still cause problems.

The Java approach is to prevent these problems from occurring, via the sandbox. The Java interpreter that lives on your local Web browser examines the applet for any untoward instructions as the applet is being loaded. In particular, the applet cannot write files to disk or erase files (one of the mainstays of viruses). Applets are generally considered to be safe, and since this is essential for reliable client/server systems, any bugs in the Java language that allow viruses are rapidly repaired. (It’s worth noting that the browser software actually enforces these security restrictions, and some browsers allow you to select different security levels to provide varying degrees of access to your system.)

You might be skeptical of this rather draconian restriction against writing files to your local disk. For example, you may want to build a local database or save data for later use offline. The initial vision seemed to be that eventually everyone would get online to do anything important, but that was soon seen to be impractical (although low-cost “Internet appliances” might someday satisfy the needs of a significant segment of users). The solution is the “signed applet” that uses public-key encryption to verify that an applet does indeed come from where it claims it does. A signed applet can still trash your disk, but the theory is that since you can now hold the applet creator accountable they won’t do vicious things. Java provides a framework for digital signatures so that you will eventually be able to allow an applet to step outside the sandbox if necessary.

Digital signatures have missed an important issue, which is the speed that people move around on the Internet. If you download a buggy program and it does something untoward, how long will it be before you discover the damage? It could be days or even weeks. By then, how will you track down the program that’s done it? And what good will it do you at that point?

7.Internet vs. intranet

The Web is the most general solution to the client/server problem, so it makes sense that you can use the same technology to solve a subset of the problem, in particular the classic client/server problem within a company. With traditional client/server approaches you have the problem of multiple types of client computers, as well as the difficulty of installing new client software, both of which are handily solved with Web browsers and client-side programming. When Web technology is used for an information network that is restricted to a particular company, it is referred to as an intranet. Intranets provide much greater security than the Internet, since you can physically control access to the servers within your company. In terms of training, it seems that once people understand the general concept of a browser it’s much easier for them to deal with differences in the way pages and applets look, so the learning curve for new kinds of systems seems to be reduced.

The security problem brings us to one of the divisions that seems to be automatically forming in the world of client-side programming. If your program is running on the Internet, you don’t know what platform it will be working under, and you want to be extra careful that you don’t disseminate buggy code. You need something cross-platform and secure, like a scripting language or Java.?

If you’re running on an intranet, you might have a different set of constraints. It’s not uncommon that your machines could all be Intel/Windows platforms. On an intranet, you’re responsible for the quality of your own code and can repair bugs when they’re discovered. In addition, you might already have a body of legacy code that you’ve been using in a more traditional client/server approach, whereby you must physically install client programs every time you do an upgrade. The time wasted in installing upgrades is the most compelling reason to move to browsers, because upgrades are invisible and automatic. If you are involved in such an intranet, the most sensible approach to take is the shortest path that allows you to use your existing code base, rather than trying to recode your programs in a new language.

When faced with this bewildering array of solutions to the client-side programming problem, the best plan of attack is a cost-benefit analysis. Consider the constraints of your problem and what would be the shortest path to your solution. Since client-side programming is still programming, it’s always a good idea to take the fastest development approach for your particular situation. 既然Java不過另一種類型的程序設(shè)計(jì)語言,大家可能會(huì)奇怪它為什么值得如此重視,為什么還有這么多的人認(rèn)為它是計(jì)算機(jī)程序設(shè)計(jì)的一個(gè)里程碑呢?如果您來自一個(gè)傳統(tǒng)的程序設(shè)計(jì)背景,那么答案在剛開始的時(shí)候并不是很明顯。Java除了可解決傳統(tǒng)的程序設(shè)計(jì)問題以外,還能解決World Wide Web(萬維網(wǎng))上的編程問題。

1.客戶端編程

Web最初采用的“服務(wù)器-瀏覽器”方案可提供交互式內(nèi)容,但這種交互能力完全由服務(wù)器提供,為服務(wù)器和因特網(wǎng)帶來了不小的負(fù)擔(dān)。服務(wù)器一般為客戶瀏覽器產(chǎn)生靜態(tài)網(wǎng)頁,由后者簡(jiǎn)單地解釋并顯示出來?;綡TML語言提供了簡(jiǎn)單的數(shù)據(jù)收集機(jī)制:文字輸入框、復(fù)選框、單選鈕、列表以及下拉列表等,另外還有一個(gè)按鈕,只能由程序規(guī)定重新設(shè)置表單中的數(shù)據(jù),以便回傳給服務(wù)器。用戶提交的信息通過所有Web服務(wù)器均能支持的“通用網(wǎng)關(guān)接口”(CGI)回傳到服務(wù)器。包含在提交數(shù)據(jù)中的文字指示CGI該如何操作。最常見的行動(dòng)是運(yùn)行位于服務(wù)器的一個(gè)程序。那個(gè)程序一般保存在一個(gè)名為“cgi-bin”的目錄中(按下Web頁內(nèi)的一個(gè)按鈕時(shí),請(qǐng)注意一下瀏覽器頂部的地址窗,經(jīng)常都能發(fā)現(xiàn)“cgi-bin”的字樣)。大多數(shù)語言都可用來編制這些程序,但其中最常見的是Perl。這是由于Perl是專為文字的處理及解釋而設(shè)計(jì)的,所以能在任何服務(wù)器上安裝和使用,無論采用的處理器或操作系統(tǒng)是什么。

2. 插件

朝客戶端編程邁進(jìn)的時(shí)候,最重要的一個(gè)問題就是插件的設(shè)計(jì)。利用插件,程序員可以方便地為瀏覽器添加新功能,用戶只需下載一些代碼,把它們“插入”瀏覽器的適當(dāng)位置即可。這些代碼的作用是告訴瀏覽器“從現(xiàn)在開始,你可以進(jìn)行這些新活動(dòng)了”(僅需下載這些插入一次)。有些快速和功能強(qiáng)大的行為是通過插件添加到瀏覽器的。但插件的編寫并不是一件簡(jiǎn)單的任務(wù)。在我們構(gòu)建一個(gè)特定的站點(diǎn)時(shí),可能并不希望涉及這方面的工作。對(duì)客戶端程序設(shè)計(jì)來說,插件的價(jià)值在于它允許專業(yè)程序員設(shè)計(jì)出一種新的語言,并將那種語言添加到瀏覽器,同時(shí)不必經(jīng)過瀏覽器原創(chuàng)者的許可。由此可以看出,插件實(shí)際是瀏覽器的一個(gè)“后門”,允許創(chuàng)建新的客戶端程序設(shè)計(jì)語言(盡管并非所有語言都是作為插件實(shí)現(xiàn)的)。

3. 腳本編制語言

插件造成了腳本編制語言的爆炸性增長(zhǎng)。通過這種腳本語言,可將用于自己客戶端程序的源碼直接插入HTML頁,而對(duì)那種語言進(jìn)行解釋的插件會(huì)在HTML頁顯示的時(shí)候自動(dòng)激活。腳本語言一般都傾向于盡量簡(jiǎn)化,易于理解。而且由于它們是從屬于HTML頁的一些簡(jiǎn)單正文,所以只需向服務(wù)器發(fā)出對(duì)那個(gè)頁的一次請(qǐng)求,即可非常快地載入。缺點(diǎn)是我們的代碼全部暴露在人們面前。另一方面,由于通常不用腳本編制語言做過分復(fù)雜的事情,所以這個(gè)問題暫且可以放在一邊。

腳本語言真正面向的是特定類型問題的解決,其中主要涉及如何創(chuàng)建更豐富、更具有互動(dòng)能力的圖形用戶界面(GUI)。然而,腳本語言也許能解決客戶端編程中80%的問題。你碰到的問題可能完全就在那80%里面。而且由于腳本編制語言的宗旨是盡可能地簡(jiǎn)化與快速,所以在考慮其他更復(fù)雜的方案之前(如Java及ActiveX),首先應(yīng)想一下腳本語言是否可行。

目前討論得最多的腳本編制語言包括JavaScript(它與Java沒有任何關(guān)系;之所以叫那個(gè)名字,完全是一種市場(chǎng)策略)、VBScript(同Visual Basic很相似)以及Tcl/Tk(來源于流行的跨平臺(tái)GUI構(gòu)造語言)。當(dāng)然還有其他許多語言,也有許多正在開發(fā)中。

JavaScript也許是日常用的,它得到的支持也最全面。無論NetscapeNavigator,Microsoft Internet Explorer,還是Opera,目前都提供了對(duì)JavaScript的支持。除此以外,市面上講述JavaScript的書籍也要比講述其他語言的書多得多。有些工具還能利用JavaScript自動(dòng)產(chǎn)生網(wǎng)頁。當(dāng)然,如果你已經(jīng)有Visual Basic或者Tcl/Tk的深厚功底,當(dāng)然用它們要簡(jiǎn)單得多,起碼可以避免學(xué)習(xí)新語言的煩惱(解決Web方面的問題就已經(jīng)夠讓人頭痛了)。

4. Java

如果說一種腳本編制語言能解決80%的客戶端程序設(shè)計(jì)問題,那么剩下的20%又該怎么辦呢?它們屬于一些高難度的問題嗎?目前最流行的方案就是Java。它不僅是一種功能強(qiáng)大、高度安全、可以跨平臺(tái)使用以及國(guó)際通用的程序設(shè)計(jì)語言,也是一種具有旺盛生命力的語言。對(duì)Java的擴(kuò)展是不斷進(jìn)行的,提供的語言特性和庫能夠很好地解決傳統(tǒng)語言不能解決的問題,比如多線程操作、數(shù)據(jù)庫訪問、連網(wǎng)程序設(shè)計(jì)以及分布式計(jì)算等等。Java通過“程序片”(Applet)巧妙地解決了客戶端編程的問題。

程序片(或“小應(yīng)用程序”)是一種非常小的程序,只能在Web瀏覽器中運(yùn)行。作為Web頁的一部分,程序片代碼會(huì)自動(dòng)下載回來(這和網(wǎng)頁中的圖片差不多)。激活程序片后,它會(huì)執(zhí)行一個(gè)程序。程序片的一個(gè)優(yōu)點(diǎn)體現(xiàn)在:通過程序片,一旦用戶需要客戶軟件,軟件就可從服務(wù)器自動(dòng)下載回來。它們能自動(dòng)取得客戶軟件的最新版本,不會(huì)出錯(cuò),也沒有重新安裝的麻煩。由于Java的設(shè)計(jì)原理,程序員只需要?jiǎng)?chuàng)建程序的一個(gè)版本,那個(gè)程序能在幾乎所有計(jì)算機(jī)以及安裝了Java解釋器的瀏覽器中運(yùn)行。由于Java是一種全功能的編程語言,所以在向服務(wù)器發(fā)出一個(gè)請(qǐng)求之前,我們能先在客戶端做完盡可能多的工作。例如,再也不必通過因特網(wǎng)傳送一個(gè)請(qǐng)求表單,再由服務(wù)器確定其中是否存在一個(gè)拼寫或者其他參數(shù)錯(cuò)誤。大多數(shù)數(shù)據(jù)校驗(yàn)工作均可在客戶端完成,沒有必要坐在計(jì)算機(jī)前面焦急地等待服務(wù)器的響應(yīng)。這樣一來,不僅速度和響應(yīng)的靈敏度得到了極大的提高,對(duì)網(wǎng)絡(luò)和服務(wù)器造成的負(fù)擔(dān)也可以明顯減輕,這對(duì)保障因特網(wǎng)的暢通是至關(guān)重要的。
與腳本程序相比,Java程序片的另一個(gè)優(yōu)點(diǎn)是它采用編譯好的形式,所以客戶端看不到源碼。當(dāng)然在另一方面,反編譯Java程序片也并不是件難事,而且代碼的隱藏一般并不是個(gè)重要的問題。大家要注意另外兩個(gè)重要的問題。正如本書以前會(huì)講到的那樣,編譯好的Java程序片可能包含了許多模塊,所以要多次“命中”(訪問)服務(wù)器以便下載(在Java 1.1中,這個(gè)問題得到了有效的改善——利用Java壓縮檔,即JAR文件——它允許設(shè)計(jì)者將所有必要的模塊都封裝到一起,供用戶統(tǒng)一下載)。在另一方面,腳本程序是作為Web頁正文的一部分集成到Web頁內(nèi)的。這種程序一般都非常小,可有效減少對(duì)服務(wù)器的點(diǎn)擊數(shù)。另一個(gè)因素是學(xué)習(xí)方面的問題。不管你平時(shí)聽別人怎么說,Java都不是一種十分容易便可學(xué)會(huì)的語言。如果你以前是一名Visual Basic程序員,那么轉(zhuǎn)向VBScript會(huì)是一種最快捷的方案。由于VBScript可以解決大多數(shù)典型的客戶機(jī)/服務(wù)器問題,所以一旦上手,就很難下定決心再去學(xué)習(xí)Java。如果對(duì)腳本編制語言比較熟,那么在轉(zhuǎn)向Java之前,建議先熟悉一下JavaScript或者VBScript,因?yàn)樗鼈兛赡芤呀?jīng)能夠滿足你的需要,不必經(jīng)歷學(xué)習(xí)Java的艱苦過程。

5. ActiveX

在某種程度上,Java的一個(gè)有力競(jìng)爭(zhēng)對(duì)手應(yīng)該是微軟的ActiveX,盡管它采用的是完全不同的一套實(shí)現(xiàn)機(jī)制。ActiveX最早是一種純Windows的方案。經(jīng)過一家獨(dú)立的專業(yè)協(xié)會(huì)的努力,ActiveX現(xiàn)在已具備了跨平臺(tái)使用的能力。實(shí)際上,ActiveX的意思是“假如你的程序同它的工作環(huán)境正常連接,它就能進(jìn)入Web頁,并在支持ActiveX的瀏覽器中運(yùn)行”(IE固化了對(duì)ActiveX的支持,而Netscape需要一個(gè)插件)。所以,ActiveX并沒有限制我們使用一種特定的語言。比如,假設(shè)我們已經(jīng)是一名有經(jīng)驗(yàn)的Windows程序員,能熟練地使用像C++、Visual Basic或者Borland Delphi那樣的語言,就能幾乎不加任何學(xué)習(xí)地創(chuàng)建出ActiveX組件。事實(shí)上,ActiveX是在我們的Web頁中使用“歷史遺留”代碼的最佳途徑。

6. 安全

自動(dòng)下載和通過因特網(wǎng)運(yùn)行程序聽起來就像是一個(gè)病毒制造者的夢(mèng)想。在客戶端的編程中,ActiveX帶來了最讓人頭痛的安全問題。點(diǎn)擊一個(gè)Web站點(diǎn)的時(shí)候,可能會(huì)隨同HTML網(wǎng)頁傳回任何數(shù)量的東西:GIF文件、腳本代碼、編譯好的Java代碼以及ActiveX組件。有些是無害的;GIF文件不會(huì)對(duì)我們?cè)斐扇魏挝:?,而腳本編制語言通常在自己可做的事情上有著很大的限制。Java也設(shè)計(jì)成在一個(gè)安全“沙箱”里在它的程序片中運(yùn)行,這樣可防止操作位于沙箱以外的磁盤或者內(nèi)存區(qū)域。

ActiveX是所有這些里面最讓人擔(dān)心的。用ActiveX編寫程序就像編制Windows應(yīng)用程序——可以做自己想做的任何事情。下載回一個(gè)ActiveX組件后,它完全可能對(duì)我們磁盤上的文件造成破壞。當(dāng)然,對(duì)那些下載回來并不限于在Web瀏覽器內(nèi)部運(yùn)行的程序,它們同樣也可能破壞我們的系統(tǒng)。從BBS下載回來的病毒一直是個(gè)大問題,但因特網(wǎng)的速度使得這個(gè)問題變得更加復(fù)雜。
目前解決的辦法是“數(shù)字簽名”,代碼會(huì)得到權(quán)威機(jī)構(gòu)的驗(yàn)證,顯示出它的作者是誰。這一機(jī)制的基礎(chǔ)是認(rèn)為病毒之所以會(huì)傳播,是由于它的編制者匿名的緣故。所以假如去掉了匿名的因素,所有設(shè)計(jì)者都不得不為它們的行為負(fù)責(zé)。這似乎是一個(gè)很好的主意,因?yàn)樗钩绦蝻@得更加正規(guī)。但我對(duì)它能消除惡意因素持懷疑態(tài)度,因?yàn)榧偃缫粋€(gè)程序便含有Bug,那么同樣會(huì)造成問題。

Java通過“沙箱”來防止這些問題的發(fā)生。Java解釋器內(nèi)嵌于我們本地的Web瀏覽器中,在程序片裝載時(shí)會(huì)檢查所有有嫌疑的指令。特別地,程序片根本沒有權(quán)力將文件寫進(jìn)磁盤,或者刪除文件(這是病毒最喜歡做的事情之一)。我們通常認(rèn)為程序片是安全的。而且由于安全對(duì)于營(yíng)建一套可靠的客戶機(jī)/服務(wù)器系統(tǒng)至關(guān)重要,所以會(huì)給病毒留下漏洞的所有錯(cuò)誤都能很快得到修復(fù)(瀏覽器軟件實(shí)際需要強(qiáng)行遵守這些安全規(guī)則;而有些瀏覽器則允許我們選擇不同的安全級(jí)別,防止對(duì)系統(tǒng)不同程度的訪問)。

大家或許會(huì)懷疑這種限制是否會(huì)妨礙我們將文件寫到本地磁盤。比如,我們有時(shí)需要構(gòu)建一個(gè)本地?cái)?shù)據(jù)庫,或?qū)?shù)據(jù)保存下來,以便日后離線使用。最早的版本似乎每個(gè)人都能在線做任何敏感的事情,但這很快就變得非常不現(xiàn)實(shí)(盡管低價(jià)“互聯(lián)網(wǎng)工具”有一天可能會(huì)滿足大多數(shù)用戶的需要)。解決的方案是“簽了名的程序片”,它用公共密鑰加密算法驗(yàn)證程序片確實(shí)來自它所聲稱的地方。當(dāng)然在通過驗(yàn)證后,簽了名的一個(gè)程序片仍然可以開始清除你的磁盤。但從理論上說,既然現(xiàn)在能夠找到創(chuàng)建人“算帳”,他們一般不會(huì)干這種蠢事。Java 1.1為數(shù)字簽名提供了一個(gè)框架,在必要時(shí),可讓一個(gè)程序片“走”到沙箱的外面來。

數(shù)字簽名遺漏了一個(gè)重要的問題,那就是人們?cè)谝蛱鼐W(wǎng)上移動(dòng)的速度。如下載回一個(gè)錯(cuò)誤百出的程序,而它很不幸地真的干了某些蠢事,需要多久的時(shí)間才能發(fā)覺這一點(diǎn)呢?這也許是幾天,也可能幾周之后。發(fā)現(xiàn)了之后,又如何追蹤當(dāng)初肇事的程序呢(以及它當(dāng)時(shí)的責(zé)任有多大)?

7. 因特網(wǎng)和內(nèi)聯(lián)網(wǎng)

Web是解決客戶機(jī)/服務(wù)器問題的一種常用方案,所以最好能用相同的技術(shù)解決此類問題的一些“子集”,特別是公司內(nèi)部的傳統(tǒng)客戶機(jī)/服務(wù)器問題。對(duì)于傳統(tǒng)的客戶機(jī)/服務(wù)器模式,我們面臨的問題是擁有多種不同類型的客戶計(jì)算機(jī),而且很難安裝新的客戶軟件。但通過Web瀏覽器和客戶端編程,這兩類問題都可得到很好的解決。若一個(gè)信息網(wǎng)絡(luò)局限于一家特定的公司,那么在將Web技術(shù)應(yīng)用于它之后,即可稱其為“內(nèi)聯(lián)網(wǎng)”(Intranet),以示與國(guó)際性的“因特網(wǎng)”(Internet)有別。內(nèi)聯(lián)網(wǎng)提供了比因特網(wǎng)更高的安全級(jí)別,因?yàn)榭梢晕锢硇缘乜刂茖?duì)公司內(nèi)部服務(wù)器的使用。說到培訓(xùn),一般只要人們理解了瀏覽器的常規(guī)概念,就可以非常輕松地掌握網(wǎng)頁和程序片之間的差異,所以學(xué)習(xí)新型系統(tǒng)的開銷會(huì)大幅度減少。

安全問題將我們引入客戶端編程領(lǐng)域一個(gè)似乎是自動(dòng)形成的分支。若程序是在因特網(wǎng)上運(yùn)行,由于無從知曉它會(huì)在什么平臺(tái)上運(yùn)行,所以編程時(shí)要特別留意,防范可能出現(xiàn)的編程錯(cuò)誤。需作一些跨平臺(tái)處理,以及適當(dāng)?shù)陌踩婪?,比如采用某種腳本語言或者Java。

但假如在內(nèi)聯(lián)網(wǎng)中運(yùn)行,面臨的一些制約因素就會(huì)發(fā)生變化。全部機(jī)器均為Intel/Windows平臺(tái)是件很平常的事情。在內(nèi)聯(lián)網(wǎng)中,需要對(duì)自己代碼的質(zhì)量負(fù)責(zé)。而且一旦發(fā)現(xiàn)錯(cuò)誤,就可以馬上改正。除此以外,可能已經(jīng)有了一些“歷史遺留”的代碼,并用較傳統(tǒng)的客戶機(jī)/服務(wù)器方式使用那些代碼。但在進(jìn)行升級(jí)時(shí),每次都要物理性地安裝一道客戶程序。浪費(fèi)在升級(jí)安裝上的時(shí)間是轉(zhuǎn)移到瀏覽器的一項(xiàng)重要原因。使用了瀏覽器后,升級(jí)就變得易如反掌,而且整個(gè)過程是透明和自動(dòng)進(jìn)行的。如果真的是牽涉到這樣的一個(gè)內(nèi)聯(lián)網(wǎng)中,最明智的方法是采用ActiveX,而非試圖采用一種新的語言來改寫程序代碼。

面臨客戶端編程問題令人困惑的一系列解決方案時(shí),最好的方案是先做一次投資/回報(bào)分析。請(qǐng)總結(jié)出問題的全部制約因素,以及什么才是最快的方案。由于客戶端程序設(shè)計(jì)仍然要編程,所以無論如何都該針對(duì)自己的特定情況采取最好的開發(fā)途徑。這是準(zhǔn)備面對(duì)程序開發(fā)中一些不可避免的問題時(shí),我們可以做出的最佳姿態(tài)。

8服務(wù)器端編程

我們的整個(gè)討論都忽略了服務(wù)器端編程的問題。如果向服務(wù)器發(fā)出一個(gè)請(qǐng)求,會(huì)發(fā)生什么事情?大多數(shù)時(shí)候的請(qǐng)求都是很簡(jiǎn)單的一個(gè)“把這個(gè)文件發(fā)給我”。瀏覽器隨后會(huì)按適當(dāng)?shù)男问浇忉屵@個(gè)文件:作為HTML頁、一幅圖、一個(gè)Java程序片、一個(gè)腳本程序等等。向服務(wù)器發(fā)出的較復(fù)雜的請(qǐng)求通常涉及到對(duì)一個(gè)數(shù)據(jù)庫進(jìn)行操作(事務(wù)處理)。其中最常見的就是發(fā)出一個(gè)數(shù)據(jù)庫檢索命令,得到結(jié)果后,服務(wù)器會(huì)把它格式化成HTML頁,并作為結(jié)果傳回來(當(dāng)然,假如客戶通過Java或者某種腳本語言具有了更高的智能,那么原始數(shù)據(jù)就能在客戶端發(fā)送和格式化;這樣做速度可以更快,也能減輕服務(wù)器的負(fù)擔(dān))。另外,有時(shí)需要在數(shù)據(jù)庫中注冊(cè)自己的名字(比如加入一個(gè)組時(shí)),或者向服務(wù)器發(fā)出一份訂單,這就涉及到對(duì)那個(gè)數(shù)據(jù)庫的修改。這類服務(wù)器請(qǐng)求必須通過服務(wù)器端的一些代碼進(jìn)行,我們稱其為“服務(wù)器端的編程”。在傳統(tǒng)意義上,服務(wù)器端編程是用Perl和CGI腳本進(jìn)行的,但更復(fù)雜的系統(tǒng)已經(jīng)出現(xiàn)。其中包括基于Java的Web服務(wù)器,它允許我們用Java進(jìn)行所有服務(wù)器端編程,寫出的程序就叫做“小服務(wù)程序”(Servlet)。

9.一個(gè)獨(dú)立的領(lǐng)域:應(yīng)用程序

與Java有關(guān)的大多數(shù)爭(zhēng)論都是與程序片有關(guān)的。Java實(shí)際是一種常規(guī)用途的程序設(shè)計(jì)語言,可解決任何類型的問題,至少理論上如此。而且正如前面指出的,可以用更有效的方式來解決大多數(shù)客戶機(jī)/服務(wù)器問題。如果將視線從程序片身上轉(zhuǎn)開(同時(shí)放寬一些限制,比如禁止寫盤等),就進(jìn)入了常規(guī)用途的應(yīng)用程序的廣闊領(lǐng)域。這種應(yīng)用程序可獨(dú)立運(yùn)行,毋需瀏覽器,就象普通的執(zhí)行程序那樣。在這兒,Java的特色并不僅僅反應(yīng)在它的移植能力,也反映在編程本身上。就像貫穿全書都會(huì)講到的那樣,Java提供了許多有用的特性,使我們能在較短的時(shí)間里創(chuàng)建出比用從前的程序設(shè)計(jì)語言更健壯的程序。

但要注意任何東西都不是十全十美的,我們?yōu)榇艘惨冻鲆恍┐鷥r(jià)。其中最明顯的是執(zhí)行速度放慢了(盡管可對(duì)此進(jìn)行多方面的調(diào)整)。和任何語言一樣,Java本身也存在一些限制,使得它不十分適合解決某些特殊的編程問題。但不管怎樣,Java都是一種正在快速發(fā)展的語言。隨著每個(gè)新版本的發(fā)布,它變得越來越可愛,能充分解決的問題也變得越來越多。


基于JAVA的機(jī)場(chǎng)航班起降與協(xié)調(diào)管理系統(tǒng)(論文+PPT+源碼)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
商丘市| 博野县| 邻水| 东山县| 大港区| 和林格尔县| 平塘县| 剑河县| 平和县| 溧水县| 连江县| 公主岭市| 白城市| 定日县| 东丰县| 云梦县| 宜兰市| 高青县| 杭州市| 乌什县| 郎溪县| 特克斯县| 麻阳| 青铜峡市| 绥化市| 万州区| 泾川县| 常熟市| 承德县| 阿拉善左旗| 烟台市| 水富县| 垦利县| 古浪县| 镇康县| 嘉荫县| 宾阳县| 定陶县| 上犹县| 文山县| 健康|