音樂播放器設計與實現(xiàn)畢業(yè)論文_第1頁
音樂播放器設計與實現(xiàn)畢業(yè)論文_第2頁
音樂播放器設計與實現(xiàn)畢業(yè)論文_第3頁
音樂播放器設計與實現(xiàn)畢業(yè)論文_第4頁
音樂播放器設計與實現(xiàn)畢業(yè)論文_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、中南大學畢業(yè)設計 音樂播放器設計與實現(xiàn) 摘 要 本文對音樂播放器的設計與開發(fā)過程進行了分析與敘述。依照系統(tǒng)開發(fā)的實際操作步驟,文章從需求分析、概要設計、詳細設計和測試這四大章節(jié)對系統(tǒng)開發(fā)過程進行分別闡述。需求分析中主要包括了軟件設計前的需要實現(xiàn)的基本功能,界面要求;而概要設計則是對系統(tǒng)體系結構、各功能模塊等具體的系統(tǒng)實現(xiàn)過程進行剖析展示,在詳細設計章節(jié)中有詳細實現(xiàn)方法和文字解釋并配有表圖說明。文章還列舉了關鍵的功能模塊實現(xiàn)代碼。 本文主要詳細介紹了一個用qt開發(fā)播放器的實現(xiàn)方法,在分析了目前國內(nèi)許多播放器樣式基礎上,并經(jīng)過反復摸索和學習研究后,借助編程語言c+和qt開發(fā)環(huán)境最終實現(xiàn)了音樂播放器

2、的開發(fā),并在一系列測試后,達成了友好化界面、所需功能基本完善、操作簡單的設計目標。關鍵詞 qt;音樂播放器;c+idesign and implementation of a music player abstract in this paper, a music player design and development process were analyzed and described. in accordance with the actual steps of system development, the article from the needs analysis, outl

3、ine design, detailed design and testing of these four sections of the system development process are described. requirements analysis includes the basic functions of the software design prior to the need to achieve, and interface requirements; while the outline design of the system is the specific s

4、ystem architecture, the functional modules such as the implementation process to analyze the display, there is a detailed section in the detailed design to achieve methods and interpretation of the text and with a table diagram. the article also lists the key features module code. this paper introdu

5、ces the one with the qt development player implementations, analyzing the current domestic many players style basis, and after trial and error and learning research, with the programming language c+ and qt development environment and ultimately the music player development, and after a series of tes

6、ts to reach a friendly interface, basic functions required for perfect, simple design goals. keywords: qt; music player; c+ii 目 錄摘要iabstractii1 緒論11.1 課題背景11.2 目的和意義11.3 開發(fā)工具和技術11.3.1 開發(fā)工具11.3.2 使用技術11.4 系統(tǒng)設計思想21.5 本文的結構21.6 經(jīng)濟可行性21.7 技術可行性21.8 操作可行性31.9 法律可行性32 需求分析42.1 軟件需求42.1.1 編寫目的42.1.2 項目背景42

7、.1.3 項目目的和目標42.2 系統(tǒng)需求分析42.2.2 界面需求52.2.3 性能需求52.2.4 可靠性要求52.2.5 運行環(huán)境需求53 概要設計73.1 設計計劃73.1.1編寫目的73.1.2背景73.1.3定義73.2 總體設計73.2.1 需求規(guī)定73.2.2 運行環(huán)境73.2.1 基本設計概念和處理流程73.2.4 主要功能93.2.5 人工處理過程93.2.6 尚未問決的問題93.3 面向對象的建模93.3.1出錯信息143.3.2補救措施144 詳細設計16 4.1 具體模塊設計16 4.1.1 編寫目的164.1.2 背景164.1.3 定義164.2 程序系統(tǒng)的結構1

8、74.2.1 程序描述174.2.2 功能174.2.3 性能184.2.4 模塊的實現(xiàn)184.2.5 注釋設計214.2.6 測試計劃215 系統(tǒng)測試與性能分析275.1 軟件測試27結論32致謝34參考文獻351 緒論1.1 課題背景隨著計算機技術的發(fā)展應用軟件在生活中應用越來越廣泛。特別是多媒體技術在我們實際生活中應用很多。作為音樂播放器軟件,網(wǎng)絡上流行著很多種,人們也并不陌生。以java編寫,運行于windows操作系統(tǒng)的為多數(shù)。它們大多數(shù)功能復雜,結構龐大,界面也很美觀。但以簡潔的c+語言編寫為少數(shù)。在此次設計中,專門在qt環(huán)境下用c+開發(fā)一個能夠實現(xiàn)簡但功能,而且界面清晰的音樂播放

9、器。從而更加是我們能夠直觀的看到實現(xiàn)音樂播放器功能所采用的這種方法,便于我們學習和應用。qt是一個跨平臺c+圖形用戶界面應用程序開發(fā)框架。它既可以開發(fā)gui程序,也可用于開發(fā)非gui程序,比如控制臺工具和服務器。qt是面向對象的框架,使用特殊的代碼生成擴展。在現(xiàn)如今,它仍然非常流行。1.2 目的和意義本項目的目的是開發(fā)一個可以播放主流的音樂播放器,本設計的實現(xiàn)主要功能是播放mp3,wav、ogg等格式的音樂文件,并且能控制播放,暫停,停止,音量,選擇上一曲,選擇下一曲,進度條,列表文件。還有歌曲文件的管理操作等多種播放控制,界面簡明,操作簡單。1.3 開發(fā)工具和技術1.3.1 開發(fā)工具 此次項

10、目主要采用的是qt開發(fā)環(huán)境進行開發(fā)設計。qt是一個1991年由奇趣科技開發(fā)的跨平臺c+圖形用戶界面應用程序開發(fā)框架。它既可以開發(fā)gui程序,也可用于開發(fā)非gui程序,比如控制臺工具和服務器。qt是面向對象的框架,使用特殊的代碼生成擴展(稱為元對象編譯器(meta object compiler, moc))以及一些宏,易于擴展,允許組件編程。2008年,奇趣科技被諾基亞公司收購,qt也因此成為諾基亞旗下的編程語言工具。2012年,qt被digia收購。2014年4月,跨平臺集成開發(fā)環(huán)境qt creator 3.1.0正式發(fā)布,實現(xiàn)了對于ios的完全支持,新增winrt、beautifier等插

11、件,廢棄了無python接口的gdb調試支持,集成了基于clang的c/c+代碼模塊,并對android支持做出了調整,至此實現(xiàn)了全面支持ios、android、wp。1.3.2 使用技術 此次項目主要采用的軟件開發(fā)技術主要是c+語言。c+是在c語言的基礎上開發(fā)的一種集面向對象編程、泛型編程和過程化編程于一體的編程語言。應用較為廣泛,是一種靜態(tài)數(shù)據(jù)類型檢查的,支持多重編程的通用程序設計語言。它支持過程化程序設計,數(shù)據(jù)抽象,面向對象設計,制作圖標等多種程序設計風格。最新正式標準c+11于2011年8月12日公布。1.4 系統(tǒng)設計思想對于音樂播放器,必須要滿足使用方便、操作靈活等要求。本系統(tǒng)在設計

12、時應該滿足以下幾個目標:(1)簡單操作,界面美觀、友好、方便、播放順暢;(2)系統(tǒng)最大限度地實現(xiàn)了易維護性和易操作性;(3)系統(tǒng)運行穩(wěn)定、安全可靠。1.5 本文的結構本文具體內(nèi)容包括:需求分析、概要設計、詳細設計與實現(xiàn)、軟件的測試。本文著重描述了音樂播放器組成與結構,闡述了軟件的設計方案、實現(xiàn)方法以及所采用的開發(fā)工具和相關技術,另外,重點剖析了部分環(huán)節(jié)的開發(fā)過程。本系統(tǒng)在一定的環(huán)境下對系統(tǒng)的重要模塊進行了模擬測試,證實了系統(tǒng)的可用性、可靠性。對于開發(fā)的每一個系統(tǒng),都會受到時間和資源上的雙重限制。因此,在每一個項目開發(fā)之前,都必須進行可行性分析,這樣可以減少項目的開發(fā)風險,避免人力、物力和財力的

13、浪費。下面就經(jīng)濟、技術、操作和法律四個方面來介紹。1.6 經(jīng)濟可行性軟件的經(jīng)濟可行性是指一個軟件產(chǎn)品在開發(fā)出來后所能帶來的經(jīng)濟上的效益與開發(fā)設計該軟件所需要的投入相比,是否是相適合的,另外最重要的是此軟件能否真正能給用戶帶來豐厚的經(jīng)濟利益,我開發(fā)的這個系統(tǒng)正是在不斷觀察的基礎上,考慮到為了新聞發(fā)布的使用者和管理者提升他們的工作效率,通過節(jié)省工作時間從而節(jié)省人力資源,該系統(tǒng)實現(xiàn)了方便操作與管理而設計理念。本系統(tǒng)的研發(fā)在經(jīng)濟可行性方面是完全沒有問題的。此軟件的開發(fā)不需要花費大量的資金,也不需要投入大量的人力物力,對于實現(xiàn)一些基本的功能只需要一個人就可以完成,從而可以節(jié)省許多不必要的費用,同時也可提

14、高個人的實際動手能力。1.7 技術可行性根據(jù)該系統(tǒng)要實現(xiàn)的功能來考慮所需要的技術在有限的預算內(nèi)是否可以達到,具體可以從軟件和硬件的功能要求、硬件環(huán)境配置、管理員的操作能力和數(shù)量等方面去考慮和分析。通過對該系統(tǒng)開發(fā)運行的可行性,在軟件方面選擇了比較好用并功能強大的qt工具來進行軟件的設計開發(fā),qt工作平臺是一個十分優(yōu)秀的用于開發(fā)c+,集成開發(fā)環(huán)境,利用它我們可以進行簡單qt程序的開發(fā),以及提高開發(fā)效率。qt的功能非常強大,支持也十分廣泛,尤其是對各種開元產(chǎn)品的支持。它是功能豐富的集成開發(fā)環(huán)境,包括了完備的編碼、調試、測試和發(fā)布功能。而且在學習過程中我主要使用的也是這個工具,操作起來比較熟練。在頁

15、面設計方面主要使用的是qt方面的知識2.開放的開發(fā)過程,開放的源碼5.jsp跨平臺的可重用性:qt既可以在linux上運行,也可以在windows系統(tǒng)運行。這些都是非常成熟的開發(fā)工具,它們在安全性、可用性、可靠性方面都非常值得信賴,因此在軟件的使用方面是沒有問題的。 在硬件方面,則應該盡可能選擇空間不太大,硬件配置較高的設備,這樣在軟件的開發(fā)和運行過程中會更加的方便??紤]到現(xiàn)在的家用電腦硬件配置都比較高,一般的軟件運行起來都沒有問題,我選擇了在學校一直使用的筆記本電腦,因此系統(tǒng)在硬件方面也是沒有問題的。1.8 操作可行性 本新音樂播放器操作簡單易行,用戶只需要打開播放器,插入歌曲,即可聽取各種

16、歌曲,此軟件的管理人員對開發(fā)此應用項目的態(tài)度確定而且管理方面的條件都比較成熟。經(jīng)過以上分析,運行方面是可行的。1.9 法律可行性 本系統(tǒng)是自行開發(fā)的管理系統(tǒng),是很有實際意義的系統(tǒng),開發(fā)環(huán)境軟件和使用的數(shù)據(jù)庫都是開源代碼,開發(fā)這個系統(tǒng)不同于開發(fā)普通的系統(tǒng)軟件,不存在侵權等問題,即法律上是可行的。 綜上所述,開發(fā)一個基于qt的音樂播放器系統(tǒng)對于方便大眾、聽歌、歌曲收集方面都具有速度更快,操作簡單,節(jié)省開支等有利之處,因此,建立一個基于qt的新音樂播放器系統(tǒng)是必要可行的。 2 需求分析2.1 軟件需求時至如今,隨著電子it行業(yè)的發(fā)展,音樂播放器軟件在互聯(lián)網(wǎng)上有很多,種類繁多,各種功能多樣,樣式也絢麗

17、奪目。相對于其他軟件來說,實現(xiàn)此類軟件的基本功能并不太繁瑣,但在編寫過程中所需的知識點很多,編寫過程并不容易。我課題選了qt實現(xiàn)的音樂播放器的設計與實現(xiàn),希望通過此次畢業(yè)設計鞏固舊知識掌握新知識,整體提升自己代碼開發(fā)的綜合能力。2.1.1 編寫目的 為明確軟件需求、安排項目與進度、組織軟件開發(fā)與測試,而寫本文檔。在問題分析階段分析人員的主要任務是:對用戶的需求進行鑒別、綜合和建模,清除用戶需求的模糊性、歧義性和不一致性,分析系統(tǒng)的數(shù)據(jù)要求,為原始問題及目標軟件建立邏輯模型。分析人員要將對原始問題的理解與軟件開發(fā)經(jīng)驗結合起來,以便發(fā)現(xiàn)哪些要求是由于用戶的片面性或短期行為所導致的不合理要求,哪些是

18、用戶尚未提出但具有真正價值的潛在需求。2.1.2 項目背景 本項目由自己選題確定,由本人獨自開發(fā)。 開發(fā)軟件名稱:音樂播放器; 項目提出者: 太原理工大學; 項目開發(fā)者: 樊凱。2.1.3 項目目的和目標本項目的目的是開發(fā)一個可以播放主流的音樂播放器,本設計的實現(xiàn)主要功能是播放mp3,wav、ogg等格式的音樂文件,并且能控制播放,暫停,停止,音量,選擇上一曲,選擇下一曲,進度條,列表文件。還有歌曲文件的管理操作等多種播放控制,界面簡明,操作簡單。2.2 系統(tǒng)需求分析2.2.1 功能需求 根據(jù)項目,我們可以獲得項目系統(tǒng)的基本需求,以下從不同角度來描述系統(tǒng)的需求。系統(tǒng)的功能需求,我們分成三部分來

19、概括,即播放器的基本控制需求,播放列表管理需求和播放器友好性需求。以下分別描述:(1)播放器的基本控制需求播放:軟件理應實現(xiàn)所選歌曲的正常播放(所選歌曲的文件格式應該為 mp3,wav,ogg)。進度條:顯示播放歌曲進度。時間欄:顯示播放的時間。停止:停止當前播放的歌曲,而顯示播放的圖標。下一首:播放歌曲列表的下一首。上一首:播放上一首歌曲。頭像:顯示作者和版本號。(2)播放列表管理點擊目錄:在播放器上點擊添加時會彈出對話框,在本地文件里找到一首或同時添加幾首,點擊確定會顯示到播放列表里。歌曲:彈出一個添加歌曲信息的會話框,填入歌曲信息(歌名不能重復)可 以進行添加,添加成功則更新了歌曲列表。

20、 刪除歌曲:選中歌曲后,單擊右鍵選擇刪除歌曲或者點擊下面的刪除則刪掉當前播放或選中的歌曲。 隨機:點擊左下角的隨機,會按照播放列表里的歌曲順序,隨機播放下一首 歌曲。 注:添加歌曲時,類型編號和名稱都不能為空。添加歌曲時,歌曲名不能為空,歌曲地址不能為空(否則播放時會是無效路徑)。(3)播放器友好性要求:視覺外觀:外觀要優(yōu)美,選大氣清新淡雅圖片做背景。 系統(tǒng): 使用播放器時能顯示播放器的狀態(tài),是播放還是暫停。2.2.2 界面需求播放器界面要求布局合理,顏色舒適,控制按鈕友好;為了較少開發(fā)工程量,可以參考現(xiàn)在流行的播放器的皮膚作為播放器的界面或從網(wǎng)絡下載相應的圖標。 界面設計現(xiàn)在已經(jīng)成為評價軟件

21、質量的一條重要指標,一個好的用戶界面可以帶給用戶很好的體驗,增加用戶使用軟件的信心和興趣,提高效率。在使用軟件是彈出用戶界面,用戶界面是指軟件系統(tǒng)與用戶交互的接口,它一般都包括輸出、輸入、人與電腦對話的界面格式等。(1) 輸出設計輸出是由計算機對輸入的原始信息進行加工處理,形成高質量的有效信息,并使之具有一定的格式,提供管理者使用,這是輸出設計的主要職責和目標。系統(tǒng)設計的過程正好和實施過程相反,并不是從輸入設計到輸出設計,而是從輸出設計到輸入設計,這是因為輸出表格直接與使用者相聯(lián)系,設計的出發(fā)點應當是保證輸出表格方便地為使用者服務,正確及時反映和組成用于各部門的有用信息。輸出設計的原則是考慮既

22、要全面反映不同管理層的各項需要,又要言簡意賅,不要將用戶需要和不需要的都提供給用戶。(2) 輸入設計輸入數(shù)據(jù)的收集和錄入是比較費事的,需要大量的人力和一定設備,并且容易出錯。如果輸入系統(tǒng)的數(shù)據(jù)有錯誤,則處理后的輸出將擴大這些錯誤,因此輸入數(shù)據(jù)的正確性對于整個系統(tǒng)質量的好壞是具有決定性意義的。輸入設計的原則有如下幾點:1)輸入量應保持在能滿足處理要求的最低限度。設計中可采用設置字段初值,下拉式數(shù)據(jù)窗口等方式盡量減少用戶鍵盤輸入量。輸入量越少,錯誤率就越少,數(shù)據(jù)準備時間也減少。2)輸入的準備及輸入過程應盡量容易進行,從而減少錯誤的發(fā)生。3)應盡量早對輸入數(shù)據(jù)進行檢查(盡量接近原數(shù)據(jù)發(fā)生點),以便使

23、錯誤及時得到更正。4)輸入數(shù)據(jù)盡早地用其處理所需的形式被記錄,以避免數(shù)據(jù)由一種介質轉移到另一種介質時需要轉錄而可能發(fā)生的錯誤。2.2.3 性能需求 (1)當要求歌曲播放時,軟件響應時間最長不超過2秒。(2)當要求歌曲暫停時,軟件響應時間最長不超過1秒。(3)播放歌曲,采用本地播放,播放流暢。2.2.4 可靠性要求為了適應將來的發(fā)展,系統(tǒng)應該具有良好的可擴展性與可維護性。系統(tǒng)設計應盡可能模塊化、組件化,使應用系統(tǒng)可以靈活配置,適應不同的情況。系統(tǒng)的可擴展性應該包括能接納已有的系統(tǒng)與在今后系統(tǒng)軟硬件擴展時,能夠有效地保護已有的投資。特別是在應用需求變化時(應用與系統(tǒng)的需求往往提不完全或者經(jīng)常會變化

24、),有一個較好的應用平臺,能夠容易地加以調整。系統(tǒng)易于擴充升級,既能夠滿足當前業(yè)務的需求,又能夠為今后的擴充留有空間。 系統(tǒng)能持續(xù)運行,不影響其他程序的使用,不多占用內(nèi)存,不會造成死機等問題。2.2.5 運行環(huán)境需求 操作系統(tǒng):windows 7系列。 windows 7 是由微軟公司(microsoft)開發(fā)的操作系統(tǒng),核心版本號為windows nt 6.1。windows 7可供家庭及商業(yè)工作環(huán)境、筆記本電腦、平板電腦、多媒體中心等使用。2009年7月14日windows 7rtm(build 7600.16385)正式上線,2009年10月22日微軟于美國正式發(fā)布windows 7,2

25、009年10月23日微軟于中國正式發(fā)布windows 7。windows7主流支持服務過期時間為2015年1月13日,擴展支持服務過期時間為2020年1月14日。windows 7延續(xù)了windows vista的aero 1.0風格,并且更勝一籌。 支持環(huán)境:qt creator4.7以上。 qt creator是跨平臺的 qt ide, qt creator 是 qt 被 nokia 收購后推出的一款新的輕量級集成開發(fā)環(huán)境(ide)。此 ide 能夠跨平臺運行,支持的系統(tǒng)包括 linux(32 位及 64 位)、mac os x 以及 windows。根據(jù)官方描述,qt creator 的

26、設計目標是使開發(fā)人員能夠利用 qt 這個應用程序框架更加快速及輕易的完成開發(fā)任務。 3 概要設計3.1 設計計劃 概要設計的主要任務是把需求分析得到的系統(tǒng)擴展用例圖轉換為軟件結構和數(shù)據(jù)結構。設計軟件結構的具體任務是:將一個復雜系統(tǒng)按功能進行模塊劃分、建立模塊的層次結構及調用關系、確定模塊間的接口及人機界面等。數(shù)據(jù)結構設計包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結構特性、以及數(shù)據(jù)庫的設計。顯然,概要設計建立的是目標系統(tǒng)的邏輯模型,與計算機無關。3.1.1編寫目的為了使我對音樂播放器的整體設計有個系統(tǒng)的規(guī)劃,提供詳細設計的基礎依據(jù),進而進行軟件開發(fā)。3.1.2背景(1)開發(fā)基于win7平臺下用qt開發(fā)音樂播

27、放器;(2)提出者:太原理工大學;(3)開發(fā)者:樊凱;(4)用戶:演示者;(5)平臺:win7。3.1.3定義 mediaobject (管理媒體源) audiooutput (連接物理設備)seekslider( 實現(xiàn)進度條)qlist (實現(xiàn)播放列表 )。3.2 總體設計3.2.1 需求規(guī)定本項目的目的是開發(fā)一個可以播放的主流的音樂播放器,本設計的實現(xiàn)主要功能是播放mp3,wav等格式的音樂文件,并且能控制播放,暫停,停止,音量控制,選擇上一曲,選擇下一曲,進度條,列表文件,歌曲文件的管理操作等多種播放控制,界面簡明,操作簡單。3.2.2 運行環(huán)境操作系統(tǒng):windows 7系列支持環(huán)境:

28、qt creator4.7以上。3.2.3 基本設計概念和處理流程如圖3-1。 圖3-1 軟件用例圖用例圖定義:由參與者(actor)、用例(use case)以及它們之間的關系構成的用于描述系統(tǒng)功能的靜態(tài)視圖稱為用例圖。用例圖(user case)是被稱為參與者的外部用戶所能觀察到的系統(tǒng)功能的模型圖,呈現(xiàn)了一些參與者和一些用例,以及它們之間的關系,主要用于對系統(tǒng)、子系統(tǒng)或類的功能行為進行建模。用例圖展示了用例之間以及同用例參與者之間是怎樣相互聯(lián)系的。用例圖用于對系統(tǒng)、子系統(tǒng)或類的行為進行可視化,使用戶能夠理解如何使用這些元素,并使開發(fā)者能夠實現(xiàn)這些元素。將每個系統(tǒng)中的用戶分出工作狀態(tài)的屬性和

29、工作內(nèi)容,方便建模,防止功能重復和多余的類。用例圖定義了系統(tǒng)的功能需求,它是從系統(tǒng)的外部看系統(tǒng)功能,并不描述系統(tǒng)內(nèi)部對功能的具體實現(xiàn)。3.2.4主要功能有以下,如圖3-2。.功能基本操作其他操作上一首播放暫停停止下一首打開本地文件作者標題添加隨機目錄音量、進度調節(jié)時間顯示刪除 圖3-2 主要功能圖所編的程序只要在本地就可以執(zhí)行 ,添加本地歌曲到播放列表即可。3.2.5 人工處理過程需要上網(wǎng)找一些流行的圖標,了解當今主流的界面樣式風格,盡力開發(fā)出適應潮流的項目。3.2.6 尚未問決的問題不會修改背景色,和文本框,按鈕色,有時軟件不穩(wěn)定,運行后出現(xiàn)布局混亂。對布局有時候那難以控制。3.3 面向對象

30、的建模unified modeling language (uml)又稱統(tǒng)一建模語言或標準建模語言,是始于1997年一個omg標準,它是一個支持模型化和軟件系統(tǒng)開發(fā)的圖形化語言,為軟件開發(fā)的所有階段提供模型化和可視化支持,包括由需求分析到規(guī)格,到構造和配置。 面向對象的分析與設計(ooa&d,ooad)方法的發(fā)展在80年代末至90年代中出現(xiàn)了一個高潮,uml是這個高潮的產(chǎn)物。它不僅統(tǒng)一了booch、rumbaugh和jacobson的表示方法,而且對其作了進一步的發(fā)展,并最終統(tǒng)一為大眾所接受的標準建模語言。類圖:類圖(class diagram)由許多(靜態(tài))說明性的模型元素(例如類、

31、包和它們之間的關系,這些元素和它們的內(nèi)容互相連接)組成。類圖可以組織在(并且屬于)包中,僅顯示特定包中的相關內(nèi)容。類圖(class diagram)是最常用的uml圖,顯示出類、接口以及它們之間的靜態(tài)結構和關系;它用于描述系統(tǒng)的結構化設計。類圖(class diagram)最基本的元素是類或者接口。靜態(tài),如圖3-3。 圖3-3 靜態(tài)類圖原理:主要用到的模塊中的mediaobject(管理媒體源)audiooutput(媒體連接設備)seekslider(實現(xiàn)進度條);phonon的工作原理是使用mediaobject來管理mediaobject即源文件,通過path鏈接到audiooutput

32、,最后有audiooutput將數(shù)據(jù)送到相關物理設備。整體架構:phonon原理圖,如圖3-4。mediaobject管理媒體源audiooutput媒體鏈接設備物理設備path phonon 圖3-4 phonon原理圖快速原型法:原型是指模擬某種產(chǎn)品的原始模型,在其他產(chǎn)業(yè)中經(jīng)常使用。軟件開發(fā)中的原型是軟件的一個早期可運行的版本,它反映了最終系統(tǒng)的重要特性。快速原型模型又稱原型模型,它是增量模型的另一種形式;它是在開發(fā)真實系統(tǒng)之前,構造一個原型,在該原型的基礎上,逐漸完成整個系統(tǒng)的開發(fā)工作。例如,客戶需要一個atm機軟件,可以先設計一個僅包含刷卡、密碼檢測、數(shù)據(jù)輸入和賬單打印的原型軟件提供給

33、客戶,此時還不包括網(wǎng)絡處理與數(shù)據(jù)庫存取以及數(shù)據(jù)應急、故障處理等服務??焖僭湍P偷牡谝徊绞墙ㄔ煲粋€快速原型,實現(xiàn)客戶或未來的用戶與系統(tǒng)的交互,用戶或客戶對原型進行評價,進一步細化待開發(fā)軟件的需求。通過逐步調整原型使其滿足客戶的要求,開發(fā)人員可以確定客戶的真正需求是什么;第二步則在第一步的基礎上開發(fā)客戶滿意的軟件產(chǎn)品。使用快速原型構建軟件基本設計界面,圖3-5。 圖3-5 軟件基本設計界面在界面設計中要用到布局管理器: 在用qt進行用戶界面應用程序的編程時,建議通過編寫相關代碼來生成和維護qt控件,而不要用qt designer。這時對相應的qt控件進行布局管理顯得尤為重要。 

34、; 常見的三種布局方式: 網(wǎng)格布局(qgridlayout)、 水平布局(qhboxlayout) 垂直布局(qvboxlayout)。方法:  1)以單個的qt控件為單位,先進行子塊布局,分別對各個子塊進行布局。  2)以步驟1)中的子塊為單位,進行全局布局。  例如:我們要完成如下樣式的qt界面,整個qt界面有abcdefxyz共計9個qt控件,如圖3-6。  圖3-6 布局方法1: 1)用“網(wǎng)格布局”對abcdef(子塊1)進行布局。 qgridlayout *left

35、lay=new qgridlayout; 用“垂直布局”對xyz(子塊2)進行布局qvboxlayout *rightlay=new qvboxlayout; 2)用“水平布局”對子塊1(abcdef)、子塊2(xyz)進行全局布局。 qhboxlayout *mainlay=new qhboxlayout; mainlay->addlayout(leftlay); mainlay->addlayout(rightlay);方法2: 1) 用“水平布局”對ab(子塊1)進行

36、布局用“水平布局”對cd(子塊2)進行布局。 2) 用“垂直布局”對子塊1(ab)、子塊2(cd)、e、f進行布局,形成子塊3(abcdef)。 3) 用“垂直布局”對xyz(子塊4)進行布局。 4)用“水平布局”對子塊3(abcdef)、子塊4(xyz)進行全部布局。顯示版本號button:添加歌曲:隨機:暫停:刪除:上一首:播放:下一首:目錄 信號和槽機制是qt的核心機制,要精通qt編程就必須對信號和槽有所了解。信號和槽是一種高級接口,應用于對象之間的通信,他是qt的核心特性,也是qt差別于其他工具包的重要地方。信號和槽是qt自行定義的一種通信機制,他獨立于標

37、準的c/c+語言,因此要正確的處理信號和槽,必須借助一個稱為moc(meta object compiler)的qt工具,該工具是個c+預處理程式,他為高層次的事件處理自動生成所需要的附加代碼。   在我們所熟知的非常多gui工具包中,窗口小部件(widget)都有一個回調函數(shù)用于響應他們能觸發(fā)的每個動作,這個回調函數(shù)通常是個指向某個函數(shù)的指針。不過,在 qt中信號和槽取代了這些凌亂的函數(shù)指針,使得我們編寫這些通信程式更為簡潔明了。信號和槽能攜帶任意數(shù)量和任意類型的參數(shù),他們是類型完全安全的,不會像回調函數(shù)那樣產(chǎn)生core dumps

38、。  所有從qobject或其子類(例如qwidget)派生的類都能夠包含信號和槽。當對象改動其狀態(tài)時,信號就由該對象發(fā)射(emit)出去,這就是對象所要做的全部事情,他不知道另一端是誰在接收這個信號。這就是真正的信息封裝,他確保對象被當作一個真正的軟件組件來使用。槽用于接收信號,但他們是普通的對象成員函數(shù)。一個槽并不知道是否有所有信號和自己相連接。而且,對象并不了解具體的通信機制。  你能將非常多信號和單個的槽進行連接,也能將單個的信號和非常多的槽進行連接,甚至于將一個信號和另外一個信號相連接也是可能的,這時無論第一個信號什么時候發(fā)射系統(tǒng)都將即時發(fā)射第

39、二個信號??傊?,信號和槽構造了一個強大的部件編程機制。原型界面,如圖3-7。 圖3-7 原型界面界面跳轉關系:點擊“添加”目錄-彈出對話框,如圖3-8。 圖3-8 對話框點擊選擇確認后歌曲后:把歌曲內(nèi)容顯示在歌曲列表欄。點擊圖像顯示小窗口。3.3.1出錯信息(1)如果出現(xiàn)main.o可能編寫錯誤,需要認真查找代碼。(2)運行時易出現(xiàn)qmake錯誤或者make,這是qt4常出現(xiàn)的錯誤,其他計算機也經(jīng)常出現(xiàn)。(3)qmake是一個協(xié)助簡化跨平臺進行專案開發(fā)的構建過程的工具程式,qt附帶的工具之一 。qmake能夠自動生成makefile、microsoft visual studio 專案文件 和

40、 xcode 專案文件。不管源代碼是否是用qt寫的,都能使用qmake,因此qmake能用于很多軟件的構建過程。手寫makefile是比較困難而且容易出錯,尤其在進行跨平臺開發(fā)時必須針對不同平臺分別撰寫makefile,會增加跨平臺開發(fā)復雜性與困難度。qmake會根據(jù)專案文件(.pro)里面的信息自動生成適合平臺的 makefile。開發(fā)者能夠自行撰寫專案文件或是由qmake本身產(chǎn)生。qmake包含額外的功能來方便 qt 開發(fā),如自動的包含moc 和 uic 的編譯規(guī)則。3.3.2補救措施故障出現(xiàn)后可能采取的變通措施,如果打開項目出現(xiàn)如下,圖3-9。 圖3-9 對話框說明要切換版本,直接“確定

41、”忽略,進入界面可能運行不了會出現(xiàn):此時運行部了,構建里邊除了問題,直接點擊構建會出現(xiàn),如圖3-10。 圖3-10 構建會出現(xiàn)make錯誤接下來檢查一下我做的工程文件夾,看是否用了中文,要確保.por工程項目文件的路徑里面沒有中文。我的工程路徑為:c:fknana8qm說以不會出問題;此時可能還有構建項目qmake錯誤或make,那么單擊“項目”,如圖3-11。 圖3-11 qt版本將qt版本換成另外一個,就基本解決,若還不行的話,需要按裝qt5,那個版本相對穩(wěn)定。 4 詳細設計4.1 具體模塊設計 詳細設計說明書又可稱程序設計說明書。編制目的是說明一個軟件系統(tǒng)各個層次中的每一

42、個程序 (每個模塊或子程序)的設計考慮,如果一個軟件系統(tǒng)比較簡單,層次很少,本文件可以不單獨編寫,有關 內(nèi)容合并入概要設計說明書。4.1.1 編寫目的本音樂播放軟件的詳細設計說明書是面向程序員和測試員的,目的在于程序員根據(jù)軟件概要設計和詳細設計編譯程序代碼,同時也是向程序測試員分配測試的依據(jù)。4.1.2 背景a 本項目的任務提出者:太原理工大學;b 開發(fā)者:樊凱;c 用戶:指導老師。4.1.3 定義這個軟件設計的目的就是制作一個能夠播放音頻的播放器。在播放的文件方面,播放的是本地的音頻文件它除具備一些基本的音樂操作處理功能(暫停、播放、音量調節(jié)、拖動、停止等),如圖4-1。圖4-1 播放器的外

43、觀盡管此播放器在穩(wěn)定性、視覺效果、歌曲庫的大小等方面遠遠不如當今的很多播放軟件,但是它具有小巧,長時間聽歌后占用硬盤空間小,是一款屬于自己的實用的播放器。此播放器是在windows操作系統(tǒng)下的qt4集成環(huán)境下完成的,qt是跨平臺的開發(fā)軟件,只要將此播放器的代碼在其他qt能夠運行的平臺上重新編譯就可以在當前平臺上運行。 4.2 程序系統(tǒng)的結構4.2.1 程序描述 現(xiàn)今音樂播放軟件的發(fā)展迅速,各項功能越來越完善,附加功能也隨著技術的發(fā)展而日益增多。但我開發(fā)的是一款小型簡單的播放器,單用系統(tǒng)資源少,使用方便,更主要便于自己的學習和能力的提高。4.2.2 功能 時序圖描述對象是如何交互的,并且將重點放

44、在消息序列上。也就是說,描述消息是如何在對象間發(fā)送和接收的。時序圖有兩個坐標軸:縱坐標軸顯示時間,橫坐標軸顯示對象。每一個對象的表示方法是:矩形框中寫有對象和 / 或類名,且名字下面有下劃線;同時有一條縱向的虛線表示對象在序列中的執(zhí)行情況 ( 即發(fā)送和接收的消息對象的活動 ) , 這條虛線稱為對象的生命線。對象間的通信用對象的生命線之間的水平的消息線來表示,消息線的箭頭說明消息的類型,如同步,異步或簡單 。 瀏覽時序圖的方法是,從上到下查看對象間交換的消息,分析那些隨著時間的流逝而發(fā)生的消息交換。時序圖中的消息可以是信號、操作調用或類似于 c+ 中的 rpc ( remote procedur

45、e call,遠程過程調用)或 java 中的 rmi ( remote method invocation , 遠程方法調用)。當對象接收到一個消息時,該對象中的一項活動就會啟動,我們把這一過程稱做激活 ( activation )。 激活會顯示控制焦點,表明對象在某一個時間點開始執(zhí)行。一個被激活的對象或者是執(zhí)行它自身的代碼,或者是等待另一個對象的返回(該被激活的對象已經(jīng)向另一個對象發(fā)送了消息)。在圖形上,激活被繪制為對象生命線上的一個瘦高矩形。消息可以用消息名及參數(shù)來標識。消息還可帶有條件表達式,表示分支或決定是否發(fā)送消息。如果用于表示分支,則每個分支是相互排斥的,即在某一時刻僅可發(fā)送分支

46、中的一個消息。消息也可以有順序號,但是在時序圖中,消息的順序號很少使用,因為時序圖已經(jīng)將消息的順序顯式地表示出來了。一個對象可以通過發(fā)送消息來創(chuàng)建另一個對象,當一個對象被刪除或自我刪除時,該對象用 "x"標識。 子模塊名功能需求程序添加文件1. 用戶左鍵單擊添加選項2. 系統(tǒng)彈出添加窗體3. 用戶選擇歌曲或小說單擊確定略 圖4-2 時序圖設計4.2.3 性能 mp3文件大?。?10mb 該軟件的時間特性要求:(1)響應時間:0.012s;(2)數(shù)據(jù)的轉換和傳送時間:0.012s。4.2.4 模塊的實現(xiàn)(1)播放進度通過pnonon:seekslider,設置它的媒體管理源為

47、改音樂播放器的源就可以了。如:seekslider->setmediaobject(meidaobject);(2)音量控制通過phonon:volumesilder,關聯(lián)媒體輸出設備,如:volumesilder->setaudiooutput(audiooutput).(3)播放此功能比較簡單,當點擊播放按鈕時,隱藏播放按鈕,顯示暫停按鈕,并讀取current中的信息,通過phonon的函數(shù)play()實現(xiàn)播放。先把媒體管理源和媒體連接設備建立連接(path),在通過信號槽機制,當用戶打擊paly按鈕時,則播放音樂。如:audiooutput = new phonon:audi

48、ooutput(phonon:musiccategory, this);mediaobject = new phonon:mediaobject(this);phonon:createpath(mediaobject, audiooutput);on_playbutton_clicked();playaction->trigger(); /觸發(fā)播放按鈕 connect(playaction, signal(triggered(), mediaobject, slot(play();或者(playbutton, signal(clicked(), mediaobject, slot(pla

49、y();(4)暫停此功能也比較簡單,當點擊暫停按鈕時,隱藏暫停按鈕,顯示播放按鈕,調用phonon中的pause()函數(shù),將播放暫停。 (5)上一首和下一首這里主要是獲取qtablewidget里面的選項,通過索引index的值來確定。改變qtablewidget的行號。從phonon:mediasource的list來獲取他的源信息。代碼:qlist<phonon:mediasource> sources;槽觸發(fā): on_nextbutton_clicked();index = sources.indexof(meidaobject->currentsource() + 1

50、;mediaobject->stop;mediaobject->setcurrentsource(sources.at(index); /跳到改源信息 (6)歌曲的顯示通過qtablewidget類來獲取歌曲信息,并存入sources中,最后把他顯示在qtablewidget中。通過phonon:mediaobejct的metadata來獲取歌曲的源信息,(因為歌曲中本來就儲存了改信息,每個文件都存儲了和該文件相關的信息,多有就可以用媒體管理源直接調用就行)包括album,artist,date等,創(chuàng)建qtablewidgetitem項,最后通過qtablewidget的setit

51、em把qtablewidgetitem添加進去就可以了。代碼:qmap<qstring, qstring> metadata = metainformationresolver.metadata();qtablewidgetitem *titleitem = new qtablewidget(title);qtablewidgetitem *artist = new qtablewidget(metadata.value(“artist”);如果包括多個選項,則返回最近插入的記錄。int currentrow = tablewidget->rowcount(); /返回當前所

52、在的行tablewidget->insertrow(currentrow); /插入一個空行table->tablewidget->setitem(currentrow, 0, titleitem); /插入一個記錄table->tablewidget->setitem(currentrow, 1, titleitem);/后移phonon:mediasource source = metainformation->currentsource();int index = sources.indexof(metainformationresolver->

53、currentsource() + 1;if(sources.size() > index) metainformationreslover->setcurrentsource(sources.at(index);tablewidget->resizecolumntocontents() /調整tablewidget列寬度,使其和內(nèi)容相適宜。 (7)添加歌曲主要用到qfiledialog類的靜態(tài)函數(shù)getopenfilenames() /添加的是多個文件名,并且要記得把源文件信息存儲在sources中代碼:qstringlist files = qfiledialog:getopenfilenames(this, tr(“打開文件”), /*第三個參數(shù)是路徑*/);int index = sources.size();foreach(qstring str, files)phonon:mediasources source(str);sources.append(souece); (8)時間的顯示用信號槽來實現(xiàn)。首先設置媒體對象源設計2個時鐘周期的時間間隔。當時間間隔到了的時候,就觸發(fā)時間(lcdnumber

溫馨提示

  • 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

提交評論