物聯(lián)網(wǎng)個(gè)人項(xiàng)目報(bào)告_第1頁
物聯(lián)網(wǎng)個(gè)人項(xiàng)目報(bào)告_第2頁
物聯(lián)網(wǎng)個(gè)人項(xiàng)目報(bào)告_第3頁
物聯(lián)網(wǎng)個(gè)人項(xiàng)目報(bào)告_第4頁
物聯(lián)網(wǎng)個(gè)人項(xiàng)目報(bào)告_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、物聯(lián)網(wǎng)個(gè)人項(xiàng)目報(bào)告我們組的物聯(lián)網(wǎng)大作業(yè)是“食享”APP,它是一款基于位置的輕量級(jí)美食分享交流應(yīng)用。在項(xiàng)目中我主要負(fù)責(zé)Android端后臺(tái)開發(fā),以及小組報(bào)告的撰寫。 1緒論1.1課題研究背景本小組從物聯(lián)網(wǎng)的定義出發(fā),覺得從全球定位系統(tǒng)這個(gè)點(diǎn)出發(fā),相對(duì)于我們的整體水平,更容易實(shí)現(xiàn)。隨著全球經(jīng)濟(jì)的飛速發(fā)展,傳統(tǒng)的商務(wù)模式已經(jīng)不能滿足企業(yè)生存發(fā)展的需要.于是電子商務(wù)這一新興產(chǎn)業(yè)便應(yīng)運(yùn)而生。從近幾年電子商務(wù)的發(fā)展速度和規(guī)模來看,足以顯示其帶來的巨大的商業(yè)價(jià)值?;ヂ?lián)網(wǎng)和寬帶上網(wǎng)的普及使電子商務(wù)在中國異軍突起,并日益滲透到人們的日常生活中。電子商務(wù)是運(yùn)用現(xiàn)代通信技術(shù)、計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)進(jìn)行的一種社會(huì)經(jīng)濟(jì)形態(tài),

2、其目的是通過降低社會(huì)經(jīng)營成本、提高社會(huì)生產(chǎn)效率、優(yōu)化社會(huì)資源配置,從而實(shí)現(xiàn)社會(huì)財(cái)富的最大化利用。電子商務(wù)按照經(jīng)濟(jì)活動(dòng)的類別可分為兩大類別:第一,企業(yè)間的電子商務(wù),即企業(yè)與企業(yè)之間,通過網(wǎng)絡(luò)進(jìn)行產(chǎn)品或服務(wù)的經(jīng)營活動(dòng)“第二企業(yè)與消費(fèi)者之間的電子商務(wù),即企業(yè)通過網(wǎng)絡(luò)為消費(fèi)者提供一個(gè)產(chǎn)品或者服務(wù)的經(jīng)營活動(dòng)。本課題所研究的美食網(wǎng)站主要是為個(gè)人消費(fèi)者提供產(chǎn)品和服務(wù)等,從事的是第二類電子商務(wù)活動(dòng)。1.2課題主要內(nèi)容注冊(cè)與登陸界面;美食拍照與定位;地圖顯示與分享位置;用戶聊天與互動(dòng)(美食微博);(互動(dòng)包括:聊天,關(guān)注,點(diǎn)贊,評(píng)論等)用戶個(gè)性化添加標(biāo)簽;1.3主要內(nèi)容介紹美食分享軟件系統(tǒng)包括了一般用戶、系統(tǒng)管理

3、員兩種用戶,根據(jù)其不同的角色對(duì)系統(tǒng)有不同的需求。1.3.1 一般用戶需求 一般用戶可以通過安裝在Android系統(tǒng)上的應(yīng)用程序來訪問美食分享軟件。在手機(jī)端,用戶可以注冊(cè)或者登錄系統(tǒng),登錄之后能夠進(jìn)行搜索美食,查看美食,收藏美食,上傳美食等操作。這些功能已經(jīng)全部實(shí)現(xiàn)了。1.3.2 管理員需求 當(dāng)管理員登錄美食分享系統(tǒng)時(shí),可以對(duì)整個(gè)系統(tǒng)進(jìn)行管理,包括添加美食種類,刪除美食種類,更改每日推薦等等。這些功能都已經(jīng)實(shí)現(xiàn),而且直接登錄數(shù)據(jù)庫圖形化管理工具Navicat,操作數(shù)據(jù)庫更為方便。性能方面,就下面數(shù)據(jù)精確度幾個(gè)指標(biāo)進(jìn)行展開:我們的系統(tǒng)能夠做到:用戶在進(jìn)行美食搜索時(shí)要保證查全率、查準(zhǔn)率,所有符合條件

4、的美食都能被找到,這達(dá)到了預(yù)期的目標(biāo)。1.3.3 時(shí)間特性 1. 打開一個(gè)新的鏈接的時(shí)間不能超過3秒。2. 系統(tǒng)處理美食搜索操作響應(yīng)時(shí)間不能超過10秒。3. 我們的系統(tǒng),打開一個(gè)新鏈接需要時(shí)間不到1秒,在毫秒的量級(jí); 4. 進(jìn)行美食搜索操作同樣也不到1秒,當(dāng)然,這與我們的數(shù)據(jù)庫里能夠搜索的內(nèi)容偏少有關(guān)。(2)適應(yīng)性 本軟件系統(tǒng)應(yīng)能在Android 2.2及其以上手機(jī)操作系統(tǒng)上良好運(yùn)行,Web端應(yīng)能使用IE6.0以上內(nèi)核的瀏覽器,Chrome瀏覽器,F(xiàn)ireFox瀏覽器進(jìn)行訪問,完全達(dá)到預(yù)期目標(biāo)。(3)安全性我們的系統(tǒng)具有一定程度的權(quán)限管理,邏輯分析以及檢測數(shù)據(jù)完整性功能,各個(gè)功能模塊需要相應(yīng)的

5、權(quán)限才能訪問。例如:非注冊(cè)用戶(游客)只具備瀏覽美食,搜索美食的權(quán)限,只有登錄用戶才可以對(duì)美食進(jìn)行收藏、上傳等操作。這一部分在Web端和Android端已經(jīng)實(shí)現(xiàn),但是還有一些本地驗(yàn)證等還需要進(jìn)一步的完善。(4)可靠性只要服務(wù)器不宕機(jī)(充當(dāng)服務(wù)器的PC不關(guān)機(jī)),系統(tǒng)可以保證一直正常運(yùn)行。2模塊搭建2.4.2 系統(tǒng)主要功能接口設(shè)計(jì)眾所周知,接口是提供給其他模塊或者系統(tǒng)使用的一種約定或者規(guī)范。因此接口必須要保證足夠的穩(wěn)定性和易用性。這是設(shè)計(jì)接口的基本要求。在Android端,各個(gè)Activity模塊之間的數(shù)據(jù)交互主要是利用Bundle類對(duì)數(shù)據(jù)進(jìn)行封裝,然后通過Intent機(jī)制在各個(gè)模塊之間進(jìn)行傳輸。

6、Intent是一種運(yùn)行時(shí)綁定(run-time binding)機(jī)制,它能在程序運(yùn)行過程中連接兩個(gè)不同的組件。通過Intent,你的程序可以向Android表達(dá)某種請(qǐng)求或者意愿,Android會(huì)根據(jù)意愿的內(nèi)容選擇適當(dāng)?shù)慕M件來完成請(qǐng)求。比如,有一個(gè)Activity希望打開網(wǎng)頁瀏覽器查看某一網(wǎng)頁的內(nèi)容,那么這個(gè)Activity只需要發(fā)出WEB_SEARCH_ACTION給Android,Android就會(huì)根據(jù)Intent的請(qǐng)求內(nèi)容,查詢各組件注冊(cè)時(shí)聲明的IntentFilter,找到網(wǎng)頁瀏覽器的Activity來瀏覽網(wǎng)頁。 要在不同的activity之間傳遞數(shù)據(jù),就要在intent中包含

7、相應(yīng)的內(nèi)容,一般來說數(shù)據(jù)中最基本的應(yīng)該包括:Ø Action:用來指明要實(shí)施的動(dòng)作是什么,比如說ACTION_VIEW, ACTION_EDIT等。具體的可以查閱android SDK-> reference中的Aent類,里面的constants中定義了所有的action。Ø Data: 要事實(shí)的具體的數(shù)據(jù),一般由一個(gè)Uri變量來表示。Ø Category:一個(gè)字符串,包含了關(guān)于處理該intent的組件的種類的信息。一個(gè)intent對(duì)象可以有任意個(gè)category。Ø Type:顯式指定Intent的數(shù)據(jù)類型(

8、MIME)(多用途互聯(lián)網(wǎng)郵件擴(kuò)展,Multipurpose Internet Mail Extensions)。2.4.3 登錄模塊 (1)請(qǐng)求消息接口含義:客戶端通過socket請(qǐng)求提交用戶信息進(jìn)行驗(yàn)證接口協(xié)議:TCP/IP協(xié)議命令字:dout.writeUTF參數(shù)描述約束uid系統(tǒng)給用戶分配的id必須是注冊(cè)成功的idpwd密碼必須是對(duì)應(yīng)的密碼(2)接收消息接口含義:客戶端接收來自服務(wù)器端發(fā)來的消息接口協(xié)議:TCP/IP協(xié)議命令字:din.writeUTF參數(shù)描述約束uid系統(tǒng)給用戶分配的id必須是注冊(cè)成功的idpwd密碼必須是對(duì)應(yīng)的密碼這部分的核心代碼實(shí)現(xiàn)如下:2.4.4 注冊(cè)模塊(1)

9、請(qǐng)求消息接口含義:客戶端通過socket請(qǐng)求提交用戶信息進(jìn)行注冊(cè)接口協(xié)議:TCP/IP協(xié)議命令字:dout.writeUTF參數(shù)描述約束u_name用戶名不能為空u_pwd1密碼兩次密碼輸入一致u_qqQQ數(shù)字u_Email郵箱地址不能為空u_dis個(gè)人描述無(2) 接收消息接口含義:客戶端接收來自服務(wù)器端發(fā)來的消息接口協(xié)議:TCP/IP協(xié)議命令字:din.writeUTF參數(shù)描述約束uid系統(tǒng)給用戶分配的id必須是注冊(cè)成功的idu_name用戶名提交的用戶名這部分的核心代碼實(shí)現(xiàn)如下:2.4.5 拍照模塊這一部分調(diào)用了手機(jī)上的相機(jī)api,同時(shí)將得到的照片提交到上傳模塊中,與其他內(nèi)容一起提交到服

10、務(wù)器中。拍照的API函數(shù):myCamera.takePicture調(diào)用的過程:返回?cái)?shù)據(jù):接口含義:拍照模塊向上傳模塊發(fā)送圖片數(shù)據(jù)接口協(xié)議:TCP/IP協(xié)議命令字:onPictureTaken參數(shù)描述約束data圖片二進(jìn)制數(shù)據(jù)無主要實(shí)現(xiàn)代碼:2.4.6 地圖模塊這一部分調(diào)用了Google地圖的API,同時(shí)將得到的照片提交到上傳模塊中,與其他內(nèi)容一起提交到服務(wù)器中。調(diào)用的Google地圖API包括以下幾個(gè)方面:返回?cái)?shù)據(jù):接口含義:地圖模塊向上傳模塊發(fā)送圖片數(shù)據(jù)接口協(xié)議:TCP/IP協(xié)議命令字:setResult參數(shù)描述約束RESULT_OK標(biāo)識(shí)符無lat經(jīng)度浮點(diǎn)數(shù)lon緯度浮點(diǎn)數(shù)主要實(shí)現(xiàn)代碼:其他

11、模塊的接口設(shè)計(jì)與上述幾個(gè)模塊的接口設(shè)計(jì)類似,在這不再贅述。2.5 系統(tǒng)的設(shè)計(jì)模式應(yīng)用2.5.1 MVC設(shè)計(jì)模式MVC全名是Model View Controller,是模型(model)視圖(view)控制器(controller)的縮寫,一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面 顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯。MVC被獨(dú)特的發(fā)展起來用于 映射傳統(tǒng)的輸入、處理和輸出功能在一個(gè)邏輯的圖形化用戶界面的結(jié)構(gòu)中。MVC結(jié)構(gòu)如圖2-5所示:圖2-5 MVC結(jié)構(gòu)圖2.5.2 抽象工廠模式下面是系統(tǒng)封裝的抽象工廠描述性

12、說明(1) 創(chuàng)建抽象工廠類public class BeanFactory(2) 保存相關(guān)對(duì)象保存Service相關(guān)對(duì)象private Map serviceMap = new HashMap();保存Dao相關(guān)對(duì)象private Map daoMap = new HashMap();(3) 返回相關(guān)對(duì)象實(shí)例return serviceMap.get(c.getName();return daoMap.get(c.getName();(4) 將創(chuàng)建好多的對(duì)象放到Map中serviceMap.put(c.getName(), service); daoMap.put(c.getName(), d

13、ao);(5) 返回系列產(chǎn)品return service; return dao;抽象工廠模式示意圖如圖2-6所示。圖2-62.5.3 Filter統(tǒng)一控制本系統(tǒng)采用Filter技術(shù)面向切面編程,實(shí)現(xiàn)了統(tǒng)一處理字符集;簡單的webCache,統(tǒng)一控制緩存;只有經(jīng)過登錄頁面登陸成功才能進(jìn)入其他頁面。體現(xiàn)了一個(gè)責(zé)任鏈模式,提供了一種聲明式服務(wù),具有可插拔的能力。采用Filter技術(shù)對(duì)Request和Response請(qǐng)求進(jìn)行了攔截,這對(duì)系統(tǒng)后期的完善,權(quán)限的分配,病毒的攔截有至關(guān)重要的作用。采用Filter技術(shù)主要是調(diào)用下面的方法public void doFilter(ServletRequest

14、 request, ServletResponse response,FilterChain chain) /完成相關(guān)的控制語句chain.doFilter(request, response);通過本系統(tǒng)中的用戶維護(hù)說明Filter的基本原理如圖2-7所示。圖2-7 Filter統(tǒng)一控制流程圖2.6系統(tǒng)的AOP 設(shè)計(jì)應(yīng)用面向方面編程(Aspect Oriented Programming,簡稱AOP)是一種聲明式編程(Declarative Programming)。聲明式編程是和命令式編程(Imperative Programming)相對(duì)的概念。我們平時(shí)使用的編程語言,比如C+、Java

15、、Ruby、Python等,都屬命令式編程。命令式編程的意思是, 程序員需要一步步寫清楚程序需要如何做什么(How to do What)。聲明式編程的意思是,程序員不需要一步步告訴程序如何做,只需要告訴程序在哪些地方做什么(Where to do What)。比起命令式編程來,聲明式編程是在一個(gè)更高的層次上編程。聲明式編程語言是更高級(jí)的語言。聲明式編程通常處理一些總結(jié)性、總覽性的工作,不適 合做順序相關(guān)的細(xì)節(jié)相關(guān)的底層工作。本系統(tǒng)中能用到AOP的地方:1.統(tǒng)一字符編碼處理2.打印出所有業(yè)務(wù)類的工作流程日志3.所有關(guān)鍵業(yè)務(wù)方法都加上事務(wù)管理功能2.7系統(tǒng)的非功能設(shè)計(jì)(如性能、安全性等)這一部分

16、已經(jīng)在第一節(jié)闡述,這里不再贅述。2.8系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)本系統(tǒng)中的信息表主要有10張表:頭像表、用戶信息表、美食種類表、美食信息表、每日推薦表、我的收藏表、廣告表、廣告圖片表和最大編號(hào)表。他們之間的關(guān)系可以用圖2-8來表示。圖 2-8 數(shù)據(jù)庫設(shè)計(jì)圖部分?jǐn)?shù)據(jù)庫建表語句如下:create database mstx;use mstx;CREATE TABLE mstx_user(/*用戶信息表*/uidintNOT NULL,u_namechar(50)NOT NULL,u_qqvarchar(15),u_pwdvarchar(50),u_Emailvarchar(50),u_headint,u_a

17、dminboolean NOT NULL,u_moodvarchar(50),u_integralint,u_hobbyvarchar(50),u_levelint,u_numberint,PRIMARY KEY(uid),FOREIGN KEY(u_head) REFERENCES mstx_head(tid);FOREIGN KEY(gid) REFERENCES mstx_ads(gid);CREATE TABLE mstx_info(/*美食信息表*/mid int NOT NULL,info_titlechar(50)NOT NULL,info_distext,info_lonflo

18、at(17,14),info_latfloat(17,14),info_sortint,info_pricedouble,info_timeTIMESTAMP,uidint,hotel_namechar(50),PRIMARY KEY(mid),FOREIGN KEY(uid) REFERENCES mstx_user(uid),FOREIGN KEY(info_sort) REFERENCES mstx_sort(sid);其他表格設(shè)計(jì)類似,不再贅述。2.9Ui界面我們的ui界面秉承著清新的風(fēng)格開發(fā)出來的。整個(gè)軟件界面使用一個(gè)線性布局,讓所有的元素從屏幕上方向下填充,并給整個(gè)線性布局進(jìn)行權(quán)重

19、劃分。線性布局的最上方是一個(gè)TextView,顯示當(dāng)前城市的名字,接著是一個(gè)線性布局,布局的左上方是三個(gè)TextView,分別顯示拍照等功能,通過點(diǎn)擊相應(yīng)的TextView,下方的一個(gè)線性布局展現(xiàn)不同的功能。功能面板文字的下方是一個(gè)大的線性布局,用來顯示未來三天的天氣情況。在這個(gè)大的線性布局中,又含有三個(gè)小的線性布局,這三個(gè)小線性布局中包含了各種button等(這些控件從上到下垂直居中顯示)。通過給整個(gè)XML文件中LinearLayout布局的的子級(jí)布局添加權(quán)重,讓各個(gè)部分從上到下有序的顯示,讓功能面板位于屏幕下方顯示,以匹配不同尺寸屏幕,讓軟件的顯示效果更好。軟件的整體布局風(fēng)格是清新,優(yōu)美,

20、大方。 2.10功能設(shè)計(jì)功能上實(shí)現(xiàn)實(shí)時(shí)的獲取天氣信息,獲取百度api返回?cái)?shù)據(jù),解析百度api返回的json數(shù)據(jù),根據(jù)解析到的數(shù)據(jù)繪制氣溫趨勢圖,并將數(shù)據(jù)反饋到app上的相應(yīng)的區(qū)域。通過使用ViewPager類,來實(shí)現(xiàn)天氣預(yù)報(bào)軟件中多個(gè)城市間的無縫頁面切換。由于組員都缺少JAVA開發(fā)經(jīng)驗(yàn),對(duì)安卓開發(fā)也不熟悉,所以我們決定采用調(diào)用API的方法來實(shí)時(shí)獲取不同城市的天氣預(yù)報(bào)數(shù)據(jù),在這次項(xiàng)目中我們將采用百度的車載API。通過HttpClient類和AsyncTask異步類來獲取網(wǎng)絡(luò)數(shù)據(jù)。最后通過Gson類來解析獲取的網(wǎng)絡(luò)數(shù)據(jù),并給頁面中的所有的布局空間設(shè)置id,在AsyncTask得到網(wǎng)絡(luò)數(shù)據(jù)之后將這些數(shù)據(jù)同步到軟件界面上,呈現(xiàn)給用戶。后臺(tái)是由食享的后端云采用網(wǎng)絡(luò)上流行的Bmob后端云平臺(tái),其提供一定容量的免費(fèi)服務(wù)器資源,和一系列安卓和蘋果API以供初級(jí)開發(fā)者使用。我們可以在Bmob網(wǎng)頁端注冊(cè)賬號(hào)生成免費(fèi)的云應(yīng)用,將云應(yīng)用的密鑰結(jié)合在an

溫馨提示

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

評(píng)論

0/150

提交評(píng)論