[論文+源碼+錄像]基于Android的外賣(mài)App系統(tǒng)設(shè)計(jì)
演示視頻https://pan.baidu.com/s/1LfOh7C1S4u0iIcwSBu6yzw?pwd=yw9t
基于Android的外賣(mài)App系統(tǒng)設(shè)計(jì)
摘要
隨著智能手機(jī)的快速普及,智能手機(jī)操作系統(tǒng)市場(chǎng)風(fēng)生水起。為了讓智能手機(jī)用戶能夠隨時(shí)隨地查詢互聯(lián)網(wǎng)所提供的服務(wù),一種高效的辦法就是將應(yīng)用系統(tǒng)的功能拓展到手機(jī)終端上,讓手機(jī)能夠通過(guò)移動(dòng)網(wǎng)以及互聯(lián)網(wǎng)訪問(wèn)Web網(wǎng)站并處理各種各樣的業(yè)務(wù)。因此,智能手機(jī)的應(yīng)用軟件及其需要的服務(wù)將有廣闊的發(fā)展前景。
在如今這個(gè)智能手機(jī)系統(tǒng)群雄紛爭(zhēng)的時(shí)候,2008年Google推出了一款名為Android的開(kāi)源智能手機(jī)操作系統(tǒng),它采用Linux內(nèi)核,開(kāi)放手機(jī)聯(lián)盟(OHA)成員可以任意使用和修改SDK包,系統(tǒng)的開(kāi)源性使其具有良好的拓展性。這款軟件包括了操作系統(tǒng)、用戶界面和應(yīng)用程序,即智能手機(jī)工作所需要的全部軟件。Android的最大特點(diǎn)是其開(kāi)放性體系架構(gòu),不僅具有非常好的開(kāi)發(fā)、調(diào)試環(huán)境,而且還支持各種可擴(kuò)展的用戶體驗(yàn),包括豐富的圖形組件、多媒體支持功能以及強(qiáng)大的瀏覽器。因此,對(duì)于軟件從業(yè)人員來(lái)說(shuō),Android平臺(tái)具有無(wú)限的吸引力。
本文就在分析討論Android手機(jī)軟件開(kāi)發(fā)技術(shù)原理的基礎(chǔ)上,開(kāi)發(fā)出能為用戶提供更好的基于Android平臺(tái)的外賣(mài)App系統(tǒng)軟件。
關(guān)鍵字:android;外賣(mài)App系統(tǒng);智能手機(jī)平臺(tái)
Abstract
With the rapid proliferation of?smart?phones, smart phone operating?system?market, wind and water. In order for smart phone users to check the Internet anytime, anywhere services provided an efficient way to expand the function of the system?will?be?applied to the?mobile?phone terminal, the mobile phone to Internet access via mobile networks, and variety of Web sites and process business. Therefore, the smart phone applications and the need for the service will have broad prospects for development.
In today’s smart phone system when disputes warlords, 2008, Google introduced a smart phone called the Android open source operating system, which uses Linux kernel, Open Handset Alliance (OHA) members can be free to use and modify the SDK package, the system It has a good open-source nature of the expansion of. The software includes the operating system, user interface and applications that need to work smart phones all the software. Android’s biggest feature is its open architecture, not only has a very good development and debugging environment, but also supports a variety of scalable user experience, including rich graphical components, multimedia support, and powerful browser. Therefore, for software professionals is, Android platform has unlimited appeal.
On the basis of analysis and discussion of the Android mobile phone software development technical principles, developed to provide users with better catering system software based on the Android platform.
Keywords:android; food systems; smart phone platform
目?錄
摘要II
AbstractII
第一章緒論11
1.1 研究?jī)?nèi)容11
1.2 研究意義11
1.3研究現(xiàn)狀和發(fā)展趨勢(shì)11
第二章?系統(tǒng)分析33
2.1 研究目標(biāo)33
2.2 需求分析33
2.3業(yè)務(wù)流程分析33
2.4數(shù)據(jù)流圖44
2.5數(shù)據(jù)字典55
2.6性能分析66
第三章?系統(tǒng)開(kāi)發(fā)環(huán)境及相關(guān)技術(shù)77
3.1開(kāi)發(fā)環(huán)境77
3.2 Java SDK7
3.3 Eclipse8
3.4 ADT9
3.5 Android SDK9
3.6 Tomcat服務(wù)器1313
3.7 JSP技術(shù)1414
3.8 JSON14
3.9 Android開(kāi)發(fā)平臺(tái)搭建1717
第四章?程序設(shè)計(jì)1919
4.1 功能設(shè)計(jì)1919
4.2 數(shù)據(jù)庫(kù)設(shè)計(jì)1919
1.概念結(jié)構(gòu)設(shè)計(jì)1919
2.?dāng)?shù)據(jù)庫(kù)表設(shè)計(jì)2121
第五章程序開(kāi)發(fā)2323
5.1 文件結(jié)構(gòu)與用途2323
5.2 系統(tǒng)實(shí)現(xiàn)2424
5.4.1登錄頁(yè)2424
5.4.2 后臺(tái)頁(yè)2424
5.4.3點(diǎn)菜2525
第六章?系統(tǒng)測(cè)試2828
6.1 軟件測(cè)試的重要性2828
6.2 測(cè)試實(shí)例的研究與選擇2828
6.3 測(cè)試環(huán)境與測(cè)試條件2929
6.4 系統(tǒng)運(yùn)行情況2929
6.5 系統(tǒng)評(píng)價(jià)2929
第七章總結(jié)3030
參考文獻(xiàn)3131
致?謝3232
第一章緒論
1.1 研究?jī)?nèi)容
隨著手機(jī)的普及以及手機(jī)應(yīng)用的深入人心,近幾年“智能手機(jī)”成為了人們關(guān)注的話題,智能手機(jī)將成為人們獲取信息的主要設(shè)備。在當(dāng)今這個(gè)只能手機(jī)群雄爭(zhēng)鋒的時(shí)代,2008年Google推出了一款名為Android的開(kāi)源智能手機(jī)操作系統(tǒng)。Android憑借其開(kāi)放性和良好的人際界面,受到廣大手機(jī)生產(chǎn)商的重視。
當(dāng)今社會(huì)的生活節(jié)奏越來(lái)越快,隨著硬件移動(dòng)設(shè)備的越來(lái)越先進(jìn),人們對(duì)移動(dòng)設(shè)備的要求也越來(lái)越高,從以前的追求技術(shù)到現(xiàn)在的追求視覺(jué),因此,也逐步的提高了對(duì)系統(tǒng)的要求,本課題是基于Android系統(tǒng)的“外賣(mài)App系統(tǒng)”軟件的設(shè)計(jì)與實(shí)現(xiàn)。
1.2 研究意義
當(dāng)今社會(huì)是一個(gè)信息技術(shù)迅速發(fā)展的社會(huì),人們的生活越來(lái)越離不開(kāi)計(jì)算機(jī)和手機(jī)。作為一個(gè)計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生,希望通過(guò)自己四年所學(xué)的知識(shí)編制一款基于Android平臺(tái)的外賣(mài)App系統(tǒng)軟件,方便你我方便他人。
現(xiàn)代社會(huì)的迅速發(fā)展使得人們的生活更加方便,人們也越來(lái)越會(huì)享受生活,催生了各種應(yīng)用,好友之間通過(guò)拼車(chē)、拼房、拼游、拼購(gòu)可以增進(jìn)彼此的感情。同時(shí),因?yàn)槿藗兛梢宰悴怀鰬舯憧蛇M(jìn)行購(gòu)物,娛樂(lè),游戲等各種活動(dòng),通過(guò)這款基于Android系統(tǒng)的外賣(mài)App系統(tǒng)完善公共服務(wù)體系、改善公共服務(wù)手段、增加公共服務(wù)產(chǎn)品、提高公共服務(wù)質(zhì)量,更好地發(fā)揮對(duì)經(jīng)濟(jì)社會(huì)發(fā)展的現(xiàn)實(shí)性作用。
1.3研究現(xiàn)狀和發(fā)展趨勢(shì)
據(jù)Gartner最新數(shù)據(jù)顯示,2011年第二、三季度全球智能手機(jī)銷(xiāo)售繼續(xù)大幅增長(zhǎng),其中第三季度Android 的市場(chǎng)份額突破了 50%,達(dá)到了 52.5%,超過(guò)了 iOS 和 BlackBerry 系統(tǒng),成為全球第一大智能手機(jī)系統(tǒng)。2011第二、三季度與去年同期相比,增度分別是15.4%及22%,增勢(shì)迅猛。而塞班系統(tǒng)市場(chǎng)份額還是有 16.9%,但比起去年同期已經(jīng)是跌去一半,形勢(shì)非常嚴(yán)峻。iOS 的份額則略微有所下滑,從去年同期的 16.6% 跌到了 15%。BlackBerry OS 系統(tǒng)則有所下滑,而 Bada 份額則到了 2.2%。
毫無(wú)疑問(wèn),智能手機(jī)即將變成整個(gè)社會(huì)的趨勢(shì)了。而Android平臺(tái)的智能機(jī)在手機(jī)市場(chǎng)中已明顯的占有越來(lái)越多的比重。很多人都會(huì)選擇Android手機(jī)。
第二章 系統(tǒng)分析
2.1 研究目標(biāo)
了解Android應(yīng)用程序的設(shè)計(jì)和開(kāi)發(fā)過(guò)程;
使用多種組件進(jìn)行基于Android 平臺(tái)的外賣(mài)App系統(tǒng)的軟件開(kāi)發(fā)。
本軟件是基于Eclipse的開(kāi)發(fā)環(huán)境,依托Tomcat服務(wù)器上的后臺(tái)數(shù)據(jù),開(kāi)發(fā)出了針對(duì)Android平臺(tái)的外賣(mài)App系統(tǒng)。
2.2 需求分析
經(jīng)過(guò)對(duì)外賣(mài)App系統(tǒng)的了解、以及體驗(yàn)了點(diǎn)餐的流程,總結(jié)出本系統(tǒng)需要的功能如下:
登錄功能。使用系統(tǒng)之前必須登錄系統(tǒng),登錄過(guò)程通過(guò)無(wú)線網(wǎng)絡(luò),在后臺(tái)數(shù)據(jù)庫(kù)通過(guò)用戶名稱(chēng)和密碼進(jìn)行查詢,注冊(cè)用戶方才可以使用該系統(tǒng)。
系統(tǒng)主菜單。系統(tǒng)登錄成功后進(jìn)入系統(tǒng)主菜單,主菜單通過(guò)圖形菜單的方式來(lái)展現(xiàn)系統(tǒng)的功能,單擊某個(gè)選項(xiàng)便進(jìn)入該功能的操作界面。
點(diǎn)菜功能。此功能可以根據(jù)用戶需要對(duì)菜單信息進(jìn)行添加、修改、查詢、刪除。并且在添加菜單信息時(shí)可為每個(gè)菜自動(dòng)生成菜編號(hào)。
菜單的查詢,包括:常規(guī)菜單,餐廳特色菜式,餐廳特價(jià)菜式等。
就餐結(jié)算功能。此功能可以根據(jù)用戶的需要進(jìn)行點(diǎn)菜,并能計(jì)算出顧客的點(diǎn)菜數(shù)及總金額。
從上面的描述中可以基本了解軟件的功能需求:
本軟件是一個(gè)Android 客戶端+JSP Servlet服務(wù)端應(yīng)用程序,啟動(dòng)Android上的應(yīng)用程序后可以登錄、查看菜譜等。Android客戶端上的信息數(shù)據(jù)是通過(guò)后臺(tái)JSP Servlet服務(wù)端應(yīng)用程序獲取的,這個(gè)后臺(tái)服務(wù)可以根據(jù)客戶端發(fā)出的請(qǐng)求,返回信息。 圖片和文字這些信息都保存在數(shù)據(jù)庫(kù)中。
2.3業(yè)務(wù)流程分析
在進(jìn)行業(yè)務(wù)流程分析時(shí),需要按照原有信息流動(dòng)過(guò)程,逐個(gè)地調(diào)查分析所有環(huán)節(jié)的處理業(yè)務(wù)、處理內(nèi)容、處理順序和對(duì)處理時(shí)間的要求,弄清各個(gè)環(huán)節(jié)需要的信息、信息來(lái)源、流經(jīng)去向、處理方法、計(jì)算方法、提供信息的時(shí)間和信息形態(tài)(報(bào)告、報(bào)單、屏幕顯示)等。
業(yè)務(wù)流程分析可以幫助開(kāi)發(fā)者了解該業(yè)務(wù)處理過(guò)程,發(fā)現(xiàn)和處理系統(tǒng)調(diào)查工作中的錯(cuò)誤和疏漏。業(yè)務(wù)流程分析是通過(guò)業(yè)務(wù)流程圖來(lái)進(jìn)行,即用一些規(guī)定的符號(hào)及連線來(lái)表示某個(gè)具體業(yè)務(wù)處理過(guò)程。
具體業(yè)務(wù)流程如圖3.1所示。
![[論文+源碼+錄像]基于Android的外賣(mài)App系統(tǒng)設(shè)計(jì)](https://b1.sanwen.net/b_article/29863c754df2d9ddcb8492368f3373e2ba43c2d2.png)
圖3.1業(yè)務(wù)流程圖
2.4數(shù)據(jù)流圖
數(shù)據(jù)流程是指數(shù)據(jù)在系統(tǒng)中產(chǎn)生、傳輸、加工處理、使用、存儲(chǔ)的過(guò)程[6]。數(shù)據(jù)流程分析是把數(shù)據(jù)在現(xiàn)行系統(tǒng)內(nèi)部的流動(dòng)抽象的獨(dú)立起來(lái),舍去了具體組織機(jī)構(gòu)、信息載體、處理工具、物質(zhì)、材料等,單從數(shù)據(jù)流動(dòng)過(guò)程來(lái)考查實(shí)際業(yè)務(wù)的數(shù)據(jù)處理模式。
數(shù)據(jù)流程與數(shù)據(jù)流程分析是今后建立數(shù)據(jù)庫(kù)系統(tǒng)和設(shè)計(jì)功能模塊處理過(guò)程的基礎(chǔ)。描述數(shù)據(jù)流程的工具是數(shù)據(jù)流程圖以及其附帶的數(shù)據(jù)字典、處理邏輯等圖表。其中數(shù)據(jù)流程圖是描述系統(tǒng)邏輯模型的主要工具,它以少數(shù)幾種符號(hào)綜合地反映出信息在系統(tǒng)中的流動(dòng)、存儲(chǔ)和傳遞[7]。
在業(yè)務(wù)流程分析的基礎(chǔ)上,對(duì)數(shù)據(jù)流進(jìn)行了分析,從數(shù)據(jù)流動(dòng)過(guò)程考察了實(shí)際業(yè)務(wù)的數(shù)據(jù)處理模式。該系統(tǒng)的數(shù)據(jù)流圖分為頂層、一層、二層?,F(xiàn)行的頂層數(shù)據(jù)流圖如圖3.2所示。
![[論文+源碼+錄像]基于Android的外賣(mài)App系統(tǒng)設(shè)計(jì)](https://b1.sanwen.net/b_article/641e98370dba367ed9392134e28d28093ceffcce.png)
圖3.2頂層數(shù)據(jù)流圖
由于論文的篇幅限制不能一一列舉數(shù)據(jù)流圖,只給出了部分?jǐn)?shù)據(jù)流圖,其他的數(shù)據(jù)流圖基本一致。
2.5數(shù)據(jù)字典
通過(guò)對(duì)系統(tǒng)數(shù)據(jù)流的分析,接下來(lái)用數(shù)據(jù)字典描述數(shù)據(jù)流圖中一些主要的數(shù)據(jù)元素條目、數(shù)據(jù)流、處理過(guò)程、數(shù)據(jù)存儲(chǔ)和外部實(shí)體[8]。
數(shù)據(jù)元素條目如表2.1所示。
表2.1數(shù)據(jù)元素
菜品信息編號(hào)
調(diào)入年份
數(shù)據(jù)元素條目
總編號(hào):1-101
編號(hào):101
名稱(chēng):菜品信息編號(hào) XXX
說(shuō)明:菜品信息的編號(hào)
數(shù)據(jù)值類(lèi)型:離散
長(zhǎng)度:50
有關(guān)數(shù)據(jù)結(jié)構(gòu):菜品信息表如:123
數(shù)據(jù)元素條目如表2.2所示。
表2.2數(shù)據(jù)元素
注冊(cè)用戶信息編號(hào)
調(diào)入年份
數(shù)據(jù)元素條目
總編號(hào):1-101
編號(hào):101
名稱(chēng):注冊(cè)用戶信息編號(hào) XXX
說(shuō)明:注冊(cè)用戶信息的編號(hào)
數(shù)據(jù)值類(lèi)型:離散
長(zhǎng)度:50
有關(guān)數(shù)據(jù)結(jié)構(gòu):注冊(cè)用戶信息表如:123
數(shù)據(jù)元素條目如表2.3所示。
表2.3數(shù)據(jù)元素
訂單信息編號(hào)
調(diào)入年份
數(shù)據(jù)元素條目
總編號(hào):1-101
編號(hào):101
名稱(chēng):訂單信息編號(hào) XXX
說(shuō)明:訂單信息的編號(hào)
數(shù)據(jù)值類(lèi)型:離散
長(zhǎng)度:50
有關(guān)數(shù)據(jù)結(jié)構(gòu):訂單信息表如:123
數(shù)據(jù)元素條目如表2.4所示。
表2.4數(shù)據(jù)元素
管理員信息編號(hào)
調(diào)入年份
數(shù)據(jù)元素條目
總編號(hào):1-101
編號(hào):101
名稱(chēng):管理員信息編號(hào) XXX
說(shuō)明:管理員信息的編號(hào)
數(shù)據(jù)值類(lèi)型:離散
長(zhǎng)度:50
有關(guān)數(shù)據(jù)結(jié)構(gòu):管理員信息表如:123
2.6性能分析
程序響應(yīng)速度快、安全性高、信息處理速度快。
第三章 系統(tǒng)開(kāi)發(fā)環(huán)境及相關(guān)技術(shù)
3.1開(kāi)發(fā)環(huán)境
Android的上層應(yīng)用程序是用Java語(yǔ)言開(kāi)發(fā),同時(shí)還需要基于Dalvik虛擬機(jī),所以,Google公司推薦使用主流的Java繼承開(kāi)發(fā)環(huán)境Eclipse。只有Eclipse還不夠,因?yàn)槭鞘褂肑ava語(yǔ)言進(jìn)行開(kāi)發(fā),還應(yīng)該有由SUN公司提供的Java SDK(其中包括JRE:Java Runtime Environment)。此外,Android的應(yīng)用程序開(kāi)發(fā)和Java開(kāi)發(fā)有較大區(qū)別的,所以還需要有Google提供的Android SDK。同時(shí),還需要在Eclipse安裝ADT,為Android開(kāi)發(fā)提供開(kāi)發(fā)工具的升級(jí)或者變更,是Eclipse下開(kāi)發(fā)工具的升級(jí)下載的工具。
簡(jiǎn)言之,需要以下軟件,才能搭建Android開(kāi)發(fā)環(huán)境,從而進(jìn)行Android應(yīng)用程序的開(kāi)發(fā)。
(1) Java SDK
(2) Eclipse
(3) ADT
(4) Android SDK
3.2 Java SDK
JDK是sun公司java應(yīng)用程序和組件的開(kāi)發(fā)環(huán)境,是編譯和測(cè)試工具,也是提供java程序的java虛擬機(jī)平臺(tái),是調(diào)試和運(yùn)行所不可缺少的工具。
首先在安裝前先要下載JDK,這可以從SUN公司的網(wǎng)站上下載,到http://java.sun.com/products/jdk/1.2這個(gè)頁(yè)面下載JDK1.2.2-001-win.exe或JDK 1.3-win.exe,由于筆者n.exe為例。下載后,雙擊JDK1.2.2-001-win.exe就可以開(kāi)始安裝了,在安裝過(guò)程中有很多選項(xiàng),按個(gè)人需求正確選擇,這里我們以第一次安裝為例,全部選擇默認(rèn)配制即可,安裝的默認(rèn)路徑為[windows所在的根目錄(以下設(shè)為c:)]\jdk1.2.2,安裝完畢后就可以重新啟動(dòng)了。
啟動(dòng)時(shí)要更新環(huán)境變量,在開(kāi)機(jī)時(shí)要自動(dòng)調(diào)用JDK系統(tǒng),因此要設(shè)置一些環(huán)境變量,我們以windows2000 server版系統(tǒng)為例進(jìn)行系統(tǒng)環(huán)境變量設(shè)置(在windows 9x系統(tǒng)中可在autoexe.txt中進(jìn)行設(shè)置)。設(shè)置方法如下:
在桌面上,用鼠標(biāo)右鍵單擊[我的電腦]圖標(biāo),選擇[屬性]按鈕,彈出[系統(tǒng)特性]對(duì)話匡,選擇[高級(jí)]選項(xiàng)卡,單擊[環(huán)境變量]按鈕,單擊[環(huán)境變量]對(duì)話匡,該對(duì)話匡有兩個(gè)選項(xiàng)組,分別為[Administrator的用戶變量]和[系統(tǒng)變量]兩個(gè)選項(xiàng)組。在[系統(tǒng)變量]選項(xiàng)組中找path變量,找到后單擊[編輯],彈出[編輯系統(tǒng)變量]對(duì)話匡,在其中[變量值]文本匡中輸入“(jdk所在根目錄以下設(shè)為C:)\jdk1.2.2\bin”,然后按“確定”就ok了,這樣在運(yùn)行jsp時(shí)系統(tǒng)就可以自動(dòng)找到JDK路徑進(jìn)行編譯了。與此同時(shí),新建一個(gè)classpath變量,在[系統(tǒng)變量]選項(xiàng)組中,單擊[新建]按鈕,彈出[新建系統(tǒng)變量]對(duì)話匡,在[變量
名]文本匡中輸入“classpath”,在[變]文本框中輸入:”c:\jdk1.2.2\lib\tools.jar;c:\jdk1.2.2\lib\dt.jar;c:\jsdk2.0\lib\jsdk.jar;”,
然后單擊[確定]扭,然后再用此方法將c:\jdk1.2.2添加到j(luò)ava_home環(huán)境變量中,如果在安裝時(shí)沒(méi)有將其安裝在默認(rèn)目錄下,必須在此進(jìn)行環(huán)境變量的設(shè)置,否則系統(tǒng)將無(wú)法完成編譯工作。以上工作完成后回到最處的[系統(tǒng)特性]對(duì)話匡中,單擊[應(yīng)用]或按下[確定],JDK就安裝配制好了。
3.3 Eclipse
Eclipse 是一個(gè)開(kāi)放源代碼的、基于 Java 的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java 開(kāi)發(fā)工具(Java Development Tools,JDT)。
雖然大多數(shù)用戶很樂(lè)于將 Eclipse 當(dāng)作 Java IDE 來(lái)使用,但 Eclipse 的目標(biāo)不僅限于此。Eclipse 還包括插件開(kāi)發(fā)環(huán)境(Plug-in Development Environment,PDE),這個(gè)組件主要針對(duì)希望擴(kuò)展 Eclipse 的軟件開(kāi)發(fā)人員,因?yàn)樗试S他們構(gòu)建與 Eclipse 環(huán)境無(wú)縫集成的工具。由于 Eclipse 中的每樣?xùn)|西都是插件,對(duì)于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開(kāi)發(fā)環(huán)境而言,所有工具開(kāi)發(fā)人員都具有同等的發(fā)揮場(chǎng)所。
這種平等和一致性并不僅限于 Java 開(kāi)發(fā)工具。盡管 Eclipse 是使用 Java 語(yǔ)言開(kāi)發(fā)的,但它的用途并不限于 Java 語(yǔ)言;例如,支持諸如 C/C++、COBOL 和 Eiffel 等編程語(yǔ)言的插件已經(jīng)可用,或預(yù)計(jì)會(huì)推出。Eclipse 框架還可用來(lái)作為與軟件開(kāi)發(fā)無(wú)關(guān)的其他應(yīng)用程序類(lèi)型的基礎(chǔ),比如內(nèi)容管理系統(tǒng)。Eclipse 是一個(gè)開(kāi)放源代碼的、基于 Java 的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。
3.4 ADT
Eclipse ADT 是 Eclipse 平臺(tái)下用來(lái)開(kāi)發(fā) Android 應(yīng)用程序的插件。在企業(yè)開(kāi)發(fā)中,很多程序員使用Eclipse IDE作為應(yīng)用的開(kāi)發(fā)環(huán)境。為了使得Android應(yīng)用的創(chuàng)建,運(yùn)行和調(diào)試更加方便快捷。Android的開(kāi)發(fā)團(tuán)隊(duì)專(zhuān)門(mén)針對(duì)Eclipse IDE定制了一個(gè)插件:Android Development Tools(ADT)
下載地址:https://dl-ssl.google.com/android/eclipse/
然后安裝Eclipse插件ADT
啟動(dòng) Eclipse,選擇 Help > Install New Software,在出現(xiàn)的對(duì)話框里,點(diǎn)擊Add按鈕,在對(duì)話框的name一欄輸入“ADT”, 然后點(diǎn)擊Archive…,瀏覽和選擇已經(jīng)下載的ADT插件壓縮文件。
點(diǎn)擊 OK.。返回可用軟件的視圖,你會(huì)看到這個(gè)插件,然后選擇Developer Tools (會(huì)選中下面的“Android Developer Tools”和 “Android Editors“),點(diǎn)擊 Next,最后重啟 Eclipse。
3.5 Android SDK
SDK:(software development kit)軟件開(kāi)發(fā)工具包。被軟件開(kāi)發(fā)工程師用于為特定的軟件包、軟件框架、硬件平臺(tái)、操作系統(tǒng)等建立應(yīng)用軟件的開(kāi)發(fā)工具的集合。因此,Android SDK指的既是Android專(zhuān)屬的軟件開(kāi)發(fā)工具包。
Android是谷歌(Google)公司推出的手機(jī)開(kāi)發(fā)平臺(tái)。與iPhone相似,Android采用WebKit瀏覽器引擎,具備觸摸屏、高級(jí)圖形顯示和上網(wǎng)功能,用戶能夠在手機(jī)上查看電子郵件、搜索網(wǎng)址和觀看視頻節(jié)目等,比iPhone等其他手機(jī)更強(qiáng)調(diào)搜索功能,界面更強(qiáng)大,可以說(shuō)是一種融入全部Web應(yīng)用的單一平臺(tái)。
Android SDK包含了開(kāi)發(fā)Android應(yīng)用所依賴的jar文件、運(yùn)行環(huán)境及相關(guān)工具。
下載地址:?http://dl.google.com/android/android-sdk_r16-windows.zip
下載完SDK后,把.zip文件解壓到你電腦上合適位置。啟動(dòng) Eclipse,選擇window->preferences,在打開(kāi)的視圖左邊點(diǎn)擊android,在右邊的SDK Location中選擇Android SDK所在位置。
剛下載下來(lái)的SDK的platforms文件夾是空的,可以通過(guò)雙擊SDK Setup.exe來(lái)獲取具體Android版本,如果連接不上,可以勾選settings下面的force?https://….source?to be fetched using?http://...選項(xiàng),使用http方式連接
![[論文+源碼+錄像]基于Android的外賣(mài)App系統(tǒng)設(shè)計(jì)](https://b1.sanwen.net/b_article/85f7746551f5317de1931de24d3686d05d457862.png)
安裝完成后,可以點(diǎn)擊Available Packages查看已安裝的Android版本
![[論文+源碼+錄像]基于Android的外賣(mài)App系統(tǒng)設(shè)計(jì)](https://b1.sanwen.net/b_article/0eb486911c3c63027cfcc56ed56ce0c9a02f0906.png)
點(diǎn)擊下圖所示的工具欄按鈕,打開(kāi)虛擬設(shè)備管理器
![[論文+源碼+錄像]基于Android的外賣(mài)App系統(tǒng)設(shè)計(jì)](https://b1.sanwen.net/b_article/45aec80217e0993c08087ce9b69efa27a939e176.png)
![[論文+源碼+錄像]基于Android的外賣(mài)App系統(tǒng)設(shè)計(jì)](https://b1.sanwen.net/b_article/8ad8a573f9bd076c58234adeeed353db3c58558c.png)
點(diǎn)擊New新建一臺(tái)設(shè)備,然后設(shè)置好相應(yīng)的值
![[論文+源碼+錄像]基于Android的外賣(mài)App系統(tǒng)設(shè)計(jì)](https://b1.sanwen.net/b_article/7289d4c89fb9728d91716c98d2f3f2083a5420a5.png)
Skin下Build-in的各個(gè)選項(xiàng)如下所示
![[論文+源碼+錄像]基于Android的外賣(mài)App系統(tǒng)設(shè)計(jì)](https://b1.sanwen.net/b_article/d23a3371e7814bf90bacd4a34e80fdd32bc2c9e7.png)
點(diǎn)擊Create AVD完成創(chuàng)建
然后在設(shè)備管理器界面選擇一個(gè)設(shè)備,點(diǎn)擊Start…啟動(dòng)設(shè)備,啟動(dòng)完成后,界面如下所示:
3.6 Tomcat服務(wù)器
Tomcat是一個(gè)免費(fèi)的開(kāi)源的Servlet容器。與傳統(tǒng)的桌面應(yīng)用程序不同,Tomcat中的應(yīng)用程序是一個(gè)WAR(Web Archive)文件。WAR是Sun提出的一種Web應(yīng)用程序格式,與JAR類(lèi)似,也是許多文件的一個(gè)壓縮包。這個(gè)包中的文件按一定目錄結(jié)構(gòu)來(lái)組織:通常其根目錄下包含有Html和Jsp文件或者包含這兩種文件的目錄,另外還會(huì)有一個(gè)WEB-INF目錄,這個(gè)目錄很重要。通常在WEB-INF目錄下有一個(gè)web.xml文件和一個(gè)classes目錄,web.xml是這個(gè)應(yīng)用的配置文件,而classes目錄下則包含編譯好的Servlet類(lèi)和Jsp或Servlet所依賴的其它類(lèi)(如JavaBean)。通常這些所依賴的類(lèi)也可以打包成JAR放到WEB-INF下的lib目錄下,當(dāng)然也可以放到系統(tǒng)的CLASSPATH中,但那樣移植和管理起來(lái)不方便。
Tomcat不僅僅是一個(gè)Servlet容器,它也具有傳統(tǒng)的Web服務(wù)器的功能:處理Html頁(yè)面。但是與Apache相比,它的處理靜態(tài)Html的能力就不如Apache。我們可以將Tomcat和Apache集成到一塊,讓Apache處理靜態(tài)Html,而Tomcat處理Jsp和Servlet。這種集成只需要修改一下Apache和Tomcat的配置文件即可。
基于Tomcat的開(kāi)發(fā)其實(shí)主要是Jsp和Servlet的開(kāi)發(fā),開(kāi)發(fā)Jsp和Servlet非常簡(jiǎn)單,可以用普通的文本編輯器或者IDE,然后將其打包成WAR即可。
3.7 JSP技術(shù)
JSP是Java Server Pages的簡(jiǎn)稱(chēng),它是由Sun Microsystem公司于1999年6月推出,是基于Java Servlet以及整個(gè)Java體系的Web開(kāi)發(fā)技術(shù)。作為J2EE體系中的重要一環(huán),JSP為創(chuàng)建高度動(dòng)態(tài)的Web應(yīng)用提供了一個(gè)獨(dú)特的開(kāi)發(fā)環(huán)境。JSP能夠適應(yīng)市場(chǎng)上包括Apache WebServer、IIS4.0在內(nèi)的85%的服務(wù)器產(chǎn)品,這足以勝任絕大多數(shù)的商業(yè)事務(wù)處理。同時(shí)JSP代碼經(jīng)過(guò)服務(wù)器的解釋執(zhí)行后會(huì)直接嵌入到HTML語(yǔ)言中,這樣就簡(jiǎn)化了頁(yè)面的輸出,也保留了腳本語(yǔ)言易于使用的優(yōu)點(diǎn)。SUN公司開(kāi)發(fā)出這個(gè)規(guī)范來(lái)整合和平衡已經(jīng)存在的規(guī)范,對(duì)JAVA編程環(huán)境進(jìn)行支持的技術(shù)和工具。其結(jié)果是產(chǎn)生了一種新的,開(kāi)發(fā)基于WEB應(yīng)用程序的方法,給予使用基于組件應(yīng)用邏輯的頁(yè)面設(shè)計(jì)者以強(qiáng)大的功能支持。JSP設(shè)計(jì)目標(biāo)是為了使動(dòng)態(tài)頁(yè)面編寫(xiě)更容易,更簡(jiǎn)單。JSP特點(diǎn)主要有以下幾點(diǎn):到處可執(zhí)行,JSP技術(shù)完全與平臺(tái)無(wú)關(guān)的設(shè)計(jì),包含它的動(dòng)態(tài)網(wǎng)頁(yè)和底層Server元件設(shè)計(jì),加強(qiáng)元件功能,更容易建立動(dòng)態(tài)網(wǎng)頁(yè)。
JDBC是Java Data Base Connectivity的簡(jiǎn)稱(chēng),也就是java數(shù)據(jù)庫(kù)連接。它是一種用于執(zhí)行SQL語(yǔ)句的Java API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn),它由一組用Java語(yǔ)言編寫(xiě)的類(lèi)和接口組成。JDBC提供了一種基準(zhǔn),據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫(kù)開(kāi)發(fā)人員能夠編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序。將Java語(yǔ)言和JDBC結(jié)合起來(lái)使程序員只須寫(xiě)一遍程序就可以讓它在任何平臺(tái)上運(yùn)行,這也是Java語(yǔ)言“編寫(xiě)一次,各處運(yùn)行“的特點(diǎn)。同時(shí)JDBC 擴(kuò)展了 Java 的功能。例如,用 Java 和 JDBC API 可以發(fā)布含有 applet 的網(wǎng)頁(yè),而該 applet 使用的信息可能來(lái)自遠(yuǎn)程數(shù)據(jù)庫(kù)企業(yè)也可以用 JDBC 通過(guò) Intranet 將所有職員連到一個(gè)或多個(gè)內(nèi)部數(shù)據(jù)庫(kù)中。
3.8 JSON
JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于JavaScript(Standard ECMA-262 3rd Edition – December 1999)的一個(gè)子集。 JSON采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類(lèi)似于C語(yǔ)言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言。易于人閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成。
簡(jiǎn)單地說(shuō),JSON 可以將 JavaScript 對(duì)象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后就可以在函數(shù)之間輕松地傳遞這個(gè)字符串,或者在異步應(yīng)用程序中將字符串從 Web 客戶機(jī)傳遞給服務(wù)器端程序。這個(gè)字符串看起來(lái)有點(diǎn)兒古怪,但是 JavaScript 很容易解釋它,而且 JSON 可以表示比”名稱(chēng) / 值對(duì)”更復(fù)雜的結(jié)構(gòu)。例如,可以表示數(shù)組和復(fù)雜的對(duì)象,而不僅僅是鍵和值的簡(jiǎn)單列表。
表示名稱(chēng) / 值對(duì)
按照最簡(jiǎn)單的形式,可以用下面這樣的 JSON 表示”名稱(chēng) / 值對(duì)”: { “firstName”: “Brett” } 這個(gè)示例非?;?,而且實(shí)際上比等效的純文本”名稱(chēng) / 值對(duì)”占用更多的空間: firstName=Brett 但是,當(dāng)將多個(gè)”名稱(chēng) / 值對(duì)”串在一起時(shí),JSON 就會(huì)體現(xiàn)出它的價(jià)值了。首先,可以創(chuàng)建包含多個(gè)”名稱(chēng) / 值對(duì)”的 記錄,比如: { “firstName”: “Brett”, “l(fā)astName”:”McLaughlin”, “email”: “aaaa” } 從語(yǔ)法方面來(lái)看,這與”名稱(chēng) / 值對(duì)”相比并沒(méi)有很大的優(yōu)勢(shì),但是在這種情況下 JSON 更容易使用,而且可讀性更好。例如,它明確地表示以上三個(gè)值都是同一記錄的一部分;花括號(hào)使這些值有了某種聯(lián)系。
表示數(shù)組
當(dāng)需要表示一組值時(shí),JSON 不但能夠提高可讀性,而且可以減少?gòu)?fù)雜性。例如,假設(shè)您希望表示一個(gè)人名列表。在 XML 中,需要許多開(kāi)始標(biāo)記和結(jié)束標(biāo)記;如果使用典型的名稱(chēng) / 值對(duì)(就像在本系列前面文章中看到的那種名稱(chēng) / 值對(duì)),那么必須建立一種專(zhuān)有的數(shù)據(jù)格式,或者將鍵名稱(chēng)修改為 person1-firstName這樣的形式。 如果使用 JSON,就只需將多個(gè)帶花括號(hào)的記錄分組在一起: { “people”: [ { “firstName”: “Brett”, “l(fā)astName”:”McLaughlin”, “email”: “aaaa” }, { “firstName”: “Jason”, “l(fā)astName”:”Hunter”, “email”: “bbbb”}, { “firstName”: “Elliotte”, “l(fā)astName”:”Harold”, “email”: “cccc” } ]} 這不難理解。在這個(gè)示例中,只有一個(gè)名為 people的變量,值是包含三個(gè)條目的數(shù)組,每個(gè)條目是一個(gè)人的記錄,其中包含名、姓和電子郵件地址。上面的示例演示如何用括號(hào)將記錄組合成一個(gè)值。當(dāng)然,可以使用相同的語(yǔ)法表示多個(gè)值(每個(gè)值包含多個(gè)記錄): { “programmers”: [ { “firstName”: “Brett”, “l(fā)astName”:”McLaughlin”, “email”: “aaaa” }, { “firstName”: “Jason”, “l(fā)astName”:”Hunter”, “email”: “bbbb” }, { “firstName”: “Elliotte”, “l(fā)astName”:”Harold”, “email”: “cccc” } ], ”authors”: [ { “firstName”: “Isaac”, “l(fā)astName”: “Asimov”, “genre”: “science fiction” }, { “firstName”: “Tad”, “l(fā)astName”: “Williams”, “genre”: “fantasy” }, { “firstName”: “Frank”, “l(fā)astName”: “Peretti”, “genre”: “christian fiction” } ], ”musicians”: [ { “firstName”: “Eric”, “l(fā)astName”: “Clapton”, “instrument”: “guitar” }, { “firstName”: “Sergei”, “l(fā)astName”: “Rachmaninoff”, “instrument”: “piano” } ] } 這里最值得注意的是,能夠表示多個(gè)值,每個(gè)值進(jìn)而包含多個(gè)值。但是還應(yīng)該注意,在不同的主條目(programmers、authors 和 musicians)之間,記錄中實(shí)際的名稱(chēng) / 值對(duì)可以不一樣。JSON 是完全動(dòng)態(tài)的,允許在 JSON 結(jié)構(gòu)的中間改變表示數(shù)據(jù)的方式。 在處理 JSON 格式的數(shù)據(jù)時(shí),沒(méi)有需要遵守的預(yù)定義的約束。所以,在同樣的數(shù)據(jù)結(jié)構(gòu)中,可以改變表示數(shù)據(jù)的方式,甚至可以以不同方式表示同一事物。
JSON和XML的比較
◆可讀性
JSON和XML的可讀性可謂不相上下,一邊是簡(jiǎn)易的語(yǔ)法,一邊是規(guī)范的標(biāo)簽形式,很難分出勝負(fù)。
◆可擴(kuò)展性 XML天生有很好的擴(kuò)展性,JSON當(dāng)然也有,沒(méi)有什么是XML不能擴(kuò)展,而JSON卻不能。不過(guò)JSON在Javascript主場(chǎng)作戰(zhàn),可以存儲(chǔ)Javascript復(fù)合對(duì)象,有著xml不可比擬的優(yōu)勢(shì)。
◆編碼難度 XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有提供的工具。無(wú)工具的情況下,相信熟練的開(kāi)發(fā)人員一樣能很快的寫(xiě)出想要的xml文檔和JSON字符串,不過(guò),xml文檔要多很多結(jié)構(gòu)上的字符。
◆解碼難度 XML的解析方式有兩種:一是通過(guò)文檔模型解析,也就是通過(guò)父標(biāo)簽索引出一組標(biāo)記。例如:xmlData.getElementsByTagName(“tagName”),但是這樣是要在預(yù)先知道文檔結(jié)構(gòu)的情況下使用,無(wú)法進(jìn)行通用的封裝。
另外一種方法是遍歷節(jié)點(diǎn)(document 以及 childNodes)。這個(gè)可以通過(guò)遞歸來(lái)實(shí)現(xiàn),不過(guò)解析出來(lái)的數(shù)據(jù)仍舊是形式各異,往往也不能滿足預(yù)先的要求。 凡是這樣可擴(kuò)展的結(jié)構(gòu)數(shù)據(jù)解析起來(lái)一定都很困難。
JSON也同樣如此。如果預(yù)先知道JSON結(jié)構(gòu)的情況下,使用JSON進(jìn)行數(shù)據(jù)傳遞簡(jiǎn)直是太美妙了,可以寫(xiě)出很實(shí)用美觀可讀性強(qiáng)的代碼。如果你是純粹的前臺(tái)開(kāi)發(fā)人員,一定會(huì)非常喜歡JSON。但是如果你是一個(gè)應(yīng)用開(kāi)發(fā)人員,就不是那么喜歡了,畢竟xml才是真正的結(jié)構(gòu)化標(biāo)記語(yǔ)言,用于進(jìn)行數(shù)據(jù)傳遞。 而如果不知道JSON的結(jié)構(gòu)而去解析JSON的話,那簡(jiǎn)直是噩夢(mèng)。費(fèi)時(shí)費(fèi)力不說(shuō),代碼也會(huì)變得冗余拖沓,得到的結(jié)果也不盡人意。但是這樣也不影響眾多前臺(tái)開(kāi)發(fā)人員選擇JSON。因?yàn)閖son.js中的toJSONString()就可以看到JSON的字符串結(jié)構(gòu)。當(dāng)然不是使用這個(gè)字符串,這樣仍舊是噩夢(mèng)。常用JSON的人看到這個(gè)字符串之后,就對(duì)JSON的結(jié)構(gòu)很明了了,就更容易的操作JSON。
編碼的可讀性,xml有明顯的優(yōu)勢(shì),畢竟人類(lèi)的語(yǔ)言更貼近這樣的說(shuō)明結(jié)構(gòu)。json讀起來(lái)更像一個(gè)數(shù)據(jù)塊,讀起來(lái)就比較費(fèi)解了。不過(guò),我們讀起來(lái)費(fèi)解的語(yǔ)言,恰恰是適合機(jī)器閱讀,所以通過(guò)json的索引.province[0].name就能夠讀取“黑龍江”這個(gè)值。 編碼的手寫(xiě)難度來(lái)說(shuō),xml還是舒服一些,好讀當(dāng)然就好寫(xiě)。不過(guò)寫(xiě)出來(lái)的字符JSON就明顯少很多。去掉空白制表以及換行的話,JSON就是密密麻麻的有用數(shù)據(jù),而xml卻包含很多重復(fù)的標(biāo)記字符。
3.9 Android開(kāi)發(fā)平臺(tái)搭建
Android開(kāi)發(fā)平臺(tái)搭建步驟:
①首先到http://www.eclipse.org/downloads/下載Eclipse集成開(kāi)發(fā)環(huán)境并且解壓,這里推薦下載Java Classic 集成版本,可以為平臺(tái)的搭建省下不少工作。接著再去http://java.sun.com/javase/downloads/index.jsp?站點(diǎn)下載SDK后安裝,下載http://dl.google.com/android/android-sdk-windows-1.5_r1.zip,Android SDK1.5后解壓。第一步下載工序就結(jié)束了。
②雙擊Eclipse解壓后目錄中的eclipse.exe然后啟動(dòng),選擇Eclipse菜單中的Help-> Install New Software-> 選項(xiàng)卡上的Available Software,點(diǎn)擊右側(cè)的“Add”輸入http://dl-ssl.google.com/android/eclipse/后確定,然后在“Work with”下拉菜單中選擇剛才輸入的網(wǎng)址。過(guò)一會(huì)就會(huì)出現(xiàn)一個(gè)Developer Tools選項(xiàng),勾上以后點(diǎn)擊Next以后Eclipse會(huì)自動(dòng)網(wǎng)上查找Android 開(kāi)發(fā)工具插件,然后找到Android DDMS和Android Development Tools,選中這兩個(gè)點(diǎn)擊Finish,Eclipse就會(huì)自動(dòng)下載并安裝Android插件了,最后會(huì)提示重啟Eclipse。
③重啟后選擇Eclipse菜單中的Windows-> Preferences 在左側(cè)的Android項(xiàng)目中SDK Location中填入Android SDK解壓后的目錄,然后點(diǎn)擊Apply。
④在WindowsXP的系統(tǒng)變量中的path變量中添加一個(gè)值,該值指向解壓后的Android SDK目錄下的tools文件夾。
第四章 程序設(shè)計(jì)
4.1 功能設(shè)計(jì)
從系統(tǒng)設(shè)計(jì)是一個(gè)把軟件需求轉(zhuǎn)換成用軟件系統(tǒng)表示的過(guò)程。通過(guò)對(duì)目標(biāo)系統(tǒng)的分析和研究,做出了外賣(mài)App系統(tǒng)的總體規(guī)劃,這是全面開(kāi)發(fā)系統(tǒng)的重要基礎(chǔ)。在對(duì)外賣(mài)App系統(tǒng)全面分析調(diào)查的基礎(chǔ)上,制定出外賣(mài)App系統(tǒng)的總體規(guī)劃。系統(tǒng)設(shè)計(jì)包括系統(tǒng)總體設(shè)計(jì)、系統(tǒng)詳細(xì)設(shè)計(jì)、系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)、系統(tǒng)開(kāi)發(fā)工具、開(kāi)發(fā)技術(shù)和開(kāi)發(fā)模式等。
從數(shù)據(jù)流圖出發(fā),對(duì)數(shù)據(jù)流圖進(jìn)行分析,得出的層次化的模塊結(jié)構(gòu)圖.
外賣(mài)App系統(tǒng)功能模塊圖如圖4.1所示:
![[論文+源碼+錄像]基于Android的外賣(mài)App系統(tǒng)設(shè)計(jì)](https://b1.sanwen.net/b_article/9fb27961671f2adb175e388a97cb50c16e035f06.png)
圖4.1 外賣(mài)App系統(tǒng)功能模塊圖
4.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)是本系統(tǒng)的核心和基礎(chǔ)。它設(shè)計(jì)的好壞直接影響著整個(gè)系統(tǒng)的質(zhì)量。數(shù)據(jù)是一切系統(tǒng)設(shè)計(jì)的基礎(chǔ),通俗地說(shuō),數(shù)據(jù)庫(kù)設(shè)計(jì)就像高樓大廈的根基一樣,如果設(shè)計(jì)的不合理、不完善,將在系統(tǒng)開(kāi)發(fā)過(guò)程中,甚至到后期的系統(tǒng)維護(hù)、功能變更和功能擴(kuò)充時(shí),引起較多問(wèn)題,嚴(yán)重時(shí)甚至要重新設(shè)計(jì),重做大量已完成工作。
1.概念結(jié)構(gòu)設(shè)計(jì)
從數(shù)據(jù)需求分析中得出系統(tǒng)的實(shí)體屬性圖。
管理員實(shí)體屬性圖如圖4.3所示:
![[論文+源碼+錄像]基于Android的外賣(mài)App系統(tǒng)設(shè)計(jì)](https://b1.sanwen.net/b_article/29863c754df2d9ddcb8492368f3373e2ba43c2d2.png)
圖4.3管理員實(shí)體屬性圖
菜品實(shí)體屬性圖如圖4.4所示:
![[論文+源碼+錄像]基于Android的外賣(mài)App系統(tǒng)設(shè)計(jì)](https://b1.sanwen.net/b_article/29863c754df2d9ddcb8492368f3373e2ba43c2d2.png)
圖4.4菜品實(shí)體屬性圖
訂單信息實(shí)體屬性圖如圖4.5所示:
![[論文+源碼+錄像]基于Android的外賣(mài)App系統(tǒng)設(shè)計(jì)](https://b1.sanwen.net/b_article/29863c754df2d9ddcb8492368f3373e2ba43c2d2.png)
圖4.5訂單信息實(shí)體屬性圖
E-R模型的組成元素有:實(shí)體、屬性、聯(lián)系。E-R模型用E-R圖表示。實(shí)體是用戶工作環(huán)境中所涉及的事務(wù),屬性是對(duì)實(shí)體特征的描述。
模型中的實(shí)體相當(dāng)于實(shí)體集、一個(gè)表,而不是單個(gè)實(shí)體或表中的一行。實(shí)體用矩形框表示,實(shí)體名稱(chēng)標(biāo)注在矩形框內(nèi)。用菱形表示實(shí)體間的聯(lián)系,菱形框內(nèi)寫(xiě)上聯(lián)系名,用無(wú)向邊把菱形分別與有關(guān)實(shí)體相連接,在無(wú)向邊旁標(biāo)上聯(lián)系的類(lèi)型。
屬性是實(shí)體的性質(zhì)。用橢圓框表示,與實(shí)體之間用一條線相連表的主碼是關(guān)鍵屬性,關(guān)鍵屬性項(xiàng)加下劃線。
各子系統(tǒng)模塊中主鍵相同的字段之間存在著相互關(guān)聯(lián)的關(guān)系。
在程序中實(shí)現(xiàn)對(duì)他們的完整性和一致性控制。
從數(shù)據(jù)需求分析中得出系統(tǒng)的實(shí)體屬性圖,遵循三范式原則,對(duì)實(shí)體之間的依賴關(guān)系進(jìn)行了整合,得出系統(tǒng)E-R圖。
2.?dāng)?shù)據(jù)庫(kù)表設(shè)計(jì)
本軟件中有數(shù)據(jù)需要存儲(chǔ)數(shù)據(jù)。因此選擇Mysql數(shù)據(jù)庫(kù)作為存儲(chǔ)數(shù)據(jù)的方法,建立數(shù)據(jù)庫(kù)b_food,并且建立表。
表4-1 管理員的數(shù)據(jù)庫(kù)表admin的結(jié)構(gòu)
屬性數(shù)據(jù)類(lèi)型長(zhǎng)度說(shuō)明idint11主鍵id自增namevarchar20登錄名passwordvarchar20密碼Screen_namevarchar20昵稱(chēng)Typevarchar1類(lèi)型
表4-2 菜品的數(shù)據(jù)庫(kù)表food_info的結(jié)構(gòu)
屬性數(shù)據(jù)類(lèi)型長(zhǎng)度說(shuō)明food_idint11主鍵id自增food_namevarchar32名稱(chēng)food_picvarchar255圖片food_descriptionvarchar16描述food_priceFloat價(jià)格food_discount_priceFloat折扣價(jià)food_flagInt11類(lèi)型
表4-3訂單信息的數(shù)據(jù)庫(kù)表orders的結(jié)構(gòu)
屬性數(shù)據(jù)類(lèi)型長(zhǎng)度說(shuō)明idint11主鍵id自增food_idInt11菜品idseatvarchar16桌號(hào)descriptionvarchar32描述order_datevarchar32下單日期Beizhuvarchar255備注Pricevarchar32總價(jià)格statevarchar32結(jié)賬狀態(tài)
表4-4商家信息的數(shù)據(jù)庫(kù)表shangjia的結(jié)構(gòu)
屬性數(shù)據(jù)類(lèi)型長(zhǎng)度說(shuō)明idint11主鍵id自增yonghumingvarchar200登陸名mimavarchar200密碼mingchengvarchar200商家名稱(chēng)dianhuavarchar200電話dizhivarchar200地址
第五章程序開(kāi)發(fā)
5.1 文件結(jié)構(gòu)與用途
在程序開(kāi)發(fā)階段,首先確定“基于Android平臺(tái)外賣(mài)App系統(tǒng)”的工程名為b_food,據(jù)程序模塊設(shè)計(jì)的內(nèi)容,建立b_food工程。工程源代碼的結(jié)構(gòu)如圖5.1所示。
![[論文+源碼+錄像]基于Android的外賣(mài)App系統(tǒng)設(shè)計(jì)](https://b1.sanwen.net/b_article/db69b9fcfea217246770db79b1e89248b0923c77.png)
圖5.1 b_food工程的源代碼文件
為了使源代碼文件的結(jié)構(gòu)更加清晰,b_food工程設(shè)置了多個(gè)命名空間,分別用來(lái)保存用戶界面、數(shù)據(jù)庫(kù)、后臺(tái)服務(wù)和工具實(shí)體的源代碼文件,源代碼文件的名稱(chēng)以及說(shuō)明如表5.1所示。
表5.1 b_food工程的文件用途說(shuō)明
包 名 稱(chēng)說(shuō) 明備 注Com.bb項(xiàng)目的ActivityCom.bb.pojoPOJO對(duì)象封裝了數(shù)據(jù)庫(kù)表Com.bb.util項(xiàng)目公共服務(wù)類(lèi)
Android的資源文件保存在/res的子目錄中。其中、/res/anim目錄中保存的是產(chǎn)生動(dòng)畫(huà)效果的XML文件,/res/drawable/目錄中保存的是圖像文件,/res/values目錄中保存的是用來(lái)自定義字符串和顏色的文件,/res/xml目錄中保存的是XML格式的數(shù)據(jù)文件。所有在程序開(kāi)發(fā)階段可以被調(diào)用的資源都保存在這些目錄中,具體每個(gè)資源文件的用途可以參考表5.2:
表5.2 資源文件名稱(chēng)與用途
資源目錄文 件說(shuō) 明drawable*.png這個(gè)文件夾里是工程里所用的圖片,此處不贅述。layout*.xml頁(yè)面的布局文件valuescolor.xml保存顏色的XML文件strings.xml保存字符串的XML的文件
5.2 系統(tǒng)實(shí)現(xiàn)
5.4.1登錄頁(yè)
打開(kāi)應(yīng)用后,即來(lái)到了外賣(mài)App系統(tǒng)的登錄頁(yè)面。如下圖所示:
第六章 系統(tǒng)測(cè)試
測(cè)試是開(kāi)發(fā)時(shí)期最后一個(gè)階段,是保證軟件質(zhì)量的重要手段。軟件測(cè)試就是在受控制的條件下對(duì)系統(tǒng)或應(yīng)用程序進(jìn)行操作并評(píng)價(jià)操作結(jié)果的過(guò)程,所謂控制條件應(yīng)包括正常條件與非正常條件。軟件測(cè)試過(guò)程中應(yīng)該故意地去促使錯(cuò)誤的發(fā)生,也就是事情在不該出現(xiàn)的時(shí)候出現(xiàn)或者在應(yīng)該出現(xiàn)的時(shí)候沒(méi)有出現(xiàn)。從本質(zhì)上說(shuō),軟件測(cè)試是”探測(cè)”,在“探測(cè)”中發(fā)現(xiàn)軟件的毛病。
6.1 軟件測(cè)試的重要性
軟件測(cè)試在軟件生命周期中占據(jù)重要的地位,在傳統(tǒng)的瀑布模型中,軟件測(cè)試學(xué)僅處于運(yùn)行維護(hù)階段之前,是軟件產(chǎn)品交付用戶使用之前保證軟件質(zhì)量的重要手段。近來(lái),軟件工程界趨向于一種新的觀點(diǎn),即認(rèn)為軟件生命周期每一階段中都應(yīng)包含測(cè)試,從而檢驗(yàn)本階段的成果是否接近預(yù)期的目標(biāo),盡可能早的發(fā)現(xiàn)錯(cuò)誤并加以修正,如果不在早期階段進(jìn)行測(cè)試,錯(cuò)誤的延時(shí)擴(kuò)散常常會(huì)導(dǎo)致最后成品測(cè)試的巨大困難。
事實(shí)上,對(duì)于軟件來(lái)講,不論采用什么技術(shù)和什么方法,軟件中仍然會(huì)有錯(cuò)。采用新的語(yǔ)言、先進(jìn)的開(kāi)發(fā)方式、完善的開(kāi)發(fā)過(guò)程,可以減少錯(cuò)誤的引入,但是不可能完全杜絕軟件中的錯(cuò)誤,這些引入的錯(cuò)誤需要測(cè)試來(lái)找出,軟件中的錯(cuò)誤密度也需要測(cè)試來(lái)進(jìn)行估計(jì)。測(cè)試是所有工程學(xué)科的基本組成單元,是軟件開(kāi)發(fā)的重要部分。自有程序設(shè)計(jì)的那天起測(cè)試就一直伴隨著。統(tǒng)計(jì)表明,在典型的軟件開(kāi)發(fā)項(xiàng)目中,軟件測(cè)試工作量往往占軟件開(kāi)發(fā)總工作量的40%以上。而在軟件開(kāi)發(fā)的總成本中,用在測(cè)試上的開(kāi)銷(xiāo)要占30%到50%。如果把維護(hù)階段也考慮在內(nèi),討論整個(gè)軟件生存期時(shí),測(cè)試的成本比例也許會(huì)有所降低,但實(shí)際上維護(hù)工作相當(dāng)于二次開(kāi)發(fā),乃至多次開(kāi)發(fā),其中必定還包含有許多測(cè)試工作。
6.2 測(cè)試實(shí)例的研究與選擇
程序測(cè)試的主要方法分為兩大類(lèi),白盒測(cè)試和黑盒測(cè)試。
白盒測(cè)試:一種是以程序的內(nèi)部邏輯結(jié)構(gòu)為依據(jù)而設(shè)計(jì)測(cè)試用例的方法,因而又稱(chēng)結(jié)構(gòu)測(cè)試或玻璃盒測(cè)試,將軟件看成一個(gè)透明的白盒子,按照程序的內(nèi)部結(jié)構(gòu)和處理邏輯來(lái)選定測(cè)試用例,對(duì)軟件的邏輯路徑及過(guò)程進(jìn)行測(cè)試,檢查它與設(shè)計(jì)是否相符[17]。白盒測(cè)試就是要選取足夠的測(cè)試用例,對(duì)源代碼實(shí)行比較充分的覆蓋,以便盡可能多地發(fā)現(xiàn)程序中的錯(cuò)誤。主要有兩種方法:一種稱(chēng)為邏輯覆蓋法,另一種稱(chēng)為路徑覆蓋法。
黑盒測(cè)試:也稱(chēng)功能測(cè)試,數(shù)據(jù)驅(qū)動(dòng)測(cè)試等,它將待測(cè)對(duì)象堪稱(chēng)是一個(gè)黑盒子,在完全不考慮程序的內(nèi)部結(jié)構(gòu)和特性的情況下,只依據(jù)規(guī)格說(shuō)明書(shū)檢查程序的功能是否能正常使用。
黑盒測(cè)試主要是根據(jù)輸入條件和輸出條件的確定測(cè)試數(shù)據(jù),來(lái)檢查程序是否能產(chǎn)生正確的輸出。進(jìn)行黑盒測(cè)試主要有下面幾種方法:等價(jià)分類(lèi)法、邊界值分析法、猜錯(cuò)法、因果圖法。
本系統(tǒng)的測(cè)試綜合了白盒測(cè)試、黑盒測(cè)試兩種方法,但主要使用的是黑盒測(cè)試方法。在測(cè)試當(dāng)中遵循了“盡早地和不斷進(jìn)行測(cè)試”,“保證測(cè)試用例的完整性和有效性”原則。通過(guò)測(cè)試達(dá)到以下測(cè)試目的:
1.功能檢查:檢查功能是否爭(zhēng)取,是否遺漏或?qū)崿F(xiàn)不了應(yīng)該實(shí)現(xiàn)的功能等。
2接口檢查:檢查能否正確地接受信息或輸出信息。
3數(shù)據(jù)檢查:檢查數(shù)據(jù)結(jié)構(gòu)或外部信息是否有(如數(shù)據(jù)文件)訪問(wèn)錯(cuò)誤。
4性能檢查:檢查性能需求能否得到滿足。
5初始化、終止檢查:檢查是否能進(jìn)行正確地初始化或終止。
6.3 測(cè)試環(huán)境與測(cè)試條件
處理器:Inter(R) Core (TM)2 Duo T5750
內(nèi)存:2GB
硬盤(pán):160G
操作系統(tǒng):Windows XP
Android虛擬機(jī)版本:2.3
6.4 系統(tǒng)運(yùn)行情況
通過(guò)對(duì)系統(tǒng)的全面測(cè)試,所有測(cè)試條目都已經(jīng)通過(guò),實(shí)現(xiàn)了基本要求,系統(tǒng)可以正常運(yùn)行。
6.5 系統(tǒng)評(píng)價(jià)
系統(tǒng)評(píng)價(jià)是指系統(tǒng)在正式運(yùn)行了一段時(shí)間之后,對(duì)它在功能上、技術(shù)上和經(jīng)濟(jì)上所進(jìn)行的審核評(píng)價(jià)。針對(duì)本系統(tǒng)的評(píng)價(jià)如下:
(1)系統(tǒng)功能評(píng)價(jià)
根據(jù)本系統(tǒng)開(kāi)發(fā)前所訂的目標(biāo),在系統(tǒng)完成后經(jīng)過(guò)測(cè)試運(yùn)行,該系統(tǒng)達(dá)到了預(yù)定的開(kāi)發(fā)目標(biāo),在實(shí)際使用中的功能可以滿足用戶需求。
(2)系統(tǒng)技術(shù)評(píng)價(jià)
本系統(tǒng)設(shè)計(jì)合理,功能達(dá)到了預(yù)期目標(biāo),且系統(tǒng)運(yùn)行后穩(wěn)定可靠,安全性高,具有實(shí)用性,大大提高了辦公效率。
(3)系統(tǒng)經(jīng)濟(jì)評(píng)價(jià)
在規(guī)定時(shí)間內(nèi),該系統(tǒng)完成了系統(tǒng)分析時(shí)所確定的系統(tǒng)開(kāi)發(fā)目標(biāo),達(dá)到了設(shè)計(jì)要求,投入使用后為用戶節(jié)省了大量人力物力財(cái)力,提高了科學(xué)管理水平。
總結(jié)
經(jīng)過(guò)數(shù)個(gè)月的努力,Android平臺(tái)外賣(mài)App系統(tǒng)軟件終于完成了。由于對(duì)JAVA濃厚的興趣引發(fā)了我對(duì)Android的好奇心,從一開(kāi)始什么都不懂一直摸索著運(yùn)用了很多高級(jí)技術(shù)完成了這個(gè)軟件。
在這個(gè)過(guò)程中,我學(xué)會(huì)了很多知識(shí),比如Android環(huán)境的搭建、Intent、Activity等,但我學(xué)會(huì)的最重要的一點(diǎn)是,利用現(xiàn)有的資源去解決問(wèn)題,在圖書(shū)館、在網(wǎng)絡(luò)上尋找答案。
雖然,這個(gè)軟件目前運(yùn)行良好,但是我認(rèn)為代碼的健壯行還很差,在整個(gè)工程的構(gòu)思方面也不足,用戶操作界面還不夠靈活,這些問(wèn)題還需要今后逐一解決。與此同時(shí),這個(gè)軟件還可以進(jìn)一步擴(kuò)展,例如“新聞資訊”等,是功能更加強(qiáng)大,帶給用戶更好的體驗(yàn)與生活的便捷。
參考文獻(xiàn)
[1]?http://developer.android. com
[2]Google Buys Android for Its Mobile Arsenal.Businessweek.com.2005.08
[3]Lynnette Luna. Android now dominates mobile OS market and it may lean in malware too.fiercemobileit.com. 2011.03
[4] Day 74 Sales: Apple iPhone vs. Google Nexus One vs. Motorola Droid.
[5]Barra, Hugo (10 May 2011). “Android: momentum, mobile and more at Google I/O”. The Official Google Blog. Retrieved 10 May 2011
[6]楊豐盛. Android應(yīng)用開(kāi)發(fā)揭秘[M] 第一版.北京:機(jī)械工業(yè)出版社. 2010年
[7]靳巖,姚尚朗. Android 入門(mén)開(kāi)發(fā)與實(shí)踐[M] 第一版. .北京:人民郵件出版社. 2009.
[8]?http://www.apkbus.com
[9]朱桂英. Android開(kāi)發(fā)應(yīng)用從入門(mén)到精通[M]. 第1版. 中國(guó)鐵道出版社, 2011.
[10] 扶松柏,于秀青. Android開(kāi)發(fā)從入門(mén)到精通[M]. 第1版. 北京希望電子出版社, 2012.
[11]yizhi237. Android開(kāi)發(fā)從入門(mén)到精通學(xué)習(xí)文檔[EB/OL]. [2013-3-8].?http://wenku.baidu.com/view/ef571e135f0e7cd18425364f.html.
[12] ShaneConder. Android移動(dòng)應(yīng)用開(kāi)發(fā)從入門(mén)到精通[M]. 第1版. 人民郵電出版社, 2010.
[13] ??藸? Thinking in java[M]. 1. 機(jī)械工業(yè)出版社, 2007.
[14] Cadenhead R. Java入門(mén)經(jīng)典[M]. 第1版. 人民郵電出版社, 2012
2
致 謝
本課題的設(shè)計(jì)和論文撰寫(xiě)過(guò)程中,我的指導(dǎo)老師給予了極大的幫助,為我提供了大量的相關(guān)資料。在完成課題設(shè)計(jì)的過(guò)程中,老師在總體設(shè)計(jì)思想上給予了許多重要的實(shí)際指導(dǎo),拓展了我的思路,使得我得以完成了任務(wù)。在此,我對(duì)老師的指導(dǎo)表示衷心的感謝。
同時(shí),我也衷心的感謝大學(xué)四年來(lái)對(duì)我的精心栽培,良好的校園環(huán)境、精良的師資隊(duì)伍、濃厚的校園文化都讓我深深懷念,都為我進(jìn)入社會(huì)提供了莫大的幫助。
源碼鏈接:https://yunjunet.cn/876979.html