航空公司信息管理系統(tǒng)論文_第1頁
航空公司信息管理系統(tǒng)論文_第2頁
航空公司信息管理系統(tǒng)論文_第3頁
航空公司信息管理系統(tǒng)論文_第4頁
航空公司信息管理系統(tǒng)論文_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

PAGE基于Java的航空公司信息管理系統(tǒng)的設計摘要在現(xiàn)實生活中,人們往往要處理大量繁雜的數(shù)據(jù)。在這種情況下,利用日趨成熟的計算機技術(shù)和數(shù)據(jù)庫管理技術(shù)來進行數(shù)據(jù)處理非常方便。各種信息管理軟件也就隨之出現(xiàn)了。當今的航空客運服務業(yè)發(fā)展十分迅速,它是現(xiàn)代生活高節(jié)奏的一個有力體現(xiàn)。在航空服務業(yè)中,飛機訂票業(yè)務是一項重要內(nèi)容,它大大方便了人們的旅行。本文是軟件工程設計航空公司信息管理系統(tǒng)的開發(fā)說明,重點運用軟件工程知識對系統(tǒng)進行分析、設計實現(xiàn)和測試的思想的具體描述,其中包括軟件生命周期的三個主要方面:軟件定義(問題定義、可行性研究、需求分析)、軟件開發(fā)(總體設計、詳細設計、編碼、測試)和運行維護。通過實際的運用軟件工程知識處理問題,加強程序的規(guī)范性、清晰性、可靠性,并且使得程序易于維護。本軟件使用JAVA進行編寫,具有良好的兼容性且易于實現(xiàn)。本系統(tǒng)操作簡潔容易上手、結(jié)構(gòu)簡單、查找方便、實用性強?!娟P(guān)鍵詞】:航空公司信息管理,軟件工程,Java

目錄5103摘要 195311.概述 1212751.1軟件工程的概述 1294071.2航空公司信息管理系統(tǒng)的產(chǎn)生背景 1274791.3航空公司信息管理系統(tǒng)的概述 2160842.航空公司信息管理系統(tǒng)的分析 32832.1問題定義 3270692.2可行性研究 3123872.2.1技術(shù)可行性 3281602.2.2經(jīng)濟可行性 517732.2.3操作可行性 5295802.3需求分析 5167492.3.1確定對系統(tǒng)的綜合要求 5119672.3.2分析建模 6274862.2.3系統(tǒng)邏輯模型 9193123.航空公司信息管理系統(tǒng)的設計 10159603.1總體設計 10280213.1.1軟件層次結(jié)構(gòu)圖 10176813.1.2IPO圖 10230603.2詳細設計 11101023.2.1軟件程序流程圖 11149123.2.2主要功能盒圖設計 13287993.2.3出錯處理設計 1491154.航空公司信息管理系統(tǒng)的編碼和測試 15255134.1系統(tǒng)編碼 15180574.1.1軟件的界面 15264294.1.2軟件的查詢、訂票和退票模塊 20209544.2系統(tǒng)測試 29291294.2.1黑盒測試的內(nèi)容 29247934.2.2使用黑盒測試的情況分析 3072945.總結(jié) 3311972參考文獻 34PAGE351.概述1.1軟件工程的概述軟件工程是一門研究用工程化方法構(gòu)建和維護有效的、實用的和高質(zhì)量的軟件的學科。它涉及到程序設計語言,數(shù)據(jù)庫,軟件開發(fā)工具,系統(tǒng)平臺,標準,設計模式等方面。在現(xiàn)代社會中,軟件應用于多個方面。典型的軟件比如有電子郵件,嵌入式系統(tǒng),人機界面,辦公套件,操作系統(tǒng),編譯器,數(shù)據(jù)庫,游戲等。同時,各個行業(yè)幾乎都有計算機軟件的應用,比如工業(yè),農(nóng)業(yè),銀行,航空,政府部門等。這些應用促進了經(jīng)濟和社會的發(fā)展,使得人們的工作更加高效,同時提高了生活質(zhì)量。軟件工程的目標是:在給定成本、進度的前提下,開發(fā)出具有可修改性、有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性并且滿足用戶需求的軟件產(chǎn)品。追求這些目標有助于提高軟件產(chǎn)品的質(zhì)量和開發(fā)效率,減少維護的困難。生產(chǎn)一個最終能滿足需求且達到工程目標的軟件產(chǎn)品所需要的步驟。軟件工程過程主要包括開發(fā)過程、運作過程、維護過程。它們覆蓋了需求、設計、實現(xiàn)、確認以及維護等活動。需求活動包括問題分析和需求分析。問題分析獲取需求定義,又稱軟件需求規(guī)約。需求分析生成功能規(guī)約。設計活動一般包括概要設計和詳細設計。概要設計建立整個軟件系統(tǒng)結(jié)構(gòu),包括子系統(tǒng)、模塊以及相關(guān)層次的說明、每一模塊的接口定義。詳細設計產(chǎn)生程序員可用的模塊說明,包括每一模塊中數(shù)據(jù)結(jié)構(gòu)說明及加工描述。實現(xiàn)活動把設計結(jié)果轉(zhuǎn)換為可執(zhí)行的程序代碼。確認活動貫穿于整個開發(fā)過程,實現(xiàn)完成后的確認,保證最終產(chǎn)品滿足用戶的要求。維護活動包括使用過程中的擴充、修改與完善。1.2航空公司信息管理系統(tǒng)的產(chǎn)生背景在現(xiàn)代社會,人們的生活節(jié)奏越來越快,如何提高生產(chǎn)生活質(zhì)量成為人們?nèi)找骊P(guān)注的話題。二十一世紀是一個信息化技術(shù)高度發(fā)達的時代,信息化技術(shù)已經(jīng)深入社會生活的各個領(lǐng)域。在當今激烈的市場競爭中,誰掌握著信息的控制權(quán),誰就掌握著主動權(quán),現(xiàn)代企業(yè)的競爭就是一個例證。在現(xiàn)代大型企業(yè)中,僅靠人力對企業(yè)進行管理不僅效率低下,有時甚至是根本不可能完成的一項任務。因此,必須借助信息技術(shù)的發(fā)展,對企業(yè)的各項事務實施信息化管理,以提高工作效率和可靠性,這也是建立現(xiàn)代化企業(yè)的要求和時代發(fā)展的必然趨勢。在信息技術(shù)還不是十發(fā)達的時代,人們在要旅行的時候,必須到車站或是機場的售票處臨時買票,或者提前好幾天到離居住地很遠的地方事先將票買好。在這種情況下,人們不知道是否能按預期買到票。在旅行旺季的時候,有時耽誤了大量的時間也沒將票買好,給人們的出行帶來了很大的不便。隨著信息技術(shù)的日趨成熟,航空業(yè)務隨之產(chǎn)生。現(xiàn)在,人們?nèi)绻獬雎眯?,可以提前將機票預訂好。而且更為方便的是,人們不必親自到機場買票,因為很多地方都有提供訂票業(yè)務。這大大方便了人們的外出旅行和工作,提高了服務質(zhì)量和效率。1.3航空公司信息管理系統(tǒng)的概述一般來說一個好的營運的航空公司需要管理所擁有的飛機、航線的設置、客戶的信息等,更重要的還要提供票務管理。面對各種不同種類的信息,需要合理的數(shù)據(jù)庫結(jié)構(gòu)來保存數(shù)據(jù)信息以及有效的程序結(jié)構(gòu)支持各種數(shù)據(jù)操作的執(zhí)行。本設計講述如何建立一個航空公司信息管理系統(tǒng)。系統(tǒng)開發(fā)的總體任務是實現(xiàn)各種信息的系統(tǒng)化、規(guī)范化和自動化。一般而言,航空公司的管理系統(tǒng)應該包括人事管理系統(tǒng)、設備管理系統(tǒng)和航班管理系統(tǒng)。由于時間有限,在此先實現(xiàn)航班管理系統(tǒng),其他模塊暫不實現(xiàn)。作為一個訂票系統(tǒng),其服務的對象是雙方面的:航空公司和乘客。因此,一個好的信息管理系統(tǒng),必須讓雙方在使用時都快捷方便。本系統(tǒng)采用Java為設計語言,界面設計簡潔而實用,操作簡單。JCreator的開發(fā)環(huán)境使得本系統(tǒng)的開發(fā)簡單節(jié)省時間,而且在運行測試以及維護等方面也不像其他的開發(fā)工具來得繁瑣,更減少了在維護方面的成本。本系統(tǒng)主要實現(xiàn)的功能有:查詢航線(根據(jù)旅客提出的終點站名輸出下列信息:航班號,飛機號,星期幾飛,最近一天航班的日期和余票量。),訂票(根據(jù)客戶提出的要求如航班號,所需票數(shù)來查詢該航班的票額情況,若尚有余票,則為客戶辦理訂票手續(xù);若已滿員或余票額少于訂票額,則需重新詢問客戶要求,若需要可登記排隊候補。),退票(根據(jù)客戶提供的情況日期和航班,為客戶辦理退票手續(xù),然后查詢該航班,是構(gòu)有人排隊候補,首先詢問排在第一的客戶,若退票額能滿足他的要求,則為他辦理訂票手續(xù),否則一次詢問其他候補客戶。)2.航空公司信息管理系統(tǒng)的分析2.1問題定義問題定義階段必須確定系統(tǒng)應該做什么,一般應通過對客戶的訪問調(diào)查,讓系統(tǒng)分析員扼要地寫出關(guān)于問題性質(zhì)、工作目標和工程規(guī)模的書面報告,經(jīng)過討論和必要的修改之后這份報告應該得到客戶的確認。由于此次程序?qū)崿F(xiàn)的功能較少且簡單,只是實現(xiàn)了用戶對航班信息的查詢,訂票和退票的簡單操作,因此跳過。2.2可行性研究2.2.1技術(shù)可行性Java是由SunMicrosystems公司于1995年5月推出的Java程序設計語言(以下簡稱Java語言)和Java平臺的總稱。用Java實現(xiàn)的HotJava瀏覽器(支持Javaapplet)顯示了Java的魅力:跨平臺、動態(tài)的Web、Internet計算。從此,Java被廣泛接受并推動了Web的迅速發(fā)展,常用的瀏覽器現(xiàn)在均支持Javaapplet。另一方面,Java技術(shù)也不斷更新。Java平臺由Java虛擬機(JavaVirtualMachine)和Java應用編程接口(ApplicationProgrammingInterface、簡稱API)構(gòu)成。Java應用編程接口為Java應用提供了一個獨立于操作系統(tǒng)的標準接口,可分為基本部分和擴展部分。在硬件或操作系統(tǒng)平臺上安裝一個Java平臺之后,Java應用程序就可運行。現(xiàn)在Java平臺已經(jīng)嵌入了幾乎所有的操作系統(tǒng)。這樣Java程序可以只編譯一次,就可以在各種系統(tǒng)中運行。Java具有一下特點:1、Java語言是簡單的。Java從C++演變而來,保留了C++的許多優(yōu)點,去除了C++中易產(chǎn)生錯誤的功能,簡化了內(nèi)存管理,減輕了程序員進行內(nèi)存管理的負擔。2、Java語言是一個面向?qū)ο蟮?。Java語言提供類、接口和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實現(xiàn)機制。Java語言全面支持動態(tài)綁定,Java語言是一個純的面向?qū)ο蟪绦蛟O計語言。3、Java語言是分布式的。Java語言支持Internet應用的開發(fā),在基本的Java應用編程接口中有一個網(wǎng)絡應用編程接口,它提供了用于網(wǎng)絡應用編程的類庫。Java的RMI(遠程方法激活)機制也是開發(fā)分布式應用的重要手段。4、Java語言是健壯的。Java的強類型機制、異常處理、廢料的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。5、Java語言是安全的。Java通常被用在網(wǎng)絡環(huán)境中,為此,Java提供了一個安全機制以防惡意代碼的攻擊。Java對通過網(wǎng)絡下載的類具有一個安全防范機制,并提供安全管理機制讓Java應用設置安全哨兵。6、Java語言是體系結(jié)構(gòu)中立的。Java程序在Java平臺上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式,然后可以在實現(xiàn)這個Java平臺的任何系統(tǒng)中運行。7、Java語言是可移植的。這種可移植性來源于體系結(jié)構(gòu)中立性,另外,Java還嚴格規(guī)定了各個基本數(shù)據(jù)類型的長度。Java系統(tǒng)本身也具有很強的可移植性。8、Java語言是解釋型的。在運行時,Java平臺中的Java解釋器對這些字節(jié)碼進行解釋執(zhí)行,執(zhí)行過程中需要的類在聯(lián)接階段被載入到運行環(huán)境中。9、Java是高性能的。與那些解釋型的高級腳本語言相比,Java的確是高性能的。事實上,Java的運行速度隨著JIT(Just-In-Time)編譯器技術(shù)的發(fā)展越來越接近于C++。10、Java語言是多線程的。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創(chuàng)建。線程的活動由一組方法來控制,Java語言支持多個線程的同時執(zhí)行,并提供多線程之間的同步機制。11、Java語言是動態(tài)的。Java程序需要的類能夠動態(tài)地被載入到運行環(huán)境,也可以通過網(wǎng)絡來載入所需要的類。這也有利于軟件的升級。另外,Java中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。Java語言的優(yōu)良特性使得Java應用具有無比的健壯性和可靠性,這也減少了應用系統(tǒng)的維護費用。Java對對象技術(shù)的全面支持和Java平臺內(nèi)嵌的API能縮短應用系統(tǒng)的開發(fā)時間并降低成本。Java的編譯一次,到處可運行的特性使得它能夠提供一個隨處可用的開放結(jié)構(gòu)和在多平臺之間傳遞信息的低成本方式。特別是Java企業(yè)應用編程接口(JavaEnterpriseAPIs)為企業(yè)計算及電子商務應用系統(tǒng)提供了有關(guān)技術(shù)和豐富的類庫。本系統(tǒng)采用java作為開發(fā)語言,來實現(xiàn)安全的、多線程的、可移植航空定票系統(tǒng),并且降低開發(fā)難度。2.2.2經(jīng)濟可行性本系統(tǒng)實現(xiàn)的功能較少且簡單,所以在開發(fā)的過程中基本上不需要考慮什么成本,開發(fā)人員已盡可能的減少。使用較成熟的開發(fā)工具也減少不必要的支出,只需用很小的代價便可開發(fā)完畢。使用本系統(tǒng)的用戶只需在短時間內(nèi)就可以獲得個人所需的信息,并獲得需要的服務。這點與傳統(tǒng)的人工服務相比,效率得到了很大的提升,無論是對用戶還是公司都節(jié)省了大量的時間,帶來很大的方便,并且省去了雇傭員工的費用。軟件的經(jīng)濟效益大大的超過了它的開發(fā)成本,所以開發(fā)本軟件在經(jīng)濟上是可行的。2.2.3操作可行性本系統(tǒng)采用的是直觀的圖形用戶界面,用戶進入航空公司信息管理系統(tǒng)的主界面后,有查詢、訂票和退票這三個操作按鈕可供用戶選擇,各個界面簡潔,操作方便,容易上手,更有提示信息。航班的查詢只要在查詢界面按提示輸入信息,然后在界面顯示相應的信息。預訂機票只要在訂票界面輸入提示信息,就可預訂成功,如果預訂數(shù)量超過余票量,則系統(tǒng)提示,請從新預訂。退票則只要在退票界面按提示輸入信息,系統(tǒng)核對過正確后,就可確認退票??傮w來說,程序操作簡單,數(shù)據(jù)顯示直觀。另外,從法律方面來看,該系統(tǒng)的開發(fā)只運用于學習中,它不存在法律問題,也可以說是完全合法的,完全可行的。從社會效益方面來看,該系統(tǒng)的應用有利于航空客運業(yè)的發(fā)展,提高它的經(jīng)濟效益,同時促進社會經(jīng)濟的發(fā)展。2.3需求分析2.3.1確定對系統(tǒng)的綜合要求1.功能需求:航空公司信息管理系統(tǒng)必須完成的功能是:對機票的查詢、訂票和退票的簡單管理操作,系統(tǒng)的實現(xiàn)采用直觀的圖形用戶界面,用戶進入航空公司信息管理系統(tǒng)的主界面后,有查詢、訂票和退票這三個操作界面可供用戶選擇,各個界面簡潔,操作方便,容易上手。用戶可以對航班進行詳細的信息查詢,然后根據(jù)需求進行訂票和退票(整個程序運行過程中,對用戶不當?shù)牟僮鲗⑻岢鲥e誤警告)。2.性能需求:為了保證系統(tǒng)能夠長期、安全、穩(wěn)定、可靠、高效的運行,系統(tǒng)應該滿足以下的性能需求:系統(tǒng)處理的準確性和及時性是系統(tǒng)的必要性能,航空公司信息管理系統(tǒng)在開發(fā)過程中,應該充分考慮以后的可擴充性,要求系統(tǒng)提供足夠的手段進行功能的調(diào)整和擴充。2.3.2分析建模1、對象模型程序中建立了四個類,類圖如圖2-1所示:主界面主界面包含退票界面訂票界面查詢界面圖2-1類圖2、功能模型數(shù)據(jù)流圖如圖2-2所示:航空公司信息管理系統(tǒng)航空公司信息管理系統(tǒng)查詢處理訂票處理退票處理航班信息查詢航班信息訂票退票登入航空公司信息管理系統(tǒng)用戶圖2-2快件信息快件信息快件信息快件信息快件信息用戶查詢運單號碼查詢:顯示快件信息用戶快件信息快件信息快件信息快件信息用戶記錄快件信息快件信息錄入:存入數(shù)據(jù)庫用戶快件信息快件信息快件信息快件信息用戶查詢運單號碼快件信息更新:更新快件信息用戶快件信息快件信息快件信息快件信息用戶查詢運單號碼快件信息刪除:刪除快件信息用戶

系統(tǒng)用例圖如圖2-3所示:航班信息的查詢航班信息的查詢訂票退票航空公司信息管理系統(tǒng)圖2-3航空公司信息管理系統(tǒng)用例圖用戶3、動態(tài)模型主要狀態(tài)轉(zhuǎn)換圖如下:輸入Do/輸入終點站顯示輸入Do/輸入終點站顯示Do/顯示航班信息核對Do/核對終點站選擇查詢確定無效提示Do/提示無此航班重置有效繼續(xù)圖2-4查詢的狀態(tài)轉(zhuǎn)換圖輸入Do/輸入航班號輸入Do/輸入航班號輸入Do/輸入用戶信息核對Do/核對航班號選擇訂票確定無效提示Do/提示無此航班重置有效繼續(xù)圖2-5訂票的狀態(tài)轉(zhuǎn)換圖輸入輸入Do/輸入日期和航班號輸入Do/輸入用戶信息和退票數(shù)核對Do/核對日期和航班號選擇退票確定無效提示Do/提示無此航班重置有效繼續(xù)圖2-6退票的狀態(tài)轉(zhuǎn)換圖2.2.3系統(tǒng)邏輯模型航班信息實體E-R圖航班航班航班號飛機號時間價格終點站余票量圖2-7航班信息實體E-R圖用戶信息實體E-R圖用戶用戶姓名聯(lián)系方式圖2-8用戶信息實體E-R圖3.航空公司信息管理系統(tǒng)的系統(tǒng)設計3.1總體設計3.1.1軟件層次結(jié)構(gòu)圖航空公司信息管理系統(tǒng)航空公司信息管理系統(tǒng)航班信息查詢模塊退票模塊預訂機票模塊圖3-1軟件層次結(jié)構(gòu)圖3.1.2IPO圖選擇相應的操作選項選擇相應的操作選項執(zhí)行操作顯示操作結(jié)果圖3-2主模塊的IPO圖輸出輸出處理輸入1.校驗終點站2.查詢信息要查詢的終點站有效的信息圖3-3查詢模塊的IPO圖輸出輸出處理輸入1.校驗航班號和訂票數(shù)需預定的航班號和訂票數(shù)用戶訂票信息圖3-4訂票模塊的IPO圖輸出輸出處理輸入1.校驗日期和航班號需預定的日期和航班號用戶退票信息圖3-4退票模塊的IPO圖3.2詳細設計3.2.1軟件程序流程圖軟件具體工作流程:查詢,首先查詢航班信息,填寫終點站;然后對用戶填寫的數(shù)據(jù)信息進行核對處理,如果不符合就提示錯誤,如果符合要求就顯示信息。訂票,首先填寫航班號和訂票數(shù);然后對用戶填寫的數(shù)據(jù)信息進行核對處理,如果不符合就提示錯誤,或者余票量不夠,進入排隊候補登記,如果符合要求就進入訂票界面,最后填寫用戶個人信息確定訂票。退票,首先填寫日期和航班號,然后對用戶填寫的數(shù)據(jù)信息進行核對處理,如果不符合就提示錯誤,如果符合要求就進入退票界面,最后填寫用戶個人信息和退票數(shù)確定退票。

程序流程圖如下:啟動界面啟動界面選擇查詢信息訂票退票輸入終點站是否存在此航班是否是否符合退出輸入日期和航班輸出航班信息退出輸入用戶信息否是否為余票量不夠是否排隊候補登記退出是輸入航班和訂票數(shù)是否符合否是輸入用戶信息圖3-6程序流程圖3.2.2主要功能盒圖設計啟動總界面啟動總界面選擇操作查詢操作訂票操作退票操作查詢航班信息預訂機票退票圖3-7軟件啟動盒圖查詢查詢輸入終點站是否符合航班信息NY顯示航班信息提示出錯圖3-8查詢操作盒圖訂票訂票輸入航班號和訂票數(shù)是否符合NY是否為余票量不夠YN提示出錯排隊候補用戶個人信息登記圖3-9訂票操作盒圖退票退票輸入日期和航班號是否符合航班信息NY用戶個人信息登記提示出錯圖3-10退票操作盒圖3.2.3出錯處理設計程序在運行時主要會出現(xiàn)兩種錯誤:(1)由于輸入信息,或無法滿足要求時產(chǎn)生的錯誤,稱為軟錯誤。(2)由于其他問題,如計算機軟件故障、模塊語句錯誤等,產(chǎn)生的問題,稱為硬錯誤。對于軟錯誤,須在查詢操作成功判斷及輸入數(shù)據(jù)驗證模塊由數(shù)據(jù)進行數(shù)據(jù)分析,判斷錯誤類型,再生成相應的錯誤提示語句,送到輸出模塊中。對與硬錯誤,可在出錯的相應模塊中輸出簡單的出錯語句,并將程序重置。返回輸入階段。出錯信息必須給出相應的出錯原因。4.航空公司信息管理系統(tǒng)的編碼和測試4.1系統(tǒng)編碼4.1.1軟件的界面首先是啟動系統(tǒng)的總模塊,由此進入各個操作模塊。界面截圖:代碼:publicFlightBook()//構(gòu)造函數(shù) { super("航空訂票"); this.setSize(600,400); this.setLocation(300,240); this.setResizable(false); this.setVisible(true); this.setLayout(newBorderLayout()); JPanelpanel=newJPanel(newGridLayout(11,1)); this.add(panel,BorderLayout.WEST); this.setBackground(Color.blue); button_ask=newJButton("查詢"); panel.add(button_ask); button_ask.addActionListener(this); button_book=newJButton("訂票"); panel.add(button_book); button_book.addActionListener(this); button_cancel=newJButton("退票"); panel.add(button_cancel); button_cancel.addActionListener(this); text_user=newJTextArea(); this.add(text_user,BorderLayout.CENTER); frame_cx=newJFrame("輸入");//查詢輸入框 frame_cx.setSize(280,120); frame_cx.setResizable(false); frame_cx.setBackground(Color.LIGHT_GRAY); frame_cx.setLayout(newFlowLayout()); frame_cx.add(newJLabel("終點站:")); text_field1=newJTextField(20); frame_cx.add(text_field1); button_ok1=newJButton("ok"); frame_cx.add(button_ok1); button_ok1.addActionListener(this); frame_cx.addWindowListener(this); frame_dp=newJFrame("輸入");//訂票輸入框 frame_dp.setSize(350,150); frame_dp.setResizable(false); frame_dp.setBackground(Color.LIGHT_GRAY); frame_dp.setLayout(newFlowLayout()); frame_dp.add(newJLabel("航班號:")); text_field2=newJTextField(20); frame_dp.add(text_field2); frame_dp.add(newJLabel("訂票數(shù):")); text_field3=newJTextField(20); frame_dp.add(text_field3); button_ok2=newJButton("確定"); frame_dp.add(button_ok2); button_ok2.addActionListener(this); frame_dp.addWindowListener(this); frame_tp=newJFrame("輸入");//退票輸入框 frame_tp.setSize(350,150); frame_tp.setResizable(false); frame_tp.setBackground(Color.LIGHT_GRAY); frame_tp.setLayout(newFlowLayout()); frame_tp.add(newJLabel("日期:")); text_field4=newJTextField(20); frame_tp.add(text_field4); frame_tp.add(newJLabel("航班號:")); text_field5=newJTextField(20); frame_tp.add(text_field5); button_ok3=newJButton("正確"); frame_tp.add(button_ok3); button_ok3.addActionListener(this); frame_tp.addWindowListener(this); dialog_cx=newJDialog(this,"提示",true);//提示查詢輸入航線未開通錯誤 dialog_cx.setSize(240,80); label=newJLabel("此站點未開通航線,請重新輸入!"); dialog_cx.add(label); dialog_cx.setLayout(newFlowLayout(FlowLayout.CENTER)); dialog_cx.addWindowListener(this); frame_dpsx=newJFrame("訂票手續(xù)");//訂票手續(xù) frame_dpsx.setSize(250,200); frame_dpsx.setResizable(false); frame_dpsx.setBackground(Color.LIGHT_GRAY); frame_dpsx.setLayout(newFlowLayout(FlowLayout.CENTER)); frame_dpsx.add(newJLabel("姓名:")); text_fielddp_name=newJTextField(10); frame_dpsx.add(text_fielddp_name); frame_dpsx.add(newJLabel("航班號:")); text_fielddp_hbh=newJTextField(10); frame_dpsx.add(text_fielddp_hbh); frame_dpsx.add(newJLabel("訂票數(shù):")); text_fielddp_number=newJTextField(10); frame_dpsx.add(text_fielddp_number); frame_dpsx.add(newJLabel("聯(lián)系方式:")); text_fielddp_lxfs=newJTextField(10); frame_dpsx.add(text_fielddp_lxfs); button_tj=newJButton("提交"); frame_dpsx.add(button_tj); button_tj.addActionListener(this); frame_djsx=newJFrame("登記手續(xù)");//登記手續(xù) frame_djsx.setSize(250,200); frame_djsx.setResizable(false); frame_djsx.setBackground(Color.LIGHT_GRAY); frame_djsx.setLayout(newFlowLayout(FlowLayout.CENTER)); frame_djsx.add(newJLabel("姓名:")); text_fielddj_name=newJTextField(10); frame_djsx.add(text_fielddj_name); frame_djsx.add(newJLabel("航班號:")); text_fielddj_hbh=newJTextField(10); frame_djsx.add(text_fielddj_hbh); frame_djsx.add(newJLabel("訂票數(shù):")); text_fielddj_number=newJTextField(10); frame_djsx.add(text_fielddj_number); frame_djsx.add(newJLabel("聯(lián)系方式:")); text_fielddj_lxfs=newJTextField(10); frame_djsx.add(text_fielddj_lxfs); button_wc=newJButton("完成"); frame_djsx.add(button_wc); button_wc.addActionListener(this); frame_tpsx=newJFrame("退票手續(xù)");//退票手續(xù) frame_tpsx.setSize(250,200); frame_tpsx.setResizable(false); frame_tpsx.setBackground(Color.LIGHT_GRAY); frame_tpsx.setLayout(newFlowLayout(FlowLayout.CENTER)); frame_tpsx.add(newJLabel("姓名:")); text_fieldtp_name=newJTextField(10); frame_tpsx.add(text_fieldtp_name); frame_tpsx.add(newJLabel("航班號:")); text_fieldtp_hbh=newJTextField(10); frame_tpsx.add(text_fieldtp_hbh); frame_tpsx.add(newJLabel("退票數(shù):")); text_fieldtp_number=newJTextField(10); frame_tpsx.add(text_fieldtp_number); frame_tpsx.add(newJLabel("聯(lián)系方式:")); text_fieldtp_lxfs=newJTextField(10); frame_tpsx.add(text_fieldtp_lxfs); button_cg=newJButton("成功"); frame_tpsx.add(button_cg); button_cg.addActionListener(this); dialog_dpwk=newJDialog(this,"提示",true);//提示訂票輸入未開通航線錯誤 dialog_dpwk.setSize(350,80); label=newJLabel("此站點未開通航線,請查詢后重新輸入!"); dialog_dpwk.add(label); dialog_dpwk.setLayout(newFlowLayout(FlowLayout.CENTER)); dialog_dpwk.addWindowListener(this); dialog_dpyk=newJDialog(this,"提示",true);//提示訂票輸入票額不足錯誤 dialog_dpyk.setSize(350,150); label1=newJLabel("此站點已滿員或余票不足,請查詢后重新輸入!"); dialog_dpyk.add(label1); label2=newJLabel("若需要,可登記排隊候補"); dialog_dpyk.add(label2); button_sq=newJButton("登記"); button_sq.addActionListener(this); dialog_dpyk.add(button_sq); dialog_dpyk.setLayout(newFlowLayout(FlowLayout.CENTER)); dialog_dpyk.addWindowListener(this); dialog_tpts=newJDialog(this,"提示",true);//提示退票輸入日期和航班號矛盾錯誤 dialog_tpts.setSize(350,80); label=newJLabel("您輸入的日期無此航班號,請查詢后重新輸入!"); dialog_tpts.add(label); dialog_tpts.setLayout(newFlowLayout(FlowLayout.CENTER)); dialog_tpts.addWindowListener(this); d=newJDialog(this,"提示",true);//當退票滿足客戶,提示聯(lián)系該客戶 d.setSize(350,150); d.setLayout(newFlowLayout(FlowLayout.CENTER)); d.addWindowListener(this); this.addWindowListener(this); this.setVisible(true); }4.1.2軟件的查詢、訂票和退票模塊查詢截圖:查詢成功截圖:

訂票截圖:退票截圖:

代碼: publicvoidactionPerformed(ActionEvente) { Strings=e.getActionCommand();if(s=="查詢"){ frame_cx.setLocation(this.getX()+100,this.getY()+100); frame_cx.setVisible(true);}if(s=="訂票"){ frame_dp.setLocation(this.getX()+100,this.getY()+100); frame_dp.setVisible(true);}if(s=="退票"){ frame_tp.setLocation(this.getX()+100,this.getY()+100); frame_tp.setVisible(true);}if(s=="ok"){ if(text_field1.getText().toString().trim().equals("北京")) { text_user.append("地點:"+F_name[0]+"航班號:"+H_number[0]+"飛機號:"+F_number[0]+"時間:"+time[0]+"價格:"+Price[0]+"余票量:"+Count[0]+"\n"); } elseif(text_field1.getText().toString().trim().equals("香港")) { text_user.append("地點:"+F_name[1]+"航班號:"+H_number[1]+"飛機號:"+F_number[1]+"時間:"+time[1]+"價格:"+Price[1]+"余票量:"+Count[1]+"\n"); } elseif(text_field1.getText().toString().trim().equals("澳門")) { text_user.append("地點:"+F_name[2]+"航班號:"+H_number[2]+"飛機號:"+F_number[2]+"時間:"+time[2]+"價格:"+Price[2]+"余票量:"+Count[2]+"\n"); } elseif(text_field1.getText().toString().trim().equals("紐約")) { text_user.append("地點:"+F_name[3]+"航班號:"+H_number[3]+"飛機號:"+F_number[3]+"時間:"+time[3]+"價格:"+Price[3]+"余票量:"+Count[3]+"\n"); } elseif(text_field1.getText().toString().trim().equals("悉尼")) { text_user.append("地點:"+F_name[4]+"航班號:"+H_number[4]+"飛機號:"+F_number[4]+"時間:"+time[4]+"價格:"+Price[4]+"余票量:"+Count[4]+"\n"); } else { dialog_cx.setLocation(this.getX()+100,this.getY()+100); dialog_cx.setVisible(true); } frame_cx.setVisible(false);}if(s=="確定"){ StringHnumber=text_field2.getText().toString().trim(); intDcount=Integer.parseInt(text_field3.getText().toString().trim()); if(Hnumber.equals("CAC")||Hnumber.equals("cac")) { if(Dcount<=Count[0]) { Count[0]-=Dcount; frame_dpsx.setLocation(this.getX()+100,this.getY()+100); frame_dpsx.setVisible(true); } else { dialog_dpyk.setLocation(this.getX()+100,this.getY()+100); dialog_dpyk.setVisible(true); } } elseif(Hnumber.equals("CFC")||Hnumber.equals("cfc")&&Dcount<=Count[1]) { if(Dcount<=Count[1]) { Count[0]-=Dcount; frame_dpsx.setLocation(this.getX()+100,this.getY()+100); frame_dpsx.setVisible(true); } else { dialog_dpyk.setLocation(this.getX()+100,this.getY()+100); dialog_dpyk.setVisible(true); } } elseif(Hnumber.equals("CDA")||Hnumber.equals("cda")&&Dcount<=Count[2]) { if(Dcount<=Count[2]) { Count[0]-=Dcount; frame_dpsx.setLocation(this.getX()+100,this.getY()+100); frame_dpsx.setVisible(true); } else { dialog_dpyk.setLocation(this.getX()+100,this.getY()+100); dialog_dpyk.setVisible(true); } } elseif(Hnumber.equals("CCX")||Hnumber.equals("ccx")&&Dcount<=Count[3]) { if(Dcount<=Count[3]) { Count[0]-=Dcount; frame_dpsx.setLocation(this.getX()+100,this.getY()+100); frame_dpsx.setVisible(true); } else { dialog_dpyk.setLocation(this.getX()+100,this.getY()+100); dialog_dpyk.setVisible(true); } } elseif(Hnumber.equals("MCM")||Hnumber.equals("mcm")&&Dcount<=Count[4]) { if(Dcount<=Count[4]) { Count[0]-=Dcount; frame_dpsx.setLocation(this.getX()+100,this.getY()+100); frame_dpsx.setVisible(true); } else { dialog_dpyk.setLocation(this.getX()+100,this.getY()+100); dialog_dpyk.setVisible(true); } } else { dialog_dpwk.setLocation(this.getX()+100,this.getY()+100); dialog_dpwk.setVisible(true); } frame_dp.setVisible(false);}if(e.getActionCommand()=="提交"){ frame_dpsx.setVisible(false);}if(e.getActionCommand()=="登記"){ dialog_dpyk.setVisible(false); frame_djsx.setLocation(this.getX()+100,this.getY()+100); frame_djsx.setVisible(true);}if(e.getActionCommand()=="完成"){ intWait_number=Integer.parseInt(text_fielddj_number.getText().toString().trim()); Wait_name[Wait_i]=text_fielddj_name.getText().toString().trim(); Wait_hbh[Wait_i]=text_fielddj_hbh.getText().toString().trim(); Wait_count[Wait_i]=Wait_number; Wait_xl[Wait_i]=Wait_i; Wait_lxfs[Wait_i]=text_fielddj_lxfs.getText().toString().trim(); frame_djsx.setVisible(false); text_user.append("登記姓名:"+Wait_name[Wait_i]+"登記航班號:"+Wait_hbh[Wait_i]+"登記訂票數(shù)量:"+Wait_count[Wait_i]+"聯(lián)系方式:"+Wait_lxfs[Wait_i]+"\n"); Wait_i++;}if(e.getActionCommand()=="正確"){ Stringa=text_field4.getText().toString().trim(); Stringb=text_field5.getText().toString().trim(); if(a.equals("周三")&&b.equals("cfc")||b.equals("CFC")||b.equals("ccx")||b.equals("CCX")){ frame_tpsx.setLocation(this.getX()+100,this.getY()+100); frame_tpsx.setVisible(true);}elseif(a.equals("周日")&&b.equals("cda")||b.equals("CDA")||b.equals("mcm")||b.equals("MCM")){ frame_tpsx.setLocation(this.getX()+100,this.getY()+100); frame_tpsx.setVisible(true);}elseif(a.equals("周五")&&b.equals("cac")||b.equals("CAC")){ frame_tpsx.setLocation(this.getX()+100,this.getY()+100); frame_tpsx.setVisible(true);}else{ dialog_tpts.setLocation(this.getX()+100,this.getY()+100); dialog_tpts.setVisible(true);} frame_tp.setVisible(false); }if(e.getActionCommand()=="成功"){ inti=0; intj=0; Stringc=text_fieldtp_hbh.getText().toString().trim(); intNumb=Integer.parseInt(text_fieldtp_number.getText().toString().trim()); frame_tpsx.setVisible(false); if(c.equals("cac")||c.equals("CAC")) { Count[0]+=Numb; if(Wait_i>0) { for(i=0;i<Wait_i;i++) { if(Wait_hbh[i].equals("cac")||Wait_hbh[i].equals("CAC")&&Wait_count[i]<=Count[0]) { j=i+1; label=newJLabel(j+"號客戶:"+Wait_name[i]+"滿足訂票要求,聯(lián)系方式是:"+Wait_lxfs[i]); d.add(label);d.setLocation(this.getX()+100,this.getY()+100); d.setVisible(true); } } } } elseif(c.equals("cfc")||c.equals("CFC")) { Count[1]+=Numb; if(Wait_i>0) { for(i=0;i<Wait_i;i++) { if(Wait_hbh[i].equals("cfc")||Wait_hbh[i].equals("CFC")&&Wait_count[i]<=Count[0]) { j=i+1; label=newJLabel(j+"號客戶:"+Wait_name[i]+"滿足訂票要求,聯(lián)系方式是:"+Wait_lxfs[i]); d.add(label);d.setLocation(this.getX()+100,this.getY()+100); d.setVisible(true); } } } } elseif(c.equals("cda")||c.equals("CDA")) { Count[2]+=Numb; if(Wait_i>0) { for(i=0;i<Wait_i;i++) { if(Wait_hbh[i].equals("cda")||Wait_hbh[i].equals("CDA")&&Wait_count[i]<=Count[0]) { j=i+1; label=newJLabel(j+"號客戶:"+Wait_name[i]+"滿足訂票要求,聯(lián)系方式是:"+Wait_lxfs[i]); d.add(label);d.setLocation(this.getX()+100,this.getY()+100); d.setVisible(true); } } } } elseif(c.equals("ccx")||c.equals("CCX")) { Count[3]+=Numb; if(Wait_i>0) { for(i=0;i<Wait_i;i++) { if(Wait_hbh[i].equals("ccx")||Wait_hbh[i].equals("CCX")&&Wait_count[i]<=Count[0]) { j=i+1; label=newJLabel(j+"號客戶:"+Wait_name[i]+"滿足訂票要求,聯(lián)系方式是:"+Wait_lxfs[i]); d.add(label);d.setLocation(this.getX()+100,this.getY()+100); d.setVisible(true); } } } } elseif(c.equals("mcm")||c.equals("MCM")) { Count[4]+=Numb; if(Wait_i>0) { for(i=0;i<Wait_i;i++) { if(Wait_hbh[i].equals("mcm")||Wait_hbh[i].equals("MCM")&&Wait_count[i]<=Count[0]) { j=i+1; label=newJLabel(j+"號客戶:"+Wait_name[i]+"滿足訂票要求,聯(lián)系方式是:"+Wait_lxfs[i]); d.add(label);d.setLocation(this.getX()+100,this.getY()+100); d.setVisible(true); } } } }}}4.2系統(tǒng)測試信息技術(shù)深深融入業(yè)務生活,使得軟件產(chǎn)品質(zhì)量的要求變得很高。這也使我們?yōu)樘岣哕浖y試的效率來尋求各式各樣的方法。而軟件測試的方法和技術(shù)是多種多樣的。對于軟件測試技術(shù),可以從不同的角度加以分類:按測試階段可分為:單元測試、集成測試、確認測試。測試任何產(chǎn)品都有兩種方法:如果已經(jīng)知道了產(chǎn)品應該具有的功能,可以通過測試來檢驗是否每個功能都能正常使用;如果知道產(chǎn)品的內(nèi)部過程,可以通過測試來檢驗產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進行。前一種方法稱為黑盒測試,后一種方法成為白盒測試。4.2.1黑盒測試的內(nèi)容功能測試也稱為黑盒測試,用于驗證系統(tǒng)的各項功能是否能正常完成。由于實際情況的多樣性,需要由多人重復測試,在不同情況下執(zhí)行各項功能操作,其輸出就是該功能的執(zhí)行結(jié)果。黑盒測試著重測試軟件功能。黑盒測試并不能取代白盒測試,它是與白盒測試互補的測試方法,它很可能發(fā)現(xiàn)白盒測試不易發(fā)現(xiàn)的其他類型錯誤。黑盒測試發(fā)現(xiàn)下述類型錯誤:功能不正確或遺漏了功能。界面錯誤。數(shù)據(jù)結(jié)構(gòu)錯誤或外部數(shù)據(jù)庫訪問錯誤。性能錯誤。初始化和終止錯誤。4.2.2使用黑盒測試的情況分析采用等價劃分的有效等價類和無效等價類進行測試。1.查詢功能的測試(1)測試數(shù)據(jù):輸入要查詢的終點站:北京,單擊OK。預期的輸出結(jié)果:顯示終點站為北京的航班的全部信息實際運行結(jié)果如下圖所示:運行結(jié)果符合預期情況。(2)測試數(shù)據(jù):輸入要查詢的終點站:上海,單擊OK。預期的輸出結(jié)果:提示此站點未開通航線,請重新輸入!實際運行結(jié)果如下圖所示:運行效果符合預期情況。

2.訂票功能的測試(1)測試數(shù)據(jù):輸入航班號:CAC,訂票數(shù):3,單擊確定。預期的輸出結(jié)果:顯示訂票手續(xù)對話框?qū)嶋H運行結(jié)果如下圖所示:運行效果符合預期情況。(2)測試數(shù)據(jù):輸入航班號:CAM,訂票數(shù):3,單擊確定。預期的輸出結(jié)果:提示此站點未開通航線,請查詢后重新輸入!實際運行結(jié)果如下圖所示:運行效果符合預期情況。

(3)測試數(shù)據(jù):輸入航班號:CAC,訂票數(shù):100,單擊確定。預期的輸出結(jié)果:提示此站點已滿或余票不足,請查詢后重新輸入!實際運行結(jié)果如下圖所示:運行效果符合預期情況。3.退票功能的測試(1)測試數(shù)據(jù):輸入日期:周五,航班號:CAC,單擊確定。預期的輸出結(jié)果:顯示退票手續(xù)對話框?qū)嶋H運行結(jié)果如下圖所示:運行效果符合預期情況。

(1)測試數(shù)據(jù):輸入日期:周二,航班號:CAC,單擊確定。預期的輸出結(jié)果:提示您輸入的日期無此航班號,請查詢后重新輸入!實際運行結(jié)果如下圖所示:運行效果符合預期情況。5.總結(jié)本設計實現(xiàn)了航空公司信息管理系統(tǒng)的一些簡單功能,設計了3個簡單的人機交互界面,本軟件的設計是由JAVA語言實現(xiàn)。主要實現(xiàn)的功能有:航空信息的查詢、訂票和退票。通過航空公司信息管理系統(tǒng)的設計,感覺動手能力

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論