




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 太原理工大學(xué)畢業(yè)設(shè)計(jì)(論文)用紙 緒 論1.1 研究的目的與意義伴隨現(xiàn)代科技的發(fā)展,3G技術(shù)逐漸成為人們生活的重要部分。3G在我國的用途極多,目前主要集中在以下商用領(lǐng)域:移動寬帶、電信業(yè)務(wù)、3G市場運(yùn)營、3G市場建設(shè)與共享以及TD完善。我國通信3G時(shí)代的到來以2011年底的中國3G大規(guī)模用戶放號為標(biāo)志,從此刻開始3G走向商用化道路。專家預(yù)計(jì)到2015年,我國3G用戶數(shù)量達(dá)到高峰,其中一半用戶來自傳統(tǒng)移動通信。由此可見,中國的3G發(fā)展?jié)摿O大, 3G的發(fā)展也將極大推動我國通信業(yè)的繁榮和進(jìn)步。同時(shí) ,隨著現(xiàn)在社會的發(fā)展,我們的生活也朝著電子化不斷發(fā)展,如交通電子眼在交通管理中越來越普及;而經(jīng)濟(jì)的
2、不斷發(fā)展,避免不了人們都要到某些城市去公干或其他的事情。因此,開發(fā)一個手機(jī)版航空訂票系統(tǒng)就顯得十分必要,可以說只要你是3G用戶,無論你到哪里都可以通過該系統(tǒng)及時(shí)得到航班信息。該航空訂票系統(tǒng)將幫助出行人士方便、高效的安排自己的行程。在這種快節(jié)奏的經(jīng)濟(jì)生活中,最基本的是快捷準(zhǔn)確的獲取最新信息。隨著空間信息技術(shù)、移動通信技術(shù)、互聯(lián)網(wǎng)技術(shù)以及移動終端技術(shù)的高速發(fā)展,為快速便捷獲取信息提供便利。隨之開發(fā)的移動技術(shù),它將互聯(lián)網(wǎng)上的所有信息和地理信息系統(tǒng)特點(diǎn)有機(jī)結(jié)合,擴(kuò)展到移動終端上,為移動用戶通過技術(shù)的交換、獲取、共享和發(fā)布提供了有效的途徑,大量的運(yùn)用地址信息。而本系統(tǒng)就是為了提供這么一個移動平臺。本系統(tǒng)
3、是基于Android操作平臺開發(fā)的客戶端軟件。用戶可以在此平臺上查看及預(yù)定機(jī)票,本系統(tǒng)將會與第三方合作,如銀行和物流公司,來為用戶提供更便捷更安全的服務(wù).此系統(tǒng)的重點(diǎn)在于提供便捷而完善的交易過程,而難點(diǎn)則在于系統(tǒng)并發(fā)性與安全性的控制和實(shí)現(xiàn).1.2 國內(nèi)外發(fā)展現(xiàn)狀計(jì)算機(jī)科學(xué)的發(fā)展推動了移動終端的計(jì)算能力和存儲能力的日益強(qiáng)大,也促進(jìn)了移動通信和互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,移動客戶端的開發(fā)技術(shù)也愈發(fā)成熟,由Google攜手的眾多公司聯(lián)合推出源代碼開放的Android開發(fā)平臺是繼基于WAP瀏覽器和基于J2ME技術(shù)之后,是對于移動客戶端開發(fā)的又一創(chuàng)舉。Android這個手機(jī)系統(tǒng)是Linux平臺的基礎(chǔ)上開發(fā)制成
4、的。它不僅擁有操作系統(tǒng),還包括應(yīng)用程序和用戶界面,應(yīng)用程序中包含移動手機(jī)工作使用的全部軟件,但是與以往不同,它不會出現(xiàn)任何妨礙或組織移動產(chǎn)業(yè)創(chuàng)新發(fā)展的對于專有權(quán)的爭端。Googlel領(lǐng)銜與摩托羅拉、T-Mobile、高通、宏達(dá)電以及中國移動等這個行業(yè)的領(lǐng)軍企業(yè)組成一個開發(fā)手機(jī)聯(lián)盟,Google與運(yùn)營商、開發(fā)商、設(shè)備制造商和其他相關(guān)各方深入合作,嘗試通過建立開放化、標(biāo)準(zhǔn)化的移動客戶端軟件平臺來組件一個開放的生態(tài)系統(tǒng)。縱觀基于WAP瀏覽器、基于J2ME技術(shù)、基于Android這三項(xiàng)技術(shù),通過“瘦客戶端”這個基于WAP瀏覽器的開發(fā)技術(shù),由于客戶端相對薄弱,致使服務(wù)器端和客戶端需要進(jìn)行大量的數(shù)據(jù)交換,
5、然而有個難題是目前無線網(wǎng)絡(luò)的帶寬和理論狀態(tài)相差甚遠(yuǎn),用戶只能進(jìn)行有限的數(shù)據(jù)共享和體驗(yàn);基于J2ME的開發(fā) 技術(shù)可以避免這個尷尬處境,因?yàn)樵诳蛻舳松暇涂梢詫?shí)現(xiàn)很多功能,不過這種“胖客戶端”需要配備較高的硬件性能,且有很多代碼工作需要做,即便代碼移植性很高,但要求的開發(fā)技術(shù)門檻也相對較高;相比之下,Android基于JAVA技術(shù)衍生的平臺,將位置服務(wù)模塊集成到平臺之中,同時(shí)優(yōu)化了核心系統(tǒng)架構(gòu),對硬件沒有那么高的要求,還有特殊的互聯(lián)網(wǎng)機(jī)制,這些都為降低移動系統(tǒng)服務(wù)的開發(fā)門檻提供了支持。Android是谷Google的戰(zhàn)略決策中不可或缺的一部分,它的出現(xiàn)將Google歌的企業(yè)目標(biāo)-“隨時(shí)隨地地為每一個
6、人提供信息”又邁進(jìn)了一大步。不難發(fā)現(xiàn),縱觀全球也有相當(dāng)多的移動電話客戶對Android技術(shù)都比較陌生。Google開發(fā)這項(xiàng)技術(shù)的根本目標(biāo)是避免移動通訊依賴于設(shè)備或者平臺,也是基于這個目的,Android對Google長期奉行的移動發(fā)展戰(zhàn)略將是個補(bǔ)充而不是取代;Google與全球各個地區(qū)的移動運(yùn)營商和移動手機(jī)制造商密切合作,既能開發(fā)實(shí)用并且具有吸引力的移動服務(wù),也能不斷推廣這些產(chǎn)品。1.3 研究目標(biāo)移動互聯(lián)的飛速發(fā)展,人們消費(fèi)方式和生活方式的轉(zhuǎn)變,為商家?guī)砬八从械纳虣C(jī)與挑戰(zhàn)。本課題的目標(biāo)是建立一個基于Android開源手機(jī)操作系統(tǒng)的手機(jī)航空訂票系統(tǒng),這個系統(tǒng)能夠?yàn)橄M(fèi)者提供一種便捷的訂票方式
7、,消費(fèi)者只需下載本軟件的客戶端應(yīng)用程序到手機(jī),注冊登錄系統(tǒng),查詢適合自己的航班,就可以預(yù)定機(jī)票,使消費(fèi)者能享受“足不出戶”就可以確定自己的工作行程的服務(wù)。 2 基本知識和基本原理2.1 Android簡介Android是基于Linux內(nèi)核的操作系統(tǒng),是Google公司在2007年11月5日公布的手機(jī)操作系統(tǒng)。它由操作系統(tǒng)、中間件、應(yīng)用軟件三部分組成,它由Linux內(nèi)核組成,獨(dú)特的Dalvik 虛擬機(jī),包含專門的地圖模塊、便捷的2D、3D繪圖方案、XML的快捷布局方案、較輕量的SQLite數(shù)據(jù)庫和多種的技術(shù)等等,它擁有迅捷的訪問網(wǎng)絡(luò)功能,集成現(xiàn)今正在使用的各種無線網(wǎng)絡(luò)技術(shù),不但可以讓研發(fā)者的功能
8、模塊在對接時(shí)可以共享和無縫繼承,重用多功能的的模塊讓開發(fā)的時(shí)間更短,開發(fā)難度更低,采用現(xiàn)今先進(jìn)的定位技術(shù),手機(jī)用戶的M-GIS體驗(yàn)更加便利。該平臺備有完善的程序開發(fā)環(huán)境,包括模擬器、除錯工具、程序執(zhí)行所耗用存儲器、性能評價(jià)等功能。Android是一個真正意義上的開放性移動設(shè)備綜合平臺,基于Android進(jìn)行系統(tǒng)開發(fā),可以很容易地利用開放的API接口,可以說,基于Android的系統(tǒng),是移動終端M-GIS開發(fā)道路上的一個里程碑。2.2 Android的系統(tǒng)架構(gòu) Android在系統(tǒng)架構(gòu)上應(yīng)用了分層架構(gòu),和現(xiàn)在大多數(shù)系統(tǒng)一樣。Android在系統(tǒng)架構(gòu)圖上分別為應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行庫
9、層和linux核心層,按從上到下四個層排列。2.2.1應(yīng)用程序?qū)覣ndroid與包含SMS短消息程序,瀏覽器,日歷,地圖,聯(lián)系人,email客戶端等組成的核心應(yīng)用程序包一起發(fā)布。編寫的語言全部都是JAVA。2.2.2應(yīng)用程序框架 核心應(yīng)用程序采用的API框架同樣可以讓開發(fā)人員完全訪問。在這個框架的安全性限制下,每個應(yīng)用程序都可以發(fā)布并使用該功能模塊。它大大簡化了組建的重要作用。在這個應(yīng)用機(jī)制下,每個程序組件都可以被快捷的替換。2.2.3系統(tǒng)運(yùn)行庫 開發(fā)者利用Android應(yīng)用程序的框架,可以使用C/C+庫應(yīng)用于Android系統(tǒng)中多樣的組件,十分方便。2.2.4Linux 內(nèi)核Android核
10、心系統(tǒng)的進(jìn)程管理安全性,網(wǎng)絡(luò)協(xié)議棧,內(nèi)存管理和驅(qū)動模型都是圍繞Linux 2.6內(nèi)核來進(jìn)行的,同時(shí)作為抽象層存在于軟件棧和硬件之間。2.3 Java語言的簡介Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,1995年5月,Sun Microsystems公司推出Java程序設(shè)計(jì)語言以及 HYPERLINK /view/209634.htm t _blank Java平臺(即JavaSE, JavaEE, JavaME),總稱為Java 。Java平臺包括兩個部分,即Java虛擬機(jī)(Java Virtual Machine)與Java 應(yīng)用編程接口(Application Prog
11、ramming Interface,API)。API為JAVA提供的標(biāo)準(zhǔn)接口是獨(dú)立于操作系統(tǒng)的,含有基本部分及擴(kuò)展部分。目前Java平臺幾乎已經(jīng)被所有操作系統(tǒng)兼容,對于一個Java程序,只需要編譯一次就能適應(yīng)各種操作系統(tǒng)。API已經(jīng)經(jīng)歷了幾個版本,最新版本是Java1.7,目前主流使用的Java平臺是基于Java1.5。Java發(fā)展至今可以分成三個體系:即JavaSE、JavaEE、JavaME,分別表示Java平臺標(biāo)準(zhǔn)版,Java平臺企業(yè)版和 Java平臺微型版。2.3.1java語言的三個體系 (1) Java SE: Java平臺標(biāo)準(zhǔn)版,最初被稱為J2SE。它允許開發(fā)和部署在服務(wù)器、桌面
12、、實(shí)時(shí)環(huán)境和嵌入式環(huán)境里運(yùn)行的 Java 應(yīng)用程序。Java SE中涵蓋了支持Java Web服務(wù)開發(fā)的類,同時(shí)它的許多基礎(chǔ)類還可以為 Java Platform和Java EE提供基礎(chǔ)。(2) Java EE: Java平臺企業(yè)版,最初被稱為J2EE。它的主要功能是輔助開發(fā)和部署具備健壯、可移植性強(qiáng)、伸縮性強(qiáng)且安全性高的服務(wù)器端Java應(yīng)用程序。它是在 Java SE 的基礎(chǔ)之上構(gòu)建而成的,提供HYPERLINK /view/3852154.htm組件模型、Web 服務(wù)、通信 API和管理的功能,可以應(yīng)用在Web 2.0 應(yīng)用程序開發(fā)或者企業(yè)級的面向服務(wù)HYPERLINK /view/118
13、8494.htm體系結(jié)構(gòu)(service-oriented architecture,SOA)。(3) Java ME: Java平臺微型版,最初被稱為J2ME。它主要是為諸如手機(jī)、電視機(jī)頂盒、PDA或者打印機(jī)之類的嵌入式設(shè)備和移動設(shè)備上執(zhí)行的應(yīng)用程序保證運(yùn)行環(huán)境是健壯且靈活的。Java ME 包括許多內(nèi)置的網(wǎng)絡(luò)協(xié)議、健壯的安全模型、靈活的用戶界面,還可以對能動態(tài)下載的連網(wǎng)或離線應(yīng)用程序提供豐富的支持?;谶@個規(guī)范的應(yīng)用程序僅僅需要編寫一次就可以成功用于許多設(shè)備,并且能充分使用各個設(shè)備的本機(jī)功能。2.3.2java語言的特點(diǎn)(1) Java語言的簡單性。由于語法很接近C語言和C+語言,大多數(shù)程
14、序員學(xué)習(xí)和使用Java時(shí)更容易理解。但同時(shí),Java摒棄了某些特性,這些特性在C+中存在,但是很難理解、容易迷惑人且很少使用,比如多繼承、操作符重載和自動發(fā)生的強(qiáng)制類型轉(zhuǎn)換。尤為重要的是,Java中拒絕使用指針,且提供各類自動的垃圾回收,如此程序員不再需要擔(dān)憂內(nèi)存管理。 (2) Java語言是面向?qū)ο笮?。Java語言仍然使用類、接口和繼承等術(shù)語,但是為了簡化代碼,它不支持類間多繼承,僅支持類間單繼承,但是支持接口的多繼承,并且支持類與接口之間的實(shí)現(xiàn)機(jī)制。C+ 語言只對虛函數(shù)采用動態(tài)綁定,而Java語言對動態(tài)綁定實(shí)現(xiàn)全面支持。也就是說,Java語言是純粹的的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。 (3) Ja
15、va語言的分布式特性。Java語言支持開發(fā)Internet應(yīng)用,在基本的Java應(yīng)用編程接口中有一個提供了用于網(wǎng)絡(luò)應(yīng)用編程的類庫的網(wǎng)絡(luò)應(yīng)用編程接口(java net),這個類庫包括ServerSocket、URL、Socket、URLConnection等。Java的RMI(遠(yuǎn)程方法激活)機(jī)制也在一定程度上有助于開發(fā)分布式應(yīng)用。(4) Java語言的健壯性。Java語言有許多特性保證程序的健壯性,例如自動收集廢料、異常處理、強(qiáng)類型機(jī)制等。Java明智的摒棄了指針,它的安全檢查機(jī)制也促使Java的健壯性更強(qiáng)。(5) Java語言的安全性。在很多網(wǎng)絡(luò)環(huán)境中都使用Java語言,因此Java為防止惡意
16、代碼攻擊提供了一個安全機(jī)制。除了Java語言本身具備的許多安全特性之外,Java通過一個安全防范機(jī)制來管理通過網(wǎng)絡(luò)下載的類ClassLoader,這個類實(shí)現(xiàn)了諸如字節(jié)代碼檢查、分配不同的名字空間防止覆蓋本地的同名類等功能,且提供安全管理機(jī)制讓Java應(yīng)用配置安全哨兵,即,類SecurityManager。(6) Java語言的體系結(jié)構(gòu)中立特性。一個后綴為java的Java程序文件在平臺上被編譯成后綴為class的字節(jié)碼格式,這個格式是體系中立的,這樣就可以讓這個Java平臺能在任何實(shí)現(xiàn)它的系統(tǒng)中運(yùn)行得以實(shí)現(xiàn)。這種方法適用于軟件的分布式開發(fā)和異構(gòu)的網(wǎng)絡(luò)環(huán)境。(7) Java語言的可移植性。Jav
17、a的體系結(jié)構(gòu)中立性決定了它的可移植性。此外,Java對各個基本數(shù)據(jù)類型的長度作了嚴(yán)格規(guī)定。Java系統(tǒng)自身的可移植性很強(qiáng),因?yàn)樗肁NSI C實(shí)現(xiàn)Java的運(yùn)行環(huán)境,用Java實(shí)現(xiàn)Java編譯器是。(8) Java語言的解釋型特性。前文提到,Java程序在Java平臺上被編譯成后綴為class的字節(jié)碼格式,之后就能夠在任何實(shí)現(xiàn)了這個Java平臺的系統(tǒng)中運(yùn)行。運(yùn)行期間,Java平臺里的Java解釋器會解釋執(zhí)行這些字節(jié)碼,在聯(lián)接階段載入執(zhí)行過程中需要使用的類。(9) Java是高性能性。Java的高性能性是比較那些解釋型的高級腳本語言而言。實(shí)際,隨著JIT(Just-In-Time)編譯器技術(shù)的逐
18、漸成熟,Java在運(yùn)行速度上越來越接近于C+。(10) Java語言的多線程特性。Java語言把線程當(dāng)做一種特殊的對象,由Thread類或者它的繼承類完成創(chuàng)建。通常來講,創(chuàng)建線程有兩種方法:第一個是從Thread類直接派生出子類,并重寫run方法,那么由該子類創(chuàng)建的對象就是線程。第二個是采用構(gòu)造為Thread(Runnable) 的構(gòu)造子把一個實(shí)現(xiàn)了Runnable接口的對象封裝成一個線程。必須明確的是Thread類已經(jīng)將Runnable接口實(shí)現(xiàn)了,所以任意一個線程都有它的run方法,run方法中寫入了線程所要執(zhí)行的代碼。使用一組方法來控制線程。Java語言支持多個線程并行執(zhí)行,且提供關(guān)鍵字為
19、synchronized的同步機(jī)制來控制多線程。(11) Java語言的動態(tài)性。適應(yīng)動態(tài)變化的環(huán)境是Java的設(shè)計(jì)初衷之一,動態(tài)性一方面是指Java程序需要的類可以動態(tài)地被加載到運(yùn)行環(huán)境之中,另一方面也指也可以通過網(wǎng)絡(luò)來載入所需要的類,這種機(jī)制便于軟件升級。此外,Java也能實(shí)現(xiàn)運(yùn)行時(shí)刻的類型檢查,因?yàn)镴ava中的類有一個對于運(yùn)行時(shí)刻的表示。Java語言具有的諸多優(yōu)秀特性保證了Java應(yīng)用的健壯性強(qiáng)、可靠性高,這樣應(yīng)用系統(tǒng)的維護(hù)費(fèi)用自然就降低了。Java全面支持面向?qū)ο蠹夹g(shù)及Java平臺內(nèi)嵌的API可以減少應(yīng)用系統(tǒng)所耗開發(fā)時(shí)間和成本。Java一次編譯處處可行的特質(zhì)促使它能夠提供一個隨處可用的開
20、放結(jié)構(gòu),并且降低在多平臺之間傳遞信息的成本。而Java企業(yè)應(yīng)用編程接口(Java Enterprise APIs)提供的類庫和有關(guān)系數(shù)為企業(yè)計(jì)算及電子商務(wù)應(yīng)用系統(tǒng)提供了豐富條件。2.4 系統(tǒng)工具與平臺服務(wù)器操作系統(tǒng)平臺:Linux,Unix或Winows 32位操作系統(tǒng)客戶端手機(jī)系統(tǒng)平臺:Android 2.2編程語言平臺:JDK1.6或以上版本數(shù)據(jù)庫:MySql 5.0及以上版本開發(fā)工具: MyEclipse 2.5 Eclipse工具簡介Eclipse 本身只是一個框架和一組服務(wù)。作為平臺而言,他具有可擴(kuò)展性開,同時(shí)還對外開放了源代碼。Eclipse最開始是Visual Age for J
21、ava的下一代IDE開發(fā)環(huán)境,Visual Age for Java是IBM開發(fā)的商業(yè)HYPERLINK /view/37.htm軟件2003年,Eclipse 基金會把OSGi服務(wù)平臺轉(zhuǎn)化成了運(yùn)行時(shí)架構(gòu)。 2007年6月到2010年6月,先后發(fā)布了3.3、3.4版。3.5版。3.6版。分別為3.4版的Ganymede、3.5版GALILEO。3.6版的HeliosEclipse 。擴(kuò)展了插件開發(fā)環(huán)境,主要針對專門擴(kuò)展 Eclipse 的軟件開發(fā)人員,開發(fā)人員可以用它構(gòu)建與 Eclipse 環(huán)境無縫集成的工具。英文名為Plug-in Development Environment,PDE。Ec
22、lipse 是由各種插件組成的,因此為 Eclipse 提供插件,為用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,給所有提供了一個十分良好的平臺。 3 系統(tǒng)需求與總體設(shè)計(jì)3.1 用戶需求分析 通過調(diào)查了解以及實(shí)際體驗(yàn),客戶使用手機(jī)客戶端軟件,一般經(jīng)過以下幾個步驟:網(wǎng)上查詢訂購信息決定購買將預(yù)定航班信息添加到購物車填寫訂票訂單,收貨地址,選擇付款方式等待確認(rèn)。 在用戶查詢機(jī)票信息時(shí),主要是從航空公司信息、航班信息判斷選擇航班,用戶手機(jī)上網(wǎng)訂票,一般具有很強(qiáng)的目的性,一個用戶往往已經(jīng)確定了要乘坐那一趟航班,所以良好的用戶界面,快速的導(dǎo)引顧客找到其想要的預(yù)定的航班,是本系統(tǒng)應(yīng)該重點(diǎn)實(shí)現(xiàn)的。用戶良好的訂票體驗(yàn)
23、,取決于操作是否便捷,支付是否安全,預(yù)定是否實(shí)惠。其實(shí),支付方式的是否便捷,直接決定著用戶的購買欲望。大部分消費(fèi)者如果在預(yù)定過程中遇到了一些麻煩,比如操作太繁瑣及界面不友好,就會影響其購買的積極性。所以,操作愈簡單,支付的越便捷,就對手機(jī)客戶端越有好處。 有時(shí)用戶在預(yù)訂機(jī)票的時(shí)候,如果行程不太固定,用戶可能根據(jù)自己的行程來選擇比較合適的時(shí)間和機(jī)型。預(yù)定更加優(yōu)惠的機(jī)票。用戶可能不僅僅只盯著一趟航班,可能會綜合各方面的考慮,選擇最適合自己的航班。用戶瀏覽航班的信息搜索多種航線,當(dāng)看到可以乘坐的航線后將機(jī)票信息保存在購物車中,繼續(xù)搜索如果有更合適的航線。而此時(shí)也不確定將具體乘坐哪個航班。這時(shí)就需要為
24、客戶提供“購物車”的功能了,購物車,顧名思義,就是在客戶購物過程中,為客戶提供暫存功能的“車子”,購物車不僅需要為客戶暫存預(yù)定機(jī)票的信息,還要能夠?yàn)榭蛻籼峁┍匾慕y(tǒng)計(jì)功能,能夠幫客戶計(jì)算出機(jī)票的總金額、優(yōu)惠金額、折扣等等,當(dāng)然用戶在不想預(yù)定時(shí),也要能夠?qū)C(jī)票從購物車中去除掉。在選擇好需要乘坐的航班之后,用戶還需要把預(yù)定的機(jī)票生成訂單發(fā)給航空公司,訂單中需要包含預(yù)定機(jī)票的的信息、乘機(jī)人信息、付款方式等等,乘機(jī)人信息主要包括:乘機(jī)人姓名、乘機(jī)人身份證、聯(lián)系電話等等,付款方式目前比較流行的是“貨到付款”,直接匯款或通過第三方工具交付。 從用戶需求分析中看出系統(tǒng)主要需要處理的數(shù)據(jù)為:機(jī)票信息,訂單和用
25、戶賬戶信息。顧客可以查詢航班信息,訂購機(jī)票。還可以對自己的基本賬戶、乘機(jī)人、聯(lián)系人信息進(jìn)行管理。系統(tǒng)的數(shù)據(jù)流圖如圖3.1所示。用戶訂單處理用戶信息管理用戶(訂購)用戶(瀏覽)航空訂票系統(tǒng) 用戶訂單處理用戶信息管理用戶(訂購)用戶(瀏覽)航空訂票系統(tǒng)圖3.1 一層數(shù)據(jù)流圖3.2 系統(tǒng)需求分析本手機(jī)客戶端主要實(shí)現(xiàn)用戶的訂票服務(wù),以及用戶的個人信息管理。通過調(diào)查,應(yīng)用程序需要有以下系統(tǒng)要求:(1)要求有良好的人機(jī)界面,方便操作。(2)由于系統(tǒng)涉及到買賣交易,所以系統(tǒng)應(yīng)該安全、結(jié)構(gòu)合理。(3)方便原始數(shù)據(jù)修改,支持多條件修改。(4)數(shù)據(jù)查詢方便,支持多條件查詢。(5)具有一定得數(shù)據(jù)計(jì)算能力,盡量減少人
26、工干預(yù)。3.3 功能需求分析有過網(wǎng)上購物經(jīng)歷的人都知道,在購物網(wǎng)站可以很方便的注冊、瀏覽商品、查詢商品,在購物時(shí)只需點(diǎn)幾下鼠標(biāo),填寫必要的收貨信息,就能很輕松的完成購物。我模擬基本的網(wǎng)上購物流程,整理出本系統(tǒng)需要實(shí)現(xiàn)的功能有:預(yù)定機(jī)票、訂單管理、網(wǎng)點(diǎn)查詢、航線查詢、個人管理、訂閱消息和軟件幫助。3.4 可行性分析可行性研究能使系統(tǒng)達(dá)到以最小的開發(fā)成本取得最佳的經(jīng)濟(jì)效益,可行性研究的目的是根據(jù)所開發(fā)系統(tǒng)的要求,通過初步調(diào)查和系統(tǒng)目標(biāo)分析,對要開發(fā)的航空訂票系統(tǒng)從技術(shù)上,經(jīng)濟(jì)上進(jìn)行是否可行的研究。3.4.1經(jīng)濟(jì)可行性智能手機(jī)的客戶端航空訂票系統(tǒng)相比傳統(tǒng)訂票方式更加的方便??梢源蟠蠊?jié)約使用者的時(shí)間,
27、使用者只需在手機(jī)上下載本軟件就可以足不出戶的對自己的行程做詳細(xì)的計(jì)劃,所以用戶是很樂意下載本軟件的。如果開發(fā)成功可以得到很好的投資效益。開發(fā)本系統(tǒng)的成本很低,只需要幾臺電腦,安裝好開發(fā)環(huán)境,就能開始開發(fā),投資成本很低,風(fēng)險(xiǎn)較小,而且android技術(shù)相比其它的手機(jī)技術(shù)容易掌握,初學(xué)者學(xué)習(xí)3個月就可以上手。隨著3G手機(jī)的日益普及,中國3G市場的基礎(chǔ)環(huán)境也越來越穩(wěn)定,使用3G手機(jī)處理業(yè)務(wù),訂購商品已成為主流。人民生活水平的提高,中國網(wǎng)絡(luò)規(guī)模的壯大,3G手機(jī)的普及、計(jì)算機(jī)技術(shù)的發(fā)展以及政府多層次多角度推動,3G市場越來越火爆,而且會逐漸發(fā)展及形成人們消費(fèi)的主要形式。3.4.2技術(shù)可行性由于3G網(wǎng)絡(luò)覆
28、蓋全國, 這樣一來底全國大部分地區(qū)就可以用上3G了,對3G手機(jī)用戶來說是一個很大的喜訊。對智能手機(jī)開發(fā)工程師來說更是一件大事,這不僅代表有更多的手機(jī)用戶可以使用3G網(wǎng)絡(luò),而且代表智能手機(jī)客戶端軟件可以在全國范圍內(nèi)使用。Android操作系統(tǒng)是開源的操作系統(tǒng),在中國的應(yīng)用前景十分的廣闊。并且在智能手機(jī)操作系統(tǒng)中所占有的市場份額也在逐漸的增大。本系統(tǒng)以Android手機(jī)操作系統(tǒng)為平臺,使用Android的API,使用Sqlite 和mysql數(shù)據(jù)庫對數(shù)據(jù)進(jìn)行存儲,在技術(shù)上是可行的。綜上對經(jīng)濟(jì)和技術(shù)的可行性分析,無論是從經(jīng)濟(jì)還是技術(shù)上都是可行的,該系統(tǒng)具有極高的可開發(fā)性。4 概要設(shè)計(jì)通過對航空訂票系
29、統(tǒng)的需求分析,我們對系統(tǒng)的基本邏輯結(jié)構(gòu)與功能有了基本的了解。整個系統(tǒng)的設(shè)計(jì)按照以下步驟進(jìn)行:首先了解各個功能模塊的流程,然后依照各模塊流程圖,實(shí)現(xiàn)其模塊功能,最后,將各個模塊合理的整合起來,組成整個完善的系統(tǒng)。4.1 系統(tǒng)總體功能結(jié)構(gòu)系統(tǒng)功能分為預(yù)定機(jī)票、訂單管理、網(wǎng)點(diǎn)查詢、航線查詢、個人管理、訂閱消息和軟件幫助共七個模塊。系統(tǒng)總體功能結(jié)構(gòu)如圖4.1所示。圖4.1 總體功能模塊圖4.2 系統(tǒng)流程圖4.2.1訂票流程圖用戶登錄本系統(tǒng)后:首先,用戶在查找航班信息;然后,將滿意的航班的機(jī)票添加至購物車暫存;最后,確定要訂購的航班機(jī)票,填寫訂單,就可以完成訂購了。具體流程圖如4-2所示。圖4.2 訂票
30、流程圖4.2.2 會員登錄流程圖會員登錄主要是對會員帳號的一個判定,判斷輸入的帳號是否合法,合法即允許登入,登錄流程如圖4.3所示。圖4.3 會員登陸流程圖4.2.3會員注冊流程圖對于沒有帳號的用戶,需要為其提供會員注冊功能,在用戶填寫合法注冊信息后給予注冊,注冊流程如圖4.4所示 圖4.4 會員注冊流程圖4.3 結(jié)構(gòu)體系4.3.1服務(wù)器端數(shù)據(jù)庫服務(wù)器也稱為“后端”,它負(fù)責(zé)有效地管理系統(tǒng)的信息數(shù)據(jù)庫,在多個用戶并發(fā)地請求服務(wù)器上相同資源時(shí),要對這些資源進(jìn)行優(yōu)化管理。如安全地、快速地對公用信息數(shù)據(jù)庫進(jìn)行并發(fā)存取;使用備份和恢復(fù)功能保護(hù)數(shù)據(jù)庫信息;對所有的客戶應(yīng)用程序集中實(shí)施全局的數(shù)據(jù)完整性規(guī)則等
31、。另外,它還可以在客戶登錄的時(shí)候提供一些有關(guān)安全的關(guān)鍵數(shù)據(jù),這些數(shù)據(jù)是加密以后放在服務(wù)器的數(shù)據(jù)庫里的,主要的是:數(shù)據(jù)庫賬號和密碼等。還包括一些對整個系統(tǒng)來說十分重要的數(shù)據(jù)運(yùn)算及查詢等。4.3.2客戶端 客戶應(yīng)用程序也稱為“前端”為后綴的文件安裝在用戶的Android手機(jī)中。在C/S平臺自身提供的組件能很好的實(shí)現(xiàn)這幾點(diǎn);按規(guī)定的格式彈出數(shù)據(jù)的表格與圖形;按應(yīng)用邏輯要求對數(shù)據(jù)條目進(jìn)行計(jì)算和驗(yàn)證;以及向數(shù)據(jù)庫服務(wù)器提交請求和接收來自服務(wù)器的信息。 5 數(shù)據(jù)庫設(shè)計(jì)5.1 表結(jié)構(gòu)設(shè)計(jì)依據(jù)邏輯關(guān)系模型,我們在數(shù)據(jù)庫中創(chuàng)建了表。一共設(shè)計(jì)了十個數(shù)據(jù)庫表。Airport表是所有機(jī)場名字及機(jī)場所在地信息,表結(jié)構(gòu)如
32、圖5-1所示圖5-1機(jī)場名字及所在地Airportcorp表是所有航空公司名字表信息,表結(jié)構(gòu)如圖5-2所示圖5-2航空公司名稱Branch表是所有航班網(wǎng)點(diǎn)名稱及所在城市地址和網(wǎng)點(diǎn)電話表信息,表結(jié)構(gòu)如圖5-3所示圖5-3航班網(wǎng)點(diǎn)信息City表是所有城市名稱表信息,表結(jié)構(gòu)如圖5-4所示圖5-4城市信息Flight表是所有航班名稱,編號,飛機(jī)出發(fā)時(shí)間及到達(dá)時(shí)間表信息,表結(jié)構(gòu)如圖5-5所示圖5-5航班信息Flight Plan表是所有航班名編號,飛機(jī)出發(fā)時(shí)間及到達(dá)時(shí)間,航班起止及結(jié)束時(shí)間表信息,表結(jié)構(gòu)如圖5-6所示圖5-6航班計(jì)劃Route表是所有所有出發(fā)機(jī)場及到達(dá)機(jī)場,路線距離,機(jī)票價(jià)格以及對應(yīng)的航
33、空公司表信息,表結(jié)構(gòu)如圖5-7所示圖5-7路線信息User表是所有所有用戶名字,用戶密碼等用戶信息表信息,表結(jié)構(gòu)如圖5-8所示圖5-8用戶信息表Userorder表是所有航班代號,路線代號,用戶信息機(jī)票價(jià)格,飛機(jī)起止時(shí)間及地點(diǎn)表信息,表結(jié)構(gòu)如圖5-9所示圖5-9用戶訂單表6 詳細(xì)設(shè)計(jì)圖5-9用戶訂單表6.1 用戶管理功能6.1.1用戶登錄注冊用戶登錄本系統(tǒng)的開始操作前,需要先登錄系統(tǒng),然后可以執(zhí)行業(yè)務(wù)操作。首先進(jìn)入登錄頁面,輸入用戶名和密碼,點(diǎn)擊登錄,登錄成功后進(jìn)入主頁面。若用戶名或密碼為空則彈出用戶名或密碼為空的提示;若用戶名或密碼不正確,則彈出用戶名或密碼不正確的提示,如圖6-1所示。圖6
34、-1登錄界面 登陸功能主要代碼如下: public class LoginActivity extends Activity private EditText mUser; / 帳號編輯框 private EditText mPassword; / 密碼編輯框 private SharedPreferences mSharedPreferences; private SharedPreferences.Editor mEditor;SuppressLint(NewApi)Override public void onCreate(Bundle savedInstanceState) super
35、.onCreate(savedInstanceState);setContentView(R.layout.login_system);StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build();StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().penalty
36、Log().penaltyDeath().build();mUser = (EditText) findViewById(R.id.login_user_edit);mPassword = (EditText) findViewById(R.id.login_passwd_edit);/ 登錄方法private boolean login() / 獲得用戶名稱String username = mUser.getText().toString();/ 獲得密碼String pwd = mPassword.getText().toString();/ 獲得登錄結(jié)果String result =
37、query(username, pwd);if (result != null & result.equals(success) return true; else / saveUserMsg(result);return false;public void login_mobile_system(View v) if (validate() if (login() mSharedPreferences = getSharedPreferences(SharedPreferences,Context.MODE_PRIVATE);mEditor = mSharedPreferences.edit
38、();mEditor.putString(login_name, mUser.getText().toString();mEmit();String real_name = null;String code = null;String url = HttpUtil.BASE_URLIntent intent = new Intent(LoginActivity.this,MainActivity.class);startActivity(intent); else new AlertDialog.Builder(LoginActivity.this).setIcon(getResources(
39、).getDrawable(R.drawable.login_error_icon).setTitle(登錄錯誤).setMessage(用戶名帳號或者密碼不能為空,n請輸入后再登 錄!).create().show(); public void login_back(View v) / 標(biāo)題欄 返回按鈕 this.finish(); public void login_register(View v) / 忘記密碼按鈕 Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);startActivity(in
40、tent); / 驗(yàn)證方法 private boolean validate() String username = mUser.getText().toString();if (username.equals() showDialog(用戶名稱是必填項(xiàng)!);return false;String pwd = mPassword.getText().toString();if (pwd.equals() showDialog(用戶密碼是必填項(xiàng)!);return false;return true; private void showDialog(String msg) AlertDialog.
41、Builder builder = new AlertDialog.Builder(this);builder.setMessage(msg).setCancelable(false).setPositiveButton(確定, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int id) );AlertDialog alert = builder.create();alert.show(); / 根據(jù)用戶名稱密碼查詢private String query(String ac
42、count, String password) / 查詢參數(shù)String queryString = account= + account + &password= + password;/ urlString url = HttpUtil.BASE_URL + servlet/LoginServlet? + queryString;/ 查詢返回結(jié)果return HttpUtil.queryStringForPost(url); 6.1.2用戶注冊未注冊的用戶在使用本系統(tǒng)前,需要先注冊個人信息,然后可執(zhí)行登錄操作。用戶進(jìn)入注冊頁面,輸入個人賬戶信息,點(diǎn)擊注冊按鈕,如圖6-2所示。圖6-2注冊注
43、冊功能主要代碼如下: public class RegisterActivity extends Activity EditText register_user_name_edit; EditText register_user_password1_edit; EditText register_user_password2_edit; EditText register_real_name_edit; EditText register_code_edit; SuppressLint(NewApi)protected void onCreate(Bundle savedInstanceSta
44、te) super.onCreate(savedInstanceState); setContentView(R.layout.register);StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build();StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().p
45、enaltyLog().penaltyDeath().build();register_user_name_edit = (EditText) findViewById(R.id.register_username);register_user_password1_edit = (EditText) findViewById(R.id.register_password1);register_user_password2_edit = (EditText) findViewById(R.id.register_password2);register_real_name_edit = (Edit
46、Text) findViewById(R.id.register_real_name_edit);register_code_edit = (EditText) findViewById(R.id.register_code_edit); public void register_system(View v) / 忘記密碼按鈕if (register_user_password1_edit.getText().toString().equals(register_user_password2_edit.getText().toString() / 獲得用戶名稱String username =
47、 register_user_name_edit.getText().toString();/ 獲得密碼String pwd = register_user_password1_edit.getText().toString();String real_name = register_real_name_edit.getText().toString();String code = register_code_edit.getText().toString();/ 獲得登錄結(jié)果String result = regsisterServer(username, pwd, real_name, c
48、ode);if (result != null & result.equals(success) Intent intent = new Intent(RegisterActivity.this,LoginActivity.class);startActivity(intent); else / saveUserMsg(result);new AlertDialog.Builder(RegisterActivity.this) setIcon( getResources().getDrawable( R.drawable.login_error_icon) setTitle(注冊錯誤) set
49、Message(用戶名帳號或者密碼不能注冊,n請確認(rèn)后再注 冊!) . else new AlertDialog.Builder(RegisterActivity.this)setIcon(getResources().getDrawable(R.drawable.login_error_icon)setTitle(注冊錯誤).setMessage(兩次密碼應(yīng)相同,n請輸入后再注 .show(); public boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar
50、 if it is present.return true; / 根據(jù)用戶名稱密碼查詢 private String regsisterServer(String account, String password,String real_name, String code) / 查詢參數(shù)String queryString = account= + account + &password= + password+ &real_name= + real_name + &code= + code;/ urlString url = HttpUtil.BASE_URL + servlet/Regis
51、terServlet?+ queryString;/ 查詢返回結(jié)果return HttpUtil.queryStringForPost(url); 6.1.3修改密碼注冊用戶修改本帳號的登錄密碼。若用戶沒有權(quán)限則彈出您不是注冊用戶的錯誤提示。若用戶登錄失效,則彈出已超時(shí),請重新登錄。android開發(fā)中,用戶的密碼肯定是放在服務(wù)器端的數(shù)據(jù)庫中的,這一點(diǎn)毫無疑問。若要實(shí)現(xiàn)用戶密碼的修改,首先服務(wù)器端必須要有用戶修改密碼的端口。如果服務(wù)器端都不允許你修改密碼,那么這一功能根本不可能實(shí)現(xiàn)。 若是服務(wù)器端允許用戶修改密碼,那么原理就是根據(jù)用戶注冊時(shí)返回的userid(通常用sharedpreferen
52、ce用戶手機(jī)本地文件中)來查詢服務(wù)器端的數(shù)據(jù)庫中該用戶的賬號密碼數(shù)據(jù),然后進(jìn)行更新。用戶發(fā)出修改密碼這樣的請求后,服務(wù)器根據(jù)用戶提交的信息對數(shù)據(jù)庫更新。手機(jī)端只是一個請求,更多的操作要放在服務(wù)器端。 寫好用戶修改密碼的頁面之后,在該Activity中用map或者namevalue裝載修改的密碼和其他必須的參數(shù),然后在提交按鈕的的監(jiān)聽事件里發(fā)送請求至服務(wù)器(當(dāng)然發(fā)送請求獲取數(shù)據(jù)這些操作別放進(jìn)主線程,寫個異步任務(wù)類。),服務(wù)器讀取用戶請求,更新數(shù)據(jù)庫。至于密碼類型長度這些要求的判斷最好直接在裝載數(shù)據(jù)前就判斷,減輕服務(wù)器壓力。6.2 主界面功能主界面顯示七個功能,分別為預(yù)定機(jī)票、訂單管理、網(wǎng)點(diǎn)查詢、
53、航線查詢、個人管理、訂閱信息和軟件管理,如圖6-3所示。圖6-3主界面程序主界面功能實(shí)現(xiàn)主要代碼如下:public class MainActivity extends Activity implements OnItemClickListenerprivate static final String TAG = MainActivity;private GridView gv_main;private MainUIAdapter adapter; Intent lostIntent;Override protected void onCreate(Bundle savedInstanceSt
54、ate) super.onCreate(savedInstanceState); setContentView(R.layout.main_index);this.setTitle(機(jī)票預(yù)訂系統(tǒng));gv_main = (GridView) findViewById(R.id.gv_main);adapter = new MainUIAdapter(this);gv_main.setAdapter(adapter);gv_main.setOnItemClickListener(this);public void onItemClick(AdapterView parent, View view,
55、 int position,long id) / TODO Auto-generated method stubLog.i(TAG, click position + position);switch (position) /* * 預(yù)訂機(jī)票 */case 0:Log.i(TAG, the security assistant can working);/active the lostprotectedActivitylostIntent = new Intent(MainActivity.this, FlightSearchActivity.class);startActivity(lost
56、Intent);break;case 1:Log.i(TAG, the security assistant can working);/active the lostprotectedActivitylostIntent = new Intent(MainActivity.this, OrderManageActivity.class);startActivity(lostIntent);break;case 2:Log.i(TAG, the security assistant can working);/active the lostprotectedActivitylostIntent
57、 = new Intent(MainActivity.this, BranchLookActivity.class);startActivity(lostIntent);break;case 3:Log.i(TAG, the security assistant can working);/active the lostprotectedActivitylostIntent = new Intent(MainActivity.this, RouteSearchActivity.class);startActivity(lostIntent);break;case 4:break;case 5:
58、Log.i(TAG, the security assistant can working);/active the lostprotectedActivitylostIntent = new Intent(MainActivity.this, DingYueActivity.class);startActivity(lostIntent);break;case 6:break;6.3 預(yù)訂機(jī)票功能6.3.1航班查詢功能航班查詢可以查找到處罰機(jī)場和到達(dá)機(jī)場的地址,并顯示時(shí)間,如圖6-4所示。圖6-4查詢航班航班查詢功能實(shí)現(xiàn)主要代碼如下:public class FlightSearchActi
59、vity extends Activity implements View.OnTouchListenerprivate Spinner from_airport_spinner; private Spinner to_airport_spinner; private EditText start_date_edit; private Button search_btn; protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); super.onCreate(savedInsta
60、nceState); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build(); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() detectLeakedSqlLiteObjects().p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 加盟健康中心合作合同范本
- 初創(chuàng)公司分紅合同范本
- 保證合同范本單方
- 醫(yī)用合同范本
- 單位和個人合伙合同范本
- 勞務(wù)門店合同范本
- 書畫居間合同范本
- 供用熱力合同范本
- 關(guān)聯(lián)交易合同范本
- 會展活動合同范本
- 超融合遷移方案
- 電工、機(jī)修工安全培訓(xùn)教育
- 印章管理培訓(xùn)課件
- 京東代運(yùn)營合同模板正規(guī)范本(通用版)
- 蘋果樹病蟲害防治
- 中國空白地圖(打印)
- 成品半成品倉庫管理制度
- 《產(chǎn)品設(shè)計(jì)》(北希望)教學(xué)資料 課程標(biāo)準(zhǔn) 產(chǎn)品設(shè)計(jì)課程標(biāo)準(zhǔn)
- 部編版語文四年級下冊第7單元核心素養(yǎng)教案
- 年產(chǎn)2000萬瓶藥食同源飲料生產(chǎn)項(xiàng)目可行性研究報(bào)告
- 幼兒園垃圾分類PPT
評論
0/150
提交評論