freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于ios系統(tǒng)的在線(xiàn)音樂(lè)播放器手機(jī)app設(shè)計(jì)-資料下載頁(yè)

2024-12-03 19:30本頁(yè)面

【導(dǎo)讀】足了各層次消費(fèi)者的需求。最新的調(diào)查顯示比較大的音樂(lè)播放器市場(chǎng),并不是很樂(lè)觀。穎、小巧輕便靈活的迷你播放器卻很受年輕人的青睞和歡迎。此次設(shè)計(jì)是基于ios系統(tǒng),為了使。用戶(hù)體驗(yàn)更加方便,開(kāi)發(fā)簡(jiǎn)潔優(yōu)化的在線(xiàn)音樂(lè)播放器,并將所學(xué)知識(shí)運(yùn)用到設(shè)計(jì)過(guò)程中去。的內(nèi)容主要包括:從網(wǎng)絡(luò)上搜索想要的歌曲、播放本地貨網(wǎng)上的歌曲、暫停歌曲播放等。業(yè)務(wù)流程用途、數(shù)據(jù)流程圖、數(shù)據(jù)字典、界面設(shè)計(jì)等等。要求整個(gè)系統(tǒng)的設(shè)計(jì)完整,功能齊全,代碼正確,符合編程規(guī)范。使用ios布局文件搭構(gòu)界面,使用IOS開(kāi)發(fā)工具Xcode進(jìn)行設(shè)計(jì)。[6]楊正洪.Objective-C程序設(shè)計(jì)[M],清華大學(xué)出版社,3.開(kāi)題報(bào)告之前要撰寫(xiě)出畢業(yè)設(shè)計(jì)的大綱,并根據(jù)開(kāi)題報(bào)告中教師提出的意見(jiàn)進(jìn)行修改。稿按要求打印上交。

  

【正文】 調(diào)研結(jié)果確定 APP 主要包括以下幾個(gè)功能模塊。系統(tǒng)功能結(jié)構(gòu)圖如圖31 所示。 東華理工大學(xué)畢業(yè)設(shè)計(jì) (論文 ) 系統(tǒng) 設(shè)計(jì) 圖 31 系統(tǒng)功能結(jié)構(gòu)圖 數(shù)據(jù)庫(kù)設(shè)計(jì) 數(shù)據(jù)庫(kù)設(shè)計(jì)概述 從 1980至今 ,數(shù)據(jù)庫(kù)技術(shù)在商業(yè)領(lǐng)域的巨大刺激 下以及客戶(hù) 對(duì)數(shù)據(jù)庫(kù)技術(shù)需求的迅速增長(zhǎng),致使 數(shù)據(jù)庫(kù)技術(shù)得到了 飛速的 發(fā)展 。尤 其 表現(xiàn)在 :數(shù)據(jù)庫(kù)和各平臺(tái)的相互嵌入。眾所周知, SQLite是基于嵌入式的方式開(kāi)發(fā)的,所以 SQLite 或者其他的數(shù)據(jù)庫(kù)都可以和各種平臺(tái)合理的嵌入,這就使得數(shù)據(jù)庫(kù)領(lǐng)域有各式各樣的變化與組合, 這里我們有兩種方式來(lái)設(shè)計(jì)數(shù)據(jù)庫(kù):一: 以信息需求為主,處理需求 為輔。 這種方法稱(chēng)為面向數(shù)據(jù)的 數(shù)據(jù)庫(kù) 設(shè)計(jì)方法; 二: 以處理需求為主,信息需求 為輔。 這種方法稱(chēng)為面向過(guò)程的 數(shù)據(jù)庫(kù) 設(shè)計(jì)方法。數(shù)據(jù)庫(kù)設(shè)計(jì)的 特點(diǎn)如下 : (Iterative)。 (Tentative)。 。數(shù)據(jù)庫(kù)設(shè)計(jì)的過(guò)程 6各階段: 需求分析 、 概念結(jié)構(gòu)設(shè)計(jì) 、 邏輯結(jié)構(gòu)設(shè)計(jì) 、 數(shù)據(jù)庫(kù)物理設(shè)計(jì) 、 數(shù)據(jù)庫(kù)實(shí)施 、 數(shù)據(jù)庫(kù)運(yùn)行和維護(hù) 在設(shè)計(jì)的過(guò)程中我們應(yīng)該 包含兩方面的內(nèi)容: ( 1) 數(shù)據(jù)結(jié)構(gòu) 設(shè)計(jì):也就是設(shè)計(jì)數(shù)據(jù)庫(kù)框架 和 數(shù)據(jù)庫(kù)結(jié)構(gòu) , 數(shù)據(jù)庫(kù)模式是各應(yīng)用程序共享的結(jié)構(gòu),是穩(wěn)定的、永久的結(jié)構(gòu) ,所以一個(gè)數(shù)據(jù)庫(kù)的合理設(shè)計(jì)可以讓我們后期的開(kāi)發(fā)奠定一個(gè)良好的開(kāi)始與基礎(chǔ)。 東華理工大學(xué)畢業(yè)設(shè)計(jì) (論文 ) 系統(tǒng) 設(shè)計(jì) ( 2) 行為(處理)設(shè)計(jì):即設(shè)計(jì)應(yīng)用程序、事務(wù)處理等結(jié)構(gòu)特性不能 與行為特性分離。靜態(tài)的結(jié)構(gòu)特性的設(shè)計(jì)與動(dòng)態(tài)的行為特性的設(shè)計(jì)分離,會(huì)導(dǎo)致數(shù)據(jù)與程序不易結(jié)合,增加數(shù)據(jù)庫(kù)設(shè)計(jì)的復(fù)雜性。 ER 圖簡(jiǎn)述 我理解中的 ER 圖:將功能模型與數(shù)據(jù)模型的關(guān)系以圖形的方式展示給開(kāi)發(fā)人員。這樣便于我們理解內(nèi)容聯(lián)系。更直觀、更容易理解。 實(shí)體型:用矩形表示,矩形框內(nèi)寫(xiě)明實(shí)體名; 屬 性:用橢圓形表示,并用無(wú)向邊將其與相應(yīng)的實(shí)體連接起來(lái); 聯(lián) 系:用菱形表示,菱形框內(nèi)寫(xiě)明聯(lián)系名。 系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì) 針對(duì)播放盒 APP的特點(diǎn),數(shù)據(jù)庫(kù)設(shè)計(jì)各個(gè)部分的數(shù)據(jù)項(xiàng)與數(shù)據(jù)結(jié)構(gòu)如下所示。本地 音樂(lè)模型圖如圖 32所示。豆瓣登陸 ER圖如圖 33所示。 圖 32 本地音樂(lè) 東華理工大學(xué)畢業(yè)設(shè)計(jì) (論文 ) 系統(tǒng) 設(shè)計(jì) 圖33 豆瓣登陸 其主要的表結(jié)構(gòu)如下。我的音樂(lè)表如表 31 所示,豆瓣服務(wù)器表如表 32 所示。 表 31 我的音樂(lè)表 字段名 說(shuō)明 類(lèi)型 長(zhǎng)度 可否為空 主鍵 Name 歌曲名稱(chēng) String 50 否 主鍵 Singer 歌手名稱(chēng) String 10 是 Time 歌曲時(shí)長(zhǎng) String 4 否 Index 索引 String 8 否 Geci 歌詞文 件 String 50 是 Playurl 播放地址 String 1000 否 表 32 豆瓣服務(wù)器 字段名 說(shuō)明 類(lèi)型 長(zhǎng)度 可否為空 主鍵 Alt 網(wǎng)址 String 300 否 主鍵 avatar 頭像 String 300 是 created 創(chuàng)建時(shí)間 String 10 否 desc 描述 String 100 否 Is_banned 字段 Boolean 1 是 Is_suicide 字段 Boolean 1 否 Large_avatar 大圖 String 10 否 Loc_id ID String 10 否 login 登陸 Boolean 1 否 signature 字段 String 10 否 type 類(lèi)型 String 10 否 uid ID String 1000 否 豆瓣登陸 Alt avatar created desc Is_banned Is_suicide Ioc_id login name type signature uid 4. 系統(tǒng) 實(shí)現(xiàn) UI 實(shí)現(xiàn) 播放器播放界面功能實(shí)現(xiàn) 播放功能的具體代碼如下: (void)startMusic { openOrClose++。 if(openOrClose%2==1) { [startButton setBackgroundImage:[UIImage imageNamed:@] forState:UIControlStateNormal]。 [smallProgressView progressViewBegin]。 =[musicArray objectAtIndex:curMusicNumber]。 NSURL *audioFileUrl=[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[musicArray objectAtIndex:curMusicNumber] ofType:@mp3]]。 audioPlay=[[AVAudioPlayer alloc]initWithContentsOfURL:audioFileUrl error:nil]。 =self。 [audioPlay play]。 [smallProgressView theTotalTimeOfMusic:]。 int i=(int)。 int j=(int)%60。 =[NSString stringWithFormat:@%02d:%02d,i,j]。 [lastArray addObject:[musicArray objectAtIndex:curMusicNumber]]。 } else { [startButton setBackgroundImage:[UIImage imageNamed:@] forState:UIControlStateNormal]。 [smallProgressView progressViewStop]。 } } 播放功能的實(shí)現(xiàn)是通過(guò) AVAudioPlayer 類(lèi)庫(kù)來(lái)實(shí)現(xiàn)的 ,其中 audioFileUrl 是要播放音樂(lè)的本地路徑。在播放的過(guò)程中通過(guò)自己封裝的進(jìn)度條類(lèi)來(lái)判斷歌曲播放的時(shí)間。 功能實(shí)現(xiàn) 播放進(jìn)度的跟蹤顯示 在播放音樂(lè)的時(shí)侯,我們希望可以看到播放的進(jìn)度,通過(guò)拉動(dòng)進(jìn)度條來(lái)方便快捷的實(shí)現(xiàn)對(duì)歌曲的快進(jìn),快退的功能。通過(guò)創(chuàng)建一個(gè)計(jì)時(shí)器,利用計(jì)時(shí)器來(lái)實(shí)時(shí)更新進(jìn)度條。 而進(jìn)度條的進(jìn)度顯示是用 UISlider 控件控件。其 value 的值為 0 到 1,利用正在播放的時(shí)間與一共的時(shí)長(zhǎng)之比來(lái)控制 UISlider 的值,達(dá)到進(jìn)度條的跟著顯示。 UISlider 具有一個(gè) change 事件,可以改變 value 的值來(lái)設(shè)置當(dāng)前播放的一個(gè)進(jìn)度,來(lái)達(dá)到一個(gè)快進(jìn),快退的功能 具體代碼如下: (id)init { if(self==[super init]) { =[[UILabel alloc]init]。 =[UIColor clearColor]。 =[UIFont systemFontOfSize:12]。 =[UIColor whiteColor]。 } return self。 } (double)theTotalTimeOfMusic:(double)totalTime { allTime=totalTime。 return allTime。 } (double)theTimeOfMusicRun { return theTimeHaveRun。 } (void)progressViewBegin { theTimeHaveRun=。 if(theTimeHaveRun=allTime) { time=[NSTimer scheduledTimerWithTimeInterval: target:self selector:@selector(changeProgressView) userInfo:nil repeats:YES]。 } } (void)progressViewStop { [time invalidate]。 } (void)progressViewGoOnRunning (void)changeProgressView { theTimeHaveRun+=。 if(theTimeHaveRunallTime) { [time invalidate]。 } else { [self setProgress:theTimeHaveRun/allTime]。 } int i=(int)theTimeHaveRun/60。 int j=(int)theTimeHaveRun%60。 =[NSString stringWithFormat:@%02d:%02d,i,j]。 } 其中 init 方法是自動(dòng)生成本身的元素,在此類(lèi)中包含了進(jìn)度條開(kāi)始的方法,進(jìn)度條暫停的方法,進(jìn)度條改變的方法,以及向其他的類(lèi)傳輸數(shù)據(jù)的方法,例如傳輸播放了多長(zhǎng)的時(shí)間等等。 歌詞的同步顯示 有了以上功能,對(duì)歌詞的顯示以上一個(gè)必不可少的功能。即是以 “時(shí)間 +歌詞 ”的格式存儲(chǔ)。那么歌詞的顯示形式主要是通過(guò)播放的時(shí)間與歌詞顯示的時(shí)間相對(duì)比,如果一致則顯示。因此,通過(guò)將歌詞和時(shí)間分別用兩個(gè)數(shù)組裝入,當(dāng)正在播放的時(shí)間與數(shù)組中某個(gè)時(shí)間相對(duì)應(yīng)的時(shí)侯,顯示出當(dāng)前的歌詞。界面上的顯示方式主要是通過(guò) UILable 來(lái)顯示的。 有的人不喜 歡一句一句的看歌詞,想看更多的歌詞,那么就加入了全屏歌詞的顯示。全屏顯示的歌詞采用的是將所有的歌詞裝入可變字符串,并對(duì)每一句添加分隔符,裝入U(xiǎn)ItextView 中,通過(guò)正在播放時(shí)間與歌詞的時(shí)間對(duì)比,來(lái)調(diào)整 UItextView 內(nèi)容的高度。而 textview 具有著滑動(dòng)的動(dòng)畫(huà)效果,使得整個(gè)歌詞上移的效果更加平滑 代碼如下 (id)init { if(self==[super init]) { musicLicArray=[[NSMutableArray alloc]initWithCapacity:0]。 totalLicArray=[[NSMutableArray alloc]initWithCapacity:0]。 getAllOfMusicLrc=[[NSMutableArray alloc]initWithCapacity:0]。 lineOfMusicLrc=0。 } return self。 } (void)getTheMusicLicStr:(NSString *)str { musicLicArray=[NSMutableArray arrayWithArray:[str ponentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@[\n]]]。 [musicLicArray removeObject:@]。 for(NSString *string in musicLicArray) { NSMutableArray *son=[[NSMutableArray alloc]initWithCapacity:0]。 NSArray *arr=[string ponentsSeparatedByString:@]]。 NSArray *num=[[arr objectAtIndex:0] ponentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@:.]]。 CGFloat nu=[[num objectAtIndex:0]integerValue]*6000+[[num objectAtIndex:1]integerValue]*60+[[num objectAtIndex:2]integerValue]。 NSString *number=[NSString stringWithFormat:@%.0f,nu]。 //[son setObject:[arr objectAtIndex:1] forKey:number]。 [son addObject:number]。 [son addObject:[arr objectAtIndex:1]]。 [totalLicArray addObject:son]。 } for(int i=0。i[totalLicArray count]。i++) { [getAllOfMusicLrc addObject:[[totalLicArray objectAtIndex:i]objectAtIndex:1]]。 } } (NSString *)getTheTimeOfMusic:(double)time { double doi=time*100。 for(int i=0。i[totalLicArray count]。i++) { if(doi=[[[totalLicArray objectAtIndex:i]objectAtIndex:0]doubleValue]amp。amp。doi[[[totalLicArray objectAtIndex:i+1]objectAtIndex:0]doubleValue]) { lineOfMusicLrc=i。 return [[totalLicArray objectAtIndex:i]objectAtIndex:1]。 } } return nil。 } (NSMutableArray *)getTheTotilOfMusicLrc { return getAllOfMusicLrc。 } (NSInteger)getTheNmuberOfMusicLrc { return lineOfMusicLrc。 } 本段代碼的運(yùn)行過(guò)程是,在歌曲
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1