版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p> 基于iOS平臺(tái)的客戶端應(yīng)用之食安檢的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 基于iOS平臺(tái)的客戶端應(yīng)用之食安檢的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b> 摘 要</b&
2、gt;</p><p> 在我們的生活中,存在著各種各樣的食物。在提倡綠色食品、健康食品的今天,還是有一些食品存在嚴(yán)重安全隱患。接連不斷發(fā)生的惡性食品安全事故卻引發(fā)了人們對(duì)食品安全的高度關(guān)注,要重新審視這一已上升到國家公共安全高度的問題,更要加大對(duì)食品安全的監(jiān)管力度。食品安全關(guān)系到廣大人民群眾的身體健康和生命安全,關(guān)系到經(jīng)濟(jì)健康發(fā)展和社會(huì)穩(wěn)定,關(guān)系到政府和國家的形象。食品安全已成為衡量人民生活質(zhì)量、社會(huì)管理水平
3、和國家法制建設(shè)的一個(gè)重要方面。于是一款成熟的食品安全檢測(cè)的APP的研究與設(shè)計(jì)開發(fā)已經(jīng)成為了市場(chǎng)不可或缺的一部分,并且有著廣闊的發(fā)展前景。</p><p> 本次設(shè)計(jì)項(xiàng)目食安檢,基于蘋果iOS系統(tǒng),利用智能手機(jī)實(shí)現(xiàn)食品安全檢測(cè)的功能。畢業(yè)設(shè)計(jì)完成時(shí),整個(gè)應(yīng)用界面簡(jiǎn)單明了,操作簡(jiǎn)潔。用戶不僅能夠看到自己購買的食品是否安全、符合國家標(biāo)準(zhǔn),還能夠進(jìn)行其他產(chǎn)品的搜索,讓用戶能夠?qū)τ谧约嘿徺I的食品吃得舒心,買的放心。<
4、;/p><p> 本設(shè)計(jì)所使用的開發(fā)環(huán)境是Xcode,使用的編程語言是Objective-C。項(xiàng)目主要功能包括產(chǎn)品的展示、搜索以及條形碼掃描。</p><p> 關(guān)鍵詞:iOS系統(tǒng); 食品安全; Objective-C語言; 條形碼</p><p><b> Abstract</b></p><p> In our
5、lives , there is a wide variety of foods. In promoting green , healthy food today, there are still some serious food safety hazards . Malignant food safety incidents occurred one after another , but sparked great concern
6、 about food safety , to re -examine this had risen to the height of a national public safety issues , but also to increase the food safety supervision. Food safety is related to the health and safety of the masses , rela
7、ted to the healthy economic development and social st</p><p> Keywords: iOS system; food safety; Objective-C language; barcode</p><p><b> 目錄</b></p><p><b> 1 引言
8、1</b></p><p> 1.1 課題的目的和意義1</p><p><b> 1.2 條形碼1</b></p><p> 1.3 主要設(shè)計(jì)內(nèi)容1</p><p> 2 iOS、語言、環(huán)境以及所用技術(shù)介紹2</p><p> 2.1 iOS簡(jiǎn)介2</p&
9、gt;<p> 2.2 Objective-C語言2</p><p> 2.3 Xcode開發(fā)環(huán)境2</p><p> 2.4 Core Data 數(shù)據(jù)庫2</p><p> 2.5 JSON解析3</p><p> 2.6 ZBar庫——條形碼掃描3</p><p><b>
10、; 3 需求分析4</b></p><p> 3.1 功能性需求4</p><p> 3.1.1 功能結(jié)構(gòu)圖4</p><p> 3.1.2 總體設(shè)計(jì)5</p><p> 3.2 非功能性需求5</p><p> 4 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)6</p><p> 4
11、.1 首頁展示設(shè)計(jì)6</p><p> 4.2 詳情頁面設(shè)計(jì)7</p><p> 4.2.1 商品詳情頁面設(shè)計(jì)7</p><p> 4.2.2 檢測(cè)結(jié)果頁面設(shè)計(jì)9</p><p> 4.2.3 食品認(rèn)證頁面設(shè)計(jì)10</p><p> 4.3 搜索頁面設(shè)計(jì)11</p><p>
12、; 4.4 分類頁面設(shè)計(jì)14</p><p> 4.5 食品掃描頁面設(shè)計(jì)17</p><p> 4.6 個(gè)人中心頁面設(shè)計(jì)19</p><p><b> 5 測(cè)試23</b></p><p> 5.1 首頁模塊測(cè)試23</p><p> 5.2 詳情模塊測(cè)試23</p&
13、gt;<p> 5.3 搜索模塊測(cè)試23</p><p> 5.4 分類模塊23</p><p> 5.5 食品掃描模塊測(cè)試23</p><p> 5.6 個(gè)人中心模塊測(cè)試23</p><p><b> 6 結(jié)束語25</b></p><p><b>
14、 7 參考文獻(xiàn)26</b></p><p><b> 8 致謝27</b></p><p><b> 1 引言</b></p><p> 1.1 課題的目的和意義</p><p> iOS系統(tǒng)因?yàn)槠浔旧淼陌踩砸约拜^高的市場(chǎng)占有率,對(duì)于大學(xué)生來講,從事這個(gè)行業(yè)的開發(fā)具有很大的
15、前景。所以了解iOS開發(fā)流程,學(xué)會(huì)使用Xcode編程工具,掌握iOS開發(fā)語言O(shè)bjective-C,學(xué)習(xí)iOS應(yīng)用功能實(shí)現(xiàn)以及硬件功能的利用,是我這次選用iOS平臺(tái)開發(fā)食安檢的重要原因。</p><p> 社會(huì)的發(fā)展和科技的進(jìn)步,雖然為生產(chǎn)出高產(chǎn)的安全、綠色食品提供了支持,但是也給那些生產(chǎn)不安全、危害人體健康的有害食品的不法分子提供了便利,所以進(jìn)行食品安全檢測(cè)仍然是一項(xiàng)十分重要的任務(wù)。以前,人們就算是對(duì)于某種食
16、品的成分以及是否安全持有懷疑的態(tài)度,但是因?yàn)槠洳荒軌驅(qū)崟r(shí)檢測(cè),讓很多人都放棄了這個(gè)想法,買了很多看似健康,但是實(shí)際上卻并為通過檢測(cè)的食品。</p><p> 本次畢業(yè)設(shè)計(jì)的APP——食安檢,旨在為用戶提供一個(gè)便利的平臺(tái),讓用戶能夠隨時(shí)的查看自己購買到的商品是否進(jìn)行了安全檢測(cè),是否通過了ISO認(rèn)證,讓用戶吃起來更放心。</p><p><b> 1.2 條形碼</b>
17、;</p><p> 據(jù)中國互聯(lián)網(wǎng)絡(luò)中心最新的統(tǒng)計(jì)報(bào)告(2014年1月),截止2013年12月,我國網(wǎng)民規(guī)模達(dá)6.18億,全年共計(jì)新增網(wǎng)民5358萬人,而新增網(wǎng)民中使用手機(jī)上網(wǎng)的比例高達(dá)73.3%,移動(dòng)互聯(lián)網(wǎng)的時(shí)代已經(jīng)全面到來。</p><p> 隨著零售業(yè)和消費(fèi)市場(chǎng)的飛速擴(kuò)大和發(fā)展,以及移動(dòng)互聯(lián)網(wǎng)的迅猛發(fā)展,在全球范圍內(nèi),每天需要運(yùn)用條形碼掃描的次數(shù)已經(jīng)超過上億次。現(xiàn)在有關(guān)于條形碼掃
18、描的應(yīng)用移動(dòng)應(yīng)用也越來越多,例如我查查、條形碼商品比價(jià)、馬上閃條形碼比價(jià)等應(yīng)用。就連微信這樣的即時(shí)通訊的應(yīng)用也包含了條形碼掃描,可見條形碼的應(yīng)用范圍之廣。</p><p> 1.3 主要設(shè)計(jì)內(nèi)容</p><p> ?。?)首頁模塊:首先以廣告欄的形式滾動(dòng)式展示特色產(chǎn)品,下方展示四個(gè)產(chǎn)品專區(qū),以瀑布流方式展示數(shù)據(jù)。</p><p> ?。?)詳情模塊:該模塊主要實(shí)現(xiàn)
19、食品詳情、檢測(cè)結(jié)果以及食品認(rèn)證三個(gè)界面的數(shù)據(jù)的展示。食品詳情界面展示食品圖片、食品名稱、食品描述、選擇食品批次時(shí)間等內(nèi)容;檢測(cè)結(jié)果界面分三個(gè)標(biāo)簽展示三種報(bào)告結(jié)果,分別為“自檢報(bào)告”、“送檢報(bào)告”和“抽檢報(bào)告”;食品認(rèn)證頁面界面顯示所獲得的認(rèn)證圖標(biāo),點(diǎn)擊圖標(biāo)可以查看具體認(rèn)證信息。</p><p> ?。?)搜索模塊:該模塊主要實(shí)現(xiàn)的功能是通過產(chǎn)品名稱的模糊搜索進(jìn)行產(chǎn)品列表的展示。</p><p&
20、gt; ?。?)分類模塊:該模塊主要實(shí)現(xiàn)的功能是實(shí)現(xiàn)產(chǎn)品的兩級(jí)分類展示,當(dāng)點(diǎn)擊二級(jí)分類時(shí),可以跳轉(zhuǎn)到搜索界面進(jìn)行搜索。</p><p> ?。?)食品掃描模塊:該模塊主要實(shí)現(xiàn)的功能是通過開啟攝像頭進(jìn)行條形碼的掃描或者手動(dòng)輸入條形碼進(jìn)行產(chǎn)品的搜索。</p><p> ?。?)個(gè)人中心模塊:該模塊主要實(shí)現(xiàn)的功能是用戶的登錄、注冊(cè)、修改密碼等功能。</p><p> 2
21、 iOS、語言、環(huán)境以及所用技術(shù)介紹</p><p> iOS SDK提供了創(chuàng)建iOS應(yīng)用程序所需要的環(huán)境和工具。利用iOS SDK開發(fā)應(yīng)用時(shí)所用的編程語言是Objective-C。下面具體介紹一下iOS、語言、環(huán)境以及其他所用技術(shù)。</p><p><b> 2.1 iOS簡(jiǎn)介</b></p><p> iOS是由蘋果公司開發(fā)的以Dar
22、win為基礎(chǔ)的移動(dòng)操作系統(tǒng)。蘋果公司最早于2007年1月9日的Macworld大會(huì)上公布這個(gè)系統(tǒng)。這個(gè)系統(tǒng)最早的用途為iPhone手機(jī),后來陸陸續(xù)續(xù)的用到了蘋果公司的其他產(chǎn)品上。由于用途的逐漸廣泛,系統(tǒng)名字也由iPhone OS 更名為iOS。截止2012年9月份,根據(jù)友盟給出的數(shù)據(jù),目前國內(nèi)的IOS設(shè)備的用戶量達(dá)到了3500萬,App Store上的應(yīng)用數(shù)已經(jīng)達(dá)到了65萬,下載量已超過300億次,平局每天下載量在4600萬,而國內(nèi)占總
23、下載量的20%,中國區(qū)下載量每天在1000萬次左右。</p><p> iOS操作采用的是多點(diǎn)觸控直接操作,支持多語言。而且因?yàn)槠溆布筒僮飨到y(tǒng)均由Apple制造,所以具有高度整合性。這樣的優(yōu)勢(shì),也是的App能夠充分的利用Retina顯示屏、加速感應(yīng)器以及三軸陀螺儀等硬件功能。在iOS及后續(xù)版本中,當(dāng)?shù)谌杰浖盏搅诵碌男畔r(shí),Apple的服務(wù)器將把這些通知推送至iPhone、ipad或者是iPod Touch
24、上(無論它運(yùn)行與否)。</p><p> 2.2 Objective-C語言</p><p> Objective-C,是一種擴(kuò)充C的面向?qū)ο缶幊陶Z言,主要用于Mac OS X和GNUstep這兩個(gè)使用OpenStep標(biāo)準(zhǔn)的系統(tǒng)。</p><p> Objective-C在最開始的時(shí)候是不支持垃圾回收的,之所以這樣做的是為了避免出現(xiàn)和Smalltalk一樣出現(xiàn)
25、漫長(zhǎng)的死亡時(shí)間,導(dǎo)致整個(gè)系統(tǒng)失去功用的現(xiàn)象。但是在Xcode4以及后續(xù)的版本就已經(jīng)具備了ARC機(jī)制,實(shí)現(xiàn)了自動(dòng)釋放功能。</p><p> Objective-C不支持運(yùn)算子多載,這一點(diǎn)是和C++所不一樣的。而且Objective-C只容許對(duì)象繼承一個(gè)類別,支持動(dòng)態(tài)運(yùn)行時(shí)。但是其也有很多弊端,就拿編譯時(shí)的性能優(yōu)化方法來講,很多都是不能應(yīng)用于Objective-C,內(nèi)聯(lián)函數(shù)就是一個(gè)很常見的例子。</p>
26、;<p> 2.3 Xcode開發(fā)環(huán)境</p><p> Xcode是開發(fā)蘋果應(yīng)用程序的必備開發(fā)環(huán)境。自動(dòng)Xcode4開始,開發(fā)人員就可以利用Xcode開發(fā)基于iOS的iPad、iPhone、iPod Touch設(shè)備應(yīng)用程序。</p><p> Xcode不僅編譯速度快,而且支持很多中的編程語言,比如C、C++、Objective-C。</p><p
27、> 2.4 Core Data 數(shù)據(jù)庫</p><p> Core Data擁有成熟的代碼,這些代碼通過單元測(cè)試來保證品質(zhì)。應(yīng)用Core Data的程序每天被世界上幾百萬用戶使用。通過了幾個(gè)版本的發(fā)布,已經(jīng)被高度優(yōu)化。它能利用Model層的信息和運(yùn)行時(shí)的特性,而不通過程序?qū)拥拇a實(shí)現(xiàn)。除了提供強(qiáng)大的安全支持和錯(cuò)誤處理外,它還提供了最優(yōu)的內(nèi)存擴(kuò)展性,可實(shí)現(xiàn)有競(jìng)爭(zhēng)力的解決方案。</p><
28、;p> 除了Core Data本身的優(yōu)點(diǎn)之外,使用它還有其他的好處:它很容易和Mac OS X系統(tǒng)的Tool chain集成;利用Model設(shè)計(jì)工具可以按圖形化方式輕松創(chuàng)建數(shù)據(jù)庫的結(jié)構(gòu);你可以用Instruments的相關(guān)模板來測(cè)試Core Data的效率并debug。在Mac OS X的桌面程序中,Core Data還和Interface Builder集成。</p><p> 通過Core Data
29、管理應(yīng)用程序的數(shù)據(jù)模型,可以極大程度減少需編寫的代碼數(shù)量。Core Data還具有下述特征:第一,將對(duì)象數(shù)據(jù)存儲(chǔ)在SQLite數(shù)據(jù)庫以獲得性能優(yōu)化。第二,提供NSFetchedResultsController類用于管理表視圖的數(shù)據(jù)。即將Core Data的持久化存儲(chǔ)顯示在表視圖中,并對(duì)這些數(shù)據(jù)進(jìn)行管理:增、刪,改。第三,管理undo/redo操作。檢查托管對(duì)象的屬性值是否正確。</p><p> 2.5 JS
30、ON解析</p><p> JSON(Javascript Object Notation)是一種輕量級(jí)的,以文字為基礎(chǔ),且易于讓人閱讀。盡管JSON是在Javascript的一個(gè)子集,但JSON是獨(dú)立于語言的文本格式,并且采用了類似于C語言家族的一些習(xí)慣。</p><p> JSON用于描述數(shù)據(jù)結(jié)構(gòu),有以下形式存在:</p><p> 對(duì)象(object):
31、一個(gè)對(duì)象以“{”開始,并以“}”結(jié)束。一個(gè)對(duì)象包含一系列非排序的名稱/值對(duì),每個(gè)名稱/值對(duì)之間使用“,”分割。</p><p> 名稱/值對(duì)(collection):名稱和值之間使用“:”隔開,一般的形式是:{name:value},一個(gè)名稱是一個(gè)字符串,一個(gè)值可以是一個(gè)字符串、一個(gè)數(shù)值、一個(gè)對(duì)象、一個(gè)布爾值、一個(gè)有序列表或者一個(gè)null值。</p><p> 值的有序列表(array
32、):一個(gè)或者多個(gè)值用“,”分割后,使用“[”,“]”括起來就形成了這樣的列表,形如:[collection,collecton]。</p><p> 字符串:以“”括起來的一串字符。</p><p> 數(shù)值:一系列0-9的數(shù)字組合,可以為負(fù)數(shù)或者小數(shù),還可以用“e”或者“E”表示為指數(shù)形式。</p><p> 布爾值:表示為true或者false。</p
33、><p> 2.6 ZBar庫——條形碼掃描</p><p> ZBar是款桌面電腦用條形碼/二維碼掃描工具,支持?jǐn)z像頭及圖片掃描,支持多平臺(tái)包括 iPhone 手機(jī)。同時(shí)ZBar提供了二維碼掃描的 API 開發(fā)包。例子分析:</p><p> 第一,導(dǎo)入和使用SDK,導(dǎo)入ZBarSDK文件并引入一下框架AVFoundation.framework(weak)?C
34、oreMedia.framework (weak)?CoreVideo.framework (weak)?QuartzCore.framework?libiconv.dylib。最后,引入頭文件#import “ZBarSDK.h” 即可使用。</p><p> 第二,ReaderSample使用了ZBarReaderViewController,該類實(shí)現(xiàn)了自動(dòng)捕捉條形碼,設(shè)置了ZBarRe
35、aderViewController屬性scanner的配置。找到條形碼時(shí),會(huì)執(zhí)行代理方法-(void)imagePickerController:(UIImagePickerController*)reader didFinishPickingMediaWithInfo:(NSDictionary*) info最后讀取并顯示了條形碼的圖片和內(nèi)容。</p><p> 第三,EmbedReader使用了
36、ZBarReaderView,該類實(shí)現(xiàn)了使用攝像頭捕捉條形碼,調(diào)用start方法開始捕捉,調(diào)用stop方法停止捕捉。當(dāng)捕捉到條形碼時(shí),會(huì)調(diào)用代理方法:- (void) readerView:(ZBarReaderView*)readerViewdidReadSymbols:(ZBarSymbolSet*)symbolsfromImage:(UIImage*)image</p><p><b> 常用類
37、分析:</b></p><p> 第一,ZBarReaderViewController用于動(dòng)態(tài)捕捉條形碼;scanner用于配置捕獲圖像的屬性;cameraDevice用于設(shè)置前后置攝像頭;代理方法- (void) readerView:(ZBarReaderView*)readerViewdidReadSymbols:(ZBarSymbolSet*)symbolsfromImage:(UIIma
38、ge*)image在捕獲到條形碼后執(zhí)行</p><p> 第二,ZBarReaderController繼承UIImagePickerController,用于手動(dòng)捕捉條形碼sourceType用于圖片獲取方式,攝像頭或相冊(cè)方法takePicture獲取圖片,并從圖片中捕獲條形碼代理方法-(void)imagePickerController:(UIImagePickerController*)picker d
39、idFinishPickingMediaWithInfo:(NSDictionary*)info,在讀取條形碼后執(zhí)行,info包含了條形碼信息。</p><p><b> 3 需求分析</b></p><p> 從項(xiàng)目開發(fā)的角度看,軟件需求包括兩大類型:功能性需求和非功能性需求。其中功能性需求是最主要的需求,是需要計(jì)算機(jī)系統(tǒng)解決的問題,也是對(duì)數(shù)據(jù)處理的要求。功能需
40、求規(guī)定了系統(tǒng)必須執(zhí)行的功能。非功能性需求是一些限制性要求,是對(duì)實(shí)際使用環(huán)境所做的要求,如可靠性要求、性能要求等。非功能性需求比功能性需求要求更嚴(yán)格,更不容易滿足,因?yàn)槿绻枪δ苄孕枨蟛荒軡M足的話,系統(tǒng)將無法運(yùn)行。食安檢客戶端的需求主要從功能性需求和非功能性需求兩方面分析。</p><p><b> 3.1 功能性需求</b></p><p> 3.1.1 功能結(jié)構(gòu)
41、圖</p><p> 3.1.2 總體設(shè)計(jì)</p><p> 按照功能分為六大功能,如下表:</p><p> 表3-2-2 程序功能表</p><p> 3.2 非功能性需求</p><p> 非功能性需求對(duì)用戶的操作體驗(yàn)起著重要作用,本應(yīng)用對(duì)非功能性需求也是很重視的。為了能夠加強(qiáng)用戶的體驗(yàn),對(duì)于本應(yīng)用做
42、了很多的優(yōu)化。</p><p> 非功能性需求主要有:(1)操作流暢性:比如說在頁面數(shù)據(jù)加載的時(shí)候,要能夠首先顯示頁面,然后再進(jìn)行數(shù)據(jù)的逐步顯示,不應(yīng)該出現(xiàn)黑屏等現(xiàn)象,保證操作的流暢性;(2)啟動(dòng)時(shí)間:應(yīng)用啟動(dòng)時(shí)間應(yīng)盡可能短,加載時(shí)間太長(zhǎng)不利于用戶感受;(3)美觀性:每個(gè)界面盡量讓UI設(shè)計(jì)師設(shè)計(jì)好,要給用戶美的享受。</p><p><b> 4 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</b&
43、gt;</p><p> 根據(jù)需求分析,劃分了六大功能模塊,其中詳情模塊、掃描模塊和搜索模塊是本軟件的特色及關(guān)鍵部分,具體功能如下所示:</p><p> 4.1 首頁展示設(shè)計(jì)</p><p> 下圖4-1為首頁界面,展示分兩個(gè)區(qū)域。上方展示特色產(chǎn)品,以廣告欄的方式展示。其中廣告欄的實(shí)現(xiàn)就是通過使用繼承與UIView,并且實(shí)現(xiàn)了UIScrollViewDele
44、gate協(xié)議的SGFocusImageFrame以及NSTimer來實(shí)現(xiàn)特色產(chǎn)品的輪播。下方展示四個(gè)產(chǎn)品專區(qū),分別使用了兩個(gè)UIScrollView來實(shí)現(xiàn)四個(gè)專區(qū)的切換,使用了四個(gè)UITableView來展示某一個(gè)專區(qū)的產(chǎn)品的顯示,并且前兩個(gè)UITableView和后兩個(gè)UITableView實(shí)現(xiàn)通過聯(lián)動(dòng)實(shí)現(xiàn)了瀑布流的方式。導(dǎo)航欄右上方為搜索按鈕,點(diǎn)擊后進(jìn)入“搜索”界面。點(diǎn)擊產(chǎn)品專區(qū)中的具體產(chǎn)品,進(jìn)入“食品詳情”頁面,并且此內(nèi)容會(huì)存儲(chǔ)到
45、數(shù)據(jù)庫中,可以在個(gè)人中心界面的“歷史記錄”中查看此記錄。</p><p><b> 圖4-1 首頁視圖</b></p><p> 以下代碼為廣告欄特色產(chǎn)品輪播的代碼:</p><p> - (void)setupViews</p><p><b> {</b></p><
46、p> //這里為廣告欄的數(shù)據(jù)</p><p> arr = [NSMutableArray array];</p><p> [arraddObject:[[SGFocusImageItemalloc] initWithImage:[UIImageimageNamed:@"lgd4.png"] tag:0]];</p><p> f
47、or (inti = 0; i< 4; i++) {</p><p> NSString *str = [NSStringstringWithFormat:@"lgd%d.png",i+1];</p><p> SGFocusImageItem *item1 = [[SGFocusImageItemalloc] initWithImage:[UIImageim
48、ageNamed:str] tag:i+1];</p><p> [arr addObject:item1];</p><p><b> }</b></p><p> [arraddObject:[[SGFocusImageItemalloc] initWithImage:[UIImageimageNamed:@"lgd1.pn
49、g"] tag:5]];</p><p> imageFrame = [[SGFocusImageFramealloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width,SGFOCUSIMAGEFRAME_HEIGHT) delegate:selfimageItems:arr];</p><p> [sel
50、f.viewaddSubview:imageFrame];</p><p> //這里為廣告欄的圖片id</p><p> _imageIdArr = @[@"10143",@"12070",@"10101",@"158",@"10143",@"12070"];<
51、;/p><p><b> }</b></p><p> 4.2 詳情頁面設(shè)計(jì)</p><p> 詳情頁面主要分為四個(gè)頁面,包括商品詳情、檢測(cè)結(jié)果、食品認(rèn)證和小知識(shí)庫界面。其中小知識(shí)庫界面尚未完善。</p><p> 詳情頁面使用的是四個(gè)UIButton的切換來實(shí)現(xiàn)UIScrollView下的四個(gè)界面的切換。</
52、p><p> 4.2.1 商品詳情頁面設(shè)計(jì)</p><p> 下圖4-2-1和4-2-2是商品詳情界面。商品詳情頁面整體界面使用的是UITableView,其中每一個(gè)欄目都是一個(gè)UITableViewCell。</p><p> 圖4-2-1 商品詳情界面(上) 圖4-2-2 商品詳情界面(下)</p><
53、p> 食品信息的cell包括食品的圖片和食品的名稱,其中食品的圖片使用ZoomImageView來實(shí)現(xiàn),并且通過[_fooImageViewsetImageWithUrl:[NSURL URLWithString:saveString]]來實(shí)現(xiàn)對(duì)于圖片的緩存,當(dāng)下次再次進(jìn)入這個(gè)界面的時(shí)候不需要再次加載圖片。而且當(dāng)點(diǎn)擊食品的圖片時(shí),可以放大圖片。</p><p> 食品描述信息使用的是置于UITableV
54、iewCell的UILabel進(jìn)行顯示。而且可以根據(jù)解析出來的描述信息的內(nèi)容的多少來自動(dòng)適應(yīng)UILabel,進(jìn)而自動(dòng)適應(yīng)UITableViewCell。</p><p> 食品的主要成分和使用人群與食品的描述信息相同,可以根據(jù)具體的內(nèi)容的多少來自動(dòng)的調(diào)整整個(gè)UITableViewCell的高度。</p><p> 食品批次信息是由繼承于UITableViewCell的BatchInfo
55、Cell來實(shí)現(xiàn)的。其中BatchInfoCell包括點(diǎn)擊輸入產(chǎn)品批次日期的UITextField、選擇日期的UIButton以及通過選擇的日期計(jì)算是否過期以及是否有對(duì)應(yīng)日期的自檢報(bào)告。當(dāng)點(diǎn)擊UITextField或者是UIButton都會(huì)彈出一個(gè)UIActionSheet,其中UIActionSheet包含一個(gè)UIDatePicker可以進(jìn)行日期的選擇。當(dāng)選擇完日期后點(diǎn)擊確定就會(huì)進(jìn)行日期的計(jì)算(如圖4-2-3),并且會(huì)根據(jù)獲得內(nèi)容自動(dòng)的
56、調(diào)整UILabel的大小,調(diào)整BatchInfoCell的高度。</p><p> 其中根據(jù)具體內(nèi)容計(jì)算UILabel大小的代碼如下:</p><p> - (void)layoutSubviews</p><p><b> {</b></p><p> [superlayoutSubviews];</p&
57、gt;<p> if (_foodDetailModel.datetime.length> 0) {</p><p> _infoLabel = [[UILabelalloc] initWithFrame:CGRectZero];</p><p> _infoLabel.numberOfLines = 0;</p><p> _infoL
58、abel.font = [UIFont systemFontOfSize:14];</p><p> [selfaddSubview:_infoLabel];</p><p> _infoLabel.text = _foodDetailModel.datetime;</p><p> CGSize size;</p><p> siz
59、e = [UIUtilsgetSizeWithLabel:_foodDetailModel.datetimewithFont:[UIFont systemFontOfSize:14]withSize:CGSizeMake(kScreenWidth-6, kScreenHeight)];</p><p> _infoLabel.frame = CGRectMake(3, _dateTextField.bottom
60、+10, kScreenWidth-6,size.height);</p><p> _dateTextField.text = _foodDetailModel.productDate;</p><p><b> }</b></p><p><b> }</b></p><p> 圖4-2
61、-3 選擇日期后的效果</p><p> 營(yíng)養(yǎng)含量是由繼承于UITableViewCell的NutritionCell來實(shí)現(xiàn)的。其中五個(gè)圓環(huán)分別為能量、蛋白質(zhì)、脂肪、碳水化合物以及鈉,而每一個(gè)圓環(huán)中的不同深淺度表示了每種物質(zhì)的營(yíng)養(yǎng)含量百分比。表示百分比的部分代碼為:</p><p> - (void)setPercent:(int)percent animated:(BOOL)anim
62、ated {</p><p> CGFloatfloatPercent = percent / 100.0;</p><p> floatPercent = MIN(1, MAX(0, floatPercent)); </p><p> percentLayer.percent = floatPercent;</p><p> p
63、ercentLayer.color1 = _leftColor;</p><p> percentLayer.color2 = _rightColor;</p><p> [selfsetNeedsLayout];</p><p> [percentLayersetNeedsDisplay];</p><p> [selfmoveTh
64、umbToPosition:floatPercent * (2 * M_PI) - (M_PI/2)];</p><p><b> }</b></p><p> 4.2.2 檢測(cè)結(jié)果頁面設(shè)計(jì)</p><p> 下圖4-2-4為檢測(cè)結(jié)果頁面。首先此頁面包含三個(gè)UIButton的UISegmentControl、顯示批次信息的UILabel、
65、顯示報(bào)告的三個(gè)欄目的UILabel、顯示報(bào)告具體結(jié)果的UITableView和顯示自檢報(bào)告、送檢報(bào)告和送檢報(bào)告PDF的UIButton。</p><p> 其中UISegmentControl默認(rèn)選中第一個(gè)Item,顯示批次信息的UILabel會(huì)根據(jù)選擇日期得到的信息來進(jìn)行顯示。UITableView的具體內(nèi)容以及顯示報(bào)告PDF的UIButton內(nèi)容根據(jù)選擇的Item進(jìn)行改變。</p><p
66、> 下面主要展示顯示PDF的代碼:</p><p> - (void)viewDidLoad</p><p><b> {</b></p><p> [superviewDidLoad];</p><p> // Do any additional setup after loading the view
67、.</p><p> webview = [[UIWebViewalloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight - 64)];</p><p> NSURLRequest *request = [NSURLRequestrequestWithURL:[NSURL URLWithString:self.u
68、rlStr]];</p><p> webview.delegate = self;</p><p> webview.scalesPageToFit = YES;</p><p> [webviewloadRequest:request];</p><p> [self.viewaddSubview:webview];</p&
69、gt;<p> [self showHUD:@"正在加載.."];</p><p><b> }</b></p><p> 圖4-2-4 檢測(cè)結(jié)果頁面</p><p> 4.2.3 食品認(rèn)證頁面設(shè)計(jì)</p><p> 圖4-2-5為食品認(rèn)證頁面。食品認(rèn)證界面主要展示食品所獲得的
70、認(rèn)證圖標(biāo),使用的是UITableView進(jìn)行展示。每一個(gè)UITableViewCell包含兩個(gè)UIButton,每個(gè)UIButton上分別包含一個(gè)用來顯示認(rèn)證圖標(biāo)的名稱的UILabel和認(rèn)證圖標(biāo)的ZoomImageView。當(dāng)點(diǎn)擊ZoomImageView,可以放大查看所對(duì)應(yīng)的具體的pdf文件。</p><p> 關(guān)于UITableViewCell的布局以及顯示代碼如下:</p><p>
71、; - (void)layoutSubviews</p><p><b> {</b></p><p> [superlayoutSubviews]; </p><p> NSString *saveString;</p><p> if (![_leftCerModel.imgUrlisEqual:[NSNu
72、ll null]] && _leftCerModel.imgUrl.length> 0) {</p><p> saveString = _leftCerModel.imgUrl;</p><p> [_leftImageViewsetImageWithURL:[NSURL URLWithString:_leftCerModel.imgUrl]];</p&g
73、t;<p><b> }</b></p><p> if (![_leftCerModel.documentUrlisEqual:[NSNull null]] && _leftCerModel.documentUrl.length> 0) {</p><p> [_leftImageViewaddZoom:_leftCerMo
74、del.documentUrl];</p><p> [_leftZoomImageaddZoom:_leftCerModel.documentUrl];</p><p><b> } </b></p><p> if (![_rightCerModel.imgUrlisEqual:[NSNull null]] && _r
75、ightCerModel.imgUrl.length> 0) {</p><p> saveString = _rightCerModel.imgUrl;</p><p> [_rightImageViewsetImageWithURL:[NSURL URLWithString:_rightCerModel.imgUrl]];</p><p><b&
76、gt; }</b></p><p> if (![_rightCerModel.documentUrlisEqual:[NSNull null]] && _rightCerModel.documentUrl.length> 0) {</p><p> [_rightImageViewaddZoom:_rightCerModel.documentUrl
77、];</p><p> [_rightZoomImageaddZoom:_rightCerModel.documentUrl];</p><p><b> }</b></p><p> self.leftNameLabel.text = _leftCerModel.name;</p><p> self.righ
78、tNameLabel.text = _rightCerModel.name;</p><p><b> }</b></p><p> 圖4-2-5 食品認(rèn)證頁面</p><p> 4.3 搜索頁面設(shè)計(jì)</p><p> 圖4-3-1為搜索界面。最上方的UINavigationBar的LeftBarButtonIt
79、em功能是返回到首界面,RightBarButtonItem是分類按鈕,點(diǎn)擊此按鈕,可以跳轉(zhuǎn)到分類界面。</p><p> 圖4-3-1 為搜索界面</p><p> 下方為搜索框和一個(gè)點(diǎn)擊取消的UIButton。當(dāng)輸入完內(nèi)容點(diǎn)擊鍵盤上的“Search”鍵就會(huì)請(qǐng)求接口進(jìn)行后臺(tái)數(shù)據(jù)的搜索,后臺(tái)會(huì)將搜索到的內(nèi)容返回,如果有內(nèi)容,那么就用來顯示所有的產(chǎn)品列表。此列表的每一個(gè)都包括三個(gè)內(nèi)容:食
80、品的圖片、食品的名稱以及食品的適合人群。顯示搜索結(jié)果的具有上拉加載更多和下拉重新請(qǐng)求數(shù)據(jù)刷新界面的功能。其機(jī)制主要是通過計(jì)算和來判斷是否進(jìn)行了上拉和下拉的操作,如果進(jìn)行了其中某一個(gè)操作那么就通知進(jìn)行相應(yīng)的操作。</p><p> 點(diǎn)擊取消的按鈕,就會(huì)取消當(dāng)前的搜索,顯示之前的搜索內(nèi)容(如圖4-3-2)。</p><p> 圖4-3-2 搜索歷史界面</p><p&
81、gt; 當(dāng)點(diǎn)擊取消的按鈕后所顯示的搜索歷史記錄是通過coreData進(jìn)行數(shù)據(jù)管理的。此歷史記錄包括搜索時(shí)間和搜索的名字,通過如下代碼將所有的數(shù)據(jù)查詢出來,并且通過UITableView進(jìn)行展示。當(dāng)點(diǎn)擊“清除歷史記錄”的UIButton時(shí),會(huì)觸發(fā)-(BOOL)deleteHistoryAllRecordData方法,并且同時(shí)使用[_historyTableView reloaData]方法進(jìn)行界面刷新。具體的HistoryRecord
82、CoreData類的存儲(chǔ)、查詢和刪除代碼如下:</p><p> - (BOOL)addHistoryRecordData:(HistoryRecord *)historyRecord</p><p><b> {</b></p><p> if (historyRecord == nil) {</p><p>
83、 return NO;</p><p><b> }</b></p><p> [coreData.managedObjectContextinsertObject:historyRecord];</p><p> return [coreData.managedObjectContextsave:nil];</p><
84、;p><b> }</b></p><p> - (BOOL)deleteHistoryAllRecordData</p><p><b> {</b></p><p> NSArray *allData = [self findAllHistoryRecord];</p><p>
85、 for (HistoryRecord *history in allData) {</p><p> if (history != nil) {</p><p><b> //刪除</b></p><p> [coreData.managedObjectContextdeleteObject:history];</p>&
86、lt;p> //將數(shù)據(jù)同步到文件中</p><p> [coreData.managedObjectContextsave:nil];</p><p><b> }</b></p><p><b> }</b></p><p> return YES;</p><
87、p><b> }</b></p><p> - (NSArray *)findAllHistoryRecord</p><p><b> {</b></p><p> //1:創(chuàng)建實(shí)體描述對(duì)象</p><p> NSEntityDescription *entify = [NSEnt
88、ityDescriptionentityForName:@"HistoryRecord" inManagedObjectContext:coreData.managedObjectContext];</p><p> //2:創(chuàng)建查詢對(duì)象</p><p> NSFetchRequest *request = [[NSFetchRequestalloc] init];
89、</p><p> [requestsetEntity:entify];</p><p><b> //3:查詢用戶</b></p><p> NSArray *lines = [coreData.managedObjectContextexecuteFetchRequest:requesterror:nil];</p>&
90、lt;p> return lines;</p><p><b> }</b></p><p> 4.4 分類頁面設(shè)計(jì)</p><p> 圖4-4-1為一級(jí)分類的界面。一級(jí)分類的界面由UITableView構(gòu)成,每一個(gè)UITableViewCell顯示的為每一類的圖標(biāo)和名稱。當(dāng)點(diǎn)擊每一個(gè)UITableVIewCell或者是向左滑動(dòng)時(shí)
91、,就會(huì)顯示出對(duì)應(yīng)類的二級(jí)分類。之所以會(huì)出現(xiàn)這樣的效果是因?yàn)樵诖薝ITablView上添加了UISwipeGestureRecognizer手勢(shì),并且定義了手勢(shì)的方向?yàn)閁ISwipeGestureRecognizerDirectionLeft(此枚舉表示可識(shí)別的手勢(shì)方向?yàn)橄蜃螅┖蚒ISwipeGestureRecognizerDirectionRight(此枚舉表示可識(shí)別的方向?yàn)橄蛴遥.?dāng)向右滑動(dòng)時(shí),就會(huì)隱藏二級(jí)分類。</p>
92、<p> 圖4-4-1 一級(jí)分類界面</p><p> 圖4-4-2為點(diǎn)擊了一級(jí)分類(肉及肉制品分類)顯示出二級(jí)分類界面的效果。二級(jí)界面也是使用UITableView進(jìn)行顯示的。但是使用-(UIView*)tableView:(UITableView*)tableViewviewForHeaderInSection:(NSInteger)section來表示二級(jí)主分類視圖,使用UITableVi
93、ewCell來表示二級(jí)子分類。當(dāng)點(diǎn)擊某一個(gè)二級(jí)子分類時(shí),就會(huì)跳轉(zhuǎn)回搜索界面,自動(dòng)在搜索框顯示二級(jí)子分類的內(nèi)容,并且自動(dòng)進(jìn)行搜索。</p><p> 圖4-4-2 顯示二級(jí)子分類的界面</p><p> 下面為顯示和隱藏二級(jí)子界面的代碼:</p><p> //展開右邊的tableView</p><p> - (void)zoomIn
94、RightTabelView</p><p><b> {</b></p><p> [UIView animateWithDuration:0.2 animations:^{</p><p> _bottomView.left = -kScreenWidth/4;</p><p> _isStrech = YE
95、S;</p><p> } completion:^(BOOL finished) {</p><p> [UIView animateWithDuration:0.09 animations:^{</p><p> _rightTableView.left = kScreenWidth*7.0/12;</p><p> _markI
96、mageView.right = _rightTableView.left;</p><p> } completion:^(BOOL finished) {</p><p><b> }];</b></p><p><b> }];</b></p><p><b> }</
97、b></p><p> //收起右邊的tableView</p><p> - (void)zoonOutRightTabelView</p><p><b> {</b></p><p> [UIView animateWithDuration:0.2 animations:^{</p>&
98、lt;p> _bottomView.left = 0;</p><p> _isStrech = NO;</p><p> } completion:^(BOOL finished) {</p><p> [UIView animateWithDuration:0.09 animations:^{</p><p> _righ
99、tTableView.left = kScreenWidth;</p><p> _markImageView.left = _leftTableView.right - 25;</p><p><b> }];</b></p><p><b> }];</b></p><p><b&g
100、t; }</b></p><p> 4.5 食品掃描頁面設(shè)計(jì)</p><p> 下圖4-5-1為沒有物品置于掃描界面,食品掃描頁面的狀態(tài)。圖4-5-2為有條形碼置于掃描界面時(shí),掃描界面鎖定掃描的物品時(shí)的裝填。</p><p> 圖4-5-1 沒有物品置于掃描界面的狀態(tài) 圖4-5-2 有條形碼置于掃描界面的狀態(tài)</p>
101、<p> 首先最主要的掃描功能的實(shí)現(xiàn)是通過ZBar庫中的ZBarReadrView來實(shí)現(xiàn)的。先判斷當(dāng)前的設(shè)備是否支持?jǐn)z像頭,如果不支持那么提示用戶當(dāng)前設(shè)備不支持掃描,如果支持那么就初始化一個(gè)ZBarReaderView的對(duì)象,然后設(shè)置此對(duì)象的代理為當(dāng)前的ViewController。再調(diào)用此- (void) readerView: (ZBarReaderView*) readerViewdidReadSymbols: (Z
102、BarSymbolSet*) symbolsfromImage: (UIImage*) image代理方法,當(dāng)監(jiān)控到有條形碼在攝像頭下,那么就會(huì)通過constzbar_symbol_t *symbol = zbar_symbol_set_first_symbol(symbols.zbarSymbolSet);</p><p> NSString *symbolStr = [NSString stringWith
103、UTF8String: zbar_symbol_get_data(symbol)];這兩句代碼獲取到條形碼的編碼,然后將定時(shí)器銷毀,使掃描條不再晃動(dòng)。之后用此條形碼的編碼進(jìn)行數(shù)據(jù)請(qǐng)求,如果請(qǐng)求到有數(shù)據(jù),那么就跳轉(zhuǎn)到商品詳情頁面,顯示食品的具體信息;如果沒有數(shù)據(jù)那么就彈出一個(gè)UIAlertView提示用戶,沒有此產(chǎn)品的信息。點(diǎn)擊確定,用戶重新進(jìn)行掃描商品。</p><p> 掃描界面由上至下,分別為寫有“將條形碼
104、圖像置于矩形方框內(nèi)、離手機(jī)攝像頭10CM左右,系統(tǒng)就會(huì)自動(dòng)識(shí)別”的UILabel,以及一個(gè)UIImageView的白色掃描框和一個(gè)由UIImageView組成的綠色掃描條、一個(gè)由UIButton實(shí)現(xiàn)的手動(dòng)輸入按鈕。</p><p> UIImageview實(shí)現(xiàn)的掃描條,為了讓掃描條效果更加逼真,實(shí)現(xiàn)來回晃動(dòng)的效果,開啟一個(gè)NSTimer定時(shí)器,首先讓掃描條置于最上方,然后upOrdown的狀態(tài)置為NO,表示掃描
105、條處于向下掃描狀態(tài),當(dāng)掃描條的y值為390時(shí),將upOrdown的狀態(tài)置為YES,使得掃描條向上運(yùn)動(dòng)。這樣循環(huán)往復(fù),就形成了掃描條不斷上下掃描的狀態(tài)。</p><p> 最下邊的UIButton點(diǎn)擊可以進(jìn)入到輸入條形碼的界面。在此界面包括一個(gè)輸入條形碼的UITextField和一個(gè)確定、取消的UIButton。當(dāng)輸入完畢條形碼,點(diǎn)擊確定的UIButton,可以進(jìn)行數(shù)據(jù)請(qǐng)求;點(diǎn)擊取消按鈕直接返回到掃描界面。<
106、;/p><p> 在此界面加入了UITapGestureRecognizer手勢(shì),當(dāng)點(diǎn)擊屏幕的時(shí)候,會(huì)隱藏UINavigationBar和UITabBar;再次點(diǎn)擊又會(huì)顯示出來。具體代碼如下:</p><p> - (void)viewDidLoad</p><p><b> {</b></p><p> [supe
107、rviewDidLoad];</p><p> [self initTitleViewWithTitle:@"掃描"];</p><p> self.navigationItem.leftBarButtonItem = nil;</p><p> self.view.backgroundColor = [UIColorwhiteColor]
108、;</p><p><b> //創(chuàng)建掃描視圖</b></p><p> readview = [ZBarReaderView new]; // 初始化</p><p> readview.backgroundColor = [UIColorblueColor];</p><p> readview.frame
109、= CGRectMake(0, 0, kScreenWidth, self.view.height); // 改變frame</p><p> readview.readerDelegate = self; // 設(shè)置delegate</p><p> readview.allowsPinchZoom = YES; // 不使用Pinch手勢(shì)變焦</p&
110、gt;<p> readview.torchMode = 0; //關(guān)閉閃關(guān)燈</p><p> //是否pinch手勢(shì)聚焦</p><p> [self.viewaddSubview:readview];</p><p> [self _initViews]; </p><p> tim
111、er = [NSTimer scheduledTimerWithTimeInterval:.02 target:self selector:@selector(animation1) userInfo:nilrepeats:YES];</p><p><b> //開始掃描</b></p><p> [readview start];</p><
112、;p> UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizeralloc] initWithTarget:self action:@selector(tapGestureAction:)];</p><p> [self.viewaddGestureRecognizer:tapGesture];</p><p>
113、<b> }</b></p><p> - (void)tapGestureAction:(UITapGestureRecognizer *)tapGesture</p><p><b> {</b></p><p> isTap = !isTap;</p><p> MainTabBar
114、Controller *main = (MainTabBarController *)self.tabBarController;</p><p> if (isTap) {</p><p> [self.navigationControllersetNavigationBarHidden:NOanimated:YES];</p><p> [mainhidd
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于ios平臺(tái)的客戶端應(yīng)用之食安檢的設(shè)計(jì)與實(shí)現(xiàn)
- 軟件工程畢業(yè)論文-基于java的聊天室的設(shè)計(jì)與實(shí)現(xiàn)—客戶端
- 軟件工程畢業(yè)論文-美味食譜手機(jī)應(yīng)用客戶端開發(fā)
- 畢業(yè)論文 基于ios的易車新聞客戶端的設(shè)計(jì)與實(shí)現(xiàn)
- 基于iOS平臺(tái)的HSK客戶端設(shè)計(jì)與實(shí)現(xiàn).pdf
- 軟件工程畢業(yè)論文-基于ios平臺(tái)開發(fā)的移動(dòng)應(yīng)用的設(shè)計(jì)與實(shí)現(xiàn)—辣媽幫
- 基于云協(xié)作平臺(tái)的客戶端設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 基于iOS平臺(tái)的運(yùn)動(dòng)休閑客戶端的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于ios的新聞客戶端的設(shè)計(jì)與實(shí)現(xiàn)
- 基于iOS平臺(tái)的醫(yī)院服務(wù)客戶端的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于iOS平臺(tái)移動(dòng)視頻監(jiān)控客戶端的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于iOS平臺(tái)的自助游客戶端的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于iOS平臺(tái)停車誘導(dǎo)系統(tǒng)客戶端的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 畢業(yè)論文范文——基于android平臺(tái)的crm系統(tǒng)客戶端軟件的研究與實(shí)現(xiàn)
- 基于android平臺(tái)的在線音樂客戶端設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文
- 基于ios的新浪微博iphone客戶端設(shè)計(jì)與實(shí)現(xiàn)說明書畢業(yè)論文
- 在線交流平臺(tái)iOS客戶端的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于iOS平臺(tái)的中搜搜悅客戶端設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于android平臺(tái)的計(jì)步器的設(shè)計(jì)與實(shí)現(xiàn)-軟件工程畢業(yè)論文
- 基于iOS平臺(tái)的永安車隊(duì)通手機(jī)客戶端的設(shè)計(jì)與實(shí)現(xiàn).pdf
評(píng)論
0/150
提交評(píng)論