計(jì)算機(jī)科學(xué)與技術(shù)MP3音樂文件管理器的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
計(jì)算機(jī)科學(xué)與技術(shù)MP3音樂文件管理器的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
計(jì)算機(jī)科學(xué)與技術(shù)MP3音樂文件管理器的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
計(jì)算機(jī)科學(xué)與技術(shù)MP3音樂文件管理器的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
計(jì)算機(jī)科學(xué)與技術(shù)MP3音樂文件管理器的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、(2011 屆)屆) 本科畢業(yè)設(shè)計(jì)(論文)本科畢業(yè)設(shè)計(jì)(論文) mp3 音樂文件管理器的設(shè)計(jì)與實(shí)現(xiàn) 學(xué)學(xué) 院、系:院、系: 計(jì)計(jì)算機(jī)與通信學(xué)院算機(jī)與通信學(xué)院 專專 業(yè)業(yè): : 計(jì)計(jì)算機(jī)科學(xué)與技算機(jī)科學(xué)與技術(shù)術(shù) 學(xué)學(xué) 生生 姓姓 名:名: 班班 級(jí)級(jí): : 學(xué)號(hào)學(xué)號(hào) 指指導(dǎo)導(dǎo)教教師師姓名:姓名: 職職稱稱 最最終評(píng)終評(píng)定成定成績績 2011 年 6 月 工業(yè)大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) mp3 音樂文件管理器的設(shè)計(jì)與實(shí)現(xiàn) 院 (系): 專 業(yè): 學(xué) 號(hào): 學(xué) 生 姓名: 指 導(dǎo) 教師: 2011 年 6 月 摘要 隨著計(jì)算機(jī)和多媒體技術(shù)的不斷發(fā)展以及個(gè)人計(jì)算機(jī)的普及,各種各樣的媒體文 件、媒體播放

2、器層出不窮,而 mp3(mpeg audio layer3)格式以其體積小、音質(zhì)也有 保證的特點(diǎn)成為使用最為廣泛的音頻格式,得到了絕大多數(shù)軟件和硬件媒體播放器的 支持。如今,軟件市場上的媒體播放器層出不窮,如:winamp、foobar 2000 和千千 靜聽等。但是,當(dāng)播放器中有大量的文件和內(nèi)容時(shí),不能夠很好的管理這些文件,這 就需要我們?cè)O(shè)計(jì)一個(gè)用來管理這些文件的管理器,來對(duì)這些文件進(jìn)行分類列表等。為 了方便用戶管理磁盤上大量的音樂文件,我們本題研究制作了一個(gè)音樂文件管理器, 用來管理音樂文件,包括對(duì)文件進(jìn)行分類,添加列表,并對(duì)列表進(jìn)行管理,對(duì)歌曲信 息進(jìn)行修改等等。 本課題探索性地設(shè)計(jì)實(shí)現(xiàn)

3、了一個(gè) mp3 音樂文件管理器,要求實(shí)現(xiàn)以下功能:通過 搜索磁盤上的 mp3 音樂文件,維護(hù)一個(gè)自定義的播放列表;播放列表中有關(guān) mp3 文件 的信息,如歌名、藝術(shù)家、流派、歌詞、封面、專輯等信息,通過查找 mp3 文件的 3 種標(biāo)簽信息來自動(dòng)填寫;也可以編輯播放列表,然后把這些信息添加或更新到 mp3 文 件的標(biāo)簽中;提供把自定義播放列表轉(zhuǎn)換為常用播放器使用的播放列表格式,如 m3u,pls,asx 等。 論文首先介紹了系統(tǒng)研究背景、研究目標(biāo)及意義,以及什么是音樂文件管理器和 對(duì) mp3 標(biāo)簽的認(rèn)識(shí),然后,論文介紹了系統(tǒng)的需求分析,闡述了系統(tǒng)各功能的詳細(xì)設(shè) 計(jì)與實(shí)現(xiàn),并對(duì)一些重要功能進(jìn)行了詳

4、細(xì)的代碼說明,最后,論文介紹了系統(tǒng)的運(yùn)行 環(huán)境與運(yùn)行效果,并對(duì)各個(gè)部分進(jìn)行了圖示說明。另外,論文還做了一些其他補(bǔ)充, 使論文更加完整。 關(guān)鍵詞:文件管理器;java;添加列表;文件分類 abstract along with the development and popularzation of computers and multimedia technology,various media types and media players emerge continually.the mp3(mpeg audio layer3)type is one of the most broadly

5、 used audio types.because mp3 has small volume and high tone quality,it has been supported by most software and hardware media players.nowdays,the media players on the market of software emerge one after another incessantly,such as winamp,foorbar 2000,ttplayer,and etc.the higher tone quality and the

6、 lower memory consumption are the goals that each kind of media player pursues. a piece of software which is called mp3 player with timely-displaying lyric is designed and realized in this thesis.this software is developed by using the existing decoder of media files and java language.the player can

7、 display lyric with real-time while playing mp3,and it supports some other types of common media files. firstly,this thesis introduces mp3 and mp3 file manager,research contents and chapter.secondly,the design goal of the system is analyzed,and the functin modules of the system are divided and desig

8、ns,including playing control,playlist management,lyric display,menu management and help,also the process flows of media and lyric files are designed.thirdly,the development platforms are introduced,and the detailed design and realization of various functions of the system are described.at last,the r

9、unning results of the system are explained by the copied running screens. keywords:file manager;java;add to list;text categorization 目 錄 第一章 緒論.1 1.1 研究背景、目的及意義.1 1.2 音樂文件管理器.2 1.3 開發(fā)平臺(tái)及環(huán)境.2 1.3.1 java 簡介.2 1.3.2 myeclipse6.0 集成開發(fā)環(huán)境.3 1.4 id3 是什么.3 第二章 系統(tǒng)需求分析.5 2.1 系統(tǒng)目標(biāo).5 2.2 系統(tǒng)功能需求分析.5 2.2.1 需求分析的任

10、務(wù).6 2.2.2 可行性分析任務(wù).6 2.2.3 mp3 音樂文件管理器的需求分析.7 2.2.4 假定和約束.7 2.2.5 文件管理程序的數(shù)據(jù)流圖.7 第三章 系統(tǒng)分析與設(shè)計(jì).9 3.1 系統(tǒng)功能模塊設(shè)計(jì).9 3.1.1 音樂文件管理系統(tǒng)功能模塊圖.9 3.1.2 系統(tǒng)功能模型圖.10 3.2 系統(tǒng)的幾個(gè)重要 uml 圖.11 第四章 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn).14 4.1 算法分析.14 4.2 獲取標(biāo)簽的詳細(xì)代碼.15 4.3 標(biāo)簽的修改和刪除.16 4.4 程序運(yùn)行結(jié)果圖.23 結(jié)論.28 致謝.29 參考文獻(xiàn).30 附錄.31 第一章第一章 緒論緒論 1.11.1 研究背景、目的及意義研究

11、背景、目的及意義 隨著互聯(lián)網(wǎng)經(jīng)濟(jì)的到來,娛樂成為一種每個(gè)人都喜歡的活動(dòng)。它為我們和用戶提 供休閑的平臺(tái),讓人們足不出戶就可以了解到各種各樣的音樂;而對(duì)于用戶來說,音 樂文件管理器則為他們提供了方便快捷省時(shí)的服務(wù),強(qiáng)大的搜索功能讓他們隨心所欲 的找到自己喜歡的音樂信息,輕輕的點(diǎn)擊鼠標(biāo)就可以找出自己想要的,還可以對(duì)音樂 的歌詞、演唱家等信息進(jìn)行修改和編輯,在娛樂的同時(shí)能夠放松心情,休息。 軟件產(chǎn)品的出現(xiàn)主要是緩解人們壓力,將人從復(fù)雜的腦力勞動(dòng)和繁雜的體力勞動(dòng) 中解脫出來,并且可以實(shí)現(xiàn)娛樂的快捷,方便以及高效搜索和更改。本課題探索性地 設(shè)計(jì)實(shí)現(xiàn)了一個(gè) mp3 音樂文件管理器,要求實(shí)現(xiàn)以下功能:通過搜

12、索磁盤上的 mp3 音 樂文件,維護(hù)一個(gè)自定義的播放列表;播放列表中有關(guān) mp3 文件的信息,如歌名、藝 術(shù)家、流派、歌詞、封面、專輯等信息,通過查找 mp3 文件的 3 種標(biāo)簽信息來自動(dòng)填 寫;也可以編輯播放列表,然后把這些信息添加或更新到 mp3 文件的標(biāo)簽中;提供把 自定義播放列表轉(zhuǎn)換為常用播放器使用的播放列表格式,如 m3u,pls,asx 等。 本系統(tǒng)實(shí)現(xiàn)的管理器功能齊全,它能方便管理磁盤上大量 mp3 文件,提供搜索, 分類列表等功能。它能夠直接添加文件,從磁盤上添加多個(gè)文件,還可以添加多個(gè)目 錄,并且,能方便的查找你想要的歌曲,并直接試聽。如果不想要更新列表,還可將 列表清空重新

13、添加。當(dāng)你選擇添加文件時(shí),管理器會(huì)直接彈出磁盤上的所有文件供你 選擇,你可以選擇一個(gè)或多個(gè)文件添加進(jìn)管理器,方便對(duì)文件的管理。當(dāng)你選中一首 歌曲,就會(huì)出現(xiàn)試聽歌曲、查找歌曲、修改歌曲信息等標(biāo)簽,也可以刪除選定的歌曲。 還可以查看歌曲的參數(shù)設(shè)置。音樂查找模塊包括按照不同的查找方式來遍歷樂庫,查 找歌曲。播放列表管理模塊包括在播放列表中添加歌曲,移除歌曲,增加本地文件夾, 移除本地文件夾,新建播放列表,清空播放列表,刪除播放列表等。 本軟件的界面簡單漂亮,易于操作,即使用戶沒有很多計(jì)算機(jī)操作知識(shí),也可以 很快就能進(jìn)行操作。它還有很多優(yōu)點(diǎn),用戶在實(shí)際操作中將會(huì)感受的到,當(dāng)然它還有 一點(diǎn)點(diǎn)的小問題沒有

14、做的很完美,不過不會(huì)有太多影響。 1.21.2 音樂文件管理器音樂文件管理器 隨著社會(huì)的發(fā)展,人們對(duì)精神生活的需求越來越高,音樂作為娛樂中的很重要的 一部分,給人們的生活帶來了很大的影響。當(dāng)磁盤上的音樂文件越來越多時(shí),就給人 們帶來了很大的困擾,人們沒辦法很快的找到自己想聽的歌曲,mp3 音樂文件管理器 就是一個(gè)用來管理用戶磁盤上大量音樂文件的,它能將任何的類型的一部專輯或合集 保存成為一個(gè)單獨(dú)的文本文件,在需要時(shí)可方便地調(diào)用查看。它可以記錄每部專輯 合集的名稱、歌手,每首歌曲的名稱、歌手或演唱樂隊(duì)、時(shí)間和歌詞,并且可以任意 設(shè)置每一項(xiàng)的字體、字號(hào)和顏色,以達(dá)到視覺上的享受。另外,它還能將每首

15、歌曲對(duì) 應(yīng)一個(gè)音樂文件您只需要在瀏覽歌詞的同時(shí)輕輕一按,就能馬上聽到這首歌,您甚至 可以選擇在打開這首歌曲時(shí)就自動(dòng)播放這首歌曲,做到完全的自動(dòng)化。 音樂文件管理器可以方便的管理磁盤內(nèi)的音樂文件,當(dāng)你選擇添加文件時(shí),管理 器會(huì)直接彈出磁盤上的所有文件供你選擇,你可以選擇一個(gè)或多個(gè)文件添加進(jìn)管理器, 方便對(duì)文件的管理。當(dāng)你選中一首歌曲,就會(huì)出現(xiàn)試聽歌曲、查找歌曲、修改歌曲信 息等標(biāo)簽,也可以刪除選定的歌曲。還可以查看歌曲的參數(shù)設(shè)置。音樂查找模塊包括 按照不同的查找方式來遍歷樂庫,查找歌曲。播放列表管理模塊包括在播放列表中添 加歌曲,移除歌曲,增加本地文件夾,移除本地文件夾,新建播放列表,清空播放列

16、 表,刪除播放列表等。 1.31.3 開發(fā)平臺(tái)及環(huán)境開發(fā)平臺(tái)及環(huán)境 本系統(tǒng)采用的開發(fā)平臺(tái)是微軟公司的 visual studio 平臺(tái),選擇 java 作為應(yīng)用 程序開發(fā)工具。 .1 javajava 簡介簡介 java 是 sun 公司推出的新一代面向?qū)ο蟪绦蛟O(shè)計(jì)語言,特別適合于 internet 應(yīng) 用程序開發(fā)。java 的產(chǎn)生與流行是當(dāng)今 internet 發(fā)展的客觀要求,java 是一門各方 面性能都很好的編程語言,特別適合于 internet 應(yīng)用程序開發(fā)。java 的產(chǎn)生與流行 是當(dāng)今 internet 發(fā)展的客觀要求,java 是一門各方面性能都很好的編程語言,它

17、的 基本特點(diǎn)是簡單、面向?qū)ο?、分布式、解釋的、健壯的、安全的、結(jié)構(gòu)中立的、可移 植的、性能很優(yōu)異的、多線程的、動(dòng)態(tài)的,特別適合在 internet 環(huán)境上開發(fā)的應(yīng)用 系統(tǒng)。 .2 myeclipse6.0myeclipse6.0 集成開發(fā)環(huán)境集成開發(fā)環(huán)境 eclipse 是一個(gè)開發(fā)源代碼的,基于 java 的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言, 他只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,其中就包括 java 開發(fā)工具(java development tools,jdi) 。eclipse3.4.1 是目前的最新版本,我

18、們可以在其官方網(wǎng)站上下載。 myeclipse 是 eclipse 的插件,集成了對(duì) spring,struts,jdbc 等主流 javaee 組 件開發(fā)插件的支持,大大簡化了 javaee 應(yīng)用的開發(fā) 。不同版本的 myeclipse 都要求 與特定版本的 eclipse 配合,這在下載 myeclipse 時(shí)都能看到。 1.41.4 id3id3 是什么是什么 id3標(biāo)簽是mp3文件中用于描述音樂信息的數(shù)據(jù)元素(metadata)。我們知道, mp3實(shí)際上是mpeg 1 layer 3的縮寫,它只定義了一種數(shù)據(jù)壓縮方式,并沒有特別說 明如何在文件中添加描述音樂本身的信息。id3的出現(xiàn)解決

19、了這個(gè)問題,它通過在mp3 數(shù)據(jù)前面或者后面添加描述信息,讓管理和組織mp3更容易。 id3目前有多個(gè)版本,最常見的是id3 v1.1和id3 v2.4。 id3的版本 如果沒有id3,那么人們只能根據(jù)文件名判斷一首歌它是什么內(nèi)容了,何況就算 聽出了是什么歌,它的演唱者、專輯名稱你也未必背得下來,所以給mp3文件增加內(nèi) 置的標(biāo)簽是理所當(dāng)然的事情。有趣的是,mp3的標(biāo)簽并沒有一個(gè)iso國際標(biāo)準(zhǔn),id3的 各種版本目前只是一個(gè)近乎事實(shí)上的標(biāo)準(zhǔn),并沒有人強(qiáng)迫播放器或者編碼程序必須支 持它。 根據(jù)維基百科全書的解釋,id3 v1是由eric kemp在1996年發(fā)明的。id3 v1是一 組附加在音樂文

20、件后面的數(shù)據(jù),它的長度是固定的128字節(jié)。id3v1.0的定義如下表: 其中流派一共定義了79種,流行的播放軟件winamp則把它擴(kuò)展到了125種,從 blues到noise到dance hall,非常豐富,在許多支持id3編輯的軟件中都可以看到這 個(gè)列表,但是國內(nèi)用戶似乎不太在意這個(gè)標(biāo)記,大多數(shù)人甚至不知道自己的歌曲到底 屬于哪一個(gè)分類。 這些內(nèi)容一共只有128個(gè)字節(jié),并不算累贅。由于附加在文件尾部,所以播放器 不必考慮它的影響,即使不支持id3標(biāo)記也不會(huì)影響音樂的還原某些很老的播放 器確實(shí)可能會(huì)在播放到這里的時(shí)候發(fā)出噪音或者報(bào)錯(cuò)。但是標(biāo)記在文件尾部也會(huì)造成 一個(gè)問題,那就是如果還沒有讀到文

21、件末尾,我們什么信息也看不到。對(duì)硬盤和閃存 里面的歌曲這當(dāng)然不是問題,但是如果你通過流媒體方式直接在網(wǎng)絡(luò)上收聽,就會(huì)發(fā) 現(xiàn)它的缺陷了。 細(xì)心的人會(huì)注意到id3v1.0沒有包括曲目序號(hào)的定義,所以michael mutschler在 1997年進(jìn)行了改進(jìn),引入了版本1.1。通過占用備注字段的最后兩個(gè)字節(jié),用一個(gè)00 字節(jié)作標(biāo)記,另一個(gè)字節(jié)改為序號(hào),可以讓id3支持曲目編號(hào)了。一個(gè)字節(jié)的空間讓 id3 v1.1支持最高到255的曲目序號(hào),考慮到一張唱片超過256個(gè)曲目的可能性極小, 這個(gè)改進(jìn)還是相當(dāng)合理的。 有趣的工具mp3ext mp3ext是windows的一個(gè)擴(kuò)展工具,讓你可以直接在wind

22、ows瀏覽器里面查看和編 輯mp3標(biāo)記信息,還能直接用圖標(biāo)告訴你文件的編碼速率。它是一個(gè)功能強(qiáng)大的免費(fèi) 軟件,可以在http:/odin.mutschler.de/mp3ext/mp3ext.html以及 http:/ 另外,你有沒有注意到它的作者就是id3 v1.1的發(fā)明人? id3v1和v1.1實(shí)際上要求使用iso 8859-1拉丁字母編碼,但是很多人為了方便直 接使用自己當(dāng)前操作系統(tǒng)的代碼頁。大多數(shù)情況下這不算什么問題,但是在跨越語言 平臺(tái)的時(shí)候就會(huì)出現(xiàn)亂碼等情況。例如你在中文操作系統(tǒng)下查看西班牙語的歌曲信息, 可能就會(huì)看到奇怪的亂碼,甚至某些id3編輯軟件可能處理不了中文。 隨著id3

23、應(yīng)用的普及,人們逐漸發(fā)現(xiàn)id3v1過于簡單了,很多感興趣的信息無法加 入,比如作曲者、歌詞、演奏者、指揮等等進(jìn)一步的信息無法附著其上,甚至連比較 長的曲目名都處理不了,于是id3v2的出現(xiàn)也就是順理成章的了。 與死板的id3v1不同,id3v2是一個(gè)靈活的標(biāo)簽格式,它不但提供了更豐富的預(yù)定 義字段和更長的數(shù)據(jù)空間,而且支持用戶自定幀,它的長度也是可變的。于是,利用 id3v2,我們不但可以讓mp3附帶歌詞,而且可以包括唱片封面圖片、音色調(diào)節(jié)設(shè)置、 甚至mtv影像和卡拉ok字幕。 id3v2的靈活性和可擴(kuò)展性讓用戶可以給音樂文件添加任何想得出來的相關(guān)信息。 它支持最大256mb的數(shù)據(jù),最長的數(shù)據(jù)

24、幀可以達(dá)到16mb。所以如果你愿意,id3v2增加 的數(shù)據(jù)可以讓附加信息龐大到比歌曲信息本身還要占據(jù)更多空間的地步。 缺省狀況下,id3v2附加于文件頭部,但是這也不會(huì)影響不支持id3v2的播放器, 因?yàn)樗匾庠O(shè)計(jì)為用“非同步”方式儲(chǔ)存信息,不兼容的播放器會(huì)簡單地跳過這一部 分。在id3v2.4的版本中用戶也可以選擇把它附加到文件尾部。把信息放到文件頭部 對(duì)于流媒體播放來說有很大優(yōu)勢(shì)在聽到音樂之間關(guān)于樂曲本身的信息就已經(jīng)可以 顯示了。但是這么做的缺點(diǎn)是如果用工具軟件改變了id3的長度,那么整個(gè)文件都需 要重新寫入,效率受到影響。另外,id3v2支持unicode,不同語言的信息可以比較好 地互

25、相兼容。 第二章第二章 系統(tǒng)需求分析系統(tǒng)需求分析 2.12.1 系統(tǒng)目標(biāo)系統(tǒng)目標(biāo) 本系統(tǒng)的目標(biāo)是為了實(shí)現(xiàn)一個(gè)音樂文件管理器,用來管理磁盤上大量的音樂文件, 它可以將這些音樂文件進(jìn)行分類列表,也可以完成對(duì)歌曲的搜索功能,你可以把磁盤 上的音樂文件進(jìn)行分類,然后添加進(jìn)管理器,管理器可以將這些文件列表管理,在音 樂列表中,你可以選中列表中的某一首歌曲,直接試聽,還可以修改這首歌曲的參數(shù), 包括歌曲的歌詞、演唱者等等信息。你也可以選中多個(gè)歌曲,進(jìn)行批量操作,當(dāng)然, 你也能對(duì)列表進(jìn)行操作,比如修改名稱,清除列表等等。你還可以根據(jù)自己的喜好, 對(duì)文件進(jìn)行分類,根據(jù)分類更加方便的查找你喜歡的歌曲。 2.22

26、.2 系統(tǒng)功能需求分析系統(tǒng)功能需求分析 一個(gè)軟件系統(tǒng)設(shè)計(jì)的成敗,除了在功能上要盡可能地完善以外,在界面設(shè)計(jì)上也 有很大的決定性作用。 如果你的軟件界面很糟糕,不能讓使用該軟件的用戶滿意,那么你開發(fā)的產(chǎn)品將 被“凍結(jié)”起來,得不到用戶的響應(yīng)。所以,軟件產(chǎn)品的界面設(shè)計(jì)應(yīng)該具有友好性這 一特點(diǎn)。除此之外,還應(yīng)該有簡潔性。如果你的產(chǎn)品只注意了友好美觀的界面,而使 得你的界面很復(fù)雜,將會(huì)給用戶帶來極大的不便,從而會(huì)適得其反。比如,一個(gè)最簡 單的操作用戶要點(diǎn)擊一個(gè)按鈕,而你的界面上到處都是按鈕圖片之類的,這就會(huì)讓用 戶花上很長的時(shí)間去尋找要點(diǎn)擊的按鈕,這樣一來,當(dāng)然就不能使用戶滿意了。 基于此,本系統(tǒng)將使

27、用 java 來設(shè)計(jì)界面,并且共有 3 個(gè)界面窗口,分別是:文 件夾窗口、列表窗口、參數(shù)窗口。為了更好地實(shí)現(xiàn)系統(tǒng)的各項(xiàng)功能及這些功能的完整 性,現(xiàn)在把系統(tǒng)共分為以下幾大模塊進(jìn)行設(shè)計(jì): (1)添加文件模塊 (2)添加目錄模塊 (3)查找歌曲模塊 (4)列表管理模塊 (5)幫助模塊 .1 需求分析的任務(wù)需求分析的任務(wù) 需求分析是軟件定義時(shí)期的最后一個(gè)階段,也是設(shè)計(jì)數(shù)據(jù)庫的一個(gè)起點(diǎn),它確定 了系統(tǒng)必須完成哪些工作,提出完整、準(zhǔn)確、清晰和具體的要求,直接影響到后面各 個(gè)階段的設(shè)計(jì),及設(shè)計(jì)結(jié)果是否合理和實(shí)用。 需求分析的任務(wù)是通過詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對(duì)象,充分了解原系統(tǒng)工作概 況,明

28、確用戶的各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能。新系統(tǒng)必須充分考慮 今后可能的擴(kuò)充和改變,不能僅僅按當(dāng)前應(yīng)用需求來設(shè)計(jì)系統(tǒng)。 其主要解決的問題: 信息要求:用戶希望得到什么樣的信息。 處理要求:明確用戶對(duì)數(shù)據(jù)有什么樣的處理要求,從而確定數(shù)據(jù)之間的相互關(guān)系。 安全性與完整性要求:確定用戶的最終需求是一件很困難的事情,用戶缺少計(jì)算 機(jī)知識(shí),不能準(zhǔn)確表達(dá)自己的需求,所提出的需求往往經(jīng)常變化。設(shè)計(jì)人員缺少用戶 的專業(yè)知識(shí),不易理解用戶的真正需求。因此在需求分析階段要求客戶的廣泛參與, 設(shè)計(jì)人員也要去熟悉客戶的業(yè)務(wù)工作,才能逐步確定用戶的實(shí)際需求。 .2 可行性分析任務(wù)可行性分析任務(wù)

29、可行性分析的任務(wù)就是進(jìn)一步澄清問題定義,以期用最小的代價(jià)在盡可能短的時(shí) 間內(nèi)確定問題是否可以解決。 可行性分析: 1、技術(shù)可行性 在現(xiàn)有技術(shù)條件下,因?yàn)?java 日趨成熟,數(shù)據(jù)庫的技術(shù)也掌握的越來越多,文 件管理器功能正在進(jìn)一步完善。 2、經(jīng)濟(jì)可行性 經(jīng)濟(jì)方面由于是自行開發(fā),基于個(gè)人 pc,所以經(jīng)費(fèi)開銷很小,系統(tǒng)運(yùn)行之后產(chǎn) 生的效益將遠(yuǎn)大于開發(fā)成本,經(jīng)濟(jì)可行。 3、操作可行性 系統(tǒng)實(shí)現(xiàn)從用戶角度考慮,所以所有操作都是非常簡單的鼠標(biāo)鍵盤操作,界面設(shè) 計(jì)清晰明了,用戶在操作方面只要有普通計(jì)算機(jī)操作基礎(chǔ)的都可以勝任,所以操作方 面也是可行的。 .3 mp3mp3 音樂文件管理器的需

30、求分析音樂文件管理器的需求分析 用戶的需求具體體現(xiàn)在各種信息的提供、保存、更新、查詢和刪除上,以及操作 的簡單性和方便性,用戶的需求如下: 1、它可以從磁盤上添加文件,并對(duì)添加的文件歌曲進(jìn)行列表分類 2、它可以對(duì)列表進(jìn)行管理,包括清空列表,刪除列表內(nèi)的歌曲,試聽列表內(nèi)的 歌曲等等。 3、它可以記錄每部專輯合集的名稱、歌手,每首歌曲的名稱、歌手或演唱樂 隊(duì)、時(shí)間和歌詞,并且可以任意設(shè)置每一項(xiàng)的字體、字號(hào)和顏色,以達(dá)到視覺上的享 受。 4、對(duì)歌曲文件進(jìn)行改名、對(duì)歌曲的播放次序進(jìn)行排序,修改歌曲文件的信息 (批量操作) 5、查找歌曲,根據(jù)分類,隨時(shí)查找自己想聽的歌曲,及歌曲的所有信息 2.2.42.

31、2.4 假定和約束假定和約束 1、開發(fā)經(jīng)費(fèi)方面,由于是畢業(yè)設(shè)計(jì),所以無需資金投入,一切都是在項(xiàng)目組成 員課外時(shí)間完成。 2、由于是應(yīng)用服務(wù)程序,一切以用戶的需求為最根本的出發(fā)點(diǎn)。 3、考慮到用戶的計(jì)算機(jī)操作水平有限,希望開發(fā)出的系統(tǒng)應(yīng)保證界面友好,操 作簡單明了,性能可靠,易于維護(hù),可擴(kuò)展,易于升級(jí)。 .5 文件管理程序的數(shù)據(jù)流圖文件管理程序的數(shù)據(jù)流圖 0 層圖 1 層圖 呈現(xiàn)音樂列表放 列表 管理列表生成器選擇 mp3 文件 mp3 音樂管理程序 文件列表文件列表音樂列表音樂列表 本地文件網(wǎng)絡(luò)資源 url 選擇 mp3 文件 文件流 文件路徑 文件列表 將文件讀入流 讀取文件

32、標(biāo)簽 文件列表 加入音樂隊(duì)列 音樂列表 歌曲信息 標(biāo)簽組 歌曲信 息對(duì)象 文件地址 2 層圖 圖 2.1 第三章第三章 系統(tǒng)分析與設(shè)計(jì)系統(tǒng)分析與設(shè)計(jì) 3.13.1 系統(tǒng)功能模塊設(shè)計(jì)系統(tǒng)功能模塊設(shè)計(jì) 系統(tǒng)功能模塊設(shè)計(jì)是軟件開發(fā)中非常重要的一部分,因?yàn)橹挥凶龊霉δ苣K的設(shè) 計(jì),編寫程序的時(shí)候才不至于盲目,也不至于沒有條理性,甚至?xí)┑艉芏嗟臇|西, 這就像一個(gè)建筑物的設(shè)計(jì)圖一樣,由此可見它的重要性。本系統(tǒng)共分為以下幾個(gè)窗口,它 們分別是:文件夾窗口、列表窗口、參數(shù)窗口。為了更好地實(shí)現(xiàn)系統(tǒng)的各項(xiàng)功能及這 些功能的完整性,現(xiàn)在把系統(tǒng)共分為以下幾大模塊進(jìn)行設(shè)計(jì): (6)添加文件模塊 (7)添加目錄模塊 (

33、8)查找歌曲模塊 (9)列表管理模塊 (10)幫助模塊 .1 音樂文件管理系統(tǒng)功能模塊圖音樂文件管理系統(tǒng)功能模塊圖 音樂文件管理系統(tǒng)主要實(shí)現(xiàn)的是用戶能管理磁盤上大量的音樂文件,它可以將這 些音樂文件進(jìn)行分類列表,也可以完成對(duì)歌曲的搜索功能,你可以把磁盤上的音樂文 件進(jìn)行分類,然后添加進(jìn)管理器,管理器可以將這些文件列表管理,在音樂列表中, 你可以選中列表中的某一首歌曲,直接試聽,還可以修改這首歌曲的參數(shù),包括歌曲 的歌詞、演唱者等等信息。你也可以選中多個(gè)歌曲,進(jìn)行批量操作,當(dāng)然,你也能對(duì) 列表進(jìn)行操作,比如修改名稱,清除列表等等。你還可以根據(jù)自己的喜好,對(duì)文件進(jìn) 行分類,根據(jù)分類

34、更加方便的查找你喜歡的歌曲。 下圖 3.1 為系統(tǒng)的功能模塊圖: 圖 3.1 功能模塊圖 .2 系統(tǒng)功能模型圖系統(tǒng)功能模型圖 系統(tǒng)功能分為三大模塊:mp3 文件搜索、mp3 播放列表維護(hù)和 mp3 播放,搜索可 分為手動(dòng)搜索和自動(dòng)搜索,播放列表維護(hù)包括增加記錄、修改記錄刪除記錄及對(duì)文件 的修改還有列表格式的轉(zhuǎn)換等等,下圖為系統(tǒng)功能模型圖: 圖 3.2 系統(tǒng)功能模型圖 3.23.2 系統(tǒng)的幾個(gè)重要系統(tǒng)的幾個(gè)重要 umluml 圖圖 uml 圖可以很直觀的反應(yīng)系統(tǒng)說要實(shí)現(xiàn)的功能 可以使用用例圖、類圖、時(shí)序圖等顯示系統(tǒng)的執(zhí)行過程、實(shí)現(xiàn)功能 uml 圖大大的方便了開發(fā)人員的開發(fā)步驟,使

35、開發(fā)人員能夠分模塊、分步驟的對(duì) 系統(tǒng)進(jìn)行開發(fā)。 類圖表示不同的實(shí)體(人、事物和數(shù)據(jù))如何彼此相關(guān);換句話說,它顯示了系 統(tǒng)的靜態(tài)結(jié)構(gòu)。類圖還可用于表示實(shí)現(xiàn)類,實(shí)現(xiàn)類就是程序員處理的實(shí)體。實(shí)現(xiàn)類圖 或許會(huì)與邏輯類圖顯示一些相同的類。然而,實(shí)現(xiàn)類圖不會(huì)使用相同的屬性來描述。 類在類圖上使用包含三個(gè)部分的巨型來描述。最上面的部分顯示類的名稱,中間 部分包含類的屬性,最下面的部分包含類的操作(或者說“方法” ) 。 圖 3.3 核心類圖 圖 3.4 播放器類圖 圖 3.5 獲取 apev2 搜索順序圖 第四章第四章 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 這里將介紹本系統(tǒng)的技術(shù)重點(diǎn)、難點(diǎn)的設(shè)計(jì)與實(shí)現(xiàn)。在整個(gè)項(xiàng)目

36、中,大量運(yùn)用了 java 類庫提供的功能,包括 java swing 高級(jí)組件的使用,基于對(duì)象序列化的配置保 持,基于 dnd 技術(shù)的拖放批量文件的播放等。 本系統(tǒng)最重要的部分是獲取標(biāo)簽,通過標(biāo)簽來修改文件信息,對(duì)文件分類,建立 列表等。 4.14.1 算法分析算法分析 超類 mp3tag,三個(gè)子類 mp3tagapev2、mp3tagid3v1、mp3tagid3v23 uml 類圖如圖 4.1 +decode(string decoder):void() +writetag():void() -gettaglength():int() +removetags():void() +inser

37、t(long off,byte b):void() mp3tagid3v1 +decode(string decoder):void() +writetag():void() -gettaglength():int() +removetags():void() -stitle:string -sartist:string -salbum:string -syear:string -scomment:string -itrack:int -igenre:int mp3tagid3v1 +decode(string decoder):void() +writetag():void() -getta

38、glength():int() +removetags():void() -stitle:string -sartist:string -salbum:string -syear:string -scomment:string -itrack:int -igenre:int mp3tagid3v23 +decode(string decoder):void() +writetag():void() -gettaglength():int() +removetags():void() -createtag():byte() -itemheader(int v1,int v2):byte() -r

39、eadapev2tags(byte taginfos):void() -stitle:string -sartist:string -salbum:string -syear:string -scomment:string -itrack:int -igenre:int mp3tagapev2 圖 4.1 id3 標(biāo)簽 uml 類圖 4.24.2 獲取標(biāo)簽的詳細(xì)代碼獲取標(biāo)簽的詳細(xì)代碼 package fileread; import java.io.file; import java.io.fileinputstream; import model.apev2; import model.id

40、3v1; import model.id3v2; public class findbq private file file; private long length; id3v2 id3v2 = new id3v2(); id3v1 id3v1 = new id3v1(); public findbq(file file) this.file = file; length = file.length()-128; public id3v2 gotid3v2() throws exception return id3v2=id3v2.readerid3v2(this.file); public

41、 id3v1 gotid3v1() throws exception return id3v1.readerid3v1(file, length); public apev2 readerapev2()throws exception byte header = new byte8; apev2 apev2 = new apev2(); fileinputstream fr = new fileinputstream(this.file); fr.skip(id3v2.getsize_tag()+10); /size_tag 數(shù)值有問題 system.out.println(id3v2.get

42、size_tag(); fr.read(header); system.out.println(new string(header); if(apev2.hasapev2(header) system.out.println(在 id3v2 之后); system.out.println(它含有 apev2 標(biāo)簽); fr.read(apev2.getversion(); fr.read(apev2.gettagsize(); fr.read(apev2.getitemcount(); fr.read(apev2.gettagflags(); fr.read(apev2.getreserved

43、(); fr.read(apev2.getitemvalsize(); fr.read(apev2.getitemflags(); else fr.skip(this.length-50-id3v2.getsize_tag(); system.out.println(id3v2.getsize_tag(); fr.read(header); if(apev2.hasapev2(header) system.out.println(在 id3v1 之前); system.out.println(它含有 apev2 標(biāo)簽); fr.read(apev2.getversion(); fr.read(

44、apev2.gettagsize(); fr.read(apev2.getitemcount(); fr.read(apev2.gettagflags(); fr.read(apev2.getreserved(); fr.read(apev2.getitemvalsize(); fr.read(apev2.getitemflags(); fr.close(); return apev2; 4.34.3 標(biāo)簽的修改和刪除標(biāo)簽的修改和刪除 package sxie.mp3tag; import java.io.file; import java.io.filenotfoundexception;

45、import java.io.ioexception; import java.io.randomaccessfile; import java.io.unsupportedencodingexception; import javax.activation.unsupporteddatatypeexception; public class mp3tagid3v1 extends mp3tag string stitle = ; string sartist = ; string salbum = ; string syear = ; string scomment = ; int itra

46、ck = 0; int igenre = 0; public mp3tagid3v1(file f) super(f); / todo auto-generated constructor stub private string readfixsizestring(byte in,int off,int size,string decoder) throws unsupportedencodingexception int length = size+off; int i = off; for(;i30?30:ssour.length; system.arraycopy(ssour, 0, b

47、id3v1infos, 3, length); ssour = sartist.getbytes(decoder); length = ssour.length30?30:ssour.length; system.arraycopy(ssour, 0, bid3v1infos, 33, length); ssour = salbum.getbytes(decoder); length = ssour.length30?30:ssour.length; system.arraycopy(ssour, 0, bid3v1infos, 63, length); ssour = syear.getby

48、tes(decoder); length = ssour.length4?4:ssour.length; system.arraycopy(ssour, 0, bid3v1infos, 93, length); ssour = scomment.getbytes(decoder); length = ssour.length28?30:ssour.length; system.arraycopy(ssour, 0, bid3v1infos, 97, length); if(length != 30) bid3v1infos126 = (byte)itrack; bid3v1infos126 =

49、 (byte)igenre; if(btaginfo) fopera.seek(flen-128); fopera.write(bid3v1infos); fopera.close(); else insert(fopera.length(), bid3v1infos); catch (filenotfoundexception e) catch (ioexception e) / todo auto-generated catch block try fopera.close(); catch (ioexception e1) fopera = null; public void setti

50、tle(string title) if(title = null) stitle = ; else stitle = title; public string gettitle() return stitle; public void setartist(string artist) if(artist = null) sartist =; else sartist = artist; public string getartist() return sartist; public void setalbum(string album) if(album = null) salbum = ;

51、 else salbum = album; public string getalbum() return salbum; public void setyear(string year) if(year = null) syear = ; else syear = year; public string getyear() return syear; public void setcomment(string comment) if(comment = null) scomment =; else scomment = comment; public string getcomment()

52、return scomment; public void settrack(int track) itrack = math.abs(track); public int gettrack() return itrack; public void setgenre(string genre) igenre = 0; public string getgenre() return string.valueof(igenre); public static void main(string args) throws ioexception / todo auto-generated method

53、stub file f = new file(mp3/江若琳-太早.mp3); /system.out.println(f.getname(); mp3tagapev2 mp = new mp3tagapev2(f); mp.decode(utf-8); mp.writetag(); system.out.println(mp.getartist(); 4.44.4 程序運(yùn)行結(jié)果圖程序運(yùn)行結(jié)果圖 圖 4.2 所示為系統(tǒng)主界面圖 圖 4.2 界面圖 點(diǎn)擊所有列表會(huì)出現(xiàn)圖 4.3 所示: 圖 4.3 列表界面圖 點(diǎn)擊清空列表會(huì)出現(xiàn)圖 4.4 所示: 圖 4.4 清空列表界面圖 點(diǎn)擊添加文件會(huì)出現(xiàn)如

54、下所示: 圖 4.5 查找界面圖 點(diǎn)擊添加目錄出現(xiàn)如 4.6 所示: 圖 4.6 添加目錄圖 點(diǎn)擊查找歌曲: 圖 4.7 查找歌曲圖 點(diǎn)擊刪除選定記錄: 圖 4.8 歌曲操作示意圖 選中歌曲后,可以對(duì)歌曲的信息進(jìn)行更改,如下圖所示,你可以更改歌曲的曲名、 藝人、專輯、年份備注等文件信息。 圖 4.9 歌曲文件信息修改圖 由于時(shí)間緊迫,有些功能還沒有完善,比如幫助模塊,雖然此系統(tǒng)操作簡便,對(duì) 于大部分人來說都很容易弄懂,但個(gè)人覺得還是應(yīng)該有,只能以后再進(jìn)行改進(jìn)了。 結(jié)論結(jié)論 經(jīng)過兩個(gè)多月的努力,畢業(yè)設(shè)計(jì)終于完成了,在整個(gè)設(shè)計(jì)過程中,出現(xiàn)過很多的 難題,但都在老師和同學(xué)的幫助下順利解決了,在此過程中,我付出了很大的心血, 查了大量的資料,以及無數(shù)次的更改和實(shí)驗(yàn)。通過這次畢業(yè)設(shè)計(jì),我以得出了以下幾 點(diǎn)結(jié)論: 寫論文是一個(gè)不斷學(xué)習(xí)的過程,從最初剛寫論文時(shí)對(duì)面臨的問題的模糊認(rèn)識(shí)到最 后能對(duì)該問題有深刻的認(rèn)識(shí),我體會(huì)到實(shí)踐對(duì)于學(xué)習(xí)的重要性,以前只是明白理論, 沒有經(jīng)過實(shí)踐考察,對(duì)知識(shí)的理解不夠明確,通過這次的做,真正做到理論實(shí)踐相結(jié) 合。 在進(jìn)行設(shè)計(jì)之前,必需要做大量的系

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論