国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MVC模式的音樂平臺設(shè)計(jì)與實(shí)現(xiàn)

2018-12-18 10:16閔嫻有鄭皓月黃健舟冉瑞生
電腦知識與技術(shù) 2018年26期

閔嫻有 鄭皓月 黃健舟 冉瑞生

摘要:為了滿足人們對音樂軟件日益提高的需求,設(shè)計(jì)并開發(fā)了一套基于MVC模式的在線音樂平臺系統(tǒng)。該系統(tǒng)以UML出發(fā)進(jìn)行面向?qū)ο蠓治雠c設(shè)計(jì),采用C/S(Client/Server)架構(gòu)、MySQL數(shù)據(jù)庫、Live555流媒體服務(wù)器、json數(shù)據(jù)傳輸?shù)燃夹g(shù),以及C++、QMl編程語言,對系統(tǒng)的功能模塊、UI界面和數(shù)據(jù)管理進(jìn)行了設(shè)計(jì)與實(shí)現(xiàn)。系統(tǒng)主要包括6個功能模塊:在線聽歌、下載音樂、發(fā)布音樂、音樂筆記、以歌交友、音樂管理。該音樂平臺系統(tǒng)是一套功能齊全、操作方便、可適用于不同群體的在線音樂軟件。

關(guān)鍵詞: MVC;C/S;UML;live555;音樂平臺系統(tǒng)

中圖分類號:TP311.52 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)26-0059-04

Abstract: In order to meet people's increasing demand for music software, Based on the MVC software architecture, a set of online music platform system is designed and developed. Started from UML, an object-oriented analysis and design is carried out. Some technologies, such as the C/S (Client/Server) structure, MySQL database, Live555 streaming media server, as well as C++, QMl programming language, are adopted, and then the function module, UI interface and database of the system are completed. There are six modules: online listening, downloading music, publishing music, music notes, making friends through music and music management. The music platform system provides an online music software with complete functions and convenient operation for different groups.

Key words: MVC; C/S; UML; live555; music platform system

1 背景

現(xiàn)今社會互聯(lián)網(wǎng)發(fā)展迅速,隨著人們生活水平的提高,單純的本地音樂播放器已經(jīng)無法滿足人們的需求,人們已經(jīng)不僅僅希望使用音樂軟件聽歌,還希望通過音樂軟件進(jìn)行交友,找到一些具有共同音樂愛好的朋友。甚至是直接通過音樂軟件發(fā)布作品,通過強(qiáng)大的互聯(lián)網(wǎng)快速的傳播自己的作品。逐漸地在線音樂軟件成為人們生活中不可缺少的一部分。

該音樂平臺系統(tǒng)以MVC模式為基礎(chǔ),采用分層C/S(Client/Server)架構(gòu)進(jìn)行設(shè)計(jì)。在實(shí)現(xiàn)時采用了MySQL數(shù)據(jù)庫存儲系統(tǒng)的歌曲、歌單等信息,采用Live555流媒體服務(wù)器實(shí)現(xiàn)在線音樂的播放解析,采用QMl語言搭建系統(tǒng)操作界面,開發(fā)完成了音樂平臺系統(tǒng)。不同于一般的音樂播放器,該在線音樂軟件提供發(fā)布音樂、以歌交友、音樂管理等功能,從而形成一個在線音樂平臺。

系統(tǒng)的用戶分為6個類別:喜好者、音樂癡迷者、著名歌手、創(chuàng)作者、系統(tǒng)管理員、系統(tǒng)維護(hù)員。其中將直接使用系統(tǒng)聽歌的普通用戶分為喜好者、音樂癡迷者、著名歌手三類。在該系統(tǒng)中,有一類特殊的用戶,叫做創(chuàng)作者,除了擁有普通用戶的操作外,還擁有上傳音樂資源到系統(tǒng)中的權(quán)限。另外負(fù)責(zé)管理系統(tǒng)數(shù)據(jù),包括廣告、音樂資源、賬戶數(shù)據(jù)等的整理、備份以及審核的人屬于系統(tǒng)管理員類別,對于不同的系統(tǒng)數(shù)據(jù),分別對應(yīng)不同的管理人員。最后一類便是系統(tǒng)維護(hù)者,主要負(fù)責(zé)系統(tǒng)的運(yùn)營、維護(hù)、測試等支持系統(tǒng)正常工作職責(zé)。

2 MVC模式

MVC是基于模型-視圖-控制器(Model-View-Controller)的軟件體系結(jié)構(gòu)模式,適合構(gòu)建復(fù)雜的應(yīng)用程序。MVC軟件體系結(jié)構(gòu)由模型(model)、視圖(View)和控制器(Controller)三個組件構(gòu)成。MVC的核心是實(shí)現(xiàn)三層甚至多層的松散耦合,它將應(yīng)用程序抽象為三個部分,三者既分工又合作地完成用戶提交的每項(xiàng)任務(wù)。MVC的三個組件的功能分別為:

模型(Model):提供應(yīng)用的核心功能,知曉每個依賴它的視圖和控制器組件。

視圖(View):向用戶提供某個特定風(fēng)格或樣式的信息展示。該視圖從模型中獲得數(shù)據(jù),并在某個其他視圖中的數(shù)據(jù)發(fā)生變化時更新它的表示。視圖創(chuàng)建了它所關(guān)聯(lián)的控制器。

控制器(Controller):接受事件形式的用戶輸入,這些事件會觸發(fā)模型中的操作的執(zhí)行。這些操作可能引起信息的變化,反過來觸發(fā)所有視圖的更新以確保他們都是更新的狀態(tài)。

MVC組件的功能以及各個組件的相互關(guān)系如圖1所示:

MVC模式使應(yīng)用程序的輸入、輸出分開,使應(yīng)用程序的核心功能(model)與接口分離,并引入一個傳播機(jī)制(Propagation mechanism)使得模型能夠通知每個視圖:模型的數(shù)據(jù)發(fā)生變化后,通知視圖自動更新,這也經(jīng)常被稱為依賴機(jī)制(dependency mechanism)。

3 技術(shù)簡介

該系統(tǒng)采用Qt Creator跨平臺集成開發(fā)環(huán)境進(jìn)行軟件開發(fā)。在實(shí)現(xiàn)過程中,主要采用了如下幾個技術(shù):

3.1 C/S模式

C/S模式(Client/Server),即客戶端/服務(wù)器模式,Client和Server一般是相距很遠(yuǎn)的兩臺計(jì)算機(jī),Client程序?qū)⒂脩舻恼埱筇峤唤oServer程序,再將Server程序處理的結(jié)果返回給用戶。C/S模式可以將任務(wù)合理的分配到Client端和Server端,降低了系統(tǒng)的通訊開銷,可以充分利用兩端硬件資源的優(yōu)勢。

3.2 MySQL數(shù)據(jù)庫技術(shù)

MySQL是一個高性能的且相對簡單的關(guān)系數(shù)據(jù)庫系統(tǒng),相對于其他數(shù)據(jù)庫來說,其復(fù)雜性相對較低。在該系統(tǒng)中,MySQL數(shù)據(jù)庫主要用于存儲系統(tǒng)大部分?jǐn)?shù)據(jù),包括所有歌曲、歌單、賬戶的信息,以及記錄不同對象之間的關(guān)系的關(guān)聯(lián)表。

3.3 live555流媒體服務(wù)器

Live555是一個實(shí)現(xiàn)了RTSP協(xié)議的開源流媒體框架,live555包含RTSP服務(wù)器端的實(shí)現(xiàn)以及RTSP客戶端的實(shí)現(xiàn)。Live555可以將若干格式的視頻文件或者音頻文件轉(zhuǎn)換為視頻或者音頻流,然后在網(wǎng)絡(luò)中通過RTSP協(xié)議分發(fā)傳播,這也是流媒體服務(wù)器的核心功能。該服務(wù)器主要用于在線音樂的播放解析,同時在線的音樂資源文件也存放在該服務(wù)器上。

3.4 Json數(shù)據(jù)傳輸技術(shù)

Json全稱JavaScript Object Notation,是一種輕量級的數(shù)據(jù)交換格式,由名字可知,json就是Javascript中的對象和數(shù)組,通過對象和數(shù)組這兩種結(jié)構(gòu)可以表示各種復(fù)雜的結(jié)構(gòu),這也是選擇使用Json傳輸格式的主要原因之一。

對于音樂平臺系統(tǒng)來說,尤其是在用戶打開軟件的時候,客戶端要從服務(wù)器上拉取大量的數(shù)據(jù),以便生成系統(tǒng)的推薦歌單頁面,另外這些數(shù)據(jù)同時還要根據(jù)來自不同的對象而分成不同類別的數(shù)據(jù)進(jìn)行傳輸,因此,使用Json數(shù)據(jù)格式,將數(shù)據(jù)組織成對象和數(shù)組的形式進(jìn)行傳輸,極大的增加了傳輸?shù)男阅芎蛿?shù)據(jù)的閱讀性。同樣的,也極大的節(jié)省了客戶端解析服務(wù)器返回的數(shù)據(jù)的速度,提了整個系統(tǒng)的性能。

4 系統(tǒng)設(shè)計(jì)

4.1 系統(tǒng)總體架構(gòu)

該系統(tǒng)以C/S為總體架構(gòu),以MVC模式為思想,設(shè)計(jì)了具有四層架構(gòu)的一套在線音樂平臺系統(tǒng)。四層架構(gòu)主要實(shí)現(xiàn)為:表示層、應(yīng)用邏輯層、域?qū)?、?shù)據(jù)層。View主要實(shí)現(xiàn)為表示層,即客戶端界面;Model主要實(shí)現(xiàn)為系統(tǒng)的邏輯層、域?qū)雍蛿?shù)據(jù)層;Controller主要負(fù)責(zé)對系統(tǒng)實(shí)體的控制和消息的傳遞控制,在系統(tǒng)中設(shè)計(jì)為三個類:FanController、SonglistController、SongController。系統(tǒng)總體架構(gòu)的包圖如圖2所示:

4.2 域?qū)雍蛿?shù)據(jù)層設(shè)計(jì)

域?qū)又饕讼到y(tǒng)所有的實(shí)體對象,而數(shù)據(jù)層則負(fù)責(zé)域?qū)訉?shí)體對象的存儲、查詢和管理。系統(tǒng)中數(shù)據(jù)層實(shí)現(xiàn)為數(shù)據(jù)代管者Broker,針對于不同的實(shí)體對象,主要的分別有三類Broker:SongBroker、SongListBroker、AccountBroker。域?qū)拥脑O(shè)計(jì)主要針對Account、Song、SongList四個實(shí)體進(jìn)行,每個實(shí)體對象存儲了對象相關(guān)的數(shù)據(jù)結(jié)構(gòu)和行為。系統(tǒng)實(shí)體類模型如圖3所示。

圖3中的各個實(shí)體的描述如下:

Account:通過系統(tǒng)注冊的賬戶,分為兩類:Fan和Creator;

Fan:系統(tǒng)主要的用戶。簡單來說,即使用系統(tǒng)聽歌的普通用戶;

Creator:系統(tǒng)的特殊用戶,擁有上傳音樂作品到系統(tǒng)的特權(quán);

Song:系統(tǒng)中的歌曲,該實(shí)體記錄了單首歌曲的基本信息,如歌名、專輯、路徑等等;

SongList:系統(tǒng)中的歌單,該實(shí)體記錄了單個歌單單的基本信息,如歌單名、創(chuàng)建者、創(chuàng)建時間、簡介等等;

UploadSystemList:記錄創(chuàng)作者上傳音樂的列表,繼承于SongList實(shí)體。該實(shí)體與Creator限定關(guān)聯(lián),即只有創(chuàng)作者才可擁有該實(shí)體對象;

Commit:記錄了系統(tǒng)中某條評論的基本信息,如時間、評論者等等。對于歌曲、歌單和用戶來說,都和評論有一對多的關(guān)聯(lián)關(guān)系;

Log:代表了系統(tǒng)中用戶相關(guān)的所有日志,如播放日志、下載日志等等。其屬性記錄了日志的時間、主人以及相關(guān)日志內(nèi)容;

LogLine:系統(tǒng)日志中的某一行,與Log存在一對多的關(guān)聯(lián)關(guān)系;

AccountLog:從賬戶Account和Log的關(guān)聯(lián)關(guān)系中提取出的關(guān)聯(lián)類,主要用于體現(xiàn)其關(guān)聯(lián),并記錄相關(guān)關(guān)聯(lián)數(shù)據(jù)。

4.3 控制類設(shè)計(jì)

當(dāng)用戶點(diǎn)擊事件觸發(fā)時,客戶端將用戶的請求傳給服務(wù)器,服務(wù)器FsingController接收并判斷消息類型,根據(jù)類型將消息分配給不同的實(shí)體Controller,實(shí)體Controller通過代管者(Broker)查詢數(shù)據(jù)并返回,最后客戶端接收結(jié)果并顯示到界面。系統(tǒng)控制類圖如圖4所示。

5 模塊設(shè)計(jì)

系統(tǒng)主要分為以下6個模塊:

1) 在線聽歌:系統(tǒng)以排行榜、推薦歌單的形式向用戶推薦在線音樂,主要呈現(xiàn)在發(fā)現(xiàn)音樂界面,用戶也可以通過關(guān)鍵詞搜索找到自己想要聽的音樂。主要通過Live555流媒體服務(wù)器實(shí)現(xiàn)在線播放音樂;

2) 下載音樂:無論是游客狀態(tài)還是登錄狀態(tài),用戶都可以選擇下載自己喜歡的音樂,并存放在本地。就該音樂平臺系統(tǒng)而言,用戶下載的音樂存儲在/root/FSing/download目錄中。同時用戶的下載記錄將被記錄顯示到下載管理中,用戶可以對已下載的音樂進(jìn)行增刪;

3) 發(fā)布音樂:這類功能主要針對的用戶是創(chuàng)作者。創(chuàng)作者可以借助該系統(tǒng)在第一時間上傳自己的原創(chuàng)作品,經(jīng)過系統(tǒng)管理員審核之后,發(fā)布到系統(tǒng)供其他人收聽。這樣創(chuàng)作者就擁有了有一個免費(fèi)的、快捷的發(fā)布傳播自己的創(chuàng)作的平臺,同時這也使該音樂平臺增加了更多的不同風(fēng)格的音樂資源;

4) 音樂筆記:這也是該系統(tǒng)的獨(dú)特的地方。用戶在聽歌的時候,可能會有些不同的感觸或者心情。也許是因?yàn)檫@首歌打動了你,也許是因?yàn)楫?dāng)時特殊的心情。用戶都可以通過音樂筆記記錄下這一刻的心情和感觸。這就像是一本音樂日記,當(dāng)你某一天翻開時,將會很有感觸萬分;

5) 以歌交友:用戶之間可以相互關(guān)注,結(jié)交具有相同音樂愛好的朋友,并且可以播放、收藏相互的歌單。通過私信的方式,用戶可以和自己關(guān)注的用戶聊天,同時也可以取消對該用戶的關(guān)注;

6) 音樂管理:用戶可以增刪改自己創(chuàng)建的歌單,或者自己下載、收藏的音樂。對于收藏的其他用戶的歌單,只能進(jìn)行移除出收藏列表操作。同時,用戶可以設(shè)置歌單中音樂的播放、排序順序。

6 系統(tǒng)實(shí)現(xiàn)

6.1 發(fā)現(xiàn)音樂

發(fā)現(xiàn)音樂界面主要顯示的是若干推薦歌單的基本信息,包括歌單名、收聽量以及收藏量等。用戶可以根據(jù)這些信息選擇某一歌單,查看更多的歌單信息。同時,根據(jù)用戶的播放記錄,系統(tǒng)會生成專屬于用戶的播放日志,并根據(jù)播放日志制定針對于該用戶獨(dú)特的推薦歌單。其界面設(shè)計(jì)如圖5所示:

6.2 歌單詳細(xì)信息

歌單詳細(xì)信息界面顯示了歌單的一些基本信息以及歌單中所有的歌曲,系統(tǒng)中的歌單主要有兩類:系統(tǒng)生成的推薦歌單和用戶創(chuàng)建的歌單。其界面設(shè)計(jì)如圖6所示:

6.3 歌詞顯示

當(dāng)用戶點(diǎn)擊某首音樂播放時,系統(tǒng)會自動從服務(wù)器上下載歌詞文件,再顯示到歌詞界面中。根據(jù)音樂播放的進(jìn)度,歌詞界面的歌詞會進(jìn)行自動更新同步。其界面設(shè)計(jì)如圖7所示:

6.4 播放列表

顯示了當(dāng)前播放歌單中的所有歌曲,用戶可以通過播放列表切換歌曲。當(dāng)用戶點(diǎn)擊播放某首歌曲,但并未指定下一首播放歌曲時,系統(tǒng)默認(rèn)根據(jù)播放順序選擇播放列表中的某首歌曲播放。其界面設(shè)計(jì)如圖8所示:

6.5 用戶個人信息

用戶可以點(diǎn)擊右上角的頭像查看或者修改個人信息,主要包含了用戶的關(guān)注、粉絲人數(shù),創(chuàng)建歌單、以及收藏歌單的列表。同時用戶可以點(diǎn)擊粉絲或關(guān)注查看相關(guān)的所有用戶。其界面設(shè)計(jì)如圖9所示。

6.6 用戶粉絲/關(guān)注用戶查詢

該界面顯示了用戶所有的關(guān)注/粉絲用戶。界面設(shè)計(jì)如圖10所示。

7 結(jié)束語

該文分析了在線音樂軟件的現(xiàn)狀和需求,同時結(jié)合MVC模式,設(shè)計(jì)并實(shí)現(xiàn)了適用于大多數(shù)群體的在線音樂平臺系統(tǒng)。采用C/S架構(gòu)設(shè)計(jì)系統(tǒng),將業(yè)務(wù)邏輯層、數(shù)據(jù)庫層和表示層獨(dú)立開來,提高了系統(tǒng)的響應(yīng)速度和安全性。系統(tǒng)操作界面以QMl進(jìn)行搭建,美觀大方,操作快捷,增加了系統(tǒng)的界面友好性。同時,在功能方面,該音樂系統(tǒng)還設(shè)計(jì)實(shí)現(xiàn)了不同于其它原有音樂軟件的音樂筆記功能,提高了系統(tǒng)的獨(dú)特性和市場競爭力。該系統(tǒng)是一個界面友好、高效且易于推廣的音樂平臺。

參考文獻(xiàn):

[1] 李金剛, 趙石磊, 杜寧, 等. 軟件體系結(jié)構(gòu)理論及應(yīng)用[M]. 北京: 清華大學(xué)出版社, 2013.

[2] 張友生. 軟件體系結(jié)構(gòu)原理、方法與實(shí)踐[M]. 2版. 北京: 清華大學(xué)出版社, 2010: 283-297.

[3] Simon Bennett, Steve McRobb, Ray Farmer. Object-Oriented Systems Analysis and Design Using UML[M]. 4版. 北京: 清華大學(xué)出版社, 2013.

[4] kurt Bittner, Ian Spence. Use case Modeling[M]. 北京: 清華大學(xué)出版社, 2002.

[5] Michael Blaha, James Rumbaugh. Objeect-Oriented Modeling and Design with UML[M]. 北京: 人民郵電出版社, 2006.

[6] 霍亞飛. Qt Creator快速入門[M]. 北京: 北京航天航空大學(xué), 2017.

[7] John Torjo. Boost. Asio C++ Network Programming[M]. Birmingham: Packt Publishing Ltd, 2013.

[8] 譚云杰. 大象:Thinking in UML[M]. 北京: 中國水利水電出版社, 2012: 214-235.

[通聯(lián)編輯:謝媛媛]

万宁市| 左贡县| 湖北省| 安多县| 志丹县| 龙游县| 成安县| 子长县| 易门县| 潞城市| 沈丘县| 黔江区| 博客| 台东县| 洮南市| 金坛市| 濉溪县| 清丰县| 阿瓦提县| 福贡县| 宜宾市| 茂名市| 汤阴县| 新建县| 海宁市| 朔州市| 鄂伦春自治旗| 左权县| 犍为县| 麦盖提县| 佛冈县| 科尔| 建平县| 泸州市| 墨竹工卡县| 黑河市| 十堰市| 建阳市| 金山区| 乌拉特中旗| 鹤峰县|