畢業(yè)設(shè)計(論文)-基于IOS開發(fā)的裝修家居APP的設(shè)計與實現(xiàn)
《畢業(yè)設(shè)計(論文)-基于IOS開發(fā)的裝修家居APP的設(shè)計與實現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《畢業(yè)設(shè)計(論文)-基于IOS開發(fā)的裝修家居APP的設(shè)計與實現(xiàn)(28頁珍藏版)》請在裝配圖網(wǎng)上搜索。
河南科技學(xué)院2015 屆本科畢業(yè)設(shè)計基于 IOS 開發(fā)的裝修家居 APP 的設(shè)計與實現(xiàn)學(xué)生姓名: 所在系別: 信 息 工 程 所學(xué)專業(yè): 信 息 工 程 導(dǎo)師姓名: 完成時間: 2015 - 5 – 10 基于 IOS 開發(fā)的裝修家居 APP 的設(shè)計與實現(xiàn)摘 要隨著科技的發(fā)展,移動智能終端人們的日常生活中扮演著越來越重要的角色?;?iOS 系統(tǒng)的 iPhone 手機因其獨特的設(shè)計和極佳的體驗深受用戶歡迎。作為當(dāng)前最流行的操作平臺,自然也存在著大量的應(yīng)用服務(wù)需求。本課題是為一家裝修公司設(shè)計的一款幫助人們可以隨心所欲選擇家居裝修樣式的移動應(yīng)用。該APP 以 Object-C 語言編寫,以 Xcode 為開發(fā)工具實現(xiàn)的。主要有五大界面:首頁,分類圖片,靈感,關(guān)注及設(shè)置界面。首頁展示了設(shè)計師設(shè)計的當(dāng)今流行的一些裝修樣板;分類界面以空間、風(fēng)格、局部三種分類方式向用戶詳細介紹各種各樣的裝修方法;靈感界面就是用戶記錄自己的裝修方法,以備以后裝修時使用的界面;關(guān)注界面則是自己關(guān)注的設(shè)計師的最新動態(tài);設(shè)置界面可以清空緩存,意見反饋,及 APP 介紹。精 致 優(yōu) 秀 的 設(shè) 計 風(fēng) 格 , 有 多 樣 化 的 選 擇 , 使 用 戶 可 以更 加 賞 心 悅 目 地 體 驗 本 軟 件 的 服 務(wù) 。關(guān) 鍵 詞 : Objective_c、 HTTP、 MySQL、 家 居DESIGN AND IMPLEMENTATION OFINFORMATION MANAGEMENT SYSTEMS GRADUATESAbstractWith the development of science and technology, mobile intelligent terminal plays an increasingly important role in daily life IPhone mobile phone based on the iOS system because of its unique design and excellent experience by users. As the most popular operating platform, there is also a lot of natural application service needs. This topic is for a decoration company design of a help people can choose home decoration style mobile application. The APP is written in Object-C language, and implemented by Xcode as the development tool There are five major interfaces: home, classification pictures, inspiration, attention and set the interface. Home page shows the designer of today's popular some decoration model; interface classification to space, style, local three classification to users with the various decoration method; interface inspired is users to record their own decoration method, to preparation after the renovation of the use of interface; interface is designers concern themselves with the latest developments; setting interface can empty the cache, feedback, and app. Exquisite and excellent design style, a variety of choices, users can experience more be good to hear or see the service of this software.Keywords: Objective_c, HTTP, MySQL, Household目錄1. 緒論 12. iOS 系統(tǒng)、環(huán)境以及所用技術(shù)介紹 .22.1 iOS 系統(tǒng)簡介 .22.3 開發(fā)環(huán)境 .32.4 應(yīng)用程序框架 .32.5 設(shè)計模式 .42.6 第三方庫 53. 功能模塊的設(shè)計 .63.1 首頁界面的設(shè)計 .63.2 分類界面 .73.3 靈感界面 .73.4 關(guān)注界面 .83.5 設(shè)置界面 .84. 功能模塊的具體實現(xiàn) .94.1 各個界面之間的切換 94.2 首頁界面的具體實現(xiàn)邏輯及代碼 .104.3 分類界面 134.4 靈感界面 154.5 關(guān)注界面 184.6 設(shè)置界面 205. 系統(tǒng)測試 .215.1 測試目的 215.2 測試方法 21小結(jié) 23參考文獻 23致謝 2411. 緒論隨著 IOS 的在當(dāng)今社會流行,人們愈發(fā)體驗到了其所帶來的科技魅力,給我們的生活帶來了越來越多的幫助,讓我們的生活更加的簡單。本課題研究的是設(shè)計一款 APP,人們通過這個手機 APP 就能找到自己理想的家居裝修方法,讓自己的居住環(huán)境更加的舒適。如今的移動應(yīng)用開發(fā)產(chǎn)業(yè)讓人眼花繚亂,主要的移動平臺有:IOS、Android、Nokia Symbian、blackberry、Java ME、windows phone、mobile web。Android 以其開放性,多任務(wù),大功能。畫面流暢,硬件設(shè)備優(yōu)良多樣等各種優(yōu)點,占只能機一大部分,然而它也存在著明顯的不足,如:兼容性差,各種機型的配置不一樣,以至于開發(fā)的時候出現(xiàn)各種版本。有些產(chǎn)品華而不實,用戶體驗差。Symbian 主要基于 C 語言的應(yīng)用開發(fā),支持多線程運行模式,但是開發(fā)代碼量過大給開發(fā)人員造成很大的不便。就目前而言,三大平臺(Android、Symbian、blackberry)的市場占有率也在逐漸下降,IOS 呈現(xiàn)平穩(wěn)上升趨勢。(1)APPstore 的支付模式成熟。不僅僅是這一模式的創(chuàng)新,更重要的人們用蘋果手機只能從蘋果商店下載應(yīng)用,經(jīng)過長時間的運營,APPstore 已經(jīng)形成完備的支付模式,被大部分用戶接受。(2)IOS 是用 object-C 這門語言開發(fā)。從全球的編程語言排行榜來看,雖然object-C 只有蘋果一家公司使用,但是已經(jīng)排名已經(jīng)非??壳傲耍梢?IOS 開發(fā)的普及性和歡迎程度,另外,基于 C 語言,運行效率更高計算機網(wǎng)絡(luò)通信技術(shù)和 Internet 在最近幾年來飛速發(fā)展,基于因特網(wǎng)的手機移動應(yīng)用逐漸開始成為一種全新的功能需求,并且越來越收到人們的關(guān)注。由于移動應(yīng)用具有簡單性,隨時隨地等諸多優(yōu)點,人們通過一部手機就可以操控一切,它有著傳統(tǒng)計算機無法比擬的優(yōu)點。而人們也在越來越追求更高的物質(zhì)生活,因此,開發(fā)一個關(guān)于裝修家居的移動應(yīng)用就有必要了,你只需要通過一部手機,就可以看見多種多樣的裝修方式,多樣化的選擇,讓你找到自己心怡的裝修方法。并且你還可以將方法分享給你的朋友,讓更多的人感受到移動應(yīng)用,這個 APP 給人們帶來的簡便?;?IOS 平臺的裝修軟件已經(jīng)有很多,經(jīng)過分析,用戶第一眼往往是一個軟件的外觀,一個好看的界面才能讓用戶以一種愛美之心去嘗試,才能進一步了解一個軟件的好壞,所以吸引眼球的界面是爭取用戶的第一步。因此,界面設(shè)計工作對應(yīng)用程序來說非常重要,在界面上吸引了用戶,才能進一步讓用戶體驗應(yīng)用程序中的功能,使用這個軟件。因此,開發(fā)一種界面美觀,用起來舒適,并且能給人們帶來巨大作用的軟件非常有必要。房屋裝修設(shè)計是個系統(tǒng)工程,并非想像的那么簡單。一般來說,每個人想法都有所不同,對家居的要求不盡相同。但真正能將自己的想法表達到位的,卻少之又少。一個專業(yè)的房屋設(shè)計師,首先會充分了解裝修業(yè)主的個性化需求,結(jié)合自己的專業(yè)知識、生活閱歷,將裝修業(yè)主理想中的家居通過設(shè)計圖紙表現(xiàn)出來。其次,專業(yè)的設(shè)計師會利用自己對建材材料的了解,在設(shè)計時進行合理搭配,施工時推薦最佳材質(zhì)。說簡單些,就是利用設(shè)計元素,突出家居中的某幾個亮點即可達到裝修最佳效果,而不必堆砌過多的裝修材料,可以為裝修業(yè)主節(jié)省許多不必要的花費。第三,專業(yè)的設(shè)計師可以利用自己所累積的社會資源,為裝修業(yè)主拿到單個消費者所拿不到材料價格,從而為業(yè)主節(jié)省許多金錢。隨著蘋果產(chǎn)品的不斷推陳出新,相應(yīng)的各類應(yīng)用開發(fā)也越來越火爆。目前,2IOS 在智能手機應(yīng)用下載量中占比 33%,IOS 平板電腦應(yīng)用下載量占比 75%,由此可見,IOS 相關(guān)應(yīng)用軟件有著龐大的消費眾群。而產(chǎn)品的升級換代,新產(chǎn)品的開發(fā),都離不開手機軟件開發(fā)團隊強有力的支持?,F(xiàn)在各大企業(yè)都在積極擴充研發(fā)隊伍,像是游戲軟件開發(fā)的崗位缺口就非常大。其 8-10 萬的年薪,讓很多年輕人加入到學(xué)習(xí) IOS 開發(fā)的隊伍中。 據(jù)對在讀學(xué)習(xí)人群統(tǒng)計,目前大部分學(xué)員來自應(yīng)屆的大學(xué)生。眾所周知,現(xiàn)在大學(xué)生就業(yè)難,薪水低。而學(xué)習(xí) IOS 開發(fā),不但可以掌握最新的技術(shù),還可以找到薪水福利不錯的工作,未來也有很大的發(fā)揮空間。另一部分人群,則是 IOS相關(guān)從業(yè)人員,隨著技術(shù)的日新月異,希望能通過短時間集中培訓(xùn),使技能得到提升,更好的應(yīng)用到實際工作中。而目前關(guān)于裝修的 App 少之又少,而人們又迫切需要這樣一款軟件,所以這樣的軟件具有很大的前景。 2. iOS 系統(tǒng)、環(huán)境以及所用技術(shù)介紹iOS 開發(fā)是以 xcode 為開發(fā)工具, OC 為編程語言開發(fā)的,是開發(fā)蘋果移動設(shè)備應(yīng)用的簡稱。2.1 iOS 系統(tǒng)簡介iOS 是 iPad、iPhone、iPod touch 和 Apple TV 的操作系統(tǒng)。是由蘋果公司開發(fā)的移動操作系統(tǒng) 。蘋果公司最早于 2007 年 1 月 9 日的 Macworld 大會上公布這個系統(tǒng),最初是設(shè)計給 iPhone 使用的,后來陸續(xù)套用到 iPod touch、iPad以及 Apple TV 等產(chǎn)品上。iOS 與蘋果的 Mac OS X 操作系統(tǒng)一樣,它也是以Darwin 為基礎(chǔ)的,因此屬于類 Unix 的商業(yè)操作系統(tǒng)。原本這個系統(tǒng)名為iPhone OS,因為 iPad,iPhone,iPod touch 都使用 iPhone OS,所以 2010WWDC大會上宣布改名為 iOS。iOS 具有簡單的界面、令人驚嘆的功能,以及超強的穩(wěn)定性,已經(jīng)成為 iPhone、iPad 和 iPod touch 的強大基礎(chǔ)。盡管其他競爭對手一直努力地追趕, iOS 內(nèi)置的眾多技術(shù)和功能讓設(shè)備始終保持著遙遙領(lǐng)先的地位。 Objective-C,通常寫作ObjC和較少用的Objective C或Obj-C,是擴充C的面向?qū)ο缶幊陶Z言。Objective-C是非常實際的語言。它是一個用C寫成、很小的運行庫,只會令應(yīng)用程序的尺寸增加很小,和大部分OO系統(tǒng)使用極大的VM執(zhí)行時間會取代了整個系統(tǒng)的運作相反。Objective-C寫成的程序通常不會比其原始碼大很多。而其函式庫(通常沒附在軟件發(fā)行本)亦和Smalltalk系統(tǒng)要使用極大的內(nèi)存來開啟一個窗口的情況相反。因此,Objective-C它完全兼容標(biāo)準 C語言(C++對C語言的兼容僅在于大部分語法上,而在ABI(Applicat ion Binary Interface)上,還需要使用extern “C“這種顯式聲明來與C函數(shù)進行兼容),而在此基礎(chǔ)上增加了面向?qū)ο缶幊陶Z言特性以及Smalltalk消息機制。和C++不同,Objective-C不支持運算子重載(它不支持ad-hoc多型)。亦與C++不同,但和Java相同,Objective-C只容許對象繼承一個類別(不設(shè)多重繼承)。Categories和protocols不但可以提供很多多重繼承的好處,而且沒有很多缺點,例如額外執(zhí)行時間過重和二進制不兼容。32.3 開發(fā)環(huán)境(1).Xcode 開發(fā)工具我們要掌握一門編程語言的話,都必須使用相應(yīng)的開發(fā)工具進行學(xué)習(xí)和調(diào)試,比如用 eclipse 學(xué)習(xí) Java。至于 Objective-C,我們可以使用蘋果公司提供的開發(fā)工具---Xcode(2) Mac OS XXcode沒有Windows版本的,只有Mac版本的,也就是只能跑在Mac OS X系統(tǒng)上。 因此,你要先擁有Mac OS X系統(tǒng)才能使用Xcode進行Objective-C的學(xué)習(xí)和iOS開發(fā) 。Mac OS X 是蘋果公司為 Mac 系列產(chǎn)品開發(fā)的專屬操作系統(tǒng),目前搭載這款操作系統(tǒng)的設(shè)備有:MacBook、iMac、Mac mini。大概有 3 種途徑可以獲取 Mac OS X 系統(tǒng):虛擬機、黑蘋果、購買蘋果設(shè)備。(3) 調(diào)試設(shè)備Xcode 自帶了 iOS 模擬器功能,因此我們可以將開發(fā)好的應(yīng)用程序,運行到模擬器上進行測試,不一定要買 iPhone\iPad 進行調(diào)試。當(dāng)然,真機和模擬器肯定是區(qū)別的,因此在發(fā)布應(yīng)用程序之前肯定要進行真機測試。(4) 開發(fā)者證書如果你是想把開發(fā)好的 iOS 程序發(fā)布到 App Store 上去賣,或者把程序運行到真機(iPhone\iPad)上,那么就必須有 iOS 個人開發(fā)者證書。這個需要向蘋果買,一年 99$。如果純粹是學(xué)習(xí),不用買這個證書,一切開發(fā)都是免費的。2.4 應(yīng)用程序框架應(yīng)用程序主要包括以下幾大框架:Foundation、UIKit 、Core Data 、 Core Graphics、 Core Animation 等幾大框架。在你開發(fā)程序時,主要使用框架就是 Foundation 和 UIKit,因為它們包你需要的大部分東西,你的應(yīng)用程序,UIKit 和其它的框架都是建立在 Foundation框架上Foundation 框架是用 Object-C 對 Core Foundation 框架里許多特性的封裝。使用Foundation可以:? 創(chuàng)建和管理集合,比如數(shù)組和字典? 訪問存儲在應(yīng)用程序里的圖片和其它資源? 創(chuàng)建和管理字符串? 提交和接收通知? 創(chuàng)建日期和時間對象? 自動發(fā)現(xiàn)IP網(wǎng)絡(luò)上的設(shè)備? 操作URL流所有的iOS應(yīng)用程序都基于UIKit,你不能是應(yīng)用程序脫離這個框架。UIKit提供了在屏幕上繪制的機制,捕獲事件,和創(chuàng)建通用用戶界面元素。UIKit也通過管理顯示在屏幕上的組件來組織復(fù)雜的項目。使用UIKit可以:4? 構(gòu)建和管理你的用戶界面? 捕獲觸摸和基于移動的事件? 呈現(xiàn)文字和web內(nèi)容? 優(yōu)化你的多任務(wù)程序? 創(chuàng)建定制的用戶界面元素Core Data , Core Graphics, Core Animation,和 OpenGLES 框架都是高級的技術(shù)。所以這些框架對于你開發(fā)應(yīng)用程序也是很重要的,它們都需要時間去學(xué)習(xí)和掌握。Core Data 框架管著理應(yīng)用程序數(shù)據(jù)模型,提供的內(nèi)建 SQLlite 技術(shù)可以高效的管理數(shù)據(jù)。Core Graphics 框架幫助你創(chuàng)建圖形Core Animation 允許你創(chuàng)建高級的動畫和虛擬效果OpenGL ES 框架提供 2D 和 3D 繪圖工具2.5 設(shè)計模式(一)代理模式應(yīng)用場景:當(dāng)一個類的某些功能需要由別的類來實現(xiàn),但是又不確定具體會是哪個類實現(xiàn)。優(yōu)勢:解耦合敏捷原則:開放-封閉原則實例:tableview的 數(shù)據(jù)源delegate,通過和protocol的配合,完成委托訴求。列表row個數(shù)delegate自定義的delegate(二)觀察者模式應(yīng)用場景:一般為model層對,controller和view進行的通知方式,不關(guān)心誰去接收,只負責(zé)發(fā)布信息。優(yōu)勢:解耦合敏捷原則:接口隔離原則,開放-封閉原則實例:Notification通知中心,注冊通知中心,任何位置可以發(fā)送消息,注冊觀察者的對象可以接收。kvo,鍵值對改變通知的觀察者,平時基本沒用過。(三)MVC模式應(yīng)用場景:是一中非常古老的設(shè)計模式,通過數(shù)據(jù)模型,控制器邏輯,視圖展示將應(yīng)用程序進行邏輯劃分。優(yōu)勢:使系統(tǒng),層次清晰,職責(zé)分明,易于維護敏捷原則:對擴展開放-對修改封閉實例:model-即數(shù)據(jù)模型,view-視圖展示,controller進行UI展現(xiàn)和數(shù)據(jù)交互的邏輯控制。(四)單例模式5應(yīng)用場景:確保程序運行期某個類,只有一份實例,用于進行資源共享控制。優(yōu)勢:使用簡單,延時求值,易于跨模塊敏捷原則:單一職責(zé)原則實例:[UIApplication sharedApplication]。注意事項:確保使用者只能通過 getInstance方法才能獲得,單例類的唯一實例。java,C++中使其沒有公有構(gòu)造函數(shù),私有化并覆蓋其構(gòu)造函數(shù)。object c中,重寫allocWithZone方法,保證即使用戶用 alloc方法直接創(chuàng)建單例類的實例,返回的也只是此單例類的唯一靜態(tài)變量。(五)策略模式應(yīng)用場景:定義算法族,封裝起來,使他們之間可以相互替換。優(yōu)勢:使算法的變化獨立于使用算法的用戶敏捷原則:接口隔離原則;多用組合,少用繼承;針對接口編程,而非實現(xiàn)。實例:排序算法,NSArray的sortedArrayUsingSelector;經(jīng)典的鴨子會叫,會飛案例。注意事項:1,剝離類中易于變化的行為,通過組合的方式嵌入抽象基類2,變化的行為抽象基類為,所有可變變化的父類3,用戶類的最終實例,通過注入行為實例的方式,設(shè)定易變行為防止了繼承行為方式,導(dǎo)致無關(guān)行為污染子類。完成了策略封裝和可替換性。(六)工廠模式應(yīng)用場景:工廠方式創(chuàng)建類的實例,多與proxy模式配合,創(chuàng)建可替換代理類。優(yōu)勢:易于替換,面向抽象編程,application只與抽象工廠和易變類的共性抽象類發(fā)生調(diào)用關(guān)系。敏捷原則:DIP依賴倒置原則實例:項目部署環(huán)境中依賴多個不同類型的數(shù)據(jù)庫時,需要使用工廠配合proxy完成易用性替換注意事項:項目初期,軟件結(jié)構(gòu)和需求都沒有穩(wěn)定下來時,不建議使用此模式,因為其劣勢也很明顯,增 加了代碼的復(fù)雜度,增加了調(diào)用層次,增加了內(nèi)存負擔(dān)。所以要注意防止模式的濫用。2.6 第三方庫圖片異步加載:SDWebImage網(wǎng)絡(luò)通信庫AFNetworkingMKNetworkKitASIHTTPRequest6網(wǎng)絡(luò)狀態(tài)檢查:ReachabilityJSON:SBJSONJSONKitXML:TouchXMLSQLite:FMDB下拉刷新:MJRefreshSVPullToRefresh提示框:MBProgressHUD3. 功能模塊的設(shè)計這個 App 由首頁,分類圖片,靈感,關(guān)注,設(shè)置,及個人信息六個界面組成,每個界面展示的都有明確的信息,讓我們有多樣化的選擇。3.1 首頁界面的設(shè)計首頁由兩部分組成,上方由是一個滾動視圖,能夠無限滾動,并且能夠用手滑動,下方是一個列表,也能夠滑動。首頁展示的是裝修后的家居圖片,并且每張圖片都有相應(yīng)的文字作簡單的介紹。每張圖片都是能點擊的,點進去是詳情,詳細介紹了如何裝修,及這樣裝修的好處,圖片也能都標(biāo)記為喜歡,并收集。設(shè)計流程見圖 3-1:圖 3-1 首頁設(shè)計流程首頁滾動視圖列表視圖圖片詳情已登錄未登錄編輯操作登錄界面73.2 分類界面這個界面通過分類來快速找到你想要的,房間哪個部分的裝修圖片。分為三大類:空間、局部、風(fēng)格。每個大類里面又分為許多小類,客廳、衣帽間,餐廳、廚房、衛(wèi)生間等等。點擊不同的分類,我們能夠進入到不同的裝修圖片展示界面。圖片展示界面是一個列表,圖片能夠放大查看,并且也能夠進行標(biāo)記。設(shè)計流程見圖 3-2:圖 3-2 分類界面設(shè)計流程3.3 靈感界面在這個界面上我們可以創(chuàng)建格子,能給格子命名,并給格子配上自己喜歡的圖片,能夠進行重命名,刪除等一些編輯操作。創(chuàng)建自己喜歡的裝修方法,即靈感。在這個界面我們也能看到自己標(biāo)注過的喜歡的圖片,也能顯示有多少人喜歡了這種裝修方法,圖片點進去是裝修方法的詳情,并且能夠編輯,進行一些刪除等操作。設(shè)計流程見圖 3-3:分類空間風(fēng)格局部客廳、餐廳、廚房等現(xiàn)代、中式、日式等吊頂、陽臺、樓梯等圖片詳情編輯操作靈感靈感喜歡創(chuàng)建格子命名更換圖片刪除圖片取消喜歡查看詳情8圖 3-3 靈感界面設(shè)計流程3.4 關(guān)注界面每一種裝修方法作品都有相應(yīng)的作者,如果我們關(guān)注了這個作者,那么我們在這個界面就能看到這個作者所有的作品,作品點進去也是詳情界面,每張圖片也能夠標(biāo)記為喜歡。并且,在這個界面,也能夠看見別人使用這個 APP 的動態(tài),有哪些人喜歡了哪些作品,看別人的裝修習(xí)慣是什么樣的。設(shè)計流程見圖 3-4:圖 3-4 關(guān)注界面設(shè)計流程3.5 設(shè)置界面這個界面顯示自己的頭像,昵稱。在這個界面我們可以清空緩存,關(guān)于這個APP 的介紹,以及意見反饋,退出登錄。設(shè)計流程見圖 3-5:關(guān)注熱門關(guān)注列表試圖列表試圖圖片詳情編輯操作設(shè)置頭像昵稱清空緩存給我評分意見反饋關(guān)于退出登錄9圖 3-5 設(shè)置界面設(shè)計流程4. 功能模塊的具體實現(xiàn)見每個界面的具體實現(xiàn)根據(jù)設(shè)計圖來做,包括各個界面之間的切換和每個界面的具體介紹及代碼編寫。4.1 各個界面之間的切換各個界面之間通過側(cè)邊欄來進行切換,點擊相應(yīng)的按鈕可以進入到相應(yīng)的界面,上圖即為效果圖,側(cè)邊欄用到了 ZYMenuController 這個第三方框架,將ZYMenuController 的對象作為 window 的根視圖,代碼實現(xiàn)為:ZYFirstViewController * firstViewController = [[[ZYFirstViewController alloc] init]autorelease];UINavigationController * nav = [[[UINavigationController alloc] initWithRootViewController:firstViewController] autorelease];ZYMenuController * menu = [[ZYMenuController alloc] initWithRootViewController:nav leftViewController:leftViewController rightViewController:nil];self.window.rootViewController = menu;[self.window makeKeyAndVisible];視圖使用 tableView 寫的,能夠滑動,增強了用戶的體驗_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 120, self.view.frame.size.width, self.view.frame.size.height - 150)];_tableView.delegate = self;_tableView.dataSource = self;_tableView.backgroundColor = [UIColor clearColor];_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;[self.view addSubview:_tableView];[_tableView release];實際測試效果圖見圖 4-1:10圖 4-1 界面切換效果4.2 首頁界面的具體實現(xiàn)邏輯及代碼(1)首頁界面首頁上方是一個能夠無限循環(huán)滾動的滾動視圖,用的 scrollView 實現(xiàn),將button 加到 scrollView 上面,可點擊,并也能夠用手滑動。下方用 tableView實現(xiàn),是一個列表視圖。將上方的 scrollView 和下方的 tableView 放到一個大的 scrollView 上面,實現(xiàn)整個界面都能夠滑動。tableView 是自定義的,能夠滿足設(shè)計的需求。代碼實現(xiàn)為://創(chuàng)建大scrollView_bigScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0,0, 320, self.view.frame.size.height)];_bigScrollView.delegate = self;[self.view addSubview:_bigScrollView];//屏幕上方的小scrollView[HttpEngine getAdvertisingRequestWithCompletionBlock:^(NSMutableArray *array) {self.scrollDataArray = array;_scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 160)];// _scrollView.backgroundColor = [UIColor redColor];_scrollView.delegate = self;11_scrollView.pagingEnabled = YES;_scrollView.contentSize = CGSizeMake(self.view.frame.size.width*self.scrollDataArray.count, 170);[_bigScrollView addSubview:_scrollView];實際測試效果圖見圖 4-2-1:圖 4-2-1 首頁效果(2)詳情界面 詳情界面主要使用自定義 tableView 實現(xiàn),第一區(qū)顯示的是大標(biāo)題和作者的頭像、昵稱及時間。第二區(qū)顯示的 簡介,是對這個裝修方法的簡單介紹,并且這個高度要根據(jù)文字的多少自適應(yīng)高度。第三區(qū)顯示的是圖片,即裝修后的效果圖。代碼實現(xiàn)為:-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@“Cell“];if(cell == nil){12cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@“Cell“];UIImageView * imageView = [[UIImageView alloc] init];imageView.tag = 1;[cell addSubview:imageView];[imageView release];}}//根據(jù)文字多少算高度- (float)stringHeightWithString:(NSString *)string{// 計算文字寬高float height = [string boundingRectWithSize:CGSizeMake(270, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]} context:nil].size.height;// 向上取整return ceilf(height);}實際測試效果圖見圖 4-2-2:圖 4-2-2 詳情界面效果134.3 分類界面從這個界面里能通過具體的分類來找到自己需要的裝修設(shè)計圖,并且能將這些裝修圖片能夠標(biāo)記為喜歡。(1) 分類首頁這個頁面總共分為三個大區(qū),即空間、局部、風(fēng)格。自己想看什么樣的效果可從分類界面里面詳細的選擇,每一種都有不同的風(fēng)格,讓你有多樣化的選擇。通過自定義 tableView 實現(xiàn)。隱藏了系統(tǒng)自帶的分割線,自己實現(xiàn)分割線這個功能。圖片和文字放到一個數(shù)組里面,作為 tableView 的數(shù)據(jù)源數(shù)組-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@“Cell“];if(cell == nil){cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@“Cell“] autorelease];//自定義imageView與label,否則圖片太大UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 8, 30, 30)];imageView.tag = 1;[cell addSubview:imageView];[imageView release];UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(50, 5, 100, 30)];label.tag = 2;[cell addSubview:label];[label release];}UIImageView * imageView = (UIImageView *)[cell viewWithTag:1];UILabel * label = (UILabel *)[cell viewWithTag:2];label.text = self.textArray[indexPath.section][indexPath.row];imageView.image = [UIImage imageNamed:self.imageArray[indexPath.section][indexPath.row]];cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;return cell;}實際測試效果圖見圖 4-3-1:14圖 4-3-1 分類首頁效果(2)分類圖片界面通過兩豎排的圖片更為直觀的來展示各種各樣的裝修樣式。從服務(wù)器獲得數(shù)據(jù)后,將數(shù)據(jù)分為兩個數(shù)組,每一個數(shù)組作為每一豎排的數(shù)據(jù)源數(shù)組,自定義tableView 實現(xiàn)。[HttpEngine getClassImageRequsetWithCategoryId:self.cate TagId:self.tag CompletionBlock:^(NSMutableArray *array) {self.dataArray = array;// NSLog(@“%@“,self.dataArray);//將self.dataArray分到兩個數(shù)組中,分別為cell上兩個button的圖片數(shù)據(jù)網(wǎng)址for(int i=0;iself.dataArray.count;i++){if(i%2==0){[self.button1DataArray addObject:self.dataArray[i]];}else{[self.button2DataArray addObject:self.dataArray[i]];}}_tableView =[[UITableView alloc] initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height-64)];15_tableView.delegate = self;_tableView.dataSource = self;[self.view addSubview:_tableView];[_tableView release];}];return cell;}實際測試效果圖見圖 4-3-2:圖 4-3-2 分類圖片界面效果4.4 靈感界面這個界面包括靈感和喜歡兩個界面,靈感喜歡界面能夠?qū)⒆约红`感展示出來,喜歡界面能夠看到自己已經(jīng)標(biāo)記為喜歡的圖片(1) 靈感界面靈感界面展示的是自己創(chuàng)作的一些靈感,點擊第一個方框即可以創(chuàng)建格子,將自己喜歡的裝修圖片放到格子上面。靈感和喜歡這兩個界面的實現(xiàn)共用的時同16一個試圖控制器,點擊上面的按鈕時,現(xiàn)將原有的視圖移除,再將將要顯示的視圖添加到視圖控制器上,從而實現(xiàn)這樣的效果_seg = [[UISegmentedControl alloc] initWithItems:segArray];[_seg addTarget:self action:@selector(segClick:) forControlEvents:UIControlEventValueChanged];_seg.selectedSegmentIndex = 0;_seg.tintColor = [UIColor redColor];self.navigationItem.titleView = _seg;self.viewController = [[ZYGeziViewController alloc] init];[self.view addSubview:self.viewController.view];-(void)segClick:(UISegmentedControl *)seg{if(seg.selectedSegmentIndex == 0){for(UIView * view in self.view.subviews){[view removeFromSuperview];}self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(itemClick)];self.viewController = [[ZYGeziViewController alloc] init];[self.view addSubview:self.viewController.view];}else{self.viewController = [[ZYLikeViewController alloc] init];[self.view addSubview:self.viewController.view];self.navigationItem.rightBarButtonItem = nil;}}實際測試效果圖見圖 4-4-1:17圖 4-4-1 靈感界面效果(2)喜歡界面在這個界面我們能看到自己所喜歡的裝修樣式圖片,以及共有多少人喜歡了這個裝修樣式,并且能夠編輯,即刪除。這個界面通過自定義 tableview 實現(xiàn):-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@“Cell“];if(cell == nil){cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@“Cell“] autorelease];// UIImageView * imageView2 = [[UIImageView alloc] initWithFrame:CGRectMake(10, imageView.frame.size.height, 60, 25)];// imageView2.tag = 3;18// imageView2.image = [UIImage imageNamed:@“v110_04Class_liked_b.png“];// [cell addSubview:imageView2];}ZYLikedPicList * picList = self.dataArray[indexPath.row];NSLog(@“%f“,picList.picId);UIImageView * imageView = (UIImageView *)[cell viewWithTag:1];UILabel * label = (UILabel *)[cell viewWithTag:2];ZYCustonButton * button = (ZYCustonButton *)[cell viewWithTag:3];button.tag = picList.picId;[button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];[button setBackgroundImage:[UIImage imageNamed:@“v110_04Class_liked_b.png“] forState:UIControlStateNormal];[imageView setImageWithURL:[NSURL URLWithString:picList.picUrl] placeholderImage:[UIImage imageNamed:@“v1_de_nopic@2x.png“]];label.text = [NSString stringWithFormat:@“%d 人喜歡了“,(int)picList.likeTimes];return cell;}實際測試效果圖見圖 4-4-2:圖 4-4-2 喜歡界面效果4.5 關(guān)注界面這個界面能過獲得不同的人使用這個 APP 的實時動態(tài),比如某個人關(guān)注了某19個裝修方法圖片,通過這個界面我們就能看到這個人得昵稱、頭像及裝修的圖片。這個界面的實現(xiàn)原理和靈感界面大體相似。不過使用的同一個控制器,不同的界面上刷新不同的數(shù)據(jù),也是通過自定義 tableview 實現(xiàn)的[_tableView addPullToRefreshWithActionHandler:^{NSLog(@“下拉刷新“);currentIndex = 0;[self requestData];}];[_tableView addInfiniteScrollingWithActionHandler:^{NSLog(@“上拉加載“);currentIndex ++;[self requestData];}];//首次進入刷新狀態(tài)[_tableView triggerPullToRefresh];-(void)requestData{if(_seg.selectedSegmentIndex == 0){NSLog(@“qqq“);[HttpEngine getHotInfoRequestWithpage:(currentIndex+1) CompletionBlock:^(NSMutableArray *array){if (currentIndex == 0){[self.dataArray removeAllObjects];}[self.dataArray addObjectsFromArray:array];// NSLog(@“%d %d“,self.dataArray.count,array.count);[_tableView reloadData];}];}}實際測試效果圖見圖 4-5-1:20圖 4-5-1 關(guān)注界面效果4.6 設(shè)置界面這個界面展示了用戶的頭像,昵稱,還有一些 APP 的常用功能,即清空緩存,版本檢測,評分,關(guān)于 APP 等。通過自定義 tableview 實現(xiàn)。-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{if(indexPath.section ==0){ZYPersonViewController * personController = [[ZYPersonViewController alloc] init];personController.personInfo = self.personInfo;[self.navigationController pushViewController:personController animated:YES];[personController release];}if(indexPath.section == 2){if(indexPath.row==2){21ZYPingeViewController * viewController = [[ZYPingeViewController alloc] init];[self.navigationController pushViewController:viewController animated:YES];}}}實際測試效果圖見圖 4-6-1圖 4-6-1 設(shè)置界面效果5. 系統(tǒng)測試5.1 測試目的在項目完成后進行系統(tǒng)測試,可以保證所開發(fā)應(yīng)用的流暢性、無措性、滿足需求性。系統(tǒng)測試是針對整個產(chǎn)品系統(tǒng)進行的測試,過程中發(fā)現(xiàn)問題之后,需要開發(fā)人們找出錯誤原因和位置并改正。也不僅僅是為了發(fā)現(xiàn)系統(tǒng)缺陷和錯誤,也是為了對系統(tǒng)整體質(zhì)量水平進行度量和評估。在開發(fā)軟件系統(tǒng)的過程中,可能需要面對許多復(fù)雜繁瑣的問題,在軟件開發(fā)生存周期的每個階段都會不可避免的產(chǎn)生錯誤。開發(fā)人員要在每個階段完成之前進行嚴格的技術(shù)審查,盡可能早的發(fā)現(xiàn)并糾正錯誤,以達到晚上的效果。225.2 測試方法測試程序運用最多就是所謂的白盒測試和黑盒測試了。白盒測試就是對軟件系統(tǒng)的相關(guān)代碼進行詳細的測試,查看代碼的正確性和書寫規(guī)則是否正確等。黑盒測試是根據(jù)軟件的規(guī)格進行的測試,黑盒測試和白盒測試正好相反,不需要考慮軟件內(nèi)部的組成結(jié)構(gòu),只需要對軟件整體進行測試。黑盒測試需要軟件測試人員從用戶的角度來進行各項功能測試,來檢測系統(tǒng)的可行性和可操作性,同時觀察軟件中存在的各種錯誤和缺陷。黑盒測試的方法使測試人員只關(guān)心系統(tǒng)是否能夠滿足用戶的需求以及各種需求是如何實現(xiàn)的,并不關(guān)心系統(tǒng)的設(shè)計過程。對于本 APP 的測試,主要從以下幾個方面進行:(1)代碼測試:這款裝修家居 APP 的代碼測試采用的是正常數(shù)據(jù)、異常數(shù)據(jù)和錯誤數(shù)據(jù)輪換進行測試的方法。例如:在意見反饋界面輸入正確的文字、輸入很大量的文字、或?qū)D片當(dāng)成內(nèi)容添加到輸入框里,查看程序的運行情況。經(jīng)檢測,代碼的正確性和書寫規(guī)范都符合要求,達到了預(yù)期的效果。(2)程序功能測試:對這款 APP 進行大量的相同內(nèi)容的操作,禁行基本功能的體驗,查看是否完成了基本功能。經(jīng)過測試,本 APP 的基本功能運行正常,符合項目的設(shè)計需求。(3)分調(diào)和總調(diào)結(jié)合測試:該測試時貫穿于整個系統(tǒng)測試思想中的,從開始涉及每一個功能模塊開始,到最終完成系統(tǒng)的整體功能模塊設(shè)計,整個過程中,針對每個功能模塊進行適當(dāng)?shù)臏y試與修改,最后再將所有功能模塊集成在整個系統(tǒng)中進行綜合測試。23小結(jié)本 APP 采 用 OC 語 言 編 寫 , 以 Xcode 為 開 發(fā) 工 具 , 遵 循 Http 通 信 協(xié) 議 ,采 用 MVC 設(shè) 計 模 式 設(shè) 計 實 現(xiàn) 的 。這 個 APP 的 功 能 基 本 滿 足 了 用 戶 的 所 有 需 求 , 但 是 還 有 一 些 不 完 善 的 地方 , 比 如 這 個 APP 沒 有 推 送 功 能 , 無 法 增 強 用 戶 的 粘 合 性 ; 分 類 界 面 用 戶 無法 通 過 搜 索 功 能 來 搜 索 自 己 想 要 的 裝 修 方 式 , 所 以 后 期 還 需 要 做 很 多 的 工 作來 完 善 這 個 應(yīng) 用 。 這 個 APP 的 實 現(xiàn) 不 僅 僅 是 對 自 己 的 學(xué) 習(xí) 成 果 的 檢 驗 , 更 是最 自 己 的 一 個 提 升 。 有 很 多 功 能 只 有 自 己 親 身 實 現(xiàn) 出 來 才 能 更 好 理 解 這 個 知識 , 讓 自 己 的 能 力 得 到 提 升 。 比 如 在 詳 情 界 面 中 , 有 兩 種 表 , 一 種 是 文 字 性的 , 一 種 是 圖 片 性 的 , 當(dāng) 重 用 這 兩 種 表 時 怎 么 區(qū) 分 就 不 清 楚 了 。 因 此 , 還 要多 加 練 習(xí) 才 能 彌 補 自 己 在 動 手 能 力 上 的 缺 陷 , 更 加 完 善 自 己 的 程 序 功 能 。參考文獻[1] Apple Developer,Apple 文檔。[2] 張亦航,iOS 開發(fā)系列之 C/Objective-C 語言基礎(chǔ),北京:北京人民出版社,2011[3] [美 ]stephenG.Kochan. Programming in Objective-C 2.0[M] ,北京:機械工業(yè)出版社 2010[4] [美]Aaron Hillegas. 蘋果開發(fā)之 Cocoa 編程[M] ,北京:電子工業(yè)出版社.2014[5] 曾源.IOS 編程實戰(zhàn)寶典[M],北京:清華大學(xué)出版社 2014[6] 高俊峰.循序漸進服務(wù)器基本知識[M],北京:機械工業(yè)出版社 201324致謝從畢業(yè)設(shè)計的選題、任務(wù)書的書寫、畢業(yè)設(shè)計階段到畢業(yè)論文的完成,這長達半年的時間里,使我對系統(tǒng)開發(fā)的整個流程有了更深刻的認識,對本專業(yè)的基本理論、專業(yè)知識和基本技術(shù)進行了梳理,并有了更深入的了解,使我在四年中所學(xué)到的知識得到了升華,真正達到了學(xué)以致用。歲月如梭,如歌。轉(zhuǎn)眼間,四年的大學(xué)求學(xué)生活即將結(jié)束,站在畢業(yè)的門檻上,回首往昔,奮斗和辛勞成為絲絲的記憶,甜美與歡笑也都塵埃落定。河南科技學(xué)院以其優(yōu)良的學(xué)習(xí)風(fēng)氣、嚴謹?shù)目蒲蟹諊涛仪髮W(xué),以其博大包容的情懷胸襟、浪漫充實的校園生活育我成人。值此畢業(yè)論文完成之際,我謹向所有關(guān)心、愛護、幫助我的人們表示最誠摯的感謝與最美好的祝愿。本次畢業(yè)設(shè)計是在洪新華老師指導(dǎo)下完成的。在設(shè)計過程中,洪老師仔細耐心地對我的畢業(yè)設(shè)計任務(wù)及內(nèi)容進行及時指導(dǎo),并在最后對成果系統(tǒng)的設(shè)計說明書做出了全面、合理、仔細得修改批注,竭盡全力幫助我完成本次的畢業(yè)設(shè)計任務(wù)。在這里,忠心表示對洪老師的悉心關(guān)懷和耐心指導(dǎo)的無限感謝與感恩。更重要的是,在設(shè)計的過程,洪老師所具備的嚴謹求真為學(xué)的務(wù)實精神,也是我之后無論是在學(xué)習(xí)還是在工作中的學(xué)習(xí)榜樣。最后,我要衷心感謝各位老師和同學(xué)們在我的設(shè)計過程中給予我的極大幫助使我能夠及時、順利地完成此次的畢業(yè)設(shè)計。最后再一次在這里也對所有教過我的老師們表示衷心的感謝- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
10 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 畢業(yè)設(shè)計 論文 基于 IOS 開發(fā) 裝修 家居 APP 設(shè)計 實現(xiàn)
鏈接地址:http://www.820124.com/p-442523.html