基于Android的航空訂票系統(tǒng)設計與實現(xiàn)畢業(yè)設計論文_第1頁
基于Android的航空訂票系統(tǒng)設計與實現(xiàn)畢業(yè)設計論文_第2頁
基于Android的航空訂票系統(tǒng)設計與實現(xiàn)畢業(yè)設計論文_第3頁
基于Android的航空訂票系統(tǒng)設計與實現(xiàn)畢業(yè)設計論文_第4頁
基于Android的航空訂票系統(tǒng)設計與實現(xiàn)畢業(yè)設計論文_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于Android的航空訂票系統(tǒng)設計與實現(xiàn)摘要隨著手機移動技術迅速發(fā)展,3G通訊技術在手機上的應用已經(jīng)進入到日常生活的方方面面,手機從過去的單一通話和收發(fā)短信功能,發(fā)展到現(xiàn)在可進行移動搜索、全球定位導航、手機電視、實時的視頻通信、網(wǎng)上支付和對使用者的健康進行監(jiān)測等其它強大功能。而且隨著科技的進步,手機的發(fā)展也越來越快,功能更全更好的手機也隨之面世,所以基于安卓系統(tǒng)的應用會逐漸增多,以致形成主流。在這種情況下,為了適應這種日益增長的需求,正是開發(fā)本系統(tǒng)的目的。因為現(xiàn)在的人出行,并不僅僅是火車、客車,隨著經(jīng)濟的發(fā)展,人們生活水平提高的十分迅速,所以飛機已逐漸成為現(xiàn)在的主流。它比火車、客車擁有更加快捷的時效性,減少了旅途的勞累。但是現(xiàn)在訂票的問題也隨之而來,需要本人到代售點去買,十分不方便。為此,本畢業(yè)設計在進行充分的需求調研和分析之后,設計并實現(xiàn)基于Android的手機航空訂票系統(tǒng)。該系統(tǒng)采用Eclipse工具集成Android的SDK開發(fā),利用Mysql作為數(shù)據(jù)庫服務器進行數(shù)據(jù)管理,并使用android模擬器測試。本系統(tǒng)分為七個大的功能模塊:預定機票、訂單管理、網(wǎng)點查詢、航線查詢、個人管理、訂閱消息和軟件幫助。其中網(wǎng)點查詢分為查詢航空公司在每個城市的營業(yè)網(wǎng)點、航線、航班的機型等信息.。關鍵詞:移動通信;智能手機開發(fā);Android平臺緒論1.1研究的目的與意義伴隨現(xiàn)代科技的發(fā)展,3G技術逐漸成為人們生活的重要部分。3G在我國的用途極多,目前主要集中在以下商用領域:移動寬帶、電信業(yè)務、3G市場運營、3G市場建設與共享以及TD完善。我國通信3G時代的到來以2011年底的中國3G大規(guī)模用戶放號為標志,從此刻開始3G走向商用化道路。專家預計到2015年,我國3G用戶數(shù)量達到高峰,其中一半用戶來自傳統(tǒng)移動通信。由此可見,中國的3G發(fā)展?jié)摿O大,3G的發(fā)展也將極大推動我國通信業(yè)的繁榮和進步。同時,隨著現(xiàn)在社會的發(fā)展,我們的生活也朝著電子化不斷發(fā)展,如交通電子眼在交通管理中越來越普及;而經(jīng)濟的不斷發(fā)展,避免不了人們都要到某些城市去公干或其他的事情。因此,開發(fā)一個手機版航空訂票系統(tǒng)就顯得十分必要,可以說只要你是3G用戶,無論你到哪里都可以通過該系統(tǒng)及時得到航班信息。該航空訂票系統(tǒng)將幫助出行人士方便、高效的安排自己的行程。在這種快節(jié)奏的經(jīng)濟生活中,最基本的是快捷準確的獲取最新信息。隨著空間信息技術、移動通信技術、互聯(lián)網(wǎng)技術以及移動終端技術的高速發(fā)展,為快速便捷獲取信息提供便利。隨之開發(fā)的移動技術,它將互聯(lián)網(wǎng)上的所有信息和地理信息系統(tǒng)特點有機結合,擴展到移動終端上,為移動用戶通過技術的交換、獲取、共享和發(fā)布提供了有效的途徑,大量的運用地址信息。而本系統(tǒng)就是為了提供這么一個移動平臺。本系統(tǒng)是基于Android操作平臺開發(fā)的客戶端軟件。用戶可以在此平臺上查看及預定機票,本系統(tǒng)將會與第三方合作,如銀行和物流公司,來為用戶提供更便捷更安全的服務.此系統(tǒng)的重點在于提供便捷而完善的交易過程,而難點則在于系統(tǒng)并發(fā)性與安全性的控制和實現(xiàn).1.2國內外發(fā)展現(xiàn)狀計算機科學的發(fā)展推動了移動終端的計算能力和存儲能力的日益強大,也促進了移動通信和互聯(lián)網(wǎng)技術的迅猛發(fā)展,移動客戶端的開發(fā)技術也愈發(fā)成熟,由Google攜手的眾多公司聯(lián)合推出源代碼開放的Android開發(fā)平臺是繼基于WAP瀏覽器和基于J2ME技術之后,是對于移動客戶端開發(fā)的又一創(chuàng)舉。Android這個手機系統(tǒng)是Linux平臺的基礎上開發(fā)制成的。它不僅擁有操作系統(tǒng),還包括應用程序和用戶界面,應用程序中包含移動手機工作使用的全部軟件,但是與以往不同,它不會出現(xiàn)任何妨礙或組織移動產(chǎn)業(yè)創(chuàng)新發(fā)展的對于專有權的爭端。Googlel領銜與摩托羅拉、T-Mobile、高通、宏達電以及中國移動等這個行業(yè)的領軍企業(yè)組成一個開發(fā)手機聯(lián)盟,Google與運營商、開發(fā)商、設備制造商和其他相關各方深入合作,嘗試通過建立開放化、標準化的移動客戶端軟件平臺來組件一個開放的生態(tài)系統(tǒng)??v觀基于WAP瀏覽器、基于J2ME技術、基于Android這三項技術,通過“瘦客戶端”這個基于WAP瀏覽器的開發(fā)技術,由于客戶端相對薄弱,致使服務器端和客戶端需要進行大量的數(shù)據(jù)交換,然而有個難題是目前無線網(wǎng)絡的帶寬和理論狀態(tài)相差甚遠,用戶只能進行有限的數(shù)據(jù)共享和體驗;基于J2ME的開發(fā)技術可以避免這個尷尬處境,因為在客戶端上就可以實現(xiàn)很多功能,不過這種“胖客戶端”需要配備較高的硬件性能,且有很多代碼工作需要做,即便代碼移植性很高,但要求的開發(fā)技術門檻也相對較高;相比之下,Android基于JAVA技術衍生的平臺,將位置服務模塊集成到平臺之中,同時優(yōu)化了核心系統(tǒng)架構,對硬件沒有那么高的要求,還有特殊的互聯(lián)網(wǎng)機制,這些都為降低移動系統(tǒng)服務的開發(fā)門檻提供了支持。Android是谷Google的戰(zhàn)略決策中不可或缺的一部分,它的出現(xiàn)將Google歌的企業(yè)目標--“隨時隨地地為每一個人提供信息”又邁進了一大步。不難發(fā)現(xiàn),縱觀全球也有相當多的移動電話客戶對Android技術都比較陌生。Google開發(fā)這項技術的根本目標是避免移動通訊依賴于設備或者平臺,也是基于這個目的,Android對Google長期奉行的移動發(fā)展戰(zhàn)略將是個補充而不是取代;Google與全球各個地區(qū)的移動運營商和移動手機制造商密切合作,既能開發(fā)實用并且具有吸引力的移動服務,也能不斷推廣這些產(chǎn)品。1.3研究目標移動互聯(lián)的飛速發(fā)展,人們消費方式和生活方式的轉變,為商家?guī)砬八从械纳虣C與挑戰(zhàn)。本課題的目標是建立一個基于Android開源手機操作系統(tǒng)的手機航空訂票系統(tǒng),這個系統(tǒng)能夠為消費者提供一種便捷的訂票方式,消費者只需下載本軟件的客戶端應用程序到手機,注冊登錄系統(tǒng),查詢適合自己的航班,就可以預定機票,使消費者能享受“足不出戶”就可以確定自己的工作行程的服務。

2基本知識和基本原理2.1Android簡介Android是基于Linux內核的操作系統(tǒng),是Google公司在2007年11月5日公布的手機操作系統(tǒng)。它由操作系統(tǒng)、中間件、應用軟件三部分組成,它由Linux內核組成,獨特的Dalvik虛擬機,包含專門的地圖模塊、便捷的2D、3D繪圖方案、XML的快捷布局方案、較輕量的SQLite數(shù)據(jù)庫和多種的技術等等,它擁有迅捷的訪問網(wǎng)絡功能,集成現(xiàn)今正在使用的各種無線網(wǎng)絡技術,不但可以讓研發(fā)者的功能模塊在對接時可以共享和無縫繼承,重用多功能的的模塊讓開發(fā)的時間更短,開發(fā)難度更低,采用現(xiàn)今先進的定位技術,手機用戶的M-GIS體驗更加便利。該平臺備有完善的程序開發(fā)環(huán)境,包括模擬器、除錯工具、程序執(zhí)行所耗用存儲器、性能評價等功能。Android是一個真正意義上的開放性移動設備綜合平臺,基于Android進行系統(tǒng)開發(fā),可以很容易地利用開放的API接口,可以說,基于Android的系統(tǒng),是移動終端M-GIS開發(fā)道路上的一個里程碑。2.2Android的系統(tǒng)架構Android在系統(tǒng)架構上應用了分層架構,和現(xiàn)在大多數(shù)系統(tǒng)一樣。Android在系統(tǒng)架構圖上分別為應用程序層、應用程序框架層、系統(tǒng)運行庫層和linux核心層,按從上到下四個層排列。2.2.1應用程序層Android與包含SMS短消息程序,瀏覽器,日歷,地圖,聯(lián)系人,email客戶端等組成的核心應用程序包一起發(fā)布。編寫的語言全部都是JAVA。2.2.2應用程序框架核心應用程序采用的API框架同樣可以讓開發(fā)人員完全訪問。在這個框架的安全性限制下,每個應用程序都可以發(fā)布并使用該功能模塊。它大大簡化了組建的重要作用。在這個應用機制下,每個程序組件都可以被快捷的替換。2.2.3系統(tǒng)運行庫開發(fā)者利用Android應用程序的框架,可以使用C/C++庫應用于Android系統(tǒng)中多樣的組件,十分方便。2.2.4Linux內核Android核心系統(tǒng)的進程管理安全性,網(wǎng)絡協(xié)議棧,內存管理和驅動模型都是圍繞Linux2.6內核來進行的,同時作為抽象層存在于軟件棧和硬件之間。2.3Java語言的簡介Java是一種可以撰寫跨平臺應用軟件的面向對象的程序設計語言,1995年5月,SunMicrosystems公司推出Java程序設計語言以及Java平臺(即JavaSE,JavaEE,JavaME),總稱為Java。Java平臺包括兩個部分,即Java虛擬機(JavaVirtualMachine)與Java應用編程接口(ApplicationProgrammingInterface,API)。API為JAVA提供的標準接口是獨立于操作系統(tǒng)的,含有基本部分及擴展部分。目前Java平臺幾乎已經(jīng)被所有操作系統(tǒng)兼容,對于一個Java程序,只需要編譯一次就能適應各種操作系統(tǒng)。API已經(jīng)經(jīng)歷了幾個版本,最新版本是Java1.7,目前主流使用的Java平臺是基于Java1.5。Java發(fā)展至今可以分成三個體系:即JavaSE、JavaEE、JavaME,分別表示Java平臺標準版,Java平臺企業(yè)版和Java平臺微型版。2.3.1java語言的三個體系(1)JavaSE:Java平臺標準版,最初被稱為J2SE。它允許開發(fā)和部署在服務器、桌面、實時環(huán)境和嵌入式環(huán)境里運行的Java應用程序。JavaSE中涵蓋了支持JavaWeb服務開發(fā)的類,同時它的許多基礎類還可以為JavaPlatform和JavaEE提供基礎。(2)JavaEE:Java平臺企業(yè)版,最初被稱為J2EE。它的主要功能是輔助開發(fā)和部署具備健壯、可移植性強、伸縮性強且安全性高的服務器端Java應用程序。它是在JavaSE的基礎之上構建而成的,提供組件模型、Web服務、通信API和管理的功能,可以應用在Web2.0應用程序開發(fā)或者企業(yè)級的面向服務體系結構(service-orientedarchitecture,SOA)。(3)JavaME:Java平臺微型版,最初被稱為J2ME。它主要是為諸如手機、電視機頂盒、PDA或者打印機之類的嵌入式設備和移動設備上執(zhí)行的應用程序保證運行環(huán)境是健壯且靈活的。JavaME包括許多內置的網(wǎng)絡協(xié)議、健壯的安全模型、靈活的用戶界面,還可以對能動態(tài)下載的連網(wǎng)或離線應用程序提供豐富的支持?;谶@個規(guī)范的應用程序僅僅需要編寫一次就可以成功用于許多設備,并且能充分使用各個設備的本機功能。2.3.2java語言的特點(1)Java語言的簡單性。由于語法很接近C語言和C++語言,大多數(shù)程序員學習和使用Java時更容易理解。但同時,Java摒棄了某些特性,這些特性在C++中存在,但是很難理解、容易迷惑人且很少使用,比如多繼承、操作符重載和自動發(fā)生的強制類型轉換。尤為重要的是,Java中拒絕使用指針,且提供各類自動的垃圾回收,如此程序員不再需要擔憂內存管理。(2)Java語言是面向對象性。Java語言仍然使用類、接口和繼承等術語,但是為了簡化代碼,它不支持類間多繼承,僅支持類間單繼承,但是支持接口的多繼承,并且支持類與接口之間的實現(xiàn)機制。C++語言只對虛函數(shù)采用動態(tài)綁定,而Java語言對動態(tài)綁定實現(xiàn)全面支持。也就是說,Java語言是純粹的的面向對象的程序設計語言。(3)Java語言的分布式特性。Java語言支持開發(fā)Internet應用,在基本的Java應用編程接口中有一個提供了用于網(wǎng)絡應用編程的類庫的網(wǎng)絡應用編程接口(javanet),這個類庫包括ServerSocket、URL、Socket、URLConnection等。Java的RMI(遠程方法激活)機制也在一定程度上有助于開發(fā)分布式應用。(4)Java語言的健壯性。Java語言有許多特性保證程序的健壯性,例如自動收集廢料、異常處理、強類型機制等。Java明智的摒棄了指針,它的安全檢查機制也促使Java的健壯性更強。(5)Java語言的安全性。在很多網(wǎng)絡環(huán)境中都使用Java語言,因此Java為防止惡意代碼攻擊提供了一個安全機制。除了Java語言本身具備的許多安全特性之外,Java通過一個安全防范機制來管理通過網(wǎng)絡下載的類ClassLoader,這個類實現(xiàn)了諸如字節(jié)代碼檢查、分配不同的名字空間防止覆蓋本地的同名類等功能,且提供安全管理機制讓Java應用配置安全哨兵,即,類SecurityManager。(6)Java語言的體系結構中立特性。一個后綴為java的Java程序文件在平臺上被編譯成后綴為class的字節(jié)碼格式,這個格式是體系中立的,這樣就可以讓這個Java平臺能在任何實現(xiàn)它的系統(tǒng)中運行得以實現(xiàn)。這種方法適用于軟件的分布式開發(fā)和異構的網(wǎng)絡環(huán)境。(7)Java語言的可移植性。Java的體系結構中立性決定了它的可移植性。此外,Java對各個基本數(shù)據(jù)類型的長度作了嚴格規(guī)定。Java系統(tǒng)自身的可移植性很強,因為它用ANSIC實現(xiàn)Java的運行環(huán)境,用Java實現(xiàn)Java編譯器是。(8)Java語言的解釋型特性。前文提到,Java程序在Java平臺上被編譯成后綴為class的字節(jié)碼格式,之后就能夠在任何實現(xiàn)了這個Java平臺的系統(tǒng)中運行。運行期間,Java平臺里的Java解釋器會解釋執(zhí)行這些字節(jié)碼,在聯(lián)接階段載入執(zhí)行過程中需要使用的類。(9)Java是高性能性。Java的高性能性是比較那些解釋型的高級腳本語言而言。實際,隨著JIT(Just-In-Time)編譯器技術的逐漸成熟,Java在運行速度上越來越接近于C++。(10)Java語言的多線程特性。Java語言把線程當做一種特殊的對象,由Thread類或者它的繼承類完成創(chuàng)建。通常來講,創(chuàng)建線程有兩種方法:第一個是從Thread類直接派生出子類,并重寫run方法,那么由該子類創(chuàng)建的對象就是線程。第二個是采用構造為Thread(Runnable)的構造子把一個實現(xiàn)了Runnable接口的對象封裝成一個線程。必須明確的是Thread類已經(jīng)將Runnable接口實現(xiàn)了,所以任意一個線程都有它的run方法,run方法中寫入了線程所要執(zhí)行的代碼。使用一組方法來控制線程。Java語言支持多個線程并行執(zhí)行,且提供關鍵字為synchronized的同步機制來控制多線程。(11)Java語言的動態(tài)性。適應動態(tài)變化的環(huán)境是Java的設計初衷之一,動態(tài)性一方面是指Java程序需要的類可以動態(tài)地被加載到運行環(huán)境之中,另一方面也指也可以通過網(wǎng)絡來載入所需要的類,這種機制便于軟件升級。此外,Java也能實現(xiàn)運行時刻的類型檢查,因為Java中的類有一個對于運行時刻的表示。Java語言具有的諸多優(yōu)秀特性保證了Java應用的健壯性強、可靠性高,這樣應用系統(tǒng)的維護費用自然就降低了。Java全面支持面向對象技術及Java平臺內嵌的API可以減少應用系統(tǒng)所耗開發(fā)時間和成本。Java一次編譯處處可行的特質促使它能夠提供一個隨處可用的開放結構,并且降低在多平臺之間傳遞信息的成本。而Java企業(yè)應用編程接口(JavaEnterpriseAPIs)提供的類庫和有關系數(shù)為企業(yè)計算及電子商務應用系統(tǒng)提供了豐富條件。2.4系統(tǒng)工具與平臺服務器操作系統(tǒng)平臺:Linux,Unix或Winows32位操作系統(tǒng)客戶端手機系統(tǒng)平臺:Android2.2編程語言平臺:JDK1.6或以上版本數(shù)據(jù)庫:MySql5.0及以上版本開發(fā)工具:MyEclipse2.5Eclipse工具簡介Eclipse本身只是一個框架和一組服務。作為平臺而言,他具有可擴展性開,同時還對外開放了源代碼。Eclipse最開始是VisualAgeforJava的下一代IDE開發(fā)環(huán)境,VisualAgeforJava是IBM開發(fā)的商業(yè)軟件2003年,Eclipse基金會把OSGi服務平臺轉化成了運行時架構。2007年6月到2010年6月,先后發(fā)布了3.3、3.4版。3.5版。3.6版。分別為3.4版的Ganymede、3.5版GALILEO。3.6版的HeliosEclipse。擴展了插件開發(fā)環(huán)境,主要針對專門擴展Eclipse的軟件開發(fā)人員,開發(fā)人員可以用它構建與Eclipse環(huán)境無縫集成的工具。英文名為Plug-inDevelopmentEnvironment,PDE。Eclipse是由各種插件組成的,因此為Eclipse提供插件,為用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,給所有提供了一個十分良好的平臺。

3系統(tǒng)需求與總體設計3.1用戶需求分析通過調查了解以及實際體驗,客戶使用手機客戶端軟件,一般經(jīng)過以下幾個步驟:網(wǎng)上查詢訂購信息決定購買將預定航班信息添加到購物車填寫訂票訂單,收貨地址,選擇付款方式等待確認。在用戶查詢機票信息時,主要是從航空公司信息、航班信息判斷選擇航班,用戶手機上網(wǎng)訂票,一般具有很強的目的性,一個用戶往往已經(jīng)確定了要乘坐那一趟航班,所以良好的用戶界面,快速的導引顧客找到其想要的預定的航班,是本系統(tǒng)應該重點實現(xiàn)的。用戶良好的訂票體驗,取決于操作是否便捷,支付是否安全,預定是否實惠。其實,支付方式的是否便捷,直接決定著用戶的購買欲望。大部分消費者如果在預定過程中遇到了一些麻煩,比如操作太繁瑣及界面不友好,就會影響其購買的積極性。所以,操作愈簡單,支付的越便捷,就對手機客戶端越有好處。有時用戶在預訂機票的時候,如果行程不太固定,用戶可能根據(jù)自己的行程來選擇比較合適的時間和機型。預定更加優(yōu)惠的機票。用戶可能不僅僅只盯著一趟航班,可能會綜合各方面的考慮,選擇最適合自己的航班。用戶瀏覽航班的信息搜索多種航線,當看到可以乘坐的航線后將機票信息保存在購物車中,繼續(xù)搜索如果有更合適的航線。而此時也不確定將具體乘坐哪個航班。這時就需要為客戶提供“購物車”的功能了,購物車,顧名思義,就是在客戶購物過程中,為客戶提供暫存功能的“車子”,購物車不僅需要為客戶暫存預定機票的信息,還要能夠為客戶提供必要的統(tǒng)計功能,能夠幫客戶計算出機票的總金額、優(yōu)惠金額、折扣等等,當然用戶在不想預定時,也要能夠將機票從購物車中去除掉。在選擇好需要乘坐的航班之后,用戶還需要把預定的機票生成訂單發(fā)給航空公司,訂單中需要包含預定機票的的信息、乘機人信息、付款方式等等,乘機人信息主要包括:乘機人姓名、乘機人身份證、聯(lián)系電話等等,付款方式目前比較流行的是“貨到付款”,直接匯款或通過第三方工具交付。從用戶需求分析中看出系統(tǒng)主要需要處理的數(shù)據(jù)為:機票信息,訂單和用戶賬戶信息。顧客可以查詢航班信息,訂購機票。還可以對自己的基本賬戶、乘機人、聯(lián)系人信息進行管理。系統(tǒng)的數(shù)據(jù)流圖如圖3.1所示。

用戶訂單處理用戶信息管理用戶(訂購)用戶(瀏覽)航空訂票系統(tǒng)用戶訂單處理用戶信息管理用戶(訂購)用戶(瀏覽)航空訂票系統(tǒng)圖3.1一層數(shù)據(jù)流圖3.2系統(tǒng)需求分析本手機客戶端主要實現(xiàn)用戶的訂票服務,以及用戶的個人信息管理。通過調查,應用程序需要有以下系統(tǒng)要求:(1)要求有良好的人機界面,方便操作。(2)由于系統(tǒng)涉及到買賣交易,所以系統(tǒng)應該安全、結構合理。(3)方便原始數(shù)據(jù)修改,支持多條件修改。(4)數(shù)據(jù)查詢方便,支持多條件查詢。(5)具有一定得數(shù)據(jù)計算能力,盡量減少人工干預。3.3功能需求分析有過網(wǎng)上購物經(jīng)歷的人都知道,在購物網(wǎng)站可以很方便的注冊、瀏覽商品、查詢商品,在購物時只需點幾下鼠標,填寫必要的收貨信息,就能很輕松的完成購物。我模擬基本的網(wǎng)上購物流程,整理出本系統(tǒng)需要實現(xiàn)的功能有:預定機票、訂單管理、網(wǎng)點查詢、航線查詢、個人管理、訂閱消息和軟件幫助。3.4可行性分析可行性研究能使系統(tǒng)達到以最小的開發(fā)成本取得最佳的經(jīng)濟效益,可行性研究的目的是根據(jù)所開發(fā)系統(tǒng)的要求,通過初步調查和系統(tǒng)目標分析,對要開發(fā)的航空訂票系統(tǒng)從技術上,經(jīng)濟上進行是否可行的研究。3.4.1經(jīng)濟可行性智能手機的客戶端航空訂票系統(tǒng)相比傳統(tǒng)訂票方式更加的方便??梢源蟠蠊?jié)約使用者的時間,使用者只需在手機上下載本軟件就可以足不出戶的對自己的行程做詳細的計劃,所以用戶是很樂意下載本軟件的。如果開發(fā)成功可以得到很好的投資效益。開發(fā)本系統(tǒng)的成本很低,只需要幾臺電腦,安裝好開發(fā)環(huán)境,就能開始開發(fā),投資成本很低,風險較小,而且android技術相比其它的手機技術容易掌握,初學者學習3個月就可以上手。隨著3G手機的日益普及,中國3G市場的基礎環(huán)境也越來越穩(wěn)定,使用3G手機處理業(yè)務,訂購商品已成為主流。人民生活水平的提高,中國網(wǎng)絡規(guī)模的壯大,3G手機的普及、計算機技術的發(fā)展以及政府多層次多角度推動,3G市場越來越火爆,而且會逐漸發(fā)展及形成人們消費的主要形式。3.4.2技術可行性由于3G網(wǎng)絡覆蓋全國,這樣一來底全國大部分地區(qū)就可以用上3G了,對3G手機用戶來說是一個很大的喜訊。對智能手機開發(fā)工程師來說更是一件大事,這不僅代表有更多的手機用戶可以使用3G網(wǎng)絡,而且代表智能手機客戶端軟件可以在全國范圍內使用。Android操作系統(tǒng)是開源的操作系統(tǒng),在中國的應用前景十分的廣闊。并且在智能手機操作系統(tǒng)中所占有的市場份額也在逐漸的增大。本系統(tǒng)以Android手機操作系統(tǒng)為平臺,使用Android的API,使用Sqlite和mysql數(shù)據(jù)庫對數(shù)據(jù)進行存儲,在技術上是可行的。綜上對經(jīng)濟和技術的可行性分析,無論是從經(jīng)濟還是技術上都是可行的,該系統(tǒng)具有極高的可開發(fā)性。

4概要設計通過對航空訂票系統(tǒng)的需求分析,我們對系統(tǒng)的基本邏輯結構與功能有了基本的了解。整個系統(tǒng)的設計按照以下步驟進行:首先了解各個功能模塊的流程,然后依照各模塊流程圖,實現(xiàn)其模塊功能,最后,將各個模塊合理的整合起來,組成整個完善的系統(tǒng)。4.1系統(tǒng)總體功能結構系統(tǒng)功能分為預定機票、訂單管理、網(wǎng)點查詢、航線查詢、個人管理、訂閱消息和軟件幫助共七個模塊。系統(tǒng)總體功能結構如圖4.1所示。圖4.1總體功能模塊圖4.2系統(tǒng)流程圖4.2.1訂票流程圖用戶登錄本系統(tǒng)后:首先,用戶在查找航班信息;然后,將滿意的航班的機票添加至購物車暫存;最后,確定要訂購的航班機票,填寫訂單,就可以完成訂購了。具體流程圖如4-2所示。圖4.2訂票流程圖4.2.2會員登錄流程圖會員登錄主要是對會員帳號的一個判定,判斷輸入的帳號是否合法,合法即允許登入,登錄流程如圖4.3所示。圖4.3會員登陸流程圖4.2.3會員注冊流程圖對于沒有帳號的用戶,需要為其提供會員注冊功能,在用戶填寫合法注冊信息后給予注冊,注冊流程如圖4.4所示圖4.4會員注冊流程圖4.3結構體系4.3.1服務器端數(shù)據(jù)庫服務器也稱為“后端”,它負責有效地管理系統(tǒng)的信息數(shù)據(jù)庫,在多個用戶并發(fā)地請求服務器上相同資源時,要對這些資源進行優(yōu)化管理。如安全地、快速地對公用信息數(shù)據(jù)庫進行并發(fā)存取;使用備份和恢復功能保護數(shù)據(jù)庫信息;對所有的客戶應用程序集中實施全局的數(shù)據(jù)完整性規(guī)則等。另外,它還可以在客戶登錄的時候提供一些有關安全的關鍵數(shù)據(jù),這些數(shù)據(jù)是加密以后放在服務器的數(shù)據(jù)庫里的,主要的是:數(shù)據(jù)庫賬號和密碼等。還包括一些對整個系統(tǒng)來說十分重要的數(shù)據(jù)運算及查詢等。4.3.2客戶應用程序也稱為“前端”為后綴的文件安裝在用戶的Android手機中。在C/S平臺自身提供的組件能很好的實現(xiàn)這幾點;按規(guī)定的格式彈出數(shù)據(jù)的表格與圖形;按應用邏輯要求對數(shù)據(jù)條目進行計算和驗證;以及向數(shù)據(jù)庫服務器提交請求和接收來自服務器的信息。5數(shù)據(jù)庫設計5.1表結構設計依據(jù)邏輯關系模型,我們在數(shù)據(jù)庫中創(chuàng)建了表。一共設計了十個數(shù)據(jù)庫表。Airport表是所有機場名字及機場所在地信息,表結構如圖5-1所示圖5-1機場名字及所在地Airportcorp表是所有航空公司名字表信息,表結構如圖5-2所示圖5-2航空公司名稱Branch表是所有航班網(wǎng)點名稱及所在城市地址和網(wǎng)點電話表信息,表結構如圖5-3所示圖5-3航班網(wǎng)點信息City表是所有城市名稱表信息,表結構如圖5-4所示圖5-4城市信息Flight表是所有航班名稱,編號,飛機出發(fā)時間及到達時間表信息,表結構如圖5-5所示圖5-5航班信息FlightPlan表是所有航班名編號,飛機出發(fā)時間及到達時間,航班起止及結束時間表信息,表結構如圖5-6所示圖5-6航班計劃Route表是所有所有出發(fā)機場及到達機場,路線距離,機票價格以及對應的航空公司表信息,表結構如圖5-7所示圖5-7路線信息User表是所有所有用戶名字,用戶密碼等用戶信息表信息,表結構如圖5-8所示圖5-8用戶信息表Userorder表是所有航班代號,路線代號,用戶信息機票價格,飛機起止時間及地點表信息,表結構如圖5-9所示圖5-9用戶訂單表

6詳細設計圖5-9用戶訂單表6.1用戶管理功能6.1.1用戶登錄注冊用戶登錄本系統(tǒng)的開始操作前,需要先登錄系統(tǒng),然后可以執(zhí)行業(yè)務操作。首先進入登錄頁面,輸入用戶名和密碼,點擊登錄,登錄成功后進入主頁面。若用戶名或密碼為空則彈出用戶名或密碼為空的提示;若用戶名或密碼不正確,則彈出用戶名或密碼不正確的提示,如圖6-1所示。圖6-1登錄界面登陸功能主要代碼如下:publicclassLoginActivityextendsActivity{privateEditTextmUser;//帳號編輯框privateEditTextmPassword;//密碼編輯框privateSharedPreferencesmSharedPreferences;privateSharedPreferences.EditormEditor; @SuppressLint("NewApi") @OverridepublicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.login_system); StrictMode.setThreadPolicy(newStrictMode.ThreadPolicy.Builder() .detectDiskReads().detectDiskWrites().detectNetwork() .penaltyLog().build()); StrictMode.setVmPolicy(newStrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath() .build()); mUser=(EditText)findViewById(R.id.login_user_edit); mPassword=(EditText)findViewById(R.id.login_passwd_edit); } //登錄方法 privatebooleanlogin(){ //獲得用戶名稱 Stringusername=mUser.getText().toString(); //獲得密碼 Stringpwd=mPassword.getText().toString(); //獲得登錄結果 Stringresult=query(username,pwd); if(result!=null&&result.equals("success")){ returntrue; }else{ //saveUserMsg(result); returnfalse; } } publicvoidlogin_mobile_system(Viewv){ if(validate()){ if(login()){ mSharedPreferences=getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE); mEditor=mSharedPreferences.edit(); mEditor.putString("login_name",mUser.getText().toString()); mEmit(); Stringreal_name=null; Stringcode=null; Stringurl=HttpUtil.BASE_URL Intentintent=newIntent(LoginActivity.this, MainActivity.class); startActivity(intent); }else{ newAlertDialog.Builder(LoginActivity.this) .setIcon( getResources().getDrawable( R.drawable.login_error_icon)) .setTitle("登錄錯誤") .setMessage("用戶名帳號或者密碼不能為空,\n請輸入后再登錄!").create().show(); } } }publicvoidlogin_back(Viewv){//標題欄返回按鈕 this.finish(); }publicvoidlogin_register(Viewv){//忘記密碼按鈕 Intentintent=newIntent(LoginActivity.this,RegisterActivity.class); startActivity(intent); } //驗證方法 privatebooleanvalidate(){ Stringusername=mUser.getText().toString(); if(username.equals("")){ showDialog("用戶名稱是必填項!"); returnfalse; } Stringpwd=mPassword.getText().toString(); if(pwd.equals("")){ showDialog("用戶密碼是必填項!"); returnfalse; } returntrue; }privatevoidshowDialog(Stringmsg){ AlertDialog.Builderbuilder=newAlertDialog.Builder(this); builder.setMessage(msg).setCancelable(false) .setPositiveButton("確定",newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog,intid){ } }); AlertDialogalert=builder.create(); alert.show();} //根據(jù)用戶名稱密碼查詢 privateStringquery(Stringaccount,Stringpassword){ //查詢參數(shù) StringqueryString="account="+account+"&password="+password; //url Stringurl=HttpUtil.BASE_URL+"servlet/LoginServlet?"+queryString; //查詢返回結果 returnHttpUtil.queryStringForPost(url);}}6.1.2用戶注冊未注冊的用戶在使用本系統(tǒng)前,需要先注冊個人信息,然后可執(zhí)行登錄操作。用戶進入注冊頁面,輸入個人賬戶信息,點擊注冊按鈕,如圖6-2所示。圖6-2注冊注冊功能主要代碼如下:publicclassRegisterActivityextendsActivity{ EditTextregister_user_name_edit; EditTextregister_user_password1_edit; EditTextregister_user_password2_edit; EditTextregister_real_name_edit; EditTextregister_code_edit; @SuppressLint("NewApi") protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.register); StrictMode.setThreadPolicy(newStrictMode.ThreadPolicy.Builder() .detectDiskReads().detectDiskWrites().detectNetwork() .penaltyLog().build()); StrictMode.setVmPolicy(newStrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects().penaltyLog().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=(EditText)findViewById(R.id.register_real_name_edit); register_code_edit=(EditText)findViewById(R.id.register_code_edit); }publicvoidregister_system(Viewv){//忘記密碼按鈕 if(register_user_password1_edit.getText().toString() .equals(register_user_password2_edit.getText().toString())){ //獲得用戶名稱 Stringusername=register_user_name_edit.getText().toString(); //獲得密碼 Stringpwd=register_user_password1_edit.getText().toString(); Stringreal_name=register_real_name_edit.getText().toString(); Stringcode=register_code_edit.getText().toString(); //獲得登錄結果 Stringresult=regsisterServer(username,pwd,real_name,code); if(result!=null&&result.equals("success")){ Intentintent=newIntent(RegisterActivity.this, LoginActivity.class); startActivity(intent); }else{ //saveUserMsg(result); newAlertDialog.Builder(RegisterActivity.this) setIcon( getResources().getDrawable( R.drawable.login_error_icon)) setTitle("注冊錯誤") setMessage("用戶名帳號或者密碼不能注冊,\n請確認后再注冊!"). } }else{ newAlertDialog.Builder(RegisterActivity.this) setIcon( getResources().getDrawable( R.drawable.login_error_icon)) setTitle("注冊錯誤").setMessage("兩次密碼應相同,\n請輸入后再注 .show(); }}publicbooleanonCreateOptionsMenu(Menumenu){ //Inflatethemenu;thisaddsitemstotheactionbarifitispresent. returntrue; } //根據(jù)用戶名稱密碼查詢 privateStringregsisterServer(Stringaccount,Stringpassword, Stringreal_name,Stringcode){ //查詢參數(shù) StringqueryString="account="+account+"&password="+password +"&real_name="+real_name+"&code="+code; //url Stringurl=HttpUtil.BASE_URL+"servlet/RegisterServlet?" +queryString; //查詢返回結果 returnHttpUtil.queryStringForPost(url); }}6.1.3修改密碼注冊用戶修改本帳號的登錄密碼。若用戶沒有權限則彈出您不是注冊用戶的錯誤提示。若用戶登錄失效,則彈出已超時,請重新登錄。android開發(fā)中,用戶的密碼肯定是放在服務器端的數(shù)據(jù)庫中的,這一點毫無疑問。若要實現(xiàn)用戶密碼的修改,首先服務器端必須要有用戶修改密碼的端口。如果服務器端都不允許你修改密碼,那么這一功能根本不可能實現(xiàn)。

若是服務器端允許用戶修改密碼,那么原理就是根據(jù)用戶注冊時返回的userid(通常用sharedpreference用戶手機本地文件中)來查詢服務器端的數(shù)據(jù)庫中該用戶的賬號密碼數(shù)據(jù),然后進行更新。用戶發(fā)出修改密碼這樣的請求后,服務器根據(jù)用戶提交的信息對數(shù)據(jù)庫更新。手機端只是一個請求,更多的操作要放在服務器端。

寫好用戶修改密碼的頁面之后,在該Activity中用map或者namevalue裝載修改的密碼和其他必須的參數(shù),然后在提交按鈕的的監(jiān)聽事件里發(fā)送請求至服務器(當然發(fā)送請求獲取數(shù)據(jù)這些操作別放進主線程,寫個異步任務類。),服務器讀取用戶請求,更新數(shù)據(jù)庫。至于密碼類型長度這些要求的判斷最好直接在裝載數(shù)據(jù)前就判斷,減輕服務器壓力。6.2主界面功能主界面顯示七個功能,分別為預定機票、訂單管理、網(wǎng)點查詢、航線查詢、個人管理、訂閱信息和軟件管理,如圖6-3所示。圖6-3主界面程序主界面功能實現(xiàn)主要代碼如下:publicclassMainActivityextendsActivityimplementsOnItemClickListener{privatestaticfinalStringTAG="MainActivity";privateGridViewgv_main;privateMainUIAdapteradapter;IntentlostIntent; @OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main_index); this.setTitle("機票預訂系統(tǒng)"); gv_main=(GridView)findViewById(R.id.gv_main); adapter=newMainUIAdapter(this); gv_main.setAdapter(adapter); gv_main.setOnItemClickListener(this); }publicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid) { //TODOAuto-generatedmethodstub Log.i(TAG,"clickposition"+position); switch(position){ /** *"預訂機票" */ case0: Log.i(TAG,"thesecurityassistantcanworking"); //activethelostprotectedActivity lostIntent=newIntent(MainActivity.this,FlightSearchActivity.class); startActivity(lostIntent); break; case1: Log.i(TAG,"thesecurityassistantcanworking"); //activethelostprotectedActivity lostIntent=newIntent(MainActivity.this,OrderManageActivity.class); startActivity(lostIntent); break; case2: Log.i(TAG,"thesecurityassistantcanworking"); //activethelostprotectedActivity lostIntent=newIntent(MainActivity.this,BranchLookActivity.class); startActivity(lostIntent); break; case3: Log.i(TAG,"thesecurityassistantcanworking"); //activethelostprotectedActivity lostIntent=newIntent(MainActivity.this,RouteSearchActivity.class); startActivity(lostIntent); break; case4: break; case5: Log.i(TAG,"thesecurityassistantcanworking"); //activethelostprotectedActivity lostIntent=newIntent(MainActivity.this,DingYueActivity.class); startActivity(lostIntent); break; case6: break; } }6.3預訂機票功能6.3.1航班查詢功能航班查詢可以查找到處罰機場和到達機場的地址,并顯示時間,如圖6-4所示。圖6-4查詢航班航班查詢功能實現(xiàn)主要代碼如下:publicclassFlightSearchActivityextendsActivityimplementsView.OnTouchListener{privateSpinnerfrom_airport_spinner;privateSpinnerto_airport_spinner;privateEditTextstart_date_edit;privateButtonsearch_btn;protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);StrictMode.setThreadPolicy(newStrictMode.ThreadPolicy.Builder() .detectDiskReads().detectDiskWrites().detectNetwork() .penaltyLog().build());StrictMode.setVmPolicy(newStrictMode.VmPolicy.Builder() detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath() build());setContentView(R.layout.airport_search);from_airport_spinnerfindViewById(R.id.ticket_from_airport_spinner); to_airport_spinnerfindViewById(R.id.ticket_to_airport_spinner); start_date_edit =(EditText)findViewById(R.id.ticket_start_date_edit); //jicang_spinner=(Spinner)findViewById(R.id.ticket_jichang_spinner); search_btn =(Button)findViewById(R.id.ticket_search_airport_btn); start_date_edit.setOnTouchListener(this); /*film_price_text=(TextView)findViewById(R.id.film_select_play_price); film_hall_num_text=(TextView)findViewById(R.id.film_select_play_where); spinner=(Spinner)findViewById(R.id.film_select_play_spinner); ShowPlayInfo();*/ ShowStartEndAirport(); //ShowJiCangSpinner(); } /*publicvoidShowJiCangSpinner(){ jicang_str=newString[3]; jicang_str[0]="頭等艙"; jicang_str[1]="公務艙"; jicang_str[2]="經(jīng)濟艙"; jicangadapter=newArrayAdapter<String>(this, android.R.layout.simple_spinner_item,jicang_str); //設置下拉列表的風格 jicangadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //將adapter添加到spinner中 jicang_spinner.setAdapter(jicangadapter); ((BaseAdapter)from_airport_spinner.getAdapter()).notifyDataSetChanged(); //添加事件Spinner事件監(jiān)聽 jicang_spinner.setOnItemSelectedListener(newSpinnerJiCangSelectedListener()); //設置默認值 jicang_spinner.setVisibility(View.VISIBLE); }*/6.3.2預訂機票功能定機票按鈕。系統(tǒng)生成訂單信息,并進入訂單詳情頁面,單擊確認預定按鈕,將訂單提交。若預定成功,系統(tǒng)自動跳轉到支付入口頁面。若乘客不在保存的乘機人列表中,則彈出已超時,請重新登錄。6.4訂單管理功能理圖標后,頁面顯示所有所有用戶的歷史預訂的記錄。如:訂單號、價格、預定時間、以及訂單狀態(tài)(是否支付或刪除)。如圖6-5所示。圖6-5訂單管理點擊一個訂單條目,頁面通過將訂單號傳給下一個頁面,下一頁面調用ClientServiceImplForNet的方法在數(shù)據(jù)庫中查找訂單,然后列出此項訂單的詳細情況,如:機票款、燃油稅、機場建設費、保險用費、合計、航班號、起飛時間、起飛機圖所示圖6-6訂單詳情6.4.1查詢訂單功能用戶查詢歷史預定的記錄。用戶成功登錄后,在主界面點擊訂單管理按鈕,進入訂單查詢結果頁。若用戶沒有權限則彈出您不是注冊用戶的錯誤提示。若用戶登錄失效,則彈出已超時,請重新登錄。6.4.2刪除訂單功能詳情頁,點擊刪除按鈕,訂單刪除成功回到訂單查詢結果頁,并刷新了頁面,被刪除的頁面不在顯示。若用戶沒有權限則彈出您不是注冊用戶的錯誤提示。若用戶登錄失效,則彈出已超時,請重新登錄。訂單管理功能主要代碼如下:publicclassOrderManageActivityextendsActivity{ privateListVieworderViewList=null; privateListAdapteradapter=null; privateList<SaleInfo>saleinfo_list=newArrayList<SaleInfo>(); privateSimpleAdaptersimpleAdapter=null;//進行數(shù)據(jù)的轉換操作 privateSharedPreferencesmSharedPreferences; Stringuser_code; @SuppressLint("NewApi") @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.order_manage_list); StrictMode.setThreadPolicy(newStrictMode.ThreadPolicy.Builder() .detectDiskReads().detectDiskWrites().detectNetwork() .penaltyLog().build()); StrictMode.setVmPolicy(newStrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath() .build()); mSharedPreferences=getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE); user_code=mSharedPreferences.getString("code",null); orderViewList=(ListView)findViewById(R.id.order_all_user_list); orderViewList.setOnItemClickListener(newMyListItemListener()); ShowFilmList(); } /** *獲取ListView的數(shù)據(jù) * *@return */ privatevoidShowFilmList(){ maplist.clear(); mSharedPreferences=getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE); Stringusername=mSharedPreferences.getString("login_name",null); Stringurl=HttpUtil.BASE_URL+"/servlet/UserOrderServlet?user_num=" +user_code; Stringresult=HttpUtil.queryStringForGet(url); try{ JSONArraytables=newJSONArray(result); for(inti=0;i<tables.length();i++){ JSONObjectobj_tmp=tables.getJSONObject(i); Map<String,Object>tmp=newHashMap<String,Object>(); tmp.put("flight_id",obj_tmp.getString("flight_id")); tmp.put("ticket_time",obj_tmp.getString("ticket_time")); tmp.put("ticket_date",obj_tmp.getString("ticket_date")); tmp.put("ticket_price",obj_tmp.getString("ticket_price")); tmp.put("seatNo",obj_tmp.getString("seatNo")); maplist.add(tmp); } simpleAdapter=newSimpleAdapter(this,maplist, R.layout.order_list_item,newString[]{"flight_id", "ticket_date","ticket_time","ticket_price", "seatNo"}//map中的key的名稱 ,newint[]{R.id.order_list_airport_name, R.id.order_list_airport_date, R.id.order_list_airport_time, R.id.order_list_airport_price, R.id.order_list_airport_seat});//是data_list.xml中定義的組件資源IDorderViewList.setAdapter(simpleAdapter); }catch(JSONExceptione){ //TODOAuto-generatedcatchblock Log.e("mobile","轉換數(shù)據(jù)出錯"); } } publicfinalclassMyListItemListenerimplementsOnItemClickListener{ AlertDialogdialog; publicvoidonItemClick(AdapterView<?>view,Viewarg1, finalintposition,longarg3){ } }6.5信息查閱功能司運營時的上一個季度已經(jīng)確定。所以這些信息的一般不會改變。如果用戶每次登陸本系統(tǒng)都要訪問服務器獲取這些信息,那么這樣的通信效率是比較低的。本系統(tǒng)考慮目前快速的獲取這些信息。6.5.1機型查詢用戶可以通過該功能查詢航空公司的機型信息,航班信息表中保存著每個航班機型。一般不會變,用戶必須首先確定該航空公司是否有該航線,才能預定機票。6.5.2查詢網(wǎng)點論走到哪個城市,都可以使用該功能快速的獲取該城市的營業(yè)網(wǎng)點信息并及時的做出決定。6.6網(wǎng)點查閱功能通過系統(tǒng)登陸(無用戶名時需要先注冊),進入主頁面,選擇網(wǎng)點查詢業(yè)務。在查詢頁面,用戶在下拉菜單中選擇想要查詢的省份或地區(qū),通過setOnItemSelectedListener監(jiān)聽器獲得選擇的item。界面如圖6-6所示。圖6-6網(wǎng)點查詢點擊查詢網(wǎng)點按鈕后,系統(tǒng)通過將選擇的item傳遞給網(wǎng)點查詢結果頁面,網(wǎng)點查詢結果頁面會調用BranchDBHelper的select1(name)方法得到相應的網(wǎng)點結果集,方法得到相應的網(wǎng)點結果集,方法得到相應的網(wǎng)點結果集,SimpleCursorAdapter將查詢的數(shù)據(jù)放入中顯示。7系統(tǒng)實現(xiàn)7.1系統(tǒng)配置與平臺搭建7.1.1開發(fā)機器軟件環(huán)境開發(fā)機器軟件環(huán)境如表7.1所示:表7.1發(fā)機器軟件環(huán)境分類名稱版本語種操作系統(tǒng)WindowsXP簡體中文數(shù)據(jù)庫平臺MySQL5.1簡體中文應用平臺Tomcat6.05.5簡體中文開發(fā)平臺MyEclipse6.0.1簡體中文7.1.2開發(fā)機器硬件環(huán)境開發(fā)機器硬件環(huán)境如表7.2所示:表7.2開發(fā)機器軟件環(huán)境分類最低配置推薦配置開發(fā)機器Cpu:1.4GHZCpu:2.0G及以上內存:1G2G及以上7.2平臺搭建7.2.1下載用到的工具(1)Java開發(fā)包。/javase/downloads/index.jsp;下載型號JDK6Update12(Sun官方網(wǎng)站);(2)下載Eclipse。該工具是用于開發(fā)JAVA的IDE工具。下載頁面:eclipse官方網(wǎng)站/downloads/。下載完畢后才能獲得最新Windows版本;(3)Android開發(fā)包。下載頁面:/android/android-sdk-windows-1.5_r2.zip(Google官方網(wǎng)站)7.2.2安裝所用的工具(1)解壓下載的Ecplise壓縮件,選擇合適的文件夾進行安裝;(2)解壓下載的JSK安裝包,根據(jù)不同版本進行不同安裝操作;(3)解壓下載的Android開發(fā)包(SDK),選擇合適的文件夾進行安裝。7.2.3Ecplise自動安裝Android開發(fā)插件(ADT-plugin)(1)對Ecplise目錄下的Ecplise.exe軟件進行解壓安裝,選擇正確的安裝位置;(2)打開“菜單”—“Help”>“SoftwareUpdates”—點擊“AvailabeSoftware”;(3)將/android/eclipse/添加至“Addsite…”,并點擊確定鍵;(4)安裝(AndroidDevelopmentTools;(5)待自動下載網(wǎng)址轉化后,重啟Ecplise,并點擊確定完成Android開發(fā)插件的自動安裝。7.2.4配置AndiordSDK路徑重啟完Ecplise后,點擊菜單“Window”->“Preference”,打開了配置窗口,在左邊選中Android,在右邊輸入AndroidSDK的路徑(剛才步驟1-(3)下載的AndroidSDK解壓出來的目錄),點擊“OK”,至此環(huán)境配置完畢。7.2.5測試Andiord環(huán)境(1)打開“菜單”—“File”->“New”->“Other…”—“Android”->“AndroidProject”——點擊“Next”;(2)“Packagename”位置輸入任一項目名—點擊“Finish”;(3)打開“菜單”—“Run”->“Run”—“AndroidApplication”,隨機開啟Android的模擬器運行測試程序。7.3主要算法描述7.3.1加密工具類本系統(tǒng)采用MD5加密算法為用戶的信息加密。以下為MD5Util類源代碼內容://MD5Util類packagemon.util;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;/*提供將任意字符串轉換成MD5加密字符串的工具方法。*/publicclassMD5Util{ /* 該方法將指定的字符串用MD5算法加密后返回。 */ publicstaticStringgetMD5Encoding(Strings){ byte[]input=s.getBytes(); Stringoutput=null;// 聲明16進制字母 char[]hexChar={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; try{ // 獲得一個MD5摘要算法的對象MessageDigestmd=MessageDigest.getInstance("MD5");md.update(input);/**MD5算法的結果是128位一個整數(shù)*在這里javaAPI已經(jīng)把結果轉換成字節(jié)數(shù)組了*/ byte[]tmp=md.digest();//獲得MD5的摘要結果 char[]str=newchar[32]; byteb=0; for(inti=0;i<16;i++){ b=tmp[i];//取每一個字節(jié)的低四位換成16進制字母 str[2*i+1]=hexChar[b&0xf];//取每一個字節(jié)的高四位換成16進制字母 } output=newString(str); }catch(NoSuchAlgorithmExceptione){ e.printStackTrace(); } returnoutput; } publicstaticvoidmain(Stri

溫馨提示

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

最新文檔

評論

0/150

提交評論