綜合課程設(shè)計(jì)_第1頁(yè)
綜合課程設(shè)計(jì)_第2頁(yè)
綜合課程設(shè)計(jì)_第3頁(yè)
綜合課程設(shè)計(jì)_第4頁(yè)
綜合課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

B'童謹(jǐn)葭工大皆綜合課程設(shè)計(jì)報(bào)告題目營(yíng)養(yǎng)食譜系統(tǒng)二級(jí)學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院專業(yè)網(wǎng)絡(luò)工程學(xué)號(hào)姓名又鄧中斌時(shí)間2013-9-22目錄TOC\o"1-5"\h\z\o"CurrentDocument"第1章緒論3\o"CurrentDocument"1.1項(xiàng)目背景知識(shí)介紹3\o"CurrentDocument"1.2項(xiàng)目的意義和主要內(nèi)容3\o"CurrentDocument"第2章相關(guān)技術(shù)介紹5Animation介紹5Intent介紹5SharedPreferences介紹6SQLite介紹6Map介紹6simpleAdapter介紹7\o"CurrentDocument"第3章需求分析83.1功能結(jié)構(gòu)圖83.2管理員操作8\o"CurrentDocument"第4章系統(tǒng)設(shè)計(jì)9\o"CurrentDocument"4.1各模塊關(guān)系布局94.2系統(tǒng)實(shí)現(xiàn)整個(gè)流程圖10\o"CurrentDocument"4.3代碼,布局文件結(jié)構(gòu)104.4模塊布局以及核心代碼124.4.1進(jìn)入動(dòng)畫(huà)124.4.2登錄操作13ListView操作及數(shù)據(jù)庫(kù)運(yùn)用154.4.4點(diǎn)擊GridView中Item響應(yīng)事件23\o"CurrentDocument"第5章系統(tǒng)實(shí)現(xiàn)255.1系統(tǒng)運(yùn)行截圖255.2操作簡(jiǎn)介28\o"CurrentDocument"第6章總結(jié)29\o"CurrentDocument"參考文獻(xiàn)30第1章緒論1.1項(xiàng)目背景知識(shí)介紹生物從低級(jí)到高級(jí),從單細(xì)胞生物到高等動(dòng)植物,從水中生活到陸地生活,所處的環(huán)境不同,生態(tài)各異。因此,所需要的養(yǎng)料和攝取養(yǎng)料的方式也不相同。生物所需的養(yǎng)料,其元素組成,大量的有氫、氧、氮和碳。這些是組成生物體的蛋白質(zhì)和儲(chǔ)存能量的主要元素。此外,還有少量的硫、磷、鈣、鎂、鉀、鈉、氯和多種微量元素。有些微量元素在生物體內(nèi)僅有痕量。含有葉綠素和紫色素的植物和微生物能夠經(jīng)過(guò)根、葉或細(xì)胞膜直接從外界吸取這些無(wú)機(jī)化合物,并利用日光的能量來(lái)合成自身生長(zhǎng)、發(fā)育等生命活動(dòng)所需的有機(jī)物質(zhì),如蛋白質(zhì)、脂質(zhì)和碳水化合物(糖類)等。具有這樣營(yíng)養(yǎng)方式的生物稱為自養(yǎng)型或無(wú)機(jī)營(yíng)養(yǎng)型生物。另一些生物(如動(dòng)物)不能直接利用外界的無(wú)機(jī)物合成自身生命所需的有機(jī)物,必須從自養(yǎng)型生物或其它同類生物獲取養(yǎng)料。通過(guò)代謝過(guò)程將攝取的物質(zhì)轉(zhuǎn)變成自身所需的蛋白質(zhì)、脂質(zhì)、碳水化合物等有機(jī)物。具有這樣營(yíng)養(yǎng)方式的生物則稱為異養(yǎng)型生物。營(yíng)養(yǎng)學(xué)即是研究食物對(duì)生物的作用的科學(xué)。營(yíng)養(yǎng)學(xué)在其發(fā)展的過(guò)程中,不僅包括食物進(jìn)入機(jī)體內(nèi)的變化,如參與生化反應(yīng)和結(jié)合到組織細(xì)胞中;還包括指導(dǎo)人們?nèi)绾芜x擇食物以保障機(jī)體的正常生長(zhǎng)、發(fā)育與繁殖。所以營(yíng)養(yǎng)學(xué)除了有其生物學(xué)意義外,還有其社會(huì)經(jīng)濟(jì)意義。營(yíng)養(yǎng)素是維持正常生命活動(dòng)所必需攝入生物體的食物成分?,F(xiàn)代營(yíng)養(yǎng)學(xué)對(duì)于營(yíng)養(yǎng)素的研究,主要是針對(duì)人類和禽畜的營(yíng)養(yǎng)素需要。營(yíng)養(yǎng)素分蛋白質(zhì)、脂質(zhì)、碳水化合物(糖類)、維生素和礦物質(zhì)(無(wú)機(jī)鹽)、水、纖維素7大類。例如每天吃的胡蘿卜,地瓜,大豆里面都含有豐富的維生素C。1.2項(xiàng)目的意義和主要內(nèi)容“民以食為天”這是一個(gè)亙古不變的真理,人們的所有的社會(huì)活動(dòng)必須建立在食的基礎(chǔ)上。沒(méi)有食的保障,所有的一切都是空談。但是隨著經(jīng)濟(jì)的猛速發(fā)展和人民生活水平的日益提高。人們對(duì)于食也有著更高的要求,現(xiàn)在不僅僅是停留在一日三餐的基本追求了。他們更加講究每天吃的食物營(yíng)養(yǎng)是否達(dá)標(biāo),怎么去吃自己才能攝取更好的營(yíng)養(yǎng),怎樣去吃才能更好的保障自己的身體健康。同時(shí)也注意他們食物的多樣化。同時(shí)他們也更加注意到每一道菜的外在,不再是只要能吃飽就行了。他們對(duì)于評(píng)價(jià)一道菜,一頓飯的要求更高,評(píng)價(jià)點(diǎn)更多。營(yíng)養(yǎng)搭配,色澤效果,口感等等要求!雖然基本人人都有這樣的要求,但是是不是人人都能做到這要的要求呢,答案顯然不是。必須肯定的是現(xiàn)在這個(gè)社會(huì)對(duì)食物要求高的人很多很多,但是對(duì)食物都很有研究的人,那就沒(méi)有那么多呢!很多人對(duì)于做飯就是一個(gè)難題,你在加上要菜品的多樣化,營(yíng)養(yǎng)達(dá)標(biāo)化那就相當(dāng)困難了。所以有一款這樣的應(yīng)用可以幫助一些對(duì)食物有一定要求但是自己又不會(huì)做的人是很有必要的。如果你什么時(shí)候心血來(lái)潮,想做一兩道菜犒勞下自己,但是有不能做得太寒酸,那么如果你有一款這個(gè)應(yīng)用。這個(gè)就再是問(wèn)題了。它會(huì)成為老少皆宜,居家旅行的必備幫手。該應(yīng)用有兩個(gè)角色可以進(jìn)入,一個(gè)是以管理員身份登錄進(jìn)入。管理員進(jìn)入可以對(duì)該系統(tǒng)進(jìn)行一些操作。默認(rèn)進(jìn)入只能查看營(yíng)養(yǎng)搭配和美食烹飪與上傳自己的食譜。不能對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操作。有三個(gè)選項(xiàng)供選擇,一個(gè)是食物的營(yíng)養(yǎng)搭配,一個(gè)是美食的菜譜以及用戶可以的菜譜上傳!第2章相關(guān)技術(shù)介紹Animation介紹簡(jiǎn)介Animation為Android提供了一系列的動(dòng)畫(huà)效果:旋轉(zhuǎn)、縮放、移動(dòng)、淡入淡出,這些動(dòng)畫(huà)效果可以應(yīng)用于絕大多數(shù)控件。分類Animation可分為兩類:TweenedAnimations:漸變動(dòng)畫(huà),具體就是旋轉(zhuǎn)、縮放、移動(dòng)、淡入淡出效果。Frame-by-FrameAnimations:將一系列Drawable序列一次播放,類似于電影模式,常用來(lái)進(jìn)行定時(shí)更新背景等操作。實(shí)現(xiàn)方法Animation有兩種實(shí)現(xiàn)方法:在xml文件中實(shí)現(xiàn),優(yōu)點(diǎn)是復(fù)用性好,可維護(hù)性好,多個(gè)控件可以使用同一個(gè)xml文件。缺點(diǎn)是由于xml文件不進(jìn)行編譯,所以排錯(cuò)比較難。在代碼中實(shí)現(xiàn),優(yōu)點(diǎn)是排錯(cuò)很方便,缺點(diǎn)是重復(fù)代碼多,可復(fù)用性低。Intent介紹Intent負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、動(dòng)作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對(duì)應(yīng)的組件,將Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。因此,Intent在這里起著一個(gè)媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實(shí)現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。在應(yīng)用中,我們可以以兩種形式來(lái)使用Intent:直接Intent:指定了component屬性的Intent(調(diào)用setComponent(ComponentName)或者setClass(Context,Class)來(lái)指定)。通過(guò)指定具體的組件類,通知應(yīng)用啟動(dòng)對(duì)應(yīng)的組件。間接Intent:沒(méi)有指定comonent屬性的Intent。這些Intent需要包含足夠的信息,這樣系統(tǒng)才能根據(jù)這些信息,在在所有的可用組件中,確定滿足此Intent的組件。對(duì)于直接Intent,Android不需要去做解析,因?yàn)槟繕?biāo)組件已經(jīng)很明確,Android需要解析的是那些間接Intent,通過(guò)解析,將Intent映射給可以處理此Intent的Activity、IntentReceiver或Service。Intent解析機(jī)制主要是通過(guò)查找已注冊(cè)在AndroidManifest.xml中的所有IntentFilter及其中定義的Intent,最終找到匹配的Intent。在這個(gè)解析過(guò)程中,Android是通過(guò)Intent的action、type、category這三個(gè)屬性來(lái)進(jìn)行判斷的,判斷方法如下:如果Intent指明定了action,則目標(biāo)組件的IntentFilter的action列表中就必須包含有這個(gè)action,否則不能匹配;如果Intent沒(méi)有提供type,系統(tǒng)將從data中得到數(shù)據(jù)類型。和action一樣,目標(biāo)組件的數(shù)據(jù)類型列表中必須包含Intent的數(shù)據(jù)類型,否則不能匹配。如果Intent中的數(shù)據(jù)不是content:類型的URI,而且Intent也沒(méi)有明確指定它的type,將根據(jù)Intent中數(shù)據(jù)的scheme(比如http:或者mailto:)進(jìn)行匹配。同上,Intent的scheme必須出現(xiàn)在目標(biāo)組件的scheme列表中。如果Intent指定了一個(gè)或多個(gè)category,這些類別必須全部出現(xiàn)在組建的類別列表中。比如Intent中包含了兩個(gè)類別:LAUNCHER_CATEGORY和ALTERNATIVE_CATEGORY,解析得到的目標(biāo)組件必須至少包含這兩個(gè)類別。SharedPreferences介紹SharedPreferences是一種輕型的數(shù)據(jù)存儲(chǔ)方式,它的本質(zhì)是基于XML文件存儲(chǔ)key-value鍵值對(duì)數(shù)據(jù),通常用來(lái)存儲(chǔ)一些簡(jiǎn)單的配置信息。其存儲(chǔ)位置在/data/data/〈包名>/shared_prefs目錄下。SharedPreferences對(duì)象本身只能獲取數(shù)據(jù)而不支持存儲(chǔ)和修改,存儲(chǔ)修改是通過(guò)Editor對(duì)象實(shí)現(xiàn)。實(shí)現(xiàn)SharedPreferences存儲(chǔ)的步驟如下:一、根據(jù)Context獲取SharedPreferences對(duì)象二、利用edit()方法獲取Editor對(duì)象。三、通過(guò)Editor對(duì)象存儲(chǔ)key-value鍵值對(duì)數(shù)據(jù)。四、通過(guò)commit()方法提交數(shù)據(jù)。SQLite介紹1、SQLite支持NULL、INTEGER.REAL(浮點(diǎn)數(shù)字)、TEXT(字符串文本)和BLOB(二進(jìn)制對(duì)象)數(shù)據(jù)類型,雖然它支持的類型雖然只有五種,但實(shí)際上sqlite3也接受varchar(n)、char(n)、decimal(p,s)等數(shù)據(jù)類型,只不過(guò)在運(yùn)算或保存時(shí)會(huì)轉(zhuǎn)成對(duì)應(yīng)的五種數(shù)據(jù)類型。2、SQLite最大的特點(diǎn)是你可以保存任何類型的數(shù)據(jù)到任何字段中,無(wú)論這列聲明的數(shù)據(jù)類型是什么。例如:可以在Integer字段中存放字符串,或者在布爾型字段中存放浮點(diǎn)數(shù),或者在字符型字段中存放日期型值。3、但有一種情況例外:定義為INTEGERPRIMARYKEY的字段只能存儲(chǔ)64位整數(shù),當(dāng)向這種字段中保存除整數(shù)以外的數(shù)據(jù)時(shí),將會(huì)產(chǎn)生錯(cuò)誤。4、另外,SQLite在解析CREATETABLE語(yǔ)句時(shí),會(huì)忽略CREATETABLE語(yǔ)句中跟在字段名后面的數(shù)據(jù)類型信息,如下面語(yǔ)句會(huì)忽略name字段的類型信息:CREATETABLEperson(personidintegerprimarykeyautoincrement,namevarchar(20))Map介紹Map是一種把鍵對(duì)象和值對(duì)象進(jìn)行關(guān)聯(lián)的容器,Map有兩種比較常用的實(shí)現(xiàn):HashTable、HashMap和TreeMap。HashMap也用到了哈希碼的算法,以便快速查找一個(gè)鍵,TreeMap則是對(duì)鍵按序存放,因此它有一些擴(kuò)展的方法,比如fistKey(),lastKey()等。HashMap和Hashtable的區(qū)別。HashMap允許空(null)鍵(key)或值(value),由于非線程安全,效率上可能高于Hashtable。Hashtable不允許空(null)鍵(key)或值(value)。simpleAdapter介紹使用simpleAdapter的數(shù)據(jù)用一般都是HashMap構(gòu)成的List,list的每一節(jié)對(duì)應(yīng)ListView的每一行。HashMap的每個(gè)鍵值數(shù)據(jù)映射到布局文件中對(duì)應(yīng)id的組件上。因?yàn)橄到y(tǒng)沒(méi)有對(duì)應(yīng)的布局文件可用,我們可以自己定義一個(gè)布局vlist.xml。下面做適配,new一個(gè)SimpleAdapter參數(shù)一次是:this,布局文件(vlist.xml),HashMap的title和info,img。布局文件的組件id,title,info,img。布局文件的各組件分別映射到HashMap的各元素上,完成適配。第3章需求分析系統(tǒng)在開(kāi)發(fā)設(shè)計(jì)之前首先就應(yīng)該進(jìn)行系統(tǒng)的需求分析,調(diào)查系統(tǒng)的使用對(duì)象,為了滿足使用系統(tǒng)的用戶的要求,設(shè)計(jì)出合理、完善的系統(tǒng)。確定該系統(tǒng)功能如下:本系統(tǒng)可分為默認(rèn)用戶登錄和管理員登錄營(yíng)養(yǎng)搭配模塊。查看食物的營(yíng)養(yǎng)搭配,管理員可以添加,刪除等操作。美食烹飪模塊。查看菜肴菜譜,管理員可以添加,刪除等操作。我有食譜模塊。默認(rèn)用戶可以把自己的菜譜分享出來(lái),管理員可以查看該用戶上傳的食譜,最后可以再發(fā)布出來(lái)。關(guān)于模塊。簡(jiǎn)介該系統(tǒng)相關(guān)內(nèi)容。3.1功能結(jié)構(gòu)圖通過(guò)仔細(xì)的調(diào)查分析,得出本系統(tǒng)的功能結(jié)構(gòu)如圖3.1所示圖3.1營(yíng)養(yǎng)食譜系統(tǒng)功能結(jié)構(gòu)圖3.2管理員操作管理員登錄后,進(jìn)入每個(gè)界面內(nèi)??梢詫?duì)該界面所有數(shù)據(jù)進(jìn)行操作,能夠搜索ID對(duì)其進(jìn)行刪除。刪除全部數(shù)據(jù)和添加新的營(yíng)養(yǎng)搭配和菜譜做法??梢圆榭?,刪除用戶上傳的食譜。

第4章系統(tǒng)設(shè)計(jì)如圖4.1所示4.1各模塊關(guān)系布局如圖4.1所示根據(jù)需求分析,擬定系統(tǒng)各模塊的關(guān)系,布局。關(guān)于關(guān)于我有食譜美食烹飪營(yíng)養(yǎng)搭配添加,ID搜索,ID刪除,全部刪除,更關(guān)于關(guān)于我有食譜美食烹飪營(yíng)養(yǎng)搭配添加,ID搜索,ID刪除,全部刪除,更新,返回功能上傳查看食譜刪除返回操作ID搜索,刷新,返回操作上傳食譜返回圖4.1營(yíng)養(yǎng)食譜系統(tǒng)模塊功能圖4.2系統(tǒng)實(shí)現(xiàn)整個(gè)流程圖4.3代碼,布局文件結(jié)構(gòu)有了整個(gè)實(shí)現(xiàn)系統(tǒng)思路,然后開(kāi)始對(duì)每個(gè)界面進(jìn)行布局,對(duì)每個(gè)Activity編寫(xiě)代碼。對(duì)編寫(xiě)中會(huì)用到的資源進(jìn)行定義。整個(gè)文件結(jié)構(gòu)如圖4.3所示:

£躊INutritianM£躊INutritianMenuSystem£3src豳.j_rcom.example.nutritionmenusystem勤.JjAbout_Activrty.j-ava;JjAdd_Activity.ja¥a..Add_gour_Activrty.Javj勘.JjGo-urment_ActivrtyJava苗.Jj]ntroduction_Activrty.javb[T]L口gircActivity.jwa.EMyrecepi_Activiiy.java寂[T]Myrecepi_匚oiTtHrtix/ityjMm苗[j]MP_MainActivity,javb勒[T]Uutrition_Activrty.java齡!T|OpenHelperjava勘|7]OpenHelperl.java勘00penHelp-erZ.java[T]0perlnter_Activity,javatZ1Peoplejava寂JjPecpl&l.java勤JjPecple2.jav.fl卻於心虞白animC[,cu5tom_anirn.xml旦fade_ir.Kml勒drawable虞drawable-hdpiEEQEEQEEQQiQ□naadd.pngbackground,pngbaclc.pngcomlast.pngdelall.pngjuddElone.pngpn§皿皿皿icon-pngiconl.pngrefresh,pngsearch.pngtcovel.pngtcove2.pngtcoveB.pngtcove4.pngupload.png物白drawable-ldpi原跆l-ayout.□about_laynut.amlCl,add_gour_\.ay□ut.MmIidaddJjyout.Hml,口gojrment_layout.MmIgo□rment.HimIirtrci'duction.HrTil|C1lay□ut_opinter.xmI問(wèn)Inp_m-aiiri.kitiI.Cllogin-Miml.□my_recipe_layout.KmlCl|myrecepi_di:p3lyJayout.Kml起nutritio-nal_layaut.KiriI|CInutritional.aml0百menu函&values|C1colors.xmliddimenE.xmlICl|strings.aml|C1styles.aml圈3valuer-tviifiOOdp叔匕?values-sw72J0dp-land勤莊>values-vll箕&values-vL4#匹KmI,口pecple.Kml,C1AndroidMairbifest.xml圖4.3代碼,資源文件結(jié)構(gòu)圖

4.4模塊布局以及核心代碼4.4.1進(jìn)入動(dòng)畫(huà)啟動(dòng)程序動(dòng)畫(huà)形式進(jìn)入,該動(dòng)畫(huà)采用四張圖片旋轉(zhuǎn)進(jìn)入,動(dòng)畫(huà)完成后自動(dòng)跳轉(zhuǎn)到主菜單Activity。進(jìn)入動(dòng)畫(huà)布局如圖4.4.1所示:A10392D2NMSVerdon1O.DCopyrights2C13MMS..drb,啟動(dòng)程序動(dòng)畫(huà)形式進(jìn)入,該動(dòng)畫(huà)采用四張圖片旋轉(zhuǎn)進(jìn)入,動(dòng)畫(huà)完成后自動(dòng)跳轉(zhuǎn)到主菜單Activity。進(jìn)入動(dòng)畫(huà)布局如圖4.4.1所示:A10392D2NMSVerdon1O.DCopyrights2C13MMS..drb,Int.AllRights圖4.4.1動(dòng)畫(huà)布局圖在res/anim中添加兩個(gè).xml文件。定義動(dòng)畫(huà)進(jìn)入各個(gè)時(shí)間,大小Mnimation中引入動(dòng)畫(huà)的兩個(gè)xml文件。再遍歷TableLayout中的圖片,采用Animation實(shí)例的spinin對(duì)象實(shí)現(xiàn)對(duì)圖片的旋轉(zhuǎn)進(jìn)入。主要代碼:privatevoidstartAnimating()(//題目進(jìn)入采用anim.fade_in動(dòng)畫(huà)TextViewlogo1=(TextView)findViewById(R.id.textView1_use。;Animationfade1=AnimationUtils.loadAnimation(thisR.anim.fade_ir);logo1.startAnimation(fade1);fade1.setAnimationListener(newAnimationListener()(publicvoidonAnimationEnd(Animationanimation)(//動(dòng)畫(huà)結(jié)束進(jìn)入主菜單頁(yè)面startActivity(newIntent(NP_MainActivity.this,OperInter_Activity.class));NP_MainActivity.this.finish();publicvoidonAnimationRepeat(Animationanimation)(}publicvoidonAnimationStart(Animationanimation)(}});//圖片進(jìn)入動(dòng)畫(huà)Animationspinin=AnimationUtils.loadAnimatioKthisR.anim.custom_anin);LayoutAnimationControllercontroller=newLayoutAnimationController(spinin);//采用anim_custom_anim定義的動(dòng)畫(huà)進(jìn)入TableLayouttable=(TableLayout)findViewById(R.id.TableLayout0);for(inti=0;i<table.getChildCount();i++)(TableRowrow=(TableRow)table.getChildAt(i);//獲取圖片布局row.setLayoutAnimation(controller);}}4.4.2登錄操作進(jìn)入主菜單后,如果需要登錄。點(diǎn)擊登錄進(jìn)入登錄界面如圖4.4.2所示:運(yùn)用SharedPreferences對(duì)數(shù)據(jù)的暫時(shí)存儲(chǔ),下次登錄能保存上次登錄的用戶名。對(duì)賬號(hào),密碼存放與res/xml下people文件中。如果輸入數(shù)據(jù)與people下的賬號(hào),密碼匹配則登錄成功。采用startActivityForResult()在主菜單點(diǎn)擊登錄啟動(dòng)登錄Activity并將值返回到主菜單界面。主要代碼:XmlPullParserparser=resources.getXml(R.xml.people);//獲取XML.people文件try(while(parser.next()!=XmlPullParser.END_DOCUMEN^{Stringpeople=parser.getName();//得出文件里面的NameStringname=null;Stringpassword=null;if((people!=null)&&people.equals(〃person〃))(intcount=parser.getAttributeCount();inti;for(i=0;i<count;i++)(//遍歷people中的attrName和attrValueStringattrName=parser.getAttributeName(i);StringattrValue=parser.getAttributeValue(i);if((attrName!=null)&&attrName.equals(〃name〃))(name=attrValue;}elseif((attrName!=null)&&attrName.equals(〃password〃))(password=attrValue;}}if((name!=null)&&(password!=null))(//textView.setText(name.toString()+〃,〃+password.toString());if(name.equals(user)&&password.equals(secret))(//匹配成功comparesame=true;textView.setText(user+〃登錄!〃);tv_wle.setText(〃歡迎〃);break;}}}登錄界面:StringuriString=editText_name.getText().toString()+〃,〃+editText_password.getText().toString();//將用戶名和密碼獲取出來(lái)Uridata=Uri.parse(uriString);Intentresult=newIntent(null,data);//得出值,并返回到頁(yè)面setResult(RESULT_OKresult);finish();金1039202—NMS管理登錄密碼:登錄圖4.4.2管理登錄界面4.4.3ListView操作及數(shù)據(jù)庫(kù)運(yùn)用對(duì)每一個(gè)營(yíng)養(yǎng)搭配具體內(nèi)容顯示在ListView中的Item中。如圖4.4.3所示:對(duì)于在每個(gè)Item中顯示的內(nèi)容有按照自己定義的格式來(lái)顯示,如圖4.4.4所示:首先要建立一個(gè)數(shù)據(jù)庫(kù)OpenHelper來(lái)存放所有的關(guān)于營(yíng)養(yǎng)搭配的數(shù)據(jù)。便在OpenHelper.java中寫(xiě)入關(guān)于數(shù)據(jù)庫(kù)增,刪,查的方法??梢栽贜utrition_Activity中直接調(diào)用來(lái)對(duì)數(shù)據(jù)庫(kù)的操作。ListView中的圖片顯示是根據(jù)輸入的圖片名稱通過(guò)getImageByReflect()方法反射出drwable下的圖片。在Item顯示格式要運(yùn)用SimpleAdapter適配器定義。然后通過(guò)HaspMap()把數(shù)據(jù)取出來(lái)綁定到SimpleAdapter顯示在ListView中。然后采用OnItemClickListener()監(jiān)聽(tīng)點(diǎn)擊listview中Item的事件。點(diǎn)擊跳轉(zhuǎn)頁(yè)面并獲取該Item中的一些值傳入到跳轉(zhuǎn)的頁(yè)面。代碼如下:OpenHelper:privatestaticfinalStringDB_NAME="people.db”;privatestaticfinalStringDB_TABLE="peopleinfo";privatestaticfinalintDB_VERSION=1;publicstaticfinalStringKEY_ID="_id";publicstaticfinalStringKEY_NAME="name";publicstaticfinalStringKEY_MATCH="match";publicstaticfinalStringKEY_PHOTOSRC="photosrc";publicstaticfinalStringKEY_INTRODUCTION="introduction";privateSQLiteDatabasedb;privatefinalContextcontext;privateDBOpenHelperdbOpenHelper;publicOpenHelper(Context_context)(context=_context;}/**Closethedatabase*/publicvoidclose()(if(db!=null)(db.close();db=null;}}/**Openthedatabase*/publicvoidopen()throwsSQLiteException(dbOpenHelper=newDBOpenHelper(context,DB_NAME,null,DB_VERSIO);try(db=dbOpenHelper.getWritableDatabase();}catch(SQLiteExceptionex)(db=dbOpenHelper.getReadableDatabase();}}//插入數(shù)據(jù)publiclonginsert(Peoplepeople)(ContentValuesnewValues=newContentValues();newValues.put(KEY_NAMEpeople.Name);newValues.put(KEY_MATC,people.Match);newValues.put(KEY_PHOTOSR,people.PhotoSrc);newValues.put(KEY_INTRODUCTIO,people.Introduction);returndb.insert(DB_TABLEnull,newValues);}//顯示所有數(shù)據(jù)publicPeople[]queryAllData()(Cursorresults=db.query(DB_TABLEnewString[](KEY_IQKEY_NAME,KEY_MATCHKEY_PHOTOSRCKEY_INTRODUCTION),null,null,nullnull,null);returnConvertToPeople(results);}//顯示一個(gè)數(shù)據(jù)publicPeople]]queryOneData(longid)(Cursorresults=db.query(DB_TABLEnewString口(KEY_IQKEY_NAME,KEY_MATCHKEY_PHOTOSRCKEY_INTRODUCTION},KEY_ID+〃=〃+id,null,null,null,null);returnConvertToPeople(results);}privatePeople]]ConvertToPeople(Cursorcursor)(intresultCounts=cursor.getCount();if(resultCounts==0||!cursor.moveToFirst())(returnnull;}People]]peoples=newPeople[resultCounts];for(inti=0;i<resultCounts;i++)(//遍歷所有數(shù)據(jù)peoples[i]=newPeople();peoples[i].ID=cursor.getInt(O);peoples[i].Name=cursor.getString(cursor.getColumnIndex(KEY_NAME));peoples[i].Match=cursor.getString(cursor.getColumnIndex(KEY_MATCH));peoples[i].PhotoSrc=cursor.getString(cursor.getColumnIndex(KEY_PHOTOSR));peoples[i].Introduction=cursor.getString(cursor

.getColumnIndex(KEY_INTRODUCTIO));cursor.moveToNext();}returnpeoples;}//刪除所有數(shù)據(jù)publiclongdeleteAllData()(returndb.delete(DB_TABLEnull,null);}17/30//顯示一項(xiàng)數(shù)據(jù)publiclongdeleteOneData(longid)(returndb.delete(DB_TABLEKEY_ID+〃=〃+id,null);}/**靜態(tài)Helper類,用于建立、更新和打開(kāi)數(shù)據(jù)庫(kù)*/privatestaticclassDBOpenHelperextendsSQLiteOpenHelper(publicDBOpenHelper(Contextcontext,Stringname,CursorFactoryfactory,intversion)(super(context,name,factory,version);}privatestaticfinalStringDB_CREATE="createtable〃+DB_TABLE+〃(〃+KEY_ID+〃integerprimarykeyautoincrement,〃+KEY_NAME+〃textnotnull,〃+KEY_MATCH+〃textnotnull,〃+KEY_PHOTOSRC+〃textnotnull,〃+KEY_INTRODUCTION+-textnotnull);";?OverridepublicvoidonCreate(SQLiteDatabase_db)(_db.execSQL(DB_CREATE);}//?OverridepublicvoidonUpgrade(SQLiteDatabase_db,int_oldVersion,int_newVersion)(_db.execSQL(〃DROPTABLEIFEXISTS〃+DB_TABLE);onCreate(_db);}}Nutrition_Activity:dbAdepter=newOpenHelper(this);dbAdepter.open();//打開(kāi)數(shù)據(jù)庫(kù)Buttonbtn_backOp=(Button)findViewById(R.id.BackOp);listView.setOnItemClickListener(itemclick);//listView調(diào)用點(diǎn)擊事件btn_backOp.setOnClickListener(newOnClickListener()(publicvoidonClick(Viewview)(Intentintent=newIntent(Nutrition_Activity.this,OperInter_Activity.class);startActivity(intent);}});btn_ad.setOnClickListener(newOnClickListener()(publicvoidonClick(Viewview)(Intentintent=newIntent(Nutrition_Activity.this,Add_Activity.class);startActivity(intent);}});btn_search.setOnClickListener(newOnClickListener()(publicvoidonClick(Viewview)(intid=Integer.parseInt(editSearch.getText().toString());//獲取id,并調(diào)用queryOneData();People]]peoples=dbAdepter.queryOneData(id);if(peoples==null)(Toast.makeText(getApplicationContext(),〃數(shù)據(jù)庫(kù)中沒(méi)有ID為〃+String.valueOf(id)+〃的數(shù)據(jù)〃,Toast.LENGTH_SHOR).show();return;}lists=newArrayList<Map<String,Object>>();//運(yùn)用ArrayList<Map<String,Object>>()與HashMap<String,//Object>();//獲取數(shù)據(jù)在ListView中顯示getImageByReflect(peoples[0].PhotoSrc);//獲取圖片名稱在Drawable反射出圖片顯示出來(lái)map=newHashMap<String,Object>();map.put(〃name〃,peoples]。].Name);map.put(〃match〃,peoples]。].Match);map.put(〃photosrc〃,resId);map.put(〃introduction〃,peoples]。].Introduction);lists.add(map);//將得出map放入lists中l(wèi)istitem();//調(diào)用listitem顯示}});btn_deone.setOnClickListener(newOnClickListener()(publicvoidonClick(Viewview)(longid=Integer.parseInt(editSearch.getText().toString());longresult=dbAdepter.deleteOneData(id);//獲取id顯示該條信息Stringmsg=〃刪除ID為〃+editSearch.getText().toString()+〃的數(shù)據(jù)〃+(result>0?〃成功〃:〃失敗〃);Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_SHOR).show();}});btn_dela.setOnClickListener(newOnClickListener()(publicvoidonClick(Viewview)(//刪除所有信息dbAdepter.deleteAllData();Stringmsg=〃數(shù)據(jù)全部刪除〃;Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_SHOR).show();}});btn_ref.setOnClickListener(newOnClickListener()(publicvoidonClick(Viewv)(peoples=dbAdepter.queryAllData();if(peoples==null)(Toast.makeText(getApplicationContext(),〃沒(méi)有數(shù)據(jù)〃,Toast.LENGTH_SHOR).show();return;}lists=newArrayList<Map<String,Object>>();//運(yùn)用ArrayListV和HashMap將數(shù)據(jù)顯示出來(lái)for(inti=0;i<peoples.length;i++)(map=newHashMap<String,Object>();//根據(jù)遍歷和哈希把所有數(shù)據(jù)取出來(lái)在listView中顯示getImageByReflect(peoples[i].PhotoSrc);//根據(jù)輸入名稱反射出圖片map.put(〃name〃,peoples[i].Name);map.put(〃match〃,peoples[i].Match);map.put(〃photosrc〃,resId);map.put(〃introduction〃,peoples[i].Introduction);lists.add(map);}listitem();//使用listiem方式在ListView中顯示}});}privatevoidgetImageByReflect(StringimageName)(try(Fieldfield=Class.forName(〃com.example.nutritionmenusystem.R$drawable〃).getField(imageName);//獲取該包下的drwable文件resId=field.getInt(field);//得出文件的id}catch(Exceptione)(}}privatevoidlistitem()(//定義SimpleAdapter適配器adapter=newSimpleAdapter(this,listsR.layout.nutritional_layou,newString[]("photosrc","name”,"match"},newint[](R.id.img,R.id.title,R.});//將定義的適配器綁定到ListView中l(wèi)istView.setAdapter(adapter);}OnItemClickListeneritemclick=newOnItemClickListener()(publicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid)(Map<String,String>mapdata=(Map<String,String>)adapter.getItem(position);//點(diǎn)擊listview中的選項(xiàng),響應(yīng)以下時(shí)間Stringname=(String)mapdata.get(〃name〃);Stringintroduction=(String)mapdata.get(〃introduction〃);Intentintent=newIntent(Nutrition_Activity.this,Introduction_Activity.class);intent.putExtra(〃name〃,name);intent.putExtra(〃introduction〃,introduction);int[]id2=(resId};intent.putExtra(〃resid〃,id2);//將這些值傳入到Introduction_Activity中startActivity(intent);}};SubItem3Item4Su;nItem4^1039202_NMSSubItem3Item4Su;nItem4^1039202_NMS2222222222?imun;i蟲(chóng)圖4.4.3營(yíng)養(yǎng)搭配界面圖4.4.4Item顯示格式4.4.4點(diǎn)擊GridView中Item響應(yīng)事件對(duì)于gridView中的每個(gè)圖片,點(diǎn)擊會(huì)彈出一個(gè)對(duì)話框顯示該菜譜的詳細(xì)內(nèi)容。也要對(duì)gridView中使用OnItemClickListener()監(jiān)聽(tīng)事件。然后創(chuàng)建對(duì)話框便顯示內(nèi)容。主要代碼:OnItemClickListeneritemclick=newOnItemClickListener()(//點(diǎn)擊事件publicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid)(Map<String,String>mapdata=(Map<String,String>)adapter1.getItem(position);//點(diǎn)擊獲取position,彈出對(duì)話框AlertDialog.BuildernormalDia=newAlertDialog.Builder(Gourment_Activity.this);//建立對(duì)話框Stringname=(String)mapdata.get(〃name〃);Stringmaterial=(String)mapdata.get(〃material〃);St

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論