基于android平臺的手機(jī)網(wǎng)上訂餐系統(tǒng)的研究與實(shí)現(xiàn)_第1頁
基于android平臺的手機(jī)網(wǎng)上訂餐系統(tǒng)的研究與實(shí)現(xiàn)_第2頁
基于android平臺的手機(jī)網(wǎng)上訂餐系統(tǒng)的研究與實(shí)現(xiàn)_第3頁
基于android平臺的手機(jī)網(wǎng)上訂餐系統(tǒng)的研究與實(shí)現(xiàn)_第4頁
基于android平臺的手機(jī)網(wǎng)上訂餐系統(tǒng)的研究與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、. . . . 基于Android平臺的手機(jī)網(wǎng)上訂餐系統(tǒng)的研究與實(shí)現(xiàn)畢業(yè)論文中文摘要基于Android平臺的手機(jī)網(wǎng)上訂餐系統(tǒng)的研究與實(shí)現(xiàn)摘要: ANDROID手機(jī)網(wǎng)上點(diǎn)餐系統(tǒng)是基于ANDROID手機(jī)的一款網(wǎng)絡(luò)應(yīng)用軟件,目的在于為注冊用戶和餐館提供極大的便利。應(yīng)用此軟件,用戶可以輕松便捷地實(shí)現(xiàn)自己的點(diǎn)菜要求。此系統(tǒng)基于C/S結(jié)構(gòu),采用PHP和MYSQL編程來實(shí)現(xiàn)對數(shù)據(jù)的存儲和操作。手機(jī)客戶端主要應(yīng)用ANDROID開發(fā)技術(shù),使用ACTIVITY組件,并遵照MVC模式進(jìn)行開發(fā)。網(wǎng)絡(luò)數(shù)據(jù)交互則遵照 協(xié)議來實(shí)現(xiàn)與服務(wù)器端的通信。本文第一章引言部分對整個系統(tǒng)和開發(fā)的背景作了簡要的分析。第二章簡要介紹開發(fā)環(huán)

2、境與開發(fā)工具與相關(guān)技術(shù)。第三章是系統(tǒng)的需求分析和數(shù)據(jù)庫的設(shè)計(jì),客戶端程序的整體結(jié)構(gòu)與Web Service服務(wù)的設(shè)計(jì)。第四章是主體功能的編碼實(shí)現(xiàn),介紹本系統(tǒng)各個功能模塊的具體實(shí)現(xiàn)。最后則是對開發(fā)過程的總結(jié)。關(guān)鍵詞: Android Json數(shù)據(jù) Client SOAP協(xié)議 Web Service服務(wù)29 / 291 緒論何謂“網(wǎng)上訂餐”?簡言之,就是由擔(dān)任消費(fèi)者與餐飲商家之間的“媒介”,消費(fèi)者直接通過網(wǎng)絡(luò)來預(yù)訂餐廳座位或房間。訂餐者根據(jù)菜系、位置、價位等找到中意的餐館酒店后,只需鼠標(biāo)點(diǎn)擊并輸入就餐時間、人數(shù)等信息即可,訂餐網(wǎng)會在完成預(yù)訂后通過或短信告知預(yù)訂情況。網(wǎng)上訂餐不僅對消費(fèi)者完全免費(fèi),還

3、可提供不同程度的折扣,使人們在沒有就餐煩惱的情況下享受物美價廉的可口飯菜。1.1 研究背景隨著計(jì)算機(jī)、互聯(lián)網(wǎng)和移動終端與其應(yīng)用的快速發(fā)展,不斷的改變著人們的工作方式、交流方式、學(xué)習(xí)方式以與生活的各個方面,尤其是電子商務(wù)的突飛猛進(jìn)正使人們的購物方式、支付方式發(fā)生著翻天覆地的變化。如今快節(jié)奏的生活方式讓人們困擾不已,而就餐與交通問題首當(dāng)其沖。餐廳太過擁擠、客流高峰期就餐困難、點(diǎn)餐等待等問題層出不窮。如果能有一個為廣大民眾所接受的系統(tǒng)應(yīng)用解決這些問題,對于解決生活中的困擾與提升人們的生活質(zhì)量都有極大的幫助。1.2 目前形勢國也有不少網(wǎng)上訂餐的服務(wù)形式,其中包括線上訂購、在線支付等等。其實(shí),想法都很不

4、錯,但想實(shí)現(xiàn)網(wǎng)上訂購,這些網(wǎng)上訂餐的形式應(yīng)該很難,個中原因主要就是餐飲行業(yè)普遍存在的信息化意識薄弱,這讓網(wǎng)上訂餐成為實(shí)在的瓶頸,短時期這是很難突破的,這也是為什么現(xiàn)在真正能實(shí)現(xiàn)網(wǎng)上訂餐、并能被廣泛接納的網(wǎng)上訂餐行為,依然離不開直接訂購的主要原因。據(jù)不完全統(tǒng)計(jì),2008年新上線訂餐類近千家,大多數(shù)集中在經(jīng)濟(jì)較發(fā)達(dá)的大都市和一級城市,如、等。 網(wǎng)上訂餐,想真正實(shí)現(xiàn)“網(wǎng)上訂,網(wǎng)上付”的正規(guī)化,還需要很長的一段時日。1.3 選題方向與意義據(jù)了解,目前國較為成熟的、成體系的餐飲預(yù)定類為數(shù)不多,“行業(yè)巨頭”主要集中在京、滬、粵三地請客800、飯統(tǒng)網(wǎng)雄踞京城;訂餐小秘書、大眾點(diǎn)評網(wǎng)坐鎮(zhèn)灘、八界網(wǎng)獨(dú)守羊城。處

5、于餐飲產(chǎn)業(yè)鏈中的新生產(chǎn)業(yè)網(wǎng)絡(luò)訂餐業(yè),正受到越來越多投資人的偏愛。記者調(diào)查發(fā)現(xiàn),當(dāng)下眾多此類,如大眾點(diǎn)評網(wǎng)、訂餐小秘書、紫頁114、請客800等,都有一個共同的盈利模式,即通過互聯(lián)網(wǎng)幫客人訂餐、提供一定的折扣,從而獲得店方給予的返點(diǎn),這樣的運(yùn)營模式實(shí)際就是餐飲行業(yè)的攜程網(wǎng)。這些不僅可以給網(wǎng)民提供海量的餐廳信息、交流美食心得的平臺,而且可以給訂餐者實(shí)實(shí)在在的折扣。2 開發(fā)環(huán)境與相關(guān)技術(shù)簡介2.1 開發(fā)環(huán)境簡介本系統(tǒng)是基于Android平臺的網(wǎng)上訂餐系統(tǒng),因此Android平臺是首要搭建的平臺,鑒于目前主流的Android系統(tǒng)基本上都在Android2.1版本以上,因此就選擇Android SDK

6、2.1版本作為開發(fā)本系統(tǒng)Android手機(jī)客戶端的基礎(chǔ)。此外,本系統(tǒng)使用Apache+PHP+MySQL作為Web端的開發(fā)基礎(chǔ)。下面就是本系統(tǒng)開發(fā)所需的各種軟件的名稱與版本等級。1、JDK 1.6與其以上版本。該版本為較高的版本,具有很多低版本所不具備的新特性。2、Web應(yīng)用服務(wù)器,Apache 2.2.6版本。3、數(shù)據(jù)庫,MySQL5.1與其以上版本。MySQL功能強(qiáng)大且安裝方便,并且支持事物后更增添了數(shù)據(jù)的完整性與安全性。4、開發(fā)環(huán)境,Eclipse JavaEE IDE for Web Developers 3.5 與其以上版本,該版本支持EE系統(tǒng)的開發(fā)。5、Android SDK 2.

7、1與其Eclipse 開發(fā)插件ADT。2.2 Web Service技術(shù)簡介Web Service平臺需要一套協(xié)議來實(shí)現(xiàn)分布式應(yīng)用程序的創(chuàng)建。任何平臺都有它的數(shù)據(jù)表示方法和類型系統(tǒng)。要實(shí)現(xiàn)互操作性,Web Service平臺必須提供一套標(biāo)準(zhǔn)的類型系統(tǒng),用于溝通不同平臺、編程語言和組件模型中的不同類型系統(tǒng)。目前這些協(xié)議有:XML和XSD、SOAP、WSDL、UDDI與調(diào)用RPC與消息傳遞。而本系統(tǒng)所用的協(xié)議則是:SOAP和WSDL。SOAP即簡單對象訪問協(xié)議(Simple Object Access Protocal),它是用于交換XML編碼信息的輕量級協(xié)議。它有三個主要方面:XML-envel

8、ope為描述信息容和如何處理容定義了框架,將程序?qū)ο缶幋a成為XML對象的規(guī)則,執(zhí)行遠(yuǎn)程過程調(diào)用(RPC)的約定。SOAP可以運(yùn)行在任何其他傳輸協(xié)議上。例如,你可以使用 SMTP,即因特網(wǎng)電子協(xié)議來傳遞SOAP消息,這可是很有誘惑力的。在傳輸層之間的頭是不同的,但XML有效負(fù)載保持一樣。Web Service打破了軟件應(yīng)用、和各種設(shè)備之間的格格不入的狀態(tài),實(shí)現(xiàn)“基于Web無縫集成”的目標(biāo)。WSDL就是用機(jī)器能閱讀的方式提供的一個正式描述文檔而基于XML的語言,用于描述Web Service與其函數(shù)、參數(shù)和返回值。因?yàn)槭腔赬ML的,所以WSDL既是機(jī)器可閱讀的,又是人可閱讀的。3 系統(tǒng)功能設(shè)計(jì)與

9、概述3.1 系統(tǒng)開發(fā)背景隨著計(jì)算機(jī)技術(shù)的發(fā)展,越來越多的人依賴計(jì)算機(jī)。而智能手機(jī)的誕生與其相關(guān)應(yīng)用的發(fā)展、電信技術(shù)的進(jìn)步,又為移動終端與其應(yīng)用的普與提供了可能。Google公司2005年推出的Google地圖,2008年推出的第一款A(yù)ndroid智能手機(jī),極促進(jìn)了手機(jī)應(yīng)用的大發(fā)展。本系統(tǒng)將主要基于Google Map與Android應(yīng)用軟件來實(shí)現(xiàn)一個美食訂購、分享的平臺,通過Web端以與Android手機(jī)端的實(shí)現(xiàn)使用戶可以實(shí)時與他人分享自己喜歡的美食,并且可以通過Google Map精確快速的找到飯店所在的位置。3.2 功能概述現(xiàn)在對該系統(tǒng)的基本功能進(jìn)行簡單介紹。1、Web會員端:用戶可以通過

10、注冊模塊注冊會員賬號,通過登錄系統(tǒng)實(shí)現(xiàn)美食信息的查詢、收藏和分享,實(shí)現(xiàn)美食的訂購,管理個人信息。2、Web商戶端:商戶也可以通過注冊模塊注冊成為系統(tǒng)商戶,商戶被審核通過后即可登錄系統(tǒng)設(shè)置餐廳信息,包括利用google地圖上傳餐廳具體的經(jīng)緯度;管理餐廳所提供的美食信息,包括添加、刪除、修改;查詢和管理會員訂單,包括是否接受訂單、所訂餐品是否發(fā)出等。3、Web管理端當(dāng)管理員登陸系統(tǒng)后,可以對整個系統(tǒng)進(jìn)行管理,包括審核商戶、文章、廣告信息;添加、修改和刪除美食種類與美食信息;改變站長推薦、今日特價等信息;對數(shù)據(jù)庫進(jìn)行維護(hù)。4、Android客戶端會員除了通過電腦訪問該系統(tǒng)之外,還可以通過在手機(jī)中安裝

11、相應(yīng)的程序來訪問該系統(tǒng)。在手機(jī)端,用戶同樣可以注冊成為會員或登錄系統(tǒng),登陸成功后可以查看美食信息、搜索美食信息、上傳美食信息、查詢個人信息、查看個人的訂單、與個人收藏的美食信息。3.3 MySQL數(shù)據(jù)庫設(shè)計(jì)本系統(tǒng)中的信息表主要有11數(shù)據(jù)表:文章表、會員信息表、商戶信息表、美食種類表、餐品信息表、餐廳信息表、評論表、廣告表、訂單表、訂單詳情表、用戶推薦美食信息表(詳見附錄一)。3.4 Android客戶端的設(shè)計(jì)本系統(tǒng)的Android客戶端是基于Android 2.1 開發(fā)出來的,下面是對Android應(yīng)用程序的構(gòu)成進(jìn)行介紹。先看項(xiàng)目的目錄結(jié)構(gòu)(如下圖一):(圖1)在該程序中,包含如下一些主要的文

12、件,接下來就詳細(xì)解釋一下。1、src目錄 src目錄中存放的是該項(xiàng)目的源代碼,其部結(jié)構(gòu)會根據(jù)用戶所聲明的包自行組織,例如本系統(tǒng)中所用的三個基本包,它們包含了程序所用到的Activity和各種類與各種方法。2、gen目錄該目錄下的文件是ADT自動生成的,并不需要人為地修改。它就是項(xiàng)目的字典,項(xiàng)目中用戶界面、字符串、圖片、聲音等資源都會在該類中創(chuàng)建它們唯一的ID,當(dāng)項(xiàng)目中使用這些資源時,會通過該類得到資源的引用。3、Android 2.1該目錄中存放的是該項(xiàng)目支持的JAR包,同時還包含項(xiàng)目打包時需要的META-INF目錄。4、res目錄該目錄用于存放應(yīng)用城中經(jīng)常使用的資源文件,包括圖片、聲音布局文

13、件與參數(shù)描述文件等,包括多個目錄,以drawable開頭的三個文件是用來保存不同格式的圖片的資源。Layout文件夾則是存放所有的布局文件的。Values是用來存放程序所用到的字符串、顏色與樣式描述文件的。5、AndroidManifest.xml文件該文件時應(yīng)用程序的系統(tǒng)控制文件,是應(yīng)用程序的全局性描述文件,讓外界知道該應(yīng)用程序包含哪些組件、資源、何時運(yùn)行與應(yīng)用程序自身應(yīng)該擁有的權(quán)限的聲明。例如,本程序應(yīng)用到的權(quán)限有:<uses-permission android:name="android.permission.INTERNET"/><uses-pe

14、rmission android:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permission android:name="android.permission.CAMERA"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />第一個是訪問網(wǎng)絡(luò)的權(quán)限,第二個是精確定位的權(quán)限,第三個是應(yīng)用照相權(quán)限,第四個是往存儲卡中寫入數(shù)據(jù)的權(quán)限。3.5

15、 Web Service服務(wù)端的設(shè)計(jì)Android應(yīng)用通常都是運(yùn)行在手機(jī)平臺上,手機(jī)系統(tǒng)的硬件資源是有限的,不管是存儲能力還是計(jì)算能力都很有限,在Android系統(tǒng)上開發(fā)、運(yùn)行一些單用戶、小型應(yīng)用還是可能的,但是對于需要進(jìn)行大量的數(shù)據(jù)處理、復(fù)雜計(jì)算的應(yīng)用,還是只能不是愛遠(yuǎn)程服務(wù)器上,而Android應(yīng)用將只是充當(dāng)這些應(yīng)用的客戶端。Web Service用于消除不同平臺、不同語言之間的差異,將現(xiàn)有的應(yīng)用程序發(fā)布成開放式的服務(wù),從而允許互聯(lián)網(wǎng)上任何地方、任何平臺、任何語言的應(yīng)用程序可以向全世界發(fā)布信息或提供某種服務(wù)。本系統(tǒng)采用SOAP(Simple Object Access Protocol,簡

16、單對象訪問協(xié)議),它是一種具有擴(kuò)展性的XML消息協(xié)議。SOAP是一個應(yīng)用程序向另一個應(yīng)用程序發(fā)送XML消息。SOAP消息是從SOAP發(fā)送者傳至SOAP接受者的單路消息,任何應(yīng)用程序均可作為發(fā)送者或者接受者。SOAP僅定義消息結(jié)構(gòu)和消息處理的協(xié)議,與底層的傳輸協(xié)議獨(dú)立。因此,SOAP協(xié)議能通過 ,JMS或者SMTP協(xié)議傳輸。使用PHP做服務(wù)端,要用Android去訪問,用JSON和XML提供返回的數(shù)據(jù),而Android端則可以用Apache的 Client去訪問。JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。它基于JavaScript(Standa

17、rd ECMA-262 3rd Edition - December 1999)的一個子集。 JSON采用完全獨(dú)立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣(包括C, C+, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時也易于機(jī)器解析和生成。 Client 是 Apache Jakarta Common 下的子項(xiàng)目,可以用來提供高效的、最新的、功能豐富的支持 協(xié)議的客戶端編程工具包,并且它支持 協(xié)議最新的版本和建議。本項(xiàng)目的Android客戶端就是利用這個組件進(jìn)行Web服務(wù)請求的。4 系統(tǒng)實(shí)

18、現(xiàn)與功能實(shí)例4.1 Web會員端主要功能實(shí)現(xiàn)與示例4.1.1 注冊、登陸驗(yàn)證功能的實(shí)現(xiàn)當(dāng)進(jìn)入首頁時,會發(fā)現(xiàn)右側(cè)的登陸標(biāo)簽,若你是會員,請點(diǎn)擊登陸,就會跳轉(zhuǎn)至登陸頁面;若你不是會員,也點(diǎn)擊登錄。因?yàn)榈顷戫撁孀园粹o,用戶就可以進(jìn)入注冊頁面。在注冊或登錄的過程中,頁面會提示不同程度的提示信息,比如登錄或注冊成功并自動跳轉(zhuǎn)頁面,會提示你的用戶名或密碼輸入不正確等。4.1.2 查詢美食信息(包括餐廳地圖信息)(圖2)(圖3)當(dāng)用戶在瀏覽美食信息時,點(diǎn)擊進(jìn)入餐廳查詢餐廳所有美食信息,用戶在餐廳詳細(xì)信息頁面可以看到美食的詳細(xì)信息,包括美食信息與美食所在餐廳的位置信息,為用戶提供全面細(xì)致的餐廳與美食信息。實(shí)

19、現(xiàn)過程:var geocoder; var map; var markersArray = ; function initialize(lat,lng) geocoder = new google.maps.Geocoder(); var latlng = new google.maps.LatLng(lat,lng); var myOptions = zoom: 13, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP map = new google.maps.Map(document.getElementById("

20、;map_canvas"), myOptions);addMarker(latlng); addMarker(event.latLng); ); 4.1.3 購買、收藏美食功能的實(shí)現(xiàn)(圖4) (圖5)用戶如果要點(diǎn)餐,那就必須進(jìn)入美食的詳細(xì)信息頁面(如圖4),這樣就可以進(jìn)行點(diǎn)餐和收藏了。用戶只要點(diǎn)擊訂購按鈕,就可以把美食添加進(jìn)菜單,而且用戶還可以改變訂購的數(shù)量,為用戶添加了便利(如圖5)。(圖6) (圖7)用戶在訂購結(jié)束后即可進(jìn)行結(jié)算,點(diǎn)擊購物車頁面的結(jié)算按鈕,即可進(jìn)入填寫訂單詳細(xì)信息頁面(如圖6),在確認(rèn)訂單詳細(xì)信息后,用戶即可提交訂單(如圖7),完成訂餐過程。4.2 Web商戶端功

21、能實(shí)現(xiàn)與實(shí)例4.2.1 注冊、登陸驗(yàn)證功能的實(shí)現(xiàn)當(dāng)商戶進(jìn)入首頁時,會發(fā)現(xiàn)底部有商務(wù)合作與餐廳管理兩個標(biāo)簽,若你不是已注冊商戶,點(diǎn)擊商務(wù)合作就會跳轉(zhuǎn)至注冊頁面;若你已是注冊商戶,點(diǎn)擊餐廳管理。商戶在注冊后會在經(jīng)過管理員的審核之后才會通過;在登錄的過程中,頁面會提示不同程度的提示信息,比如登錄或注冊成功并自動跳轉(zhuǎn)頁面,會提示你的用戶名或密碼輸入不正確等。4.2.2 管理餐廳信息(上傳、修改、刪除)功能的實(shí)現(xiàn)(圖8) (圖9)當(dāng)商戶已經(jīng)過審核可以登錄至商戶管理頁面時(如圖8),商家可以選擇修改餐廳信息頁面上傳餐廳信息(如圖9),系統(tǒng)設(shè)置當(dāng)前的區(qū)域?yàn)榛疖囌靖浇膮^(qū)域。這里可以通過Google地圖獲取商

22、家餐廳的具體位置(精確的經(jīng)緯度)并在確認(rèn)上傳之后上傳至數(shù)據(jù)庫。獲取地圖并添加位置數(shù)組的map.js代碼如下所示:var geocoder; var map; var markersArray = ; function initialize() geocoder = new google.maps.Geocoder(); var latlng = new google.maps.LatLng(38.86300,115.48003);/這里就是頁面當(dāng)前顯示的地理位置的具體經(jīng)緯度。 var myOptions = zoom: 13, center: latlng, mapTypeId: google

23、.maps.MapTypeId.ROADMAP map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);google.maps.event.addListener(map, 'click', function(event) addMarker(event.latLng); ); function addMarker(location) <!-增加標(biāo)記-!> var clickedLocation = new google.maps.LatLng(loc

24、ation); var marker = new google.maps.Marker( position: location, map: map );document.getElementById("show_x").value = location.lat();<!-獲得標(biāo)記的經(jīng)度幷顯示在文本框中-!>document.getElementById("show_y").value = location.lng();<!-獲得標(biāo)記的緯度幷顯示在文本框中-!>map.setCenter(location); markersArra

25、y.push(marker);4.3 Android手機(jī)端功能實(shí)現(xiàn)與實(shí)例4.3.1 登陸與驗(yàn)證功能的實(shí)現(xiàn)(圖10) (圖11)當(dāng)用戶安裝Android客戶端后即可運(yùn)行。首先進(jìn)入的是歡迎界面,然后會自動跳轉(zhuǎn)進(jìn)入登錄界面。這里用戶可以登錄或注冊,這里就點(diǎn)擊登錄按鈕,如果你輸入的用戶名和密碼不一致,系統(tǒng)就會提示你重新輸入(如圖10)。當(dāng)你輸入正確的用戶名和密碼后,系統(tǒng)就會自動跳轉(zhuǎn)進(jìn)入系統(tǒng)的主界面(如圖11)。關(guān)鍵代碼如下所示: Post Post = new Post(url); Client client = new Default Client(); StringBuilder str = ne

26、w StringBuilder();/獲取用戶名文本框容String editUid = uid.getText().toString();/獲取密碼框容String editPwd = pwd.getText().toString(); ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("username",editUid); params.add(new BasicNameValuePair(&qu

27、ot;password",editPwd); BufferedReader buffer = null;try Post.setEntity(new UrlEncodedFormEntity(params, .UTF_8); Response Res = client.execute( Post);if( Res.getStatusLine().getStatusCode() = 200) buffer = new BufferedReader(new InputStreamReader( Res.getEntity().getContent();for(String s = buf

28、fer.readLine();s != null; s = buffer.readLine() str.append(s); /String out = EntityUtils.toString( Res.getEntity().getContent();"UTF_8");/StringBuilder sb = new StringBuilder(); Log.i(Tag,str.toString(); buffer.close(); JSONObject json = new JSONObject(str.toString(); String title = json.g

29、etString("title"); Log.i(Tag,title);int id = json.getInt("id");if(id = 1)Toast.makeText(this, id + title ,Toast.LENGTH_SHORT).show();/跳轉(zhuǎn)到主頁面Intent intent = new Intent();intent.setClass(FanyouClient.this,MainActivity.class);Bundle bundle = new Bundle();bundle.putString("actio

30、n","register");intent.putExtras(bundle);startActivity(intent);FanyouClient.this.finish();elseToast.makeText(this,"對不起,請重新輸入用戶名或密碼" ,Toast.LENGTH_SHORT).show();4.3.2 訂購美食功能的實(shí)現(xiàn)(圖12) (圖13)用戶在進(jìn)入系統(tǒng)主界面后,可以看到幾個主要按鈕,如果想要訂餐,可以進(jìn)入餐廳(如圖12所示),這樣就可以如同web端一樣瀏覽餐廳信息,在選擇某個餐廳后,就可以看到餐廳所有的美食信息,在

31、瀏覽餐品詳細(xì)信息時,用戶就可以進(jìn)行購買和收藏等操作了(如圖13所示)。關(guān)鍵代碼如下所示:JSONArray jsonArray = new JSONArray(builder.toString();for(int i = 0;i<jsonArray.length();i+) JSONObject jsonObject2 = jsonArray.getJSONObject(i);String id = jsonObject2.getString("bid");String restaurant = jsonObject2.getString("restaura

32、nt");String addr = jsonObject2.getString("address");Restaurant restInfo = new Restaurant();restInfo.setBid(id);restInfo.setRest(restaurant);restInfo.setAddress(addr);map = new HashMap<String,String>();map.put("bid",id);map.put("restaurant",restaurant);map.put

33、("address",addr);list.add(map);ComendData.restaurant.add(restInfo); ListView lv = (ListView) findViewById(R.id.searchResultListView); SimpleAdapter mSchedule = new SimpleAdapter(this, /沒什么解釋 list,/數(shù)據(jù)來源 R.layout.my_listitem,/ListItem的XML實(shí)現(xiàn) /動態(tài)數(shù)組與ListItem對應(yīng)的子項(xiàng) new String "address",

34、 "restaurant", /ListItem的XML文件里面的兩個TextView ID newint R.id.ItemTitle,R.id.ItemText); /添加并且顯示 lv.setAdapter(mSchedule);4.3.3 美食推薦功能的實(shí)現(xiàn)(圖14)本系統(tǒng)另外的一個功能就是為用戶提供了一個可以和網(wǎng)友分享美食信息的平臺,用戶在平時日常生活中遇到了比較美味的食品,可以通過客戶端的上傳美食功能來實(shí)現(xiàn)與網(wǎng)友分享。4.4 Web Service服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)該部分功能主要包括業(yè)務(wù)接受頁面和業(yè)務(wù)處理頁面。業(yè)務(wù)接受頁面是由php構(gòu)成的。它接受Android客

35、戶端傳過來的請求,但是它不能單獨(dú)運(yùn)行,必須通過請求業(yè)務(wù)處理頁面中的相關(guān)服務(wù),經(jīng)過處理之后,得到業(yè)務(wù)處理的結(jié)果,經(jīng)過判斷之后,通過JSON數(shù)組再次將結(jié)果返回給Android客戶端,讓客戶端進(jìn)行下一個步驟。業(yè)務(wù)處理頁面只有一個,就是提供了基于SOAP協(xié)議的Web Service服務(wù)的 service.php頁面。在這個頁面里,客戶端所有的請求都會經(jīng)過它的處理,并通過返回處理結(jié)果將處理結(jié)果告訴業(yè)務(wù)接受頁面。下面就以客戶端發(fā)送登錄驗(yàn)證請求為例,介紹整個系統(tǒng)的運(yùn)行:首先Android客戶端創(chuàng)建登錄驗(yàn)證的請求,代碼如下所示:String url = "/fanyou/servic

36、es/client_login.php" Post Post = new Post(url); Client client = new Default Client();StringBuilder str = new StringBuilder();/獲取用戶名文本框容String editUid = uid.getText().toString();/獲取密碼框容String editPwd = pwd.getText().toString();ArrayList<NameValuePair> params = new ArrayList<NameValuePai

37、r>();params.add(new BasicNameValuePair("username",editUid);params.add(new BasicNameValuePair("password",editPwd);BufferedReader buffer = null; Post.setEntity(new UrlEncodedFormEntity(params, .UTF_8);這里就是客戶端將登錄請求的信息發(fā)送至服務(wù)端的業(yè)務(wù)請求頁面,信息的容包括用戶名和密碼。然后就是服務(wù)器接收請求頁面將請求信息發(fā)送至服務(wù)器業(yè)務(wù)處理頁面進(jìn)行處理的示

38、例并得到處理結(jié)果再將結(jié)果傳回到客戶端,代碼如下所示:<?phpheader("Content-Type: text/html; charset=UTF-8");require_once("./lib/nusoap.php");$client = new soapclient('/fanyou/services/service.php?wsdl',true);$username = $_POST'username'$password = $_POST'password'$paramet

39、ers=array($username,$password);$str=$client->call('check_login',$parameters);if (!$err=$client->getError() /得到服務(wù)處理的結(jié)果$array = array( 'title'=>urlencode('恭喜您,登陸成功!'), 'id'=>1);echo urldecode(json_encode($array);/將結(jié)果封裝成JSON數(shù)組傳回客戶端/header("location:local

40、host/fanyou/index.php"); else $array = array( 'title'=>urlencode('登錄失敗'), 'id'=>0);echo urldecode(json_encode($array);?>最后就是服務(wù)器處理功能的實(shí)現(xiàn),搭建過程、處理過程如下所示:第一步:服務(wù)器的搭建:<?phprequire_once("./lib/nusoap.php");require_once("./config/config.php"); /打開數(shù)

41、據(jù)庫連接 $db = new opmysql();$ _RAW_POST_DATA=isset($ _RAW_POST_DATA)?$ _RAW_POST_DATA : ''$soap->service($ _RAW_POST_DATA);?>第二步:服務(wù)的發(fā)布 這時,服務(wù)器并沒有提供任何服務(wù),因?yàn)椴]有任何服務(wù)被發(fā)布。下面就發(fā)布一個檢查Android客戶端登陸的服務(wù),代碼如下所示:function check_login($username,$password) require_once("./config/config.php"); /打開數(shù)

42、據(jù)庫連接$db = new opmysql();$sql = "select * from tb_user where username='$username' and password='$password'" /查詢所有數(shù)據(jù)$result = $db->uidRst($sql);$user = mysql_fetch_array($result);if ($user'username' = $username && $user'password' = $password)return

43、"Login"elsereturnnewsoap_fault('client','','concatenateYONGHUMINGCUOWU ');mysql_close ( $con );第三步:注冊服務(wù)并返回參數(shù)定義:通過這個方法,我們就發(fā)布了一個服務(wù)項(xiàng)目了,但是僅僅有發(fā)布是不夠的,還需要在在服務(wù)器上進(jìn)行注冊并且返回各個參數(shù)的定義,注冊方法與返回參數(shù)的方法(就以上面這個微粒)如下所示:$soap->register('check_login',array("username"=&g

44、t;"xsd:string","password"=>"xsd:string"), array("return"=>"xsd:string"); / 返回參數(shù)的定義這樣就完成了處理Android客戶端請求的整個過程。整系統(tǒng)所用到的服務(wù)不僅僅是這一個,還有其他的比如,用戶注冊(client_register)、美食上傳(client_upload)等,它們共同構(gòu)成了整個系統(tǒng)的服務(wù)端,為所有請求業(yè)務(wù)的Android客戶端提供各種服務(wù)請求。結(jié) 論經(jīng)過幾個月對本系統(tǒng)的制作,我學(xué)到了很多知識。

45、剛開始我對所做的東西無從下手,通過幾周的時間的對系統(tǒng)所要的技術(shù)學(xué)習(xí)和老師的耐心指導(dǎo),我開始對要做的系統(tǒng)有點(diǎn)概念了,而且越做越有興趣?,F(xiàn)在對本系統(tǒng)制作的過程和它所用到的技術(shù)的應(yīng)用已很熟悉。在這次的研究過程中,由于需要學(xué)習(xí)的東西很多,所以不是輕而易舉就可以完成的。在這次課題的研究中我花費(fèi)了相當(dāng)大的時間與精力。不過這是第一次制作這樣一個完整的系統(tǒng),相信仍有不足之處。這次的設(shè)計(jì)過程嚴(yán)格按照軟件工程的軟件設(shè)計(jì)步驟進(jìn)行的。從需求分析,到功能模塊設(shè)計(jì),再到數(shù)據(jù)庫的設(shè)計(jì),最后進(jìn)行系統(tǒng)模塊的詳細(xì)設(shè)計(jì)與具體實(shí)施,整個過程比較細(xì)致。但由于我經(jīng)驗(yàn)不足,而且能力有限,所以在功能實(shí)現(xiàn)方面還不夠完善,同時也有許多細(xì)節(jié)問題沒

46、有考慮周全。雖然這次研究課題的多數(shù)功能已經(jīng)實(shí)現(xiàn),系統(tǒng)制作已經(jīng)完成,但是研究成果仍顯粗糙,沒有很好體現(xiàn)所用技術(shù)的優(yōu)點(diǎn),不過我想這些在今后的學(xué)習(xí)中會不斷改進(jìn)的。在個人看來,這個課題本身并不難,而我們之所以為它付出了這么多的精力是因?yàn)槲覀儾粫臇|西還太多,所以在以后的研究中還需要進(jìn)一步的學(xué)習(xí),這樣才能在今后的研究中做得更出色。參 考 文 獻(xiàn)1 凱華 凱華編著PHP開發(fā)(典型模塊大全):人民郵電2011.2 吳亞峰 索依娜Android核心技術(shù)與實(shí)例詳解:電子工業(yè)2011.3 剛.瘋狂Android講義.:電子工業(yè).20114 昱勛 名杰等編著.Google Android SDK 開發(fā)例大全(第一版

47、).:人民郵電.20115 孝祥著 java就業(yè)培訓(xùn)教程M:清華大學(xué),2007.6 余志龍編著Google Android SDK開發(fā)例大全M:人民郵電,2009-7-1.7 E2ECloud工作室著深入淺出Google AndroidM:人民郵電,2009-08-1.8 靳巖 尚朗著Google Android開發(fā)入門與實(shí)戰(zhàn)M:清華大學(xué),2009-07-01.9 高昂著支持動態(tài)語言的Android平臺M:人民郵電,2009-05-07. 10 eoe.Android開發(fā)社區(qū).eoeandroid./ 2010-04-10.11 JavaEye論壇.javaeye./forums2010-04

48、-15.13 高煥堂編Android 應(yīng)用框架原理與程式設(shè)計(jì)(第三版)M:清華大學(xué),2008-10-0314 豐盛主編Android 應(yīng)用開發(fā)揭秘M:機(jī)械工業(yè),2010-01-25致 從確定題目到設(shè)計(jì)完成歷時五個月,這段時間里我得到了很多人的支持和幫助,在此向所有給予我支持與幫助的老師同學(xué)們致以最真誠的感。首先,要感指導(dǎo)老師,沒有他的關(guān)心和幫助,我的設(shè)計(jì)很難順利完成。他不僅在知識獲取上給了我很大啟發(fā),還在生活、工作態(tài)度上深深的影響了我,他對待工作的認(rèn)真負(fù)責(zé)、嚴(yán)謹(jǐn)?shù)膽B(tài)度讓我欽佩;他做人的大氣、為人的和善讓我學(xué)會博愛和感恩。這些對我以后的工作和學(xué)習(xí)是一種巨大的幫助,衷心地感老師耐心的輔導(dǎo)。其次,感

49、我的同學(xué)們,他們在我的工作和生活上都給予了極大的支持和幫助,尤其是在系統(tǒng)開發(fā)階段,甚至放下自己的畢業(yè)設(shè)計(jì)幫助我解決了一個又一個難題,你們。最后,再次向在學(xué)習(xí)、工作和生活中給予我關(guān)心、支持與鼓勵的所有老師同學(xué)們表示最誠摯的意!附錄附錄1 文件清單一、數(shù)據(jù)庫文件1、會員評論信息表表一:會員評論信息表字段 類型 整理 Null 默認(rèn) 額外 id int(5) 否 auto_increment username varchar(20) utf8_unicode_ci 否 foodname varchar(20) utf8_unicode_ci 否 content varchar(100) utf8_u

50、nicode_ci 否 state int(1) 否 0other varchar(20) utf8_unicode_ci 是 NULL 2、美食信息表表二:美食信息表字段 類型 整理 Null 默認(rèn) 額外 foodid int(100) 否 auto_increment foodname varchar(100) utf8_unicode_ci 否 foodimage varchar(100) utf8_unicode_ci 否 details varchar(100) utf8_unicode_ci 否 category varchar(20) utf8_unicode_ci 是 NULL

51、 restaurant varchar(100) utf8_unicode_ci 否 foodprice varchar(20) utf8_unicode_ci 否 state int(1) 否 0isRecommend int(1) 是 0other varchar(100) utf8_unicode_ci 是 NULL 3、訂單信息表字段 類型 整理 屬性 Null 默認(rèn) orderid varchar(50) utf8_unicode_ci 否 username varchar(20) utf8_unicode_ci 否 accepter varchar(20) utf8_unicode

52、_ci 否 subtime date 否 send varchar(100) utf8_unicode_ci 否 telphone int(11) 否 totalprice varchar(20) utf8_unicode_ci 否 email varchar(20) utf8_unicode_ci 是 NULL state int(1) 否 0other varchar(100) utf8_unicode_ci 是 NULL 4、商家信息表字段 類型 整理 Null 默認(rèn) bid char(18) utf8_unicode_ci 否 name varchar(20) utf8_unicode

53、_ci 否 password varchar(20) utf8_unicode_ci 否 restaurant varchar(50) utf8_unicode_ci 否 image varchar(30) utf8_unicode_ci 是 NULL tel varchar(12) utf8_unicode_ci 否 city varchar(20) utf8_unicode_ci 是 address varchar(50) utf8_unicode_ci 否 lat varchar(15) utf8_unicode_ci 是 NULL lng varchar(15) utf8_unicode_ci 是 NULL state int(1) 否 0email varchar(50) utf8_unicode_ci 是 NULL other varchar(50) utf8_unicode_ci 是 NULL 5、會

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論