亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

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

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

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

        中圖分類號:TP311.52 文獻標(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)不僅僅希望使用音樂軟件聽歌,還希望通過音樂軟件進行交友,找到一些具有共同音樂愛好的朋友。甚至是直接通過音樂軟件發(fā)布作品,通過強大的互聯(lián)網(wǎng)快速的傳播自己的作品。逐漸地在線音樂軟件成為人們生活中不可缺少的一部分。

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

        系統(tǒng)的用戶分為6個類別:喜好者、音樂癡迷者、著名歌手、創(chuàng)作者、系統(tǒng)管理員、系統(tǒng)維護員。其中將直接使用系統(tǒng)聽歌的普通用戶分為喜好者、音樂癡迷者、著名歌手三類。在該系統(tǒng)中,有一類特殊的用戶,叫做創(chuàng)作者,除了擁有普通用戶的操作外,還擁有上傳音樂資源到系統(tǒng)中的權(quán)限。另外負責(zé)管理系統(tǒng)數(shù)據(jù),包括廣告、音樂資源、賬戶數(shù)據(jù)等的整理、備份以及審核的人屬于系統(tǒng)管理員類別,對于不同的系統(tǒng)數(shù)據(jù),分別對應(yīng)不同的管理人員。最后一類便是系統(tǒng)維護者,主要負責(zé)系統(tǒng)的運營、維護、測試等支持系統(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的核心是實現(xiàn)三層甚至多層的松散耦合,它將應(yī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)與接口分離,并引入一個傳播機制(Propagation mechanism)使得模型能夠通知每個視圖:模型的數(shù)據(jù)發(fā)生變化后,通知視圖自動更新,這也經(jīng)常被稱為依賴機制(dependency mechanism)。

        3 技術(shù)簡介

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

        3.1 C/S模式

        C/S模式(Client/Server),即客戶端/服務(wù)器模式,Client和Server一般是相距很遠的兩臺計算機,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)大部分數(shù)據(jù),包括所有歌曲、歌單、賬戶的信息,以及記錄不同對象之間的關(guān)系的關(guān)聯(lián)表。

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

        Live555是一個實現(xiàn)了RTSP協(xié)議的開源流媒體框架,live555包含RTSP服務(wù)器端的實現(xiàn)以及RTSP客戶端的實現(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ù)進行傳輸,因此,使用Json數(shù)據(jù)格式,將數(shù)據(jù)組織成對象和數(shù)組的形式進行傳輸,極大的增加了傳輸?shù)男阅芎蛿?shù)據(jù)的閱讀性。同樣的,也極大的節(jié)省了客戶端解析服務(wù)器返回的數(shù)據(jù)的速度,提了整個系統(tǒng)的性能。

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

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

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

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

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

        圖3中的各個實體的描述如下:

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

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

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

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

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

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

        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è)計

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

        5 模塊設(shè)計

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

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

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

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

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

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

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

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

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

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

        6.2 歌單詳細信息

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

        6.3 歌詞顯示

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

        6.4 播放列表

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

        6.5 用戶個人信息

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

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

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

        7 結(jié)束語

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

        參考文獻:

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

        [2] 張友生. 軟件體系結(jié)構(gòu)原理、方法與實踐[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)編輯:謝媛媛]

        国产精品欧美久久久久久日本一道| 国产精品99久久不卡二区| 日韩一本之道一区中文字幕| 国产三级a三级三级| 国产真实夫妇视频| 亚州精品无码人妻久久| 大岛优香中文av在线字幕| 久久国内精品自在自线| 国产揄拍国产精品| 国产啪精品视频网给免丝袜| 日韩av不卡一二三区| 97成人精品视频在线| 黑色丝袜秘书夹住巨龙摩擦| 99久久综合精品五月天| 日韩女同一区在线观看| 无遮挡很爽很污很黄的女同 | 国内精品久久久久影院一蜜桃| 久久久亚洲经典视频| 免费人成网站在线播放| 亚洲av无码专区国产乱码4se| 午夜精品久久久久久| 一区二区免费电影| 成人影院视频在线播放| 国产精品美女一区二区视频| 日韩无套内射视频6| 无码一区二区三区久久精品| 中文字幕日韩有码国产| 免费人成视频x8x8入口| 欧美日韩精品乱国产| 国产精品黄页免费高清在线观看 | 亚洲又黄又大又爽毛片| 国产乱码精品一区二区三区久久| 日日婷婷夜日日天干| 国产女高清在线看免费观看| 天堂av国产一区二区熟女人妻| 99在线精品免费视频| 国产欧美一区二区精品性色| 亚洲中文字幕人妻诱惑| 亚洲中文久久精品字幕| 无码国产69精品久久久孕妇| 亚洲精品动漫免费二区|