版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、(2011 屆)屆) 本科畢業(yè)設(shè)計(jì)(論文)本科畢業(yè)設(shè)計(jì)(論文) mp3 音樂(lè)文件管理器的設(shè)計(jì)與實(shí)現(xiàn) 學(xué)學(xué) 院、系:院、系: 計(jì)算機(jī)與通信學(xué)院計(jì)算機(jī)與通信學(xué)院 專專 業(yè):業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)計(jì)算機(jī)科學(xué)與技術(shù) 學(xué)學(xué) 生生 姓姓 名:名: 班班 級(jí):級(jí): 學(xué)號(hào)學(xué)號(hào) 指導(dǎo)教師姓名:指導(dǎo)教師姓名: 職稱職稱 最終評(píng)定成績(jī)最終評(píng)定成績(jī) 2011 年 6 月 工業(yè)大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) mp3 音樂(lè)文件管理器的設(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ù)軟件和硬件媒體播放器的 支持。如今,軟件市場(chǎng)上的媒體播放器層出不窮,如:winamp、foobar 2000 和千千 靜聽(tīng)等。但是,當(dāng)播放器中有大量的文件和內(nèi)容時(shí),不能夠很好的管理這些文件,這 就需要我們?cè)O(shè)計(jì)一個(gè)用來(lái)管理這些文件的管理器,來(lái)對(duì)這些文件進(jìn)行分類列表等。為 了方便用戶管理磁盤上大量的音樂(lè)文件,我們本題研究制作了一個(gè)音樂(lè)文件管理器, 用來(lái)管理音樂(lè)文件,包括對(duì)文件進(jìn)行分類,添加列表,并對(duì)列表進(jìn)行管理,對(duì)歌曲信 息進(jìn)行修改等等。 本課題探索性地設(shè)計(jì)實(shí)現(xiàn)了一
3、個(gè) mp3 音樂(lè)文件管理器,要求實(shí)現(xiàn)以下功能:通過(guò) 搜索磁盤上的 mp3 音樂(lè)文件,維護(hù)一個(gè)自定義的播放列表;播放列表中有關(guān) mp3 文件 的信息,如歌名、藝術(shù)家、流派、歌詞、封面、專輯等信息,通過(guò)查找 mp3 文件的 3 種標(biāo)簽信息來(lái)自動(dòng)填寫;也可以編輯播放列表,然后把這些信息添加或更新到 mp3 文 件的標(biāo)簽中;提供把自定義播放列表轉(zhuǎn)換為常用播放器使用的播放列表格式,如 m3u,pls,asx 等。 論文首先介紹了系統(tǒng)研究背景、研究目標(biāo)及意義,以及什么是音樂(lè)文件管理器和 對(duì) mp3 標(biāo)簽的認(rèn)識(shí),然后,論文介紹了系統(tǒng)的需求分析,闡述了系統(tǒng)各功能的詳細(xì)設(shè) 計(jì)與實(shí)現(xiàn),并對(duì)一些重要功能進(jìn)行了詳細(xì)的
4、代碼說(shuō)明,最后,論文介紹了系統(tǒng)的運(yùn)行 環(huán)境與運(yùn)行效果,并對(duì)各個(gè)部分進(jìn)行了圖示說(shuō)明。另外,論文還做了一些其他補(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 u
5、sed 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 l
6、ower 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 d
7、isplay 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 designs
8、,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 run
9、ning 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 音樂(lè)文件管理器.2 1.3 開(kāi)發(fā)平臺(tái)及環(huán)境.2 1.3.1 java 簡(jiǎn)介.2 1.3.2 myeclipse6.0 集成開(kāi)發(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 需求分析的任務(wù).
10、6 2.2.2 可行性分析任務(wù).6 2.2.3 mp3 音樂(lè)文件管理器的需求分析.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 音樂(lè)文件管理系統(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ì)的到來(lái),娛樂(lè)成為一種每個(gè)人都喜歡的活動(dòng)。它為我們和用戶提 供休閑的平臺(tái),讓人們足不出戶就可以了解到各種各樣的音樂(lè);而對(duì)于用戶來(lái)說(shuō),音 樂(lè)文件管理器則為他們提供了方便快捷省時(shí)的服務(wù),強(qiáng)大的搜索功能讓他們隨心所欲 的找到自己喜歡的音樂(lè)信息,輕輕的點(diǎn)擊鼠標(biāo)就可以找出自己想要的,還可以對(duì)音樂(lè) 的歌詞、演唱家等信息進(jìn)行修改和編輯,在娛樂(lè)的同時(shí)能夠放松心情,休息。 軟件產(chǎn)品的出現(xiàn)主要是緩解人們壓力,將人從復(fù)雜的腦力勞動(dòng)和繁雜的體力勞動(dòng) 中解脫出來(lái),并且可以實(shí)現(xiàn)娛樂(lè)的快捷,方便以及高效搜索和更改。本課題探索性地 設(shè)計(jì)實(shí)現(xiàn)了一個(gè) mp3 音樂(lè)文件管理器,要求實(shí)現(xiàn)以下功能:通過(guò)搜索磁
12、盤上的 mp3 音 樂(lè)文件,維護(hù)一個(gè)自定義的播放列表;播放列表中有關(guān) mp3 文件的信息,如歌名、藝 術(shù)家、流派、歌詞、封面、專輯等信息,通過(guò)查找 mp3 文件的 3 種標(biāo)簽信息來(lái)自動(dòng)填 寫;也可以編輯播放列表,然后把這些信息添加或更新到 mp3 文件的標(biāo)簽中;提供把 自定義播放列表轉(zhuǎn)換為常用播放器使用的播放列表格式,如 m3u,pls,asx 等。 本系統(tǒng)實(shí)現(xiàn)的管理器功能齊全,它能方便管理磁盤上大量 mp3 文件,提供搜索, 分類列表等功能。它能夠直接添加文件,從磁盤上添加多個(gè)文件,還可以添加多個(gè)目 錄,并且,能方便的查找你想要的歌曲,并直接試聽(tīng)。如果不想要更新列表,還可將 列表清空重新添加
13、。當(dāng)你選擇添加文件時(shí),管理器會(huì)直接彈出磁盤上的所有文件供你 選擇,你可以選擇一個(gè)或多個(gè)文件添加進(jìn)管理器,方便對(duì)文件的管理。當(dāng)你選中一首 歌曲,就會(huì)出現(xiàn)試聽(tīng)歌曲、查找歌曲、修改歌曲信息等標(biāo)簽,也可以刪除選定的歌曲。 還可以查看歌曲的參數(shù)設(shè)置。音樂(lè)查找模塊包括按照不同的查找方式來(lái)遍歷樂(lè)庫(kù),查 找歌曲。播放列表管理模塊包括在播放列表中添加歌曲,移除歌曲,增加本地文件夾, 移除本地文件夾,新建播放列表,清空播放列表,刪除播放列表等。 本軟件的界面簡(jiǎn)單漂亮,易于操作,即使用戶沒(méi)有很多計(jì)算機(jī)操作知識(shí),也可以 很快就能進(jìn)行操作。它還有很多優(yōu)點(diǎn),用戶在實(shí)際操作中將會(huì)感受的到,當(dāng)然它還有 一點(diǎn)點(diǎn)的小問(wèn)題沒(méi)有做的
14、很完美,不過(guò)不會(huì)有太多影響。 1.21.2 音樂(lè)文件管理器音樂(lè)文件管理器 隨著社會(huì)的發(fā)展,人們對(duì)精神生活的需求越來(lái)越高,音樂(lè)作為娛樂(lè)中的很重要的 一部分,給人們的生活帶來(lái)了很大的影響。當(dāng)磁盤上的音樂(lè)文件越來(lái)越多時(shí),就給人 們帶來(lái)了很大的困擾,人們沒(méi)辦法很快的找到自己想聽(tīng)的歌曲,mp3 音樂(lè)文件管理器 就是一個(gè)用來(lái)管理用戶磁盤上大量音樂(lè)文件的,它能將任何的類型的一部專輯或合集 保存成為一個(gè)單獨(dú)的文本文件,在需要時(shí)可方便地調(diào)用查看。它可以記錄每部專輯 合集的名稱、歌手,每首歌曲的名稱、歌手或演唱樂(lè)隊(duì)、時(shí)間和歌詞,并且可以任意 設(shè)置每一項(xiàng)的字體、字號(hào)和顏色,以達(dá)到視覺(jué)上的享受。另外,它還能將每首歌曲
15、對(duì) 應(yīng)一個(gè)音樂(lè)文件您只需要在瀏覽歌詞的同時(shí)輕輕一按,就能馬上聽(tīng)到這首歌,您甚至 可以選擇在打開(kāi)這首歌曲時(shí)就自動(dòng)播放這首歌曲,做到完全的自動(dòng)化。 音樂(lè)文件管理器可以方便的管理磁盤內(nèi)的音樂(lè)文件,當(dāng)你選擇添加文件時(shí),管理 器會(huì)直接彈出磁盤上的所有文件供你選擇,你可以選擇一個(gè)或多個(gè)文件添加進(jìn)管理器, 方便對(duì)文件的管理。當(dāng)你選中一首歌曲,就會(huì)出現(xiàn)試聽(tīng)歌曲、查找歌曲、修改歌曲信 息等標(biāo)簽,也可以刪除選定的歌曲。還可以查看歌曲的參數(shù)設(shè)置。音樂(lè)查找模塊包括 按照不同的查找方式來(lái)遍歷樂(lè)庫(kù),查找歌曲。播放列表管理模塊包括在播放列表中添 加歌曲,移除歌曲,增加本地文件夾,移除本地文件夾,新建播放列表,清空播放列 表
16、,刪除播放列表等。 1.31.3 開(kāi)發(fā)平臺(tái)及環(huán)境開(kāi)發(fā)平臺(tái)及環(huán)境 本系統(tǒng)采用的開(kāi)發(fā)平臺(tái)是微軟公司的 visual studio 平臺(tái),選擇 java 作為應(yīng)用 程序開(kāi)發(fā)工具。 .1 javajava 簡(jiǎn)介簡(jiǎn)介 java 是 sun 公司推出的新一代面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,特別適合于 internet 應(yīng) 用程序開(kāi)發(fā)。java 的產(chǎn)生與流行是當(dāng)今 internet 發(fā)展的客觀要求,java 是一門各方 面性能都很好的編程語(yǔ)言,特別適合于 internet 應(yīng)用程序開(kāi)發(fā)。java 的產(chǎn)生與流行 是當(dāng)今 internet 發(fā)展的客觀要求,java 是一門各方面性能都很好的編程語(yǔ)言,它的
17、基本特點(diǎn)是簡(jiǎn)單、面向?qū)ο?、分布式、解釋的、健壯的、安全的、結(jié)構(gòu)中立的、可移 植的、性能很優(yōu)異的、多線程的、動(dòng)態(tài)的,特別適合在 internet 環(huán)境上開(kāi)發(fā)的應(yīng)用 系統(tǒng)。 .2 myeclipse6.0myeclipse6.0 集成開(kāi)發(fā)環(huán)境集成開(kāi)發(fā)環(huán)境 eclipse 是一個(gè)開(kāi)發(fā)源代碼的,基于 java 的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言, 他只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。幸運(yùn)的是,eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,其中就包括 java 開(kāi)發(fā)工具(java development tools,jdi) 。eclipse3.4.1 是目前的最新版本,我們可
18、以在其官方網(wǎng)站上下載。 myeclipse 是 eclipse 的插件,集成了對(duì) spring,struts,jdbc 等主流 javaee 組 件開(kāi)發(fā)插件的支持,大大簡(jiǎn)化了 javaee 應(yīng)用的開(kāi)發(fā) 。不同版本的 myeclipse 都要求 與特定版本的 eclipse 配合,這在下載 myeclipse 時(shí)都能看到。 1.41.4 id3id3 是什么是什么 id3標(biāo)簽是mp3文件中用于描述音樂(lè)信息的數(shù)據(jù)元素(metadata)。我們知道, mp3實(shí)際上是mpeg 1 layer 3的縮寫,它只定義了一種數(shù)據(jù)壓縮方式,并沒(méi)有特別說(shuō) 明如何在文件中添加描述音樂(lè)本身的信息。id3的出現(xiàn)解決了這
19、個(gè)問(wèn)題,它通過(guò)在mp3 數(shù)據(jù)前面或者后面添加描述信息,讓管理和組織mp3更容易。 id3目前有多個(gè)版本,最常見(jiàn)的是id3 v1.1和id3 v2.4。 id3的版本 如果沒(méi)有id3,那么人們只能根據(jù)文件名判斷一首歌它是什么內(nèi)容了,何況就算 聽(tīng)出了是什么歌,它的演唱者、專輯名稱你也未必背得下來(lái),所以給mp3文件增加內(nèi) 置的標(biāo)簽是理所當(dāng)然的事情。有趣的是,mp3的標(biāo)簽并沒(méi)有一個(gè)iso國(guó)際標(biāo)準(zhǔn),id3的 各種版本目前只是一個(gè)近乎事實(shí)上的標(biāo)準(zhǔn),并沒(méi)有人強(qiáng)迫播放器或者編碼程序必須支 持它。 根據(jù)維基百科全書(shū)的解釋,id3 v1是由eric kemp在1996年發(fā)明的。id3 v1是一 組附加在音樂(lè)文件后
20、面的數(shù)據(jù),它的長(zhǎng)度是固定的128字節(jié)。id3v1.0的定義如下表: 其中流派一共定義了79種,流行的播放軟件winamp則把它擴(kuò)展到了125種,從 blues到noise到dance hall,非常豐富,在許多支持id3編輯的軟件中都可以看到這 個(gè)列表,但是國(guó)內(nèi)用戶似乎不太在意這個(gè)標(biāo)記,大多數(shù)人甚至不知道自己的歌曲到底 屬于哪一個(gè)分類。 這些內(nèi)容一共只有128個(gè)字節(jié),并不算累贅。由于附加在文件尾部,所以播放器 不必考慮它的影響,即使不支持id3標(biāo)記也不會(huì)影響音樂(lè)的還原某些很老的播放 器確實(shí)可能會(huì)在播放到這里的時(shí)候發(fā)出噪音或者報(bào)錯(cuò)。但是標(biāo)記在文件尾部也會(huì)造成 一個(gè)問(wèn)題,那就是如果還沒(méi)有讀到文件末
21、尾,我們什么信息也看不到。對(duì)硬盤和閃存 里面的歌曲這當(dāng)然不是問(wèn)題,但是如果你通過(guò)流媒體方式直接在網(wǎng)絡(luò)上收聽(tīng),就會(huì)發(fā) 現(xiàn)它的缺陷了。 細(xì)心的人會(huì)注意到id3v1.0沒(méi)有包括曲目序號(hào)的定義,所以michael mutschler在 1997年進(jìn)行了改進(jìn),引入了版本1.1。通過(guò)占用備注字段的最后兩個(gè)字節(jié),用一個(gè)00 字節(jié)作標(biāo)記,另一個(gè)字節(jié)改為序號(hào),可以讓id3支持曲目編號(hào)了。一個(gè)字節(jié)的空間讓 id3 v1.1支持最高到255的曲目序號(hào),考慮到一張唱片超過(guò)256個(gè)曲目的可能性極小, 這個(gè)改進(jìn)還是相當(dāng)合理的。 有趣的工具mp3ext mp3ext是windows的一個(gè)擴(kuò)展工具,讓你可以直接在window
22、s瀏覽器里面查看和編 輯mp3標(biāo)記信息,還能直接用圖標(biāo)告訴你文件的編碼速率。它是一個(gè)功能強(qiáng)大的免費(fèi) 軟件,可以在http:/odin.mutschler.de/mp3ext/mp3ext.html以及 http:/ 另外,你有沒(méi)有注意到它的作者就是id3 v1.1的發(fā)明人? id3v1和v1.1實(shí)際上要求使用iso 8859-1拉丁字母編碼,但是很多人為了方便直 接使用自己當(dāng)前操作系統(tǒng)的代碼頁(yè)。大多數(shù)情況下這不算什么問(wèn)題,但是在跨越語(yǔ)言 平臺(tái)的時(shí)候就會(huì)出現(xiàn)亂碼等情況。例如你在中文操作系統(tǒng)下查看西班牙語(yǔ)的歌曲信息, 可能就會(huì)看到奇怪的亂碼,甚至某些id3編輯軟件可能處理不了中文。 隨著id3應(yīng)用
23、的普及,人們逐漸發(fā)現(xiàn)id3v1過(guò)于簡(jiǎn)單了,很多感興趣的信息無(wú)法加 入,比如作曲者、歌詞、演奏者、指揮等等進(jìn)一步的信息無(wú)法附著其上,甚至連比較 長(zhǎng)的曲目名都處理不了,于是id3v2的出現(xiàn)也就是順理成章的了。 與死板的id3v1不同,id3v2是一個(gè)靈活的標(biāo)簽格式,它不但提供了更豐富的預(yù)定 義字段和更長(zhǎng)的數(shù)據(jù)空間,而且支持用戶自定幀,它的長(zhǎng)度也是可變的。于是,利用 id3v2,我們不但可以讓mp3附帶歌詞,而且可以包括唱片封面圖片、音色調(diào)節(jié)設(shè)置、 甚至mtv影像和卡拉ok字幕。 id3v2的靈活性和可擴(kuò)展性讓用戶可以給音樂(lè)文件添加任何想得出來(lái)的相關(guān)信息。 它支持最大256mb的數(shù)據(jù),最長(zhǎng)的數(shù)據(jù)幀可
24、以達(dá)到16mb。所以如果你愿意,id3v2增加 的數(shù)據(jù)可以讓附加信息龐大到比歌曲信息本身還要占據(jù)更多空間的地步。 缺省狀況下,id3v2附加于文件頭部,但是這也不會(huì)影響不支持id3v2的播放器, 因?yàn)樗匾庠O(shè)計(jì)為用“非同步”方式儲(chǔ)存信息,不兼容的播放器會(huì)簡(jiǎn)單地跳過(guò)這一部 分。在id3v2.4的版本中用戶也可以選擇把它附加到文件尾部。把信息放到文件頭部 對(duì)于流媒體播放來(lái)說(shuō)有很大優(yōu)勢(shì)在聽(tīng)到音樂(lè)之間關(guān)于樂(lè)曲本身的信息就已經(jīng)可以 顯示了。但是這么做的缺點(diǎn)是如果用工具軟件改變了id3的長(zhǎng)度,那么整個(gè)文件都需 要重新寫入,效率受到影響。另外,id3v2支持unicode,不同語(yǔ)言的信息可以比較好 地互相兼
25、容。 第二章第二章 系統(tǒng)需求分析系統(tǒng)需求分析 2.12.1 系統(tǒng)目標(biāo)系統(tǒng)目標(biāo) 本系統(tǒng)的目標(biāo)是為了實(shí)現(xiàn)一個(gè)音樂(lè)文件管理器,用來(lái)管理磁盤上大量的音樂(lè)文件, 它可以將這些音樂(lè)文件進(jìn)行分類列表,也可以完成對(duì)歌曲的搜索功能,你可以把磁盤 上的音樂(lè)文件進(jìn)行分類,然后添加進(jìn)管理器,管理器可以將這些文件列表管理,在音 樂(lè)列表中,你可以選中列表中的某一首歌曲,直接試聽(tīng),還可以修改這首歌曲的參數(shù), 包括歌曲的歌詞、演唱者等等信息。你也可以選中多個(gè)歌曲,進(jìn)行批量操作,當(dāng)然, 你也能對(duì)列表進(jìn)行操作,比如修改名稱,清除列表等等。你還可以根據(jù)自己的喜好, 對(duì)文件進(jìn)行分類,根據(jù)分類更加方便的查找你喜歡的歌曲。 2.22.2
26、 系統(tǒng)功能需求分析系統(tǒng)功能需求分析 一個(gè)軟件系統(tǒng)設(shè)計(jì)的成敗,除了在功能上要盡可能地完善以外,在界面設(shè)計(jì)上也 有很大的決定性作用。 如果你的軟件界面很糟糕,不能讓使用該軟件的用戶滿意,那么你開(kāi)發(fā)的產(chǎn)品將 被“凍結(jié)”起來(lái),得不到用戶的響應(yīng)。所以,軟件產(chǎn)品的界面設(shè)計(jì)應(yīng)該具有友好性這 一特點(diǎn)。除此之外,還應(yīng)該有簡(jiǎn)潔性。如果你的產(chǎn)品只注意了友好美觀的界面,而使 得你的界面很復(fù)雜,將會(huì)給用戶帶來(lái)極大的不便,從而會(huì)適得其反。比如,一個(gè)最簡(jiǎn) 單的操作用戶要點(diǎn)擊一個(gè)按鈕,而你的界面上到處都是按鈕圖片之類的,這就會(huì)讓用 戶花上很長(zhǎng)的時(shí)間去尋找要點(diǎn)擊的按鈕,這樣一來(lái),當(dāng)然就不能使用戶滿意了。 基于此,本系統(tǒng)將使用
27、java 來(lái)設(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ù)庫(kù)的一個(gè)起點(diǎn),它確定 了系統(tǒng)必須完成哪些工作,提出完整、準(zhǔn)確、清晰和具體的要求,直接影響到后面各 個(gè)階段的設(shè)計(jì),及設(shè)計(jì)結(jié)果是否合理和實(shí)用。 需求分析的任務(wù)是通過(guò)詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對(duì)象,充分了解原系統(tǒng)工作概 況,明確用
28、戶的各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能。新系統(tǒng)必須充分考慮 今后可能的擴(kuò)充和改變,不能僅僅按當(dāng)前應(yīng)用需求來(lái)設(shè)計(jì)系統(tǒng)。 其主要解決的問(wèn)題: 信息要求:用戶希望得到什么樣的信息。 處理要求:明確用戶對(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)一步澄清問(wèn)題定義,以期用最小的代價(jià)在盡可能短的時(shí) 間內(nèi)確定問(wèn)題是否可以解決。 可行性分析: 1、技術(shù)可行性 在現(xiàn)有技術(shù)條件下,因?yàn)?java 日趨成熟,數(shù)據(jù)庫(kù)的技術(shù)也掌握的越來(lái)越多,文 件管理器功能正在進(jìn)一步完善。 2、經(jīng)濟(jì)可行性 經(jīng)濟(jì)方面由于是自行開(kāi)發(fā),基于個(gè)人 pc,所以經(jīng)費(fèi)開(kāi)銷很小,系統(tǒng)運(yùn)行之后產(chǎn) 生的效益將遠(yuǎn)大于開(kāi)發(fā)成本,經(jīng)濟(jì)可行。 3、操作可行性 系統(tǒng)實(shí)現(xiàn)從用戶角度考慮,所以所有操作都是非常簡(jiǎn)單的鼠標(biāo)鍵盤操作,界面設(shè) 計(jì)清晰明了,用戶在操作方面只要有普通計(jì)算機(jī)操作基礎(chǔ)的都可以勝任,所以操作方 面也是可行的。 .3 mp3mp3 音樂(lè)文件管理器的需求分
30、析音樂(lè)文件管理器的需求分析 用戶的需求具體體現(xiàn)在各種信息的提供、保存、更新、查詢和刪除上,以及操作 的簡(jiǎn)單性和方便性,用戶的需求如下: 1、它可以從磁盤上添加文件,并對(duì)添加的文件歌曲進(jìn)行列表分類 2、它可以對(duì)列表進(jìn)行管理,包括清空列表,刪除列表內(nèi)的歌曲,試聽(tīng)列表內(nèi)的 歌曲等等。 3、它可以記錄每部專輯合集的名稱、歌手,每首歌曲的名稱、歌手或演唱樂(lè) 隊(duì)、時(shí)間和歌詞,并且可以任意設(shè)置每一項(xiàng)的字體、字號(hào)和顏色,以達(dá)到視覺(jué)上的享 受。 4、對(duì)歌曲文件進(jìn)行改名、對(duì)歌曲的播放次序進(jìn)行排序,修改歌曲文件的信息 (批量操作) 5、查找歌曲,根據(jù)分類,隨時(shí)查找自己想聽(tīng)的歌曲,及歌曲的所有信息 .
31、4 假定和約束假定和約束 1、開(kāi)發(fā)經(jīng)費(fèi)方面,由于是畢業(yè)設(shè)計(jì),所以無(wú)需資金投入,一切都是在項(xiàng)目組成 員課外時(shí)間完成。 2、由于是應(yīng)用服務(wù)程序,一切以用戶的需求為最根本的出發(fā)點(diǎn)。 3、考慮到用戶的計(jì)算機(jī)操作水平有限,希望開(kāi)發(fā)出的系統(tǒng)應(yīng)保證界面友好,操 作簡(jiǎn)單明了,性能可靠,易于維護(hù),可擴(kuò)展,易于升級(jí)。 .5 文件管理程序的數(shù)據(jù)流圖文件管理程序的數(shù)據(jù)流圖 0 層圖 1 層圖 呈現(xiàn)音樂(lè)列表放 列表 管理列表生成器選擇 mp3 文件 mp3 音樂(lè)管理程序 文件列表文件列表音樂(lè)列表音樂(lè)列表 本地文件網(wǎng)絡(luò)資源 url 選擇 mp3 文件 文件流 文件路徑 文件列表 將文件讀入流 讀取文件標(biāo)簽
32、 文件列表 加入音樂(lè)隊(duì)列 音樂(lè)列表 歌曲信息 標(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ì)是軟件開(kāi)發(fā)中非常重要的一部分,因?yàn)橹挥凶龊霉δ苣K的設(shè) 計(jì),編寫程序的時(shí)候才不至于盲目,也不至于沒(méi)有條理性,甚至?xí)┑艉芏嗟臇|西, 這就像一個(gè)建筑物的設(shè)計(jì)圖一樣,由此可見(jiàn)它的重要性。本系統(tǒng)共分為以下幾個(gè)窗口,它 們分別是:文件夾窗口、列表窗口、參數(shù)窗口。為了更好地實(shí)現(xiàn)系統(tǒng)的各項(xiàng)功能及這 些功能的完整性,現(xiàn)在把系統(tǒng)共分為以下幾大模塊進(jìn)行設(shè)計(jì): (6)添加文件模塊 (7)添加目錄模塊 (8)
33、查找歌曲模塊 (9)列表管理模塊 (10)幫助模塊 .1 音樂(lè)文件管理系統(tǒng)功能模塊圖音樂(lè)文件管理系統(tǒng)功能模塊圖 音樂(lè)文件管理系統(tǒng)主要實(shí)現(xiàn)的是用戶能管理磁盤上大量的音樂(lè)文件,它可以將這 些音樂(lè)文件進(jìn)行分類列表,也可以完成對(duì)歌曲的搜索功能,你可以把磁盤上的音樂(lè)文 件進(jìn)行分類,然后添加進(jìn)管理器,管理器可以將這些文件列表管理,在音樂(lè)列表中, 你可以選中列表中的某一首歌曲,直接試聽(tīng),還可以修改這首歌曲的參數(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)說(shuō)要實(shí)現(xiàn)的功能 可以使用用例圖、類圖、時(shí)序圖等顯示系統(tǒng)的執(zhí)行過(guò)程、實(shí)現(xiàn)功能 uml 圖大大的方便了開(kāi)發(fā)人員的開(kāi)發(fā)步驟,使開(kāi)發(fā)
35、人員能夠分模塊、分步驟的對(duì) 系統(tǒng)進(jìn)行開(kāi)發(fā)。 類圖表示不同的實(shí)體(人、事物和數(shù)據(jù))如何彼此相關(guān);換句話說(shuō),它顯示了系 統(tǒng)的靜態(tài)結(jié)構(gòu)。類圖還可用于表示實(shí)現(xiàn)類,實(shí)現(xiàn)類就是程序員處理的實(shí)體。實(shí)現(xiàn)類圖 或許會(huì)與邏輯類圖顯示一些相同的類。然而,實(shí)現(xiàn)類圖不會(huì)使用相同的屬性來(lái)描述。 類在類圖上使用包含三個(gè)部分的巨型來(lái)描述。最上面的部分顯示類的名稱,中間 部分包含類的屬性,最下面的部分包含類的操作(或者說(shuō)“方法” ) 。 圖 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 類庫(kù)提供的功能,包括 java swing 高級(jí)組件的使用,基于對(duì)象序列化的配置保 持,基于 dnd 技術(shù)的拖放批量文件的播放等。 本系統(tǒng)最重要的部分是獲取標(biāo)簽,通過(guò)標(biāo)簽來(lái)修改文件信息,對(duì)文件分類,建立 列表等。 4.14.1 算法分析算法分析 超類 mp3tag,三個(gè)子類 mp3tagapev2、mp3tagid3v1、mp3tagid3v23 uml 類圖如圖 4.1 +decode(string decoder):void() +writetag():void() -gettaglength():int() +removetags():void() +insert(
37、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() -gettagl
38、ength():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() -rea
39、dapev2tags(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.id3v
40、1; 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 i
41、d3v1 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ù)值有問(wèn)題 system.out.println(id3v2.getsi
42、ze_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(ap
44、ev2.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; im
45、port 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 itrack
46、 = 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, bid
47、3v1infos, 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.getbyte
48、s(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 settitl
50、e(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 = ; e
51、lse 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() re
52、turn 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 st
53、ub 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í)間緊迫,有些功能還沒(méi)有完善,比如幫助模塊,雖然此系統(tǒng)操作簡(jiǎn)便,對(duì) 于大部分人來(lái)說(shuō)都很容易弄懂,但個(gè)人覺(jué)得還是應(yīng)該有,只能以后再進(jìn)行改進(jìn)了。 結(jié)論結(jié)論 經(jīng)過(guò)兩個(gè)多月的努力,畢業(yè)設(shè)計(jì)終于完成了,在整個(gè)設(shè)計(jì)過(guò)程中,出現(xiàn)過(guò)很多的 難題,但都在老師和同學(xué)的幫助下順利解決了,在此過(guò)程中,我付出了很大的心血, 查了大量的資料,以及無(wú)數(shù)次的更改和實(shí)驗(yàn)。通過(guò)這次畢業(yè)設(shè)計(jì),我以得出了以下幾 點(diǎn)結(jié)論: 寫論文是一個(gè)不斷學(xué)習(xí)的過(guò)程,從最初剛寫論文時(shí)對(duì)面臨的問(wèn)題的模糊認(rèn)識(shí)到最 后能對(duì)該問(wèn)題有深刻的認(rèn)識(shí),我體會(huì)到實(shí)踐對(duì)于學(xué)習(xí)的重要性,以前只是明白理論, 沒(méi)有經(jīng)過(guò)實(shí)踐考察,對(duì)知識(shí)的理解不夠明確,通過(guò)這次的做,真正做到理論實(shí)踐相結(jié) 合。 在進(jìn)行設(shè)計(jì)之前,必需要做大量的系
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024建筑的承包合同書(shū)
- 2024物流服務(wù)協(xié)議合同模板
- 2024年UV激光打孔機(jī)項(xiàng)目建議書(shū)
- 2024年馬拉松比賽項(xiàng)目建議書(shū)
- 鹽城師范學(xué)院《數(shù)值分析實(shí)驗(yàn)》2022-2023學(xué)年第一學(xué)期期末試卷
- 2024建筑工程居間的合同范本示例
- 玻璃鋼固體廢物10萬(wàn)噸減量化資源化無(wú)害化處理和綜合利用技術(shù)推廣項(xiàng)目環(huán)評(píng)報(bào)告表
- 鹽城師范學(xué)院《世界民族音樂(lè)》2022-2023學(xué)年第一學(xué)期期末試卷
- 2023年下半年護(hù)理突發(fā)事件應(yīng)急小組成員理論練習(xí)試題附答案
- 鹽城師范學(xué)院《設(shè)計(jì)表現(xiàn)技法》2021-2022學(xué)年第一學(xué)期期末試卷
- 鋼絲繩的安全載重表
- 高中數(shù)學(xué)函數(shù)評(píng)課稿
- 購(gòu)并技巧與案例解析
- 當(dāng)代西方國(guó)家議會(huì)制度
- structure-.---中文使用手冊(cè)
- 包商銀行盈利模式研究
- 數(shù)字化定量分析
- 發(fā)票、原始憑證分割單(大寫自動(dòng)填寫)
- 小學(xué)三年級(jí)縮句、擴(kuò)句復(fù)習(xí)及教案(課堂PPT)
- 平凡之路--樸樹(shù)-歌詞
- 斯派克直讀光譜儀操作手冊(cè)(共43頁(yè))
評(píng)論
0/150
提交評(píng)論