iOS系統(tǒng)的在線音樂播放器手機APP設計_第1頁
iOS系統(tǒng)的在線音樂播放器手機APP設計_第2頁
iOS系統(tǒng)的在線音樂播放器手機APP設計_第3頁
iOS系統(tǒng)的在線音樂播放器手機APP設計_第4頁
iOS系統(tǒng)的在線音樂播放器手機APP設計_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

...wd...iOS系統(tǒng)的在線音樂播放器手機app設計基于iOS系統(tǒng)的在線音樂播放器,是為了給用戶提供更好的音樂播放效果,更家方便的用戶操作,享受音樂帶來的樂趣。目前大多數(shù)音樂播放器都是以計算機和電子設備做為載體,在享受音樂帶來樂趣的同時,占用系統(tǒng)內(nèi)存對比大,此次設計的音樂播放器可以合理防止內(nèi)存過大造成閃退的狀況?;趇OS的在線音樂播放器針對iPhone設備研發(fā)。因為移動設備的便利性,使音樂播放器的方便性和易操作性得到了很大的提高。本設計對開發(fā)中遇到的問題和解決方法進展了詳細的討論,該音樂播放器集播放、暫停、停頓、快進、快退、下一曲、上一曲、音量調(diào)節(jié)等功能于一體,性能良好。第一階段先對工程進展全面的、仔細的需求分析,并準確做出工程進度安排,明確每個階段的任務;第二階段是進展工程分模塊編碼;第三階段對工程進展全面測試和系統(tǒng)集成測試。在程序的開發(fā)上,因為OC語言的不可跨平臺性,所以只在OSX系統(tǒng)上進展編碼,目前,基于iOS的在線音樂播放器的手機客戶端已經(jīng)完成測試,到達預期效果。關鍵詞:音樂播放器;iOS;Objective-C目錄257361前言1170541.1軟件開發(fā)背景及意義1201071.2開展現(xiàn)狀及趨勢16211.3主要研究方法及過程2166982相關技術簡介343912.1OC語音簡介3269572.2AVaudioplayer技術35832.2.1AVaudioplayer的體系構造3101202.2.2AVaudioplayer混頻原理4107222.3JDK技術5175173需求分析7266773.1功能需求7230623.1.1播放器的根本控制需求716533.1.2功能需求分析7282313.2運行及其它需求分析8223223.3可行性分析8178563.3.1經(jīng)濟及技術可行性878923.3.2運行及法律可行性98444軟件構造及界面設計10308884.1翻開文件菜單下的詳細設計13128254.1.1翻開文件設計13244244.1.2退出系統(tǒng)設計1323784.2播放菜單下的詳細設計14312674.3顯示菜單下的詳細設計1441704.4幫助菜單下的詳細設計15141264.5播放列表的詳細設計16235904.6播放按鈕的詳細設計17243895.結論19前言1.1課題來源及研究背景當今社會的生活節(jié)奏越來越快,人們對手機的要求也越來越高,由于手機市場開展迅速,使得手機操作系統(tǒng)也出現(xiàn)了不同各類,現(xiàn)在的市場上主要有三大手機操作系統(tǒng),Windowsphone,Android,以及iOS操作系統(tǒng),其中iOS系統(tǒng)有很大的開展前景。那么能否在手機上擁有自己編寫的個性音樂播放器呢,本文的音樂播放器就是基于iOS手機平臺的播放器。1.2開發(fā)目的及意義現(xiàn)今社會生活緊張,而欣賞音樂是其中最好的舒緩壓力的方式之一。隨著人們的生活水平越來越高,人們對音樂的需求也越來越高,而傳統(tǒng)的音樂播放器又限于手機內(nèi)存,在音樂的分類和管理上有著很大的局限性。本設計的實現(xiàn)的是對音樂能夠控制播放,暫停,停頓,上一曲,下一曲,音量調(diào)節(jié),視覺外觀,播放列表和歌曲文件的管理操作等多種播放控制功能,界面簡明,操作簡單。添加了對網(wǎng)絡音樂的支持,使得手機只需要聯(lián)網(wǎng)就會瞬間擁有百萬首歌曲,不必在局限于手機內(nèi)存。豐富的歌曲分類功能,使得繁多網(wǎng)絡歌曲的管理,更加的僅僅有條。這樣就打破的傳統(tǒng)播放器內(nèi)存的限制,是人們能夠享受到更加豐富的歌曲。本工程是一款基于iOS手機平臺的音樂播放器,使iOS手機擁有個性的多媒體播放器,使手機顯得更生動靈活化,與人們更為接近,讓手機主人隨時隨地處于音樂視頻的旋律之中。使人們的生活更加多樣化。也使設計者更加熟練iOS的技術和其它在市場上的特點。1.3課題研究內(nèi)容本系統(tǒng)緊跟當前移動手機開發(fā)趨勢,使用Objective-c語言開發(fā)一個基于iOS平臺的音樂播放娛樂系統(tǒng),實現(xiàn)基于iOS平臺的音樂播放娛樂系統(tǒng)的根本功能。歌的切換以及列表顯示,在聽歌的同時能夠更好娛樂1.4論文的組織與構造第一章為緒論,介紹了本文的選題背景和意義,總結國內(nèi)外音樂播放器研究現(xiàn)狀,同時對論文研究內(nèi)容安排進展闡述。第二章對系統(tǒng)中涉及的相關理論和關鍵技術進展了研究,對Objective-C開發(fā)語言、iphone手機系統(tǒng)和MacOS相關技術進展了介紹和分析。第三章對系統(tǒng)進展研究,闡述了系統(tǒng)的功能和性能和UI界面的設計和實現(xiàn)。第四章在前面三章根基上研發(fā)出iPhone的音樂播放軟件,同時,對系統(tǒng)各模塊設計和實現(xiàn)進展分析,其中對關鍵技術給出了詳細實現(xiàn)過程。最后是論文的總結。2.相關技術概述2.1系統(tǒng)架構及開發(fā)環(huán)境簡介 開發(fā)iOS軟件需要使用蘋果官方發(fā)布的Xcode工具軟件,Xcode軟件目前已更新到第6版本,是一款相當強大的開發(fā)工具。使用Xcode我們將按圖2-1來實現(xiàn)播放器的功能。用戶根本操作用戶根本操作播放暫停上一首下一首快進快退播放模式單曲循環(huán)順序播放隨機播放圖2-1播放器功能圖2.2音樂播放器應用控件及組件介紹開發(fā)iOS軟件使用OC語言,并使用蘋果公司所開發(fā)集成的Xcode軟件,開發(fā)音樂播放器需使用到以下方法。SystemSoundServicesSystemSoundServices是最底層也是最簡單的聲音播放服務,調(diào)用AudioServicesPlaySystemSound這個方法就可以播放一些簡單的音頻文件,使用此方法只適合播放一些很小的提示或者警告音,因為它有很多限制:如:聲音長度要小于30秒、InlinearPCM或者IMA4(IMA/ADPCM)格式的打包成.caf,.aif,或者.wav的文件、不能控制播放的進度、調(diào)用方法后立即播放聲音、沒有循環(huán)播放和立體聲控制,另外,它還可以調(diào)用系統(tǒng)的震動功能,方法也很簡單。具體的代碼可以參考官方的例如

SysSound,但是官方的例如只有一些簡單的用法,從文檔中我們發(fā)現(xiàn)可以通過AudioServicesAddSystemSoundCompletion方法為音頻播放添加CallBack函數(shù),有了CallBack函數(shù)我們可以解決不少問題,比方可以抑制SystemSoundServices本身不支持循環(huán)播放的問題。AVAudioPlayer類AVAudioPlayer是AVFoundation.framework中定義的一個類,所以使用要先在工程中引入AVFoundation.framework。我們可以把AVAudioPlayer看作是一個高級的播放器,它支持廣泛的音頻格式,主要是以下這些格式:AAC、AMR(AdaptiveMulti-Rate,aformatforspeech)、ALAC(AppleLossless)、iLBC(internetLowBitrateCodec,anotherformatforspeech)、IMA4(IMA/ADPCM)、linearPCM(uncompressed)、μ-lawanda-law、MP3(MPEG-1audiolayer3

。AudioQueueServices如果以上兩種音頻播放的解決方案都無法滿足你的需求,那么我想你肯定需要使用AudioQueueServices。使用AudioQueueServices對音頻進展播放,你可以完全實現(xiàn)對聲音的控制。例如,你可以在聲音數(shù)據(jù)從文件讀到內(nèi)存緩沖區(qū)后對聲音進展一定處理再進展播放,從而實現(xiàn)對音頻的快速/慢速播放的功能。MPMusicPlayerController有兩種播放器可以選擇,一種是applicationmusicplayer,另外一種是iPodmusicplayer。第一種播放器是一種內(nèi)部播放器,當程序對出后停頓播放;而第二種播放器則與iPod播放器內(nèi)的信息相關,退出之后不會停頓播放。在播放之前需要設置隊列。MPMoviePlayerControllerMPMoviePlayerController與AVAudioPlayer有點類似,前者播放視頻,后者播放音頻,不過也有很大不同,MPMoviePlayerController可以直接通過遠程URL初始化,而AVAudioPlayer則不可以。不過大體上用起來感覺差不多。格式支持:MOV、MP4、M4V、與3GP等格式,還支持多種音頻格式2.3音樂播放器的生命周期音樂播放器行業(yè)市場供給分析及市場供給預測包括現(xiàn)在音樂播放器行業(yè)市場供給量估計量和預測未來音樂播放器行業(yè)市場的供給能力。音樂播放器行業(yè)市場需求分析及音樂播放器行業(yè)市場需求預測包括現(xiàn)在音樂播放器行業(yè)市場需求量估計和預測音樂播放器行業(yè)未來市場容量及產(chǎn)品競爭能力。通常采用調(diào)查分析法、統(tǒng)計分析法和相關分析預測法。音樂播放器行業(yè)市場需求層次和各類地區(qū)市場需求量分析即根據(jù)各市場特點、人口分布、經(jīng)濟收入、消費習慣、行政區(qū)劃、暢銷牌號、生產(chǎn)性消費等,確定不同地區(qū)、不同消費者及用戶的需要量以及運輸和銷售費用。音樂播放器行業(yè)市場競爭格局包括市場主要競爭主體分析,各競爭主體在市場上的地位,以及行業(yè)采取的主要競爭手段等;估計音樂播放器行業(yè)產(chǎn)品生命周期及可銷售時間即預測市場需要的時間,使生產(chǎn)及分配等活動與市場需要量作最適當?shù)呐浜稀Mㄟ^市場分析可確定產(chǎn)品的未來需求量、品種及持續(xù)時間;產(chǎn)品銷路及競爭能力;產(chǎn)品規(guī)格品種變化及更新;產(chǎn)品需求量的地區(qū)分布等。音樂播放器行業(yè)市場分析報告可為客戶正確制定營銷策略或投資策略提供信息支持。企業(yè)的營銷策略決策或投資策略決策只有建設在扎實的市場分析的根基上,只有在對影響需求的外部因素和影響購、產(chǎn)、銷的內(nèi)部因素充分了解和掌握以后,才能減少失誤,提高決策的科學性和正確性,從而將經(jīng)營風險降到最低限度。2.4音樂播放器應用技術的介紹Objective-C是非常實際的語言。它是一個用C寫成、很小的運行庫,只會令應用程序的尺寸增加很小,和大局部OO系統(tǒng)使用極大的VM執(zhí)行時間會取代了整個系統(tǒng)的運作相反。Objective-C寫成的程序通常不會比其原始碼大很多。而其函式庫(通常沒附在軟件發(fā)行本)亦和Smalltalk系統(tǒng)要使用極大的內(nèi)存來開啟一個窗口的情況相反。因此,Objective-C它完全兼容標準C語言〔C++對C語言的兼容僅在于大局部語法上,而在ABI〔ApplicationBinaryInterface〕上,還需要使用extern"C"這種顯式聲明來與C函數(shù)進展兼容〕,而在此根基上增加了面向對象編程語言的特性以及Smalltalk消息機制。Xcode最新版本是Xcode6,整合了蘋果在WWDC大會上發(fā)布的新語言Swift。3系統(tǒng)分析2.1可行性分析可行性分析指的是對APP需求的主要內(nèi)容以及開發(fā)條件全面分析,例如市場需求分析、資源供給、建設規(guī)模大小、制造工藝路線、型號、籌措資金、盈利方式等。從各個方面〔技術、經(jīng)濟、規(guī)模〕統(tǒng)籌分析,計算出預算、客觀地預估經(jīng)濟收益。來判定該工程是否可行。從而提出該工程是否值得投資以及意見,為工程決策提供了有力依據(jù)的一種綜合性的系統(tǒng)分析方案。2.1.1經(jīng)濟可行性分析既然我們選擇了做APP,我們必不可少的要關注經(jīng)濟可行性分析。比方我們APP的贏利點在什么地方、我們在開發(fā)過程中需要計算我們開發(fā)這個工程的資金本錢、時間本錢、是否我們后期的收益可以彌補這些前期的投入。當然我們也不能一味的去追求經(jīng)濟效益。經(jīng)濟可行性分析中的“經(jīng)濟〞不僅僅是普遍意義上的經(jīng)濟,也代表著社會經(jīng)濟效益。所以在開發(fā)中我不們開發(fā)者不能時時刻刻著想著人民幣,更應該從更多更片面的角度去對待經(jīng)濟可行性分析工作。一般來講,開發(fā)APP的本錢花銷主要由以下四局部組成的:1)購置、安裝軟硬的費用。2)系統(tǒng)開發(fā)的費用。3)系統(tǒng)安裝、運行、維護的費用。4)員工培訓的費用。所以結合畢設的整個開發(fā)過程可以知道開發(fā)網(wǎng)絡音樂播放盒所需要的全部軟件平臺都是免費的,所以從經(jīng)濟可行性上來看是完全可行的。2.1.2技術可行性分析技術可行性也是開發(fā)一款APP必不可少的工作。這個工作要求開發(fā)人員根據(jù)自身或者團隊的整體技術能力來判斷需求是否能滿足客戶需求。哪一些我們現(xiàn)在的能力可以完全勝任,又有哪一些我們需要調(diào)研學習之后可以做到,還有哪一些我們做不到,需要更優(yōu)秀的人才來補充。這個過程中我們要做充分的考察,尤其是在遇到了我們可能無法解決的問題的時候,我們不要輕易地說放棄。我們要充分利用互聯(lián)網(wǎng)帶來的便利,我們可以去網(wǎng)上去搜素相關的資源。這一切的一切最終的目的就是要盡最大可能去滿足客戶的需求。但本畢設因為只是我一個人在做并且工程涉及的業(yè)務邏輯也并不是很復雜,所以技術可行性分析我并沒有太多去考慮。2.2需求分析需求分析是指在建設一個新的APP的時候,對這個APP的目的、定義、功能這些方面所要做的工作進展統(tǒng)一規(guī)劃。需求分析是完成一APP不可或缺的局部。開發(fā)APP的過程中,我們必須跟客戶先進展一個認真的溝通并大致地了解客戶的需求。然后我們根據(jù)客戶的需求來做產(chǎn)品設計,做完之后將產(chǎn)品設計上交給客戶,讓客戶來提修改意見。如此反復我們才能最終敲定好一款APP的外形。萬丈高樓平地起,我們不要無視這個過程,更不能懈怠這個過程。因為如果我們在這個過程中進展的很成功,那么我們后期開發(fā)起來會非常得心應手。如果外形靚麗、小巧靈活的mini音樂播放盒卻很受年輕人們的青睞。市場的開展前景不容無視。綜上,設計音樂播放盒子的重點要偏向于靚麗的外觀和吸引人的性能表現(xiàn),小體積卻能夠實現(xiàn)相對更多的功能。新型的mini音樂播放盒也要附加功能,這樣就能夠更好地抓住用戶的眼球。2.3系統(tǒng)定義針對基于iOS系統(tǒng)酷狗APP的需求分析,實現(xiàn)根本的音樂播放器功能,并允許用戶訪問豆瓣服務器,播放豆瓣服務器的多媒工程。2.4功能需求此次APP的設計的大致運行流程:首先,用戶在蘋果設備APP,立馬映入眼簾的是APP的新版本介紹新特性。新特性描述了新版本音樂播放盒所具備的改動與新添加的功能。因為APP所用的資源幾乎都來自Internet,因此,新特性只是完成一個功能的表達新特性是通過手勢滑動UIScrollView來完成的,最后一頁有進入按鈕,單擊這個進入按鈕,可以直接進入到APP的主界面。程序的主界面分為兩條路線。之所以是兩條路線,后面的系統(tǒng)設計會有提到。一條路線為本地音樂,另一條路線為網(wǎng)絡音樂。本地音樂—用戶可以對其中的單個或者多個歌曲進展收藏、播放、暫停、刪除等個性化操作。滿足用戶最根本的需求的同時還可以動態(tài)瀏覽播放歌曲的歌詞。本地音樂列表的操作是可以單曲操作,也可以批量操作。還可以瀏覽音樂的詳情〔歌手、歌詞、時長、專輯〕。網(wǎng)絡音樂通過驗證登錄豆瓣服務器,獲取多媒體音樂文件。我們在對回傳的Json格式的數(shù)據(jù)進展解析從而得到多媒體資源,APP可以訪問電臺,用戶可以根據(jù)自己的洗好來選擇自己偏愛的電臺。網(wǎng)絡音樂用例圖如圖2-1所示。UUser對音樂列表的操作播放歌曲暫停歌曲上一首、下一首、快進登陸豆瓣電臺搜索歌曲退出圖2-1網(wǎng)絡音樂用例圖3.系統(tǒng)設計3.1功能描述隨著移動端互聯(lián)網(wǎng)的普及,智能手機已漸漸地漸被人們承受。它也成為了移動互聯(lián)網(wǎng)經(jīng)濟主體的一個重要成分,智能手機被越來越多人所承受、習慣;移動APP是基于操作系統(tǒng)開發(fā)。越來越多、各式各樣的功能層出不窮。Android系統(tǒng)的開源性導致了移動客戶端的質(zhì)量參差不齊,但是由于iOS限制了開發(fā)者開發(fā)中必備的條件,因此,本程序只能在MAC模擬器上或者iPhone設備上使用,無法在APPLEAPPStore上下載。首先,用戶在蘋果設備APP,立馬映入眼簾的是APP的新版本介紹新特性。新特性描述了新版本音樂播放盒所具備的改動與新添加的功能。因為APP所用的資源幾乎都來自Internet,因此,新特性只是完成一個功能的表達,并不是真正意義上的新特性描述次版本的新功能,在APP的使用過程中,請不要將新特性描述放到關注重心上。新特性是通過手勢滑動UIScrollView來完成的,最后一頁有進入按鈕,單擊這個進入按鈕,可以直接進入到APP的主界面。APP主頁有兩個選項卡。之所以是兩條路線,后面的系統(tǒng)設計會有提到。其中一個選項卡為本地音樂,另一個選項卡為網(wǎng)絡音樂。其中本地音樂是通過文件歸檔到SandBox〔本地保存Plist文件〕對音樂的保存。而網(wǎng)絡音樂是利用主界面上的登陸按鈕驗證連接豆瓣的服務器,來訪問外網(wǎng)服務器資源。本地音樂—用戶可以對其中的單個或者多個歌曲進展收藏、播放、暫停、刪除等個性化操作。滿足用戶最根本的需求的同時還可以動態(tài)瀏覽播放歌曲的歌詞。本地音樂列表的操作是可以單曲操作,也可以批量操作。還可以瀏覽音樂的詳情〔歌手、歌詞、時長、專輯〕。網(wǎng)絡音樂通過驗證登錄豆瓣服務器,獲取多媒體音樂文件。進入網(wǎng)絡音樂頁面,我們看到了兩個選項卡,一個是“歌手〞選項卡,一個是“電臺〞選項卡,歌手選項卡是通過搜索歌手的姓名來搜索音樂的,同是提供下載、播放、瀏覽。默認歌手是劉德華。電臺資源向豆瓣服務器發(fā)送GET請求,然后服務器傳遞回來數(shù)據(jù)。我們在對回傳的json格式的數(shù)據(jù)進展解析從而得到多媒體資源。服務器上已經(jīng)將同類別頻道的音樂歸并到一起了,這使得APP可以訪問電臺,用戶可以根據(jù)自己的洗好來選擇自己偏愛的電臺。3.2系統(tǒng)功能模塊化設計3.2.1新特性模塊顯示的條件:首次進入APP||判斷info.Plist中的version如果與上一版本不符。此功能主要是讓用戶更好、更快地了解APP包含的新功能、已經(jīng)修復的內(nèi)容。此功能適用以營利為目的的商業(yè)客戶需求,為追求更好的用戶體驗而制作的。因為資源有限,所以本模塊功能根本來源于網(wǎng)絡,不能用于與商業(yè)。3.2.2本地列表模塊本地列表模塊主要包含以下幾個功能:修改功能:單擊界面上的“pen〞圖標,可對列表中的歌曲進展修。列表的修改可以是單個歌曲,同樣也可以多個歌曲。其中修改操作包括模式修改〔模式修改指的是,用戶在播放音樂的時候選擇的播放順序:隨機、順序、循環(huán)、單曲4個模式〕、全選、加載〔加載存儲在本地資源包中的Plist文件,因為本APP采取DE是以Plist的方式存儲,因此無法修改。又由于iOS的封閉性,導致了無法瀏覽本地音樂。所以此功能算是一個對比限制用戶體驗的功能;刪除〔此功能可以與全選功能配合,也可以對單個歌曲進展操作?!场R魳凡シ殴δ埽罕続PP的名字就是音樂播放器,那么自然音樂播放成為了它的核心內(nèi)容。此功能利用了OC語言分裝的AVAudioPlayer類實現(xiàn)播放功能歌詞瀏覽功能:此功能可以瀏覽存儲在本地SandBox的歌詞文件,因為局部的歌詞文件兼容很差,所以有時會顯示亂碼,但根本不影響用戶的正常使用。單一歌曲操作功能:對選擇的歌曲個性化地放到我喜歡數(shù)組中〔平時可以單獨地播放我喜歡列表,這樣可以完善了更好的用戶體驗〕。3.3系統(tǒng)總體構造圖根據(jù)需求調(diào)研結果確定APP主要包括以下幾個功能模塊。系統(tǒng)功能構造圖如圖3-1所示。圖3-1系統(tǒng)功能構造圖3.3數(shù)據(jù)庫設計3.3.1數(shù)據(jù)庫設計概述從1980至今,數(shù)據(jù)庫技術在商業(yè)領域的巨大刺激下以及客戶對數(shù)據(jù)庫技術需求的迅速增長,致使數(shù)據(jù)庫技術得到了飛速的開展。尤其表現(xiàn)在:數(shù)據(jù)庫和各平臺的相互嵌入。眾所周知,SQLite是基于嵌入式的方式開發(fā)的,所以SQLite或者其他的數(shù)據(jù)庫都可以和各種平臺合理的嵌入,這就使得數(shù)據(jù)庫領域有各式各樣的變化與組合,這里我們有兩種方式來設計數(shù)據(jù)庫:一:以信息需求為主,處理需求為輔。這種方法稱為面向數(shù)據(jù)的數(shù)據(jù)庫設計方法;二:以處理需求為主,信息需求為輔。這種方法稱為面向過程的數(shù)據(jù)庫設計方法。數(shù)據(jù)庫設計的特點如下:1.反復性(Iterative)。2.試探性(Tentative)。3.分步進展。數(shù)據(jù)庫設計的過程6各階段:需求分析、概念構造設計、邏輯構造設計、數(shù)據(jù)庫物理設計、數(shù)據(jù)庫實施、數(shù)據(jù)庫運行和維護在設計的過程中我們應該包含兩方面的內(nèi)容:〔1〕數(shù)據(jù)構造設計:也就是設計數(shù)據(jù)庫框架和數(shù)據(jù)庫構造,數(shù)據(jù)庫模式是各應用程序共享的構造,是穩(wěn)定的、永久的構造,所以一個數(shù)據(jù)庫的合理設計可以讓我們后期的開發(fā)奠定一個良好的開場與根基。〔2〕行為〔處理〕設計:即設計應用程序、事務處理等構造特性不能與行為特性別離。靜態(tài)的構造特性的設計與動態(tài)的行為特性的設計別離,會導致數(shù)據(jù)與程序不易結合,增加數(shù)據(jù)庫設計的復雜性。3.3.2E-R圖簡述我理解中的ER圖:將功能模型與數(shù)據(jù)模型的關系以圖形的方式展示給開發(fā)人員。這樣便于我們理解內(nèi)容聯(lián)系。更直觀、更容易理解。實體型:用矩形表示,矩形框內(nèi)寫明實體名;屬性:用橢圓形表示,并用無向邊將其與相應的實體連接起來;聯(lián)系:用菱形表示,菱形框內(nèi)寫明聯(lián)系名。3.3.3系統(tǒng)數(shù)據(jù)庫設計針對播放盒APP的特點,數(shù)據(jù)庫設計各個局部的數(shù)據(jù)項與數(shù)據(jù)構造如下所示。本地音樂模型圖如圖3-2所示。豆瓣登陸E-R圖如圖3-3所示。圖3-2本地音樂豆瓣登陸Alta豆瓣登陸AltavatarcreateddescIs_bannedIs_suicideIoc_idloginnametypesignatureuid其主要的表構造如下。我的音樂表如表3-1所示,豆瓣服務器表如表3-2所示。表3-1我的音樂表字段名說明類型長度可否為空主鍵Name歌曲名稱String50否主鍵Singer歌手名稱String10是Time歌曲時長String4否Index索引String8否Geci歌詞文件String50是Playurl播放地址String1000否表3-2豆瓣服務器字段名說明類型長度可否為空主鍵Alt網(wǎng)址String300否主鍵avatar頭像String300是created創(chuàng)立時間String10否desc描述String100否Is_banned字段Boolean1是Is_suicide字段Boolean1否Large_avatar大圖String10否Loc_idIDString10否login登陸B(tài)oolean1否signature字段String10否type類型String10否uidIDString1000否4.系統(tǒng)實現(xiàn)4.1UI實現(xiàn)播放器播放界面功能實現(xiàn)播放功能的具體代碼如下:-(void)startMusic{openOrClose++;if(openOrClose%2==1){[startButtonsetBackgroundImage:[UIImageimageNamed:@"play_bar_passed.png"]forState:UIControlStateNormal];[smallProgressViewprogressViewBegin];currentMusicName.text=[musicArrayobjectAtIndex:curMusicNumber];NSURL*audioFileUrl=[NSURLfileURLWithPath:[[NSBundlemainBundle]pathForResource:[musicArrayobjectAtIndex:curMusicNumber]ofType:@"mp3"]];audioPlay=[[AVAudioPlayeralloc]initWithContentsOfURL:audioFileUrlerror:nil];audioPlay.delegate=self;[audioPlayplay];[smallProgressViewtheTotalTimeOfMusic:audioPlay.duration];inti=(int)audioPlay.duration/60;intj=(int)audioPlay.duration%60;totalTime.text=[NSStringstringWithFormat:@"%02d:%02d",i,j];[lastArrayaddObject:[musicArrayobjectAtIndex:curMusicNumber]];}else{[startButtonsetBackgroundImage:[UIImageimageNamed:@"playarticle_play.png"]forState:UIControlStateNormal];[smallProgressViewprogressViewStop];}}播放功能的實現(xiàn)是通過AVAudioPlayer類庫來實現(xiàn)的,其中audioFileUrl是要播放音樂的本地路徑。在播放的過程中通過自己封裝的進度條類來判斷歌曲播放的時間。4.2功能實現(xiàn)播放進度的跟蹤顯示在播放音樂的時侯,我們希望可以看到播放的進度,通過拉動進度條來方便快捷的實現(xiàn)對歌曲的快進,快退的功能。通過創(chuàng)立一個計時器,利用計時器來實時更新進度條。而進度條的進度顯示是用UISlider控件控件。其value的值為0到1,利用正在播放的時間與一共的時長之比來控制UISlider的值,到達進度條的跟著顯示。UISlider具有一個change事件,可以改變value的值來設置當前播放的一個進度,來到達一個快進,快退的功能具體代碼如下:-(id)init{if(self==[superinit]){self.curTime=[[UILabelalloc]init];self.curTime.backgroundColor=[UIColorclearColor];self.curTime.font=[UIFontsystemFontOfSize:12];self.curTime.textColor=[UIColorwhiteColor];}returnself;}-(double)theTotalTimeOfMusic:(double)totalTime{allTime=totalTime;returnallTime;}-(double)theTimeOfMusicRun{returntheTimeHaveRun;}-(void)progressViewBegin{theTimeHaveRun=0.0;if(theTimeHaveRun<=allTime){time=[NSTimerscheduledTimerWithTimeInterval:1.0target:selfselector:@selector(changeProgressView)userInfo:nilrepeats:YES];}}-(void)progressViewStop{[timeinvalidate];}-(void)progressViewGoOnRunning-(void)changeProgressView{theTimeHaveRun+=1.0;if(theTimeHaveRun>allTime){[timeinvalidate];}else{[selfsetProgress:theTimeHaveRun/allTime];}inti=(int)theTimeHaveRun/60;intj=(int)theTimeHaveRun%60;curTime.text=[NSStringstringWithFormat:@"%02d:%02d",i,j];}其中init方法是自動生本錢身的元素,在此類中包含了進度條開場的方法,進度條暫停的方法,進度條改變的方法,以及向其他的類傳輸數(shù)據(jù)的方法,例如傳輸播放了多長的時間等等。歌詞的同步顯示有了以上功能,對歌詞的顯示以上一個必不可少的功能。即是以“時間+歌詞〞的格式存儲。那么歌詞的顯示形式主要是通過播放的時間與歌詞顯示的時間相比照,如果一致則顯示。因此,通過將歌詞和時間分別用兩個數(shù)組裝入,當正在播放的時間與數(shù)組中某個時間相對應的時侯,顯示出當前的歌詞。界面上的顯示方式主要是通過UILable來顯示的。有的人不喜歡一句一句的看歌詞,想看更多的歌詞,那么就參加了全屏歌詞的顯示。全屏顯示的歌詞采用的是將所有的歌詞裝入可變字符串,并對每一句添加分隔符,裝入UItextView中,通過正在播放時間與歌詞的時間比照,來調(diào)整UItextView內(nèi)容的高度。而textview具有著滑動的動畫效果,使得整個歌詞上移的效果更加平滑代碼如下-(id)init{if(self==[superinit]){musicLicArray=[[NSMutableArrayalloc]initWithCapacity:0];totalLicArray=[[NSMutableArrayalloc]initWithCapacity:0];getAllOfMusicLrc=[[NSMutableArrayalloc]initWithCapacity:0];lineOfMusicLrc=0;}returnself;}-(void)getTheMusicLicStr:(NSString*)str{musicLicArray=[NSMutableArrayarrayWithArray:[strcomponentsSeparatedByCharactersInSet:[NSCharacterSetcharacterSetWithCharactersInString:@"[\n"]]];[musicLicArrayremoveObject:@""];for(NSString*stringinmusicLicArray){NSMutableArray*son=[[NSMutableArrayalloc]initWithCapacity:0];NSArray*arr=[stringcomponentsSeparatedByString:@"]"];NSArray*num=[[arrobjectAtIndex:0]componentsSeparatedByCharactersInSet:[NSCharacterSetcharacterSetWithCharactersInString:@":."]];CGFloatnu=[[numobjectAtIndex:0]integerValue]*6000+[[numobjectAtIndex:1]integerValue]*60+[[numobjectAtIndex:2]integerValue];NSString*number=[NSStringstringWithFormat:@"%.0f",nu];//[sonsetObject:[arrobjectAtIndex:1]forKey:number];[sonaddObject:number];[sonaddObject:[arrobjectAtIndex:1]];[totalLicArrayaddObject:son];}for(inti=0;i<[totalLicArraycount];i++){[getAllOfMusicLrcaddObject:[[totalLicArrayobjectAtIndex:i]objectAtIndex:1]];}}-(NSString*)getTheTimeOfMusic:(double)time{doubledoi=time*100;for(inti=0;i<[totalLicArraycount];i++){if(doi>=[[[totalLicArrayobjectAtIndex:i]objectAtIndex:0]doubleValue]&&doi<[[[totalLicArrayobjectAtIndex:i+1]objectAtIndex:0]doubleValue]){lineOfMusicLrc=i;return[[totalLicArrayobjectAtIndex:i]objectAtIndex:1];}}returnnil;}-(NSMutableArray*)getTheTotilOfMusicLrc{returngetAllOfMusicLrc;}-(NSInteger)getTheNmuberOfMusicLrc{returnlineOfMusicLrc;}本段代碼的運行過程是,在歌曲開場進展播放后,將播放的歌曲名傳給此類,此類從自己相應的地方得到全部的歌詞。歌詞是以lrc格式存儲起來的,歌詞類得到全部歌詞后,根據(jù)自己的相應方法,將全部的歌詞分成一句句的顯示在相應的UITableView上。其中將全部歌詞變成一句句的方法是getTheMusicLicStr。此方法根據(jù)得到的歌詞格式進展分割字符串,并將每一句以字符串的形式存儲到totalLicArray數(shù)組中。播放列表功能重要代碼如下:-(void)downLoadFromUrl:(NSURL*)url{myData=[[NSMutableDataalloc]init];NSURLRequest*request=[NSURLRequestrequestWithURL:url];myConnection=[[NSURLConnectionalloc]initWithRequest:requestdelegate:self];}-(void)connection:(NSURLConnection*)connectiondidReceiveData:(NSData*)data{[myDataappendData:data];}-(void)connection:(NSURLConnection*)connectiondidReceiveResponse:(NSURLResponse*)response{[myDatasetLength:0];}-(void)connectionDidFinishLoading:(NSURLConnection*)connection{if([delegaterespondsToSelector:@selector(downLoadComplited:)]){[delegatedownLoadComplited:self];}}播放列表主要采用了表示圖:UITableView來進展顯示。這樣可以更加直觀,更加方便的顯示數(shù)據(jù)??梢酝ㄟ^設置它的代理UITableViewDelegate。實現(xiàn)的主要形式是:設置tableView的組件為1個:numberOfSectionsInTableView:,設置行數(shù):numberofRowsInSection:,設置每行的內(nèi)容:cellForRowAtIndexPath。當點擊的時侯會出發(fā)didselect事件,實現(xiàn)歌曲的播放。搜索功能網(wǎng)絡歌曲的搜索對于快速查找到自己想找的歌曲是十分有必要的。這里選擇的歌曲搜索庫是來至于網(wǎng)絡的。比方我們選擇一首叫滴答的歌曲。只需要使用ASIRequest來請求接口:://mp3.sogou/music.so?query=%B5%CE%B4%F0&class=1&st=&ac=1&pf=&_asf=mp3.sogou&_ast=1338472690&p=&w=&w=02009900&sut=3384&sst0=滴答。這就是搜狗的一個搜索頁面,通過它來獲取需要的歌曲信息。對于獲取到的字符串信息,可以通過UItableview來顯示。4.3存儲操作實現(xiàn)實體聯(lián)系模型主要是由實體、屬性以及實體之間的聯(lián)系組成[12]。通過對現(xiàn)實世界的概念模型的抽象,確立實體為歌曲、歌詞、用戶。根據(jù)音樂播放器的功能需求的分析結果,得出數(shù)據(jù)庫的E-R圖5-5如下所示:根據(jù)數(shù)據(jù)字典中的數(shù)據(jù)存儲、數(shù)據(jù)流、處理邏輯、實體的屬性及以上數(shù)據(jù)庫設計中的概念構造設計模型,建設相關表進而得到數(shù)據(jù)庫的邏輯構造設計,即數(shù)據(jù)庫表。完畢語在經(jīng)過為期兩個月的畢業(yè)設計后,基于iOS的音樂播放器的功能得以實現(xiàn)。在開發(fā)之初就應該想好總體框架構造以及假設何進展每一步的操作。開發(fā)者需要有清晰地邏輯思路并以科學的方法來開發(fā)應用。本設計的題目為“基于iOS的音樂播放器的設計與實現(xiàn)〞。音樂播放器設計的主要內(nèi)容是進展音樂的播放、下載等功能模塊的實現(xiàn)上。因此為能夠很好的實現(xiàn)系統(tǒng)設計目標,突出音樂播放器所需實現(xiàn)功能,在開發(fā)過程中,由于自己開場沒有思考全面導致后來開發(fā)程序的過程中出現(xiàn)了一些偏差,以至于使自己引入了許多的變量來標志這些數(shù)組、UItableView。本人開發(fā)的這款音樂播放器的特點是幾乎所有的操作都在一個視圖控制器中進展,而UItableView的顯示、選擇也只能都在這一個視圖中進展。使每一個產(chǎn)生的UItableView都只能運行這個控制器中的唯一的顯示、選擇方法。在開發(fā)到最后發(fā)現(xiàn)自己在這控制器中增加變量的方法,很是繁瑣,懊悔開場時為何不將UItalbeView單獨寫成一個類,在類中添加他自己的標志變量。這程序中所有的UItableView,他們具有不同的關系。他們之間的關系,在運行程序的過程中與哪個引導出了哪個,以便程序可以按照原路返回。由于自己開發(fā)經(jīng)歷缺乏知識有限,在開發(fā)過程中出現(xiàn)了許多冗余代碼。在設計中同樣遇到很多之前調(diào)試系統(tǒng)所沒有遇到過的異常、錯誤信息。通過這次設計本人得到的啟示是在開發(fā)過程中要有清晰地設計思路,盡量簡化設計。同時通過這次的設計使自己更好地了解到在知識方面的缺乏,明確今后需要努力的方向。中國地質(zhì)大學長城學院本科畢業(yè)論文外文資料翻譯系別:管理科學與工程系專業(yè):信息管理與信息系統(tǒng)姓名:學號:2016年3月7日外文資料翻譯譯文一種新的網(wǎng)絡應用程序開發(fā)框架——MVC摘要:MVC(Model/View/Controller)的設計模式出現(xiàn)在在Smalltalk-80,并在軟件的設計中廣泛應用。本文介紹一種基于MVC框架的的新網(wǎng)絡應用程序。這種框架把實施邏輯與表現(xiàn)形式獨立開來。它也提高了系統(tǒng)的可維護性,可擴展性以及使用模塊數(shù)據(jù)庫備案、模板數(shù)據(jù)庫,通訊對象和緩沖隊列的性能。關鍵詞:MVC、設計模式、網(wǎng)絡應用程序1.簡介網(wǎng)絡應用系統(tǒng)是一個基于B(rowser)/S(erver)模型應用系統(tǒng)。它利用多種動態(tài)網(wǎng)頁開發(fā)技術。目前,軟件設計的主題之一是網(wǎng)絡應用開發(fā)模式和工具的。它們直接影響系統(tǒng)的幾個關鍵因素,比方可維護性、可擴展性、穩(wěn)定性和安全性。本文中,基于MVC[1]的網(wǎng)絡應用程序的設計模式是為解決這兩類因素——擴展性和可維護性這些不易處理的問題。把MVC設計模式引入網(wǎng)絡應用程序開發(fā),執(zhí)行邏輯可以獨立于系統(tǒng)的表現(xiàn)形式。MVC由三種對象組成。1)模型:是應用對象,2)視圖:是它的屏幕的顯示,3)控制器:定義用戶界面并對輸入的信息做出響應。在出現(xiàn)MVC之前,用戶界面的設計傾向于把這些東西做在一起。然而,MVC獨立了它們,增加系統(tǒng)的靈活性和可重用性。MVC把視圖和模型獨立開來,在它們之間建設了“subscribe/notify〞協(xié)議。一個視圖必須確保其正確反映模型的狀態(tài)。每當模型的數(shù)據(jù)發(fā)生改變,視圖會得到相應的通知。作為回應,每個視圖都會有更新自身的時機。這個方法可以讓你附上一個模型的多個視圖以便提供不同的報告。你也可以不改變原模型同時創(chuàng)立新的視圖。2.背景和存在的問題雖然MVC的設計模式已經(jīng)在smalltalk-80中提出了,并廣泛應用于軟件設計,介紹它到網(wǎng)頁應用程序開發(fā)卻仍很困難的。主要由于以下兩個因素:1)首先,很難獨立來自OC的編程語言。早期的CGI程序使用字符串輸出創(chuàng)造了HTML內(nèi)容。默認的,將HTML文本分成幾份,然后把他們嵌入到CGI程序中。腳本語言出現(xiàn)后,變成了腳本語言編寫的程序嵌入到HTML文本中。然而,這兩種方法有一個共同的缺乏,使他們不能完全獨立于HTML文本。因此,這兩種方法使采用MVC別離三層模式十分難以實現(xiàn)。2)第二,腳本語言的功能太弱。他們?nèi)狈σ恍┍匾募夹g支持來采用MVC的設計模式,如消息機制和事件回應機制。直到Model2版,這種情況并沒有受到任何改善。依靠強大的OC語言功能,Model2[4]某種程度上實行MVC設計理念。圖1顯示了MVC的機制:?模型(數(shù)據(jù)層):它是封裝到企業(yè)JavaBean。?視圖(表示層):view負責的網(wǎng)頁方式,如報告的格式,分頁等。?控制器(控制層):Servlet受到網(wǎng)頁上的用戶的輸入并執(zhí)行有關的操作(呼叫相應的EJB組件),給出了相關視圖,所以會呈現(xiàn)這些結果。Model2機制主要滿足了開發(fā)商對要求Web應用邏輯和用戶界面獨立的需求。但制仍然存在某些限,例如,盡管Model2已經(jīng)實施采用MVC設計模式的根本理念,三個層次之間的相互關系(Servlet,JavaBean/EJB)仍然封閉。特別是,就Servlet當控制器,不僅控制選擇同時響應模型的模塊,還負責對處理JSP轉移數(shù)據(jù)提供模塊。因為這一過程,Servlet本身已實現(xiàn)非常復雜的執(zhí)行邏輯,對于體系的開展和維護這是正是一個棘手的問題。因此,在下面的網(wǎng)絡應用系統(tǒng)框架,我們會進一步劃分出功能的控制器。3.解決方案圖2中顯示,這一系統(tǒng)框架包含三個內(nèi)核控制對象/類(UIViewController,ModelCenter,andLPM(LogicalPageModule)Center)和它們的核心數(shù)據(jù)庫(systemdescriptiondataba

溫馨提示

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

評論

0/150

提交評論