计算机科学与技术MP3音乐文件管理器的设计与实现_第1页
计算机科学与技术MP3音乐文件管理器的设计与实现_第2页
计算机科学与技术MP3音乐文件管理器的设计与实现_第3页
计算机科学与技术MP3音乐文件管理器的设计与实现_第4页
计算机科学与技术MP3音乐文件管理器的设计与实现_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、(2011 届)届) 本科毕业设计(论文)本科毕业设计(论文) mp3 音乐文件管理器的设计与实现 学学 院、系:院、系: 计算机与通信学院计算机与通信学院 专专 业:业: 计算机科学与技术计算机科学与技术 学学 生生 姓姓 名:名: 班班 级:级: 学号学号 指导教师姓名:指导教师姓名: 职称职称 最终评定成绩最终评定成绩 2011 年 6 月 工业大学本科生毕业设计(论文) mp3 音乐文件管理器的设计与实现 院 (系): 专 业: 学 号: 学 生 姓名: 指 导 教师: 2011 年 6 月 湖南工业大学本科生毕业设计(论文) i 摘要 随着计算机和多媒体技术的不断发展以及个人计算机的

2、普及,各种各样的媒体文 件、媒体播放器层出不穷,而 mp3(mpeg audio layer3)格式以其体积小、音质也有 保证的特点成为使用最为广泛的音频格式,得到了绝大多数软件和硬件媒体播放器的 支持。如今,软件市场上的媒体播放器层出不穷,如:winamp、foobar 2000 和千千 静听等。但是,当播放器中有大量的文件和内容时,不能够很好的管理这些文件,这 就需要我们设计一个用来管理这些文件的管理器,来对这些文件进行分类列表等。为 了方便用户管理磁盘上大量的音乐文件,我们本题研究制作了一个音乐文件管理器, 用来管理音乐文件,包括对文件进行分类,添加列表,并对列表进行管理,对歌曲信 息进

3、行修改等等。 本课题探索性地设计实现了一个 mp3 音乐文件管理器,要求实现以下功能:通过 搜索磁盘上的 mp3 音乐文件,维护一个自定义的播放列表;播放列表中有关 mp3 文件 的信息,如歌名、艺术家、流派、歌词、封面、专辑等信息,通过查找 mp3 文件的 3 种标签信息来自动填写;也可以编辑播放列表,然后把这些信息添加或更新到 mp3 文 件的标签中;提供把自定义播放列表转换为常用播放器使用的播放列表格式,如 m3u,pls,asx 等。 论文首先介绍了系统研究背景、研究目标及意义,以及什么是音乐文件管理器和 对 mp3 标签的认识,然后,论文介绍了系统的需求分析,阐述了系统各功能的详细设

4、 计与实现,并对一些重要功能进行了详细的代码说明,最后,论文介绍了系统的运行 环境与运行效果,并对各个部分进行了图示说明。另外,论文还做了一些其他补充, 使论文更加完整。 关键词:文件管理器;java;添加列表;文件分类 湖南工业大学本科生毕业设计(论文) ii abstract along with the development and popularzation of computers and multimedia technology,various media types and media players emerge continually.the mp3(mpeg audio

5、 layer3)type is one of the most broadly 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,

6、and etc.the higher tone quality and the 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

7、 files and java language.the player can 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 modu

8、les of the system are divided and designs,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

9、 the system are described.at last,the running 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 1.2 音乐文件管理器.2 1.3 开发平台及环境.2 1.3.1 java 简介.2 1.3.2 myeclipse6.0 集成开发环境.3 1.4 id

10、3 是什么.3 第二章 系统需求分析.5 2.1 系统目标.5 2.2 系统功能需求分析.5 2.2.1 需求分析的任务.6 2.2.2 可行性分析任务.6 2.2.3 mp3 音乐文件管理器的需求分析.7 2.2.4 假定和约束.7 2.2.5 文件管理程序的数据流图.7 第三章 系统分析与设计.9 3.1 系统功能模块设计.9 3.1.1 音乐文件管理系统功能模块图.9 3.1.2 系统功能模型图.10 3.2 系统的几个重要 uml 图.11 第四章 详细设计与实现.14 4.1 算法分析.14 4.2 获取标签的详细代码.15 4.3 标签的修改和删除.16 4.4 程序运行结果图.2

11、3 结论.28 致谢.29 参考文献.30 附录.31 湖南工业大学本科生毕业设计(论文) 2 第一章第一章 绪论绪论 1.11.1 研究背景、目的及意义研究背景、目的及意义 随着互联网经济的到来,娱乐成为一种每个人都喜欢的活动。它为我们和用户提 供休闲的平台,让人们足不出户就可以了解到各种各样的音乐;而对于用户来说,音 乐文件管理器则为他们提供了方便快捷省时的服务,强大的搜索功能让他们随心所欲 的找到自己喜欢的音乐信息,轻轻的点击鼠标就可以找出自己想要的,还可以对音乐 的歌词、演唱家等信息进行修改和编辑,在娱乐的同时能够放松心情,休息。 软件产品的出现主要是缓解人们压力,将人从复杂的脑力劳动

12、和繁杂的体力劳动 中解脱出来,并且可以实现娱乐的快捷,方便以及高效搜索和更改。本课题探索性地 设计实现了一个 mp3 音乐文件管理器,要求实现以下功能:通过搜索磁盘上的 mp3 音 乐文件,维护一个自定义的播放列表;播放列表中有关 mp3 文件的信息,如歌名、艺 术家、流派、歌词、封面、专辑等信息,通过查找 mp3 文件的 3 种标签信息来自动填 写;也可以编辑播放列表,然后把这些信息添加或更新到 mp3 文件的标签中;提供把 自定义播放列表转换为常用播放器使用的播放列表格式,如 m3u,pls,asx 等。 本系统实现的管理器功能齐全,它能方便管理磁盘上大量 mp3 文件,提供搜索, 分类列

13、表等功能。它能够直接添加文件,从磁盘上添加多个文件,还可以添加多个目 录,并且,能方便的查找你想要的歌曲,并直接试听。如果不想要更新列表,还可将 列表清空重新添加。当你选择添加文件时,管理器会直接弹出磁盘上的所有文件供你 选择,你可以选择一个或多个文件添加进管理器,方便对文件的管理。当你选中一首 歌曲,就会出现试听歌曲、查找歌曲、修改歌曲信息等标签,也可以删除选定的歌曲。 还可以查看歌曲的参数设置。音乐查找模块包括按照不同的查找方式来遍历乐库,查 找歌曲。播放列表管理模块包括在播放列表中添加歌曲,移除歌曲,增加本地文件夹, 移除本地文件夹,新建播放列表,清空播放列表,删除播放列表等。 本软件的

14、界面简单漂亮,易于操作,即使用户没有很多计算机操作知识,也可以 很快就能进行操作。它还有很多优点,用户在实际操作中将会感受的到,当然它还有 一点点的小问题没有做的很完美,不过不会有太多影响。 湖南工业大学本科生毕业设计(论文) 3 1.21.2 音乐文件管理器音乐文件管理器 随着社会的发展,人们对精神生活的需求越来越高,音乐作为娱乐中的很重要的 一部分,给人们的生活带来了很大的影响。当磁盘上的音乐文件越来越多时,就给人 们带来了很大的困扰,人们没办法很快的找到自己想听的歌曲,mp3 音乐文件管理器 就是一个用来管理用户磁盘上大量音乐文件的,它能将任何的类型的一部专辑或合集 保存成为一个单独的文

15、本文件,在需要时可方便地调用查看。它可以记录每部专辑 合集的名称、歌手,每首歌曲的名称、歌手或演唱乐队、时间和歌词,并且可以任意 设置每一项的字体、字号和颜色,以达到视觉上的享受。另外,它还能将每首歌曲对 应一个音乐文件您只需要在浏览歌词的同时轻轻一按,就能马上听到这首歌,您甚至 可以选择在打开这首歌曲时就自动播放这首歌曲,做到完全的自动化。 音乐文件管理器可以方便的管理磁盘内的音乐文件,当你选择添加文件时,管理 器会直接弹出磁盘上的所有文件供你选择,你可以选择一个或多个文件添加进管理器, 方便对文件的管理。当你选中一首歌曲,就会出现试听歌曲、查找歌曲、修改歌曲信 息等标签,也可以删除选定的歌

16、曲。还可以查看歌曲的参数设置。音乐查找模块包括 按照不同的查找方式来遍历乐库,查找歌曲。播放列表管理模块包括在播放列表中添 加歌曲,移除歌曲,增加本地文件夹,移除本地文件夹,新建播放列表,清空播放列 表,删除播放列表等。 1.31.3 开发平台及环境开发平台及环境 本系统采用的开发平台是微软公司的 visual studio 平台,选择 java 作为应用 程序开发工具。 .1 javajava 简介简介 java 是 sun 公司推出的新一代面向对象程序设计语言,特别适合于 internet 应 用程序开发。java 的产生与流行是当今 internet 发展的客观要求,ja

17、va 是一门各方 面性能都很好的编程语言,特别适合于 internet 应用程序开发。java 的产生与流行 是当今 internet 发展的客观要求,java 是一门各方面性能都很好的编程语言,它的 基本特点是简单、面向对象、分布式、解释的、健壮的、安全的、结构中立的、可移 植的、性能很优异的、多线程的、动态的,特别适合在 internet 环境上开发的应用 系统。 湖南工业大学本科生毕业设计(论文) 4 .2 myeclipse6.0myeclipse6.0 集成开发环境集成开发环境 eclipse 是一个开发源代码的,基于 java 的可扩展开发平台。就其本身而言, 他只

18、是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,eclipse 附带了一个标准的插件集,其中就包括 java 开发工具(java development tools,jdi) 。eclipse3.4.1 是目前的最新版本,我们可以在其官方网站上下载。 myeclipse 是 eclipse 的插件,集成了对 spring,struts,jdbc 等主流 javaee 组 件开发插件的支持,大大简化了 javaee 应用的开发 。不同版本的 myeclipse 都要求 与特定版本的 eclipse 配合,这在下载 myeclipse 时都能看到。 1.41.4 id3id3 是什么

19、是什么 id3标签是mp3文件中用于描述音乐信息的数据元素(metadata)。我们知道, mp3实际上是mpeg 1 layer 3的缩写,它只定义了一种数据压缩方式,并没有特别说 明如何在文件中添加描述音乐本身的信息。id3的出现解决了这个问题,它通过在mp3 数据前面或者后面添加描述信息,让管理和组织mp3更容易。 id3目前有多个版本,最常见的是id3 v1.1和id3 v2.4。 id3的版本 如果没有id3,那么人们只能根据文件名判断一首歌它是什么内容了,何况就算 听出了是什么歌,它的演唱者、专辑名称你也未必背得下来,所以给mp3文件增加内 置的标签是理所当然的事情。有趣的是,mp

20、3的标签并没有一个iso国际标准,id3的 各种版本目前只是一个近乎事实上的标准,并没有人强迫播放器或者编码程序必须支 持它。 根据维基百科全书的解释,id3 v1是由eric kemp在1996年发明的。id3 v1是一 组附加在音乐文件后面的数据,它的长度是固定的128字节。id3v1.0的定义如下表: 其中流派一共定义了79种,流行的播放软件winamp则把它扩展到了125种,从 blues到noise到dance hall,非常丰富,在许多支持id3编辑的软件中都可以看到这 个列表,但是国内用户似乎不太在意这个标记,大多数人甚至不知道自己的歌曲到底 属于哪一个分类。 这些内容一共只有1

21、28个字节,并不算累赘。由于附加在文件尾部,所以播放器 不必考虑它的影响,即使不支持id3标记也不会影响音乐的还原某些很老的播放 器确实可能会在播放到这里的时候发出噪音或者报错。但是标记在文件尾部也会造成 一个问题,那就是如果还没有读到文件末尾,我们什么信息也看不到。对硬盘和闪存 里面的歌曲这当然不是问题,但是如果你通过流媒体方式直接在网络上收听,就会发 湖南工业大学本科生毕业设计(论文) 5 现它的缺陷了。 细心的人会注意到id3v1.0没有包括曲目序号的定义,所以michael mutschler在 1997年进行了改进,引入了版本1.1。通过占用备注字段的最后两个字节,用一个00 字节作

22、标记,另一个字节改为序号,可以让id3支持曲目编号了。一个字节的空间让 id3 v1.1支持最高到255的曲目序号,考虑到一张唱片超过256个曲目的可能性极小, 这个改进还是相当合理的。 有趣的工具mp3ext mp3ext是windows的一个扩展工具,让你可以直接在windows浏览器里面查看和编 辑mp3标记信息,还能直接用图标告诉你文件的编码速率。它是一个功能强大的免费 软件,可以在http:/odin.mutschler.de/mp3ext/mp3ext.html以及 http:/ 另外,你有没有注意到它的作者就是id3 v1.1的发明人? id3v1和v1.1实际上要求使用iso

23、8859-1拉丁字母编码,但是很多人为了方便直 接使用自己当前操作系统的代码页。大多数情况下这不算什么问题,但是在跨越语言 平台的时候就会出现乱码等情况。例如你在中文操作系统下查看西班牙语的歌曲信息, 可能就会看到奇怪的乱码,甚至某些id3编辑软件可能处理不了中文。 随着id3应用的普及,人们逐渐发现id3v1过于简单了,很多感兴趣的信息无法加 入,比如作曲者、歌词、演奏者、指挥等等进一步的信息无法附着其上,甚至连比较 长的曲目名都处理不了,于是id3v2的出现也就是顺理成章的了。 与死板的id3v1不同,id3v2是一个灵活的标签格式,它不但提供了更丰富的预定 义字段和更长的数据空间,而且支

24、持用户自定帧,它的长度也是可变的。于是,利用 id3v2,我们不但可以让mp3附带歌词,而且可以包括唱片封面图片、音色调节设置、 甚至mtv影像和卡拉ok字幕。 id3v2的灵活性和可扩展性让用户可以给音乐文件添加任何想得出来的相关信息。 它支持最大256mb的数据,最长的数据帧可以达到16mb。所以如果你愿意,id3v2增加 的数据可以让附加信息庞大到比歌曲信息本身还要占据更多空间的地步。 缺省状况下,id3v2附加于文件头部,但是这也不会影响不支持id3v2的播放器, 因为它特意设计为用“非同步”方式储存信息,不兼容的播放器会简单地跳过这一部 分。在id3v2.4的版本中用户也可以选择把它

25、附加到文件尾部。把信息放到文件头部 对于流媒体播放来说有很大优势在听到音乐之间关于乐曲本身的信息就已经可以 显示了。但是这么做的缺点是如果用工具软件改变了id3的长度,那么整个文件都需 要重新写入,效率受到影响。另外,id3v2支持unicode,不同语言的信息可以比较好 地互相兼容。 湖南工业大学本科生毕业设计(论文) 6 第二章第二章 系统需求分析系统需求分析 2.12.1 系统目标系统目标 本系统的目标是为了实现一个音乐文件管理器,用来管理磁盘上大量的音乐文件, 它可以将这些音乐文件进行分类列表,也可以完成对歌曲的搜索功能,你可以把磁盘 上的音乐文件进行分类,然后添加进管理器,管理器可以

26、将这些文件列表管理,在音 乐列表中,你可以选中列表中的某一首歌曲,直接试听,还可以修改这首歌曲的参数, 包括歌曲的歌词、演唱者等等信息。你也可以选中多个歌曲,进行批量操作,当然, 你也能对列表进行操作,比如修改名称,清除列表等等。你还可以根据自己的喜好, 对文件进行分类,根据分类更加方便的查找你喜欢的歌曲。 2.22.2 系统功能需求分析系统功能需求分析 一个软件系统设计的成败,除了在功能上要尽可能地完善以外,在界面设计上也 有很大的决定性作用。 如果你的软件界面很糟糕,不能让使用该软件的用户满意,那么你开发的产品将 被“冻结”起来,得不到用户的响应。所以,软件产品的界面设计应该具有友好性这

27、一特点。除此之外,还应该有简洁性。如果你的产品只注意了友好美观的界面,而使 得你的界面很复杂,将会给用户带来极大的不便,从而会适得其反。比如,一个最简 单的操作用户要点击一个按钮,而你的界面上到处都是按钮图片之类的,这就会让用 户花上很长的时间去寻找要点击的按钮,这样一来,当然就不能使用户满意了。 基于此,本系统将使用 java 来设计界面,并且共有 3 个界面窗口,分别是:文 件夹窗口、列表窗口、参数窗口。为了更好地实现系统的各项功能及这些功能的完整 性,现在把系统共分为以下几大模块进行设计: (1)添加文件模块 (2)添加目录模块 (3)查找歌曲模块 (4)列表管理模块 湖南工业大学本科生

28、毕业设计(论文) 7 (5)帮助模块 .1 需求分析的任务需求分析的任务 需求分析是软件定义时期的最后一个阶段,也是设计数据库的一个起点,它确定 了系统必须完成哪些工作,提出完整、准确、清晰和具体的要求,直接影响到后面各 个阶段的设计,及设计结果是否合理和实用。 需求分析的任务是通过详细调查现实世界要处理的对象,充分了解原系统工作概 况,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑 今后可能的扩充和改变,不能仅仅按当前应用需求来设计系统。 其主要解决的问题: 信息要求:用户希望得到什么样的信息。 处理要求:明确用户对数据有什么样的处理要求,从而确定数据

29、之间的相互关系。 安全性与完整性要求:确定用户的最终需求是一件很困难的事情,用户缺少计算 机知识,不能准确表达自己的需求,所提出的需求往往经常变化。设计人员缺少用户 的专业知识,不易理解用户的真正需求。因此在需求分析阶段要求客户的广泛参与, 设计人员也要去熟悉客户的业务工作,才能逐步确定用户的实际需求。 .2 可行性分析任务可行性分析任务 可行性分析的任务就是进一步澄清问题定义,以期用最小的代价在尽可能短的时 间内确定问题是否可以解决。 可行性分析: 1、技术可行性 在现有技术条件下,因为 java 日趋成熟,数据库的技术也掌握的越来越多,文 件管理器功能正在进一步完善。 2、

30、经济可行性 经济方面由于是自行开发,基于个人 pc,所以经费开销很小,系统运行之后产 生的效益将远大于开发成本,经济可行。 3、操作可行性 系统实现从用户角度考虑,所以所有操作都是非常简单的鼠标键盘操作,界面设 计清晰明了,用户在操作方面只要有普通计算机操作基础的都可以胜任,所以操作方 面也是可行的。 湖南工业大学本科生毕业设计(论文) 8 .3 mp3mp3 音乐文件管理器的需求分析音乐文件管理器的需求分析 用户的需求具体体现在各种信息的提供、保存、更新、查询和删除上,以及操作 的简单性和方便性,用户的需求如下: 1、它可以从磁盘上添加文件,并对添加的文件歌曲进行列表分类 2

31、、它可以对列表进行管理,包括清空列表,删除列表内的歌曲,试听列表内的 歌曲等等。 3、它可以记录每部专辑合集的名称、歌手,每首歌曲的名称、歌手或演唱乐 队、时间和歌词,并且可以任意设置每一项的字体、字号和颜色,以达到视觉上的享 受。 4、对歌曲文件进行改名、对歌曲的播放次序进行排序,修改歌曲文件的信息 (批量操作) 5、查找歌曲,根据分类,随时查找自己想听的歌曲,及歌曲的所有信息 .4 假定和约束假定和约束 1、开发经费方面,由于是毕业设计,所以无需资金投入,一切都是在项目组成 员课外时间完成。 2、由于是应用服务程序,一切以用户的需求为最根本的出发点。 3、考虑到用户的计算机

32、操作水平有限,希望开发出的系统应保证界面友好,操 作简单明了,性能可靠,易于维护,可扩展,易于升级。 .5 文件管理程序的数据流图文件管理程序的数据流图 湖南工业大学本科生毕业设计(论文) 9 0 层图 1 层图 呈现音乐列表放 列表 管理列表生成器选择 mp3 文件 mp3 音乐管理程序 文件列表文件列表音乐列表音乐列表 本地文件网络资源 url 选择 mp3 文件 文件流 文件路径 文件列表 将文件读入流 读取文件标签 文件列表 加入音乐队列 音乐列表 歌曲信息 标签组 歌曲信 息对象 文件地址 2 层图 图 2.1 湖南工业大学本科生毕业设计(论文) 10 第三章第三章

33、系统分析与设计系统分析与设计 3.13.1 系统功能模块设计系统功能模块设计 系统功能模块设计是软件开发中非常重要的一部分,因为只有做好功能模块的设 计,编写程序的时候才不至于盲目,也不至于没有条理性,甚至会漏掉很多的东西, 这就像一个建筑物的设计图一样,由此可见它的重要性。本系统共分为以下几个窗口,它 们分别是:文件夹窗口、列表窗口、参数窗口。为了更好地实现系统的各项功能及这 些功能的完整性,现在把系统共分为以下几大模块进行设计: (6)添加文件模块 (7)添加目录模块 (8)查找歌曲模块 (9)列表管理模块 (10)帮助模块 .1 音乐文件管理系统功能模块图音乐文件管理系统

34、功能模块图 音乐文件管理系统主要实现的是用户能管理磁盘上大量的音乐文件,它可以将这 些音乐文件进行分类列表,也可以完成对歌曲的搜索功能,你可以把磁盘上的音乐文 件进行分类,然后添加进管理器,管理器可以将这些文件列表管理,在音乐列表中, 你可以选中列表中的某一首歌曲,直接试听,还可以修改这首歌曲的参数,包括歌曲 的歌词、演唱者等等信息。你也可以选中多个歌曲,进行批量操作,当然,你也能对 列表进行操作,比如修改名称,清除列表等等。你还可以根据自己的喜好,对文件进 行分类,根据分类更加方便的查找你喜欢的歌曲。 下图 3.1 为系统的功能模块图: 湖南工业大学本科生毕业设计(论文) 11 图 3.1

35、功能模块图 .2 系统功能模型图系统功能模型图 系统功能分为三大模块:mp3 文件搜索、mp3 播放列表维护和 mp3 播放,搜索可 分为手动搜索和自动搜索,播放列表维护包括增加记录、修改记录删除记录及对文件 的修改还有列表格式的转换等等,下图为系统功能模型图: 湖南工业大学本科生毕业设计(论文) 12 图 3.2 系统功能模型图 3.23.2 系统的几个重要系统的几个重要 umluml 图图 uml 图可以很直观的反应系统说要实现的功能 可以使用用例图、类图、时序图等显示系统的执行过程、实现功能 uml 图大大的方便了开发人员的开发步骤,使开发人员能够分模块、分步骤的对 系统

36、进行开发。 类图表示不同的实体(人、事物和数据)如何彼此相关;换句话说,它显示了系 统的静态结构。类图还可用于表示实现类,实现类就是程序员处理的实体。实现类图 或许会与逻辑类图显示一些相同的类。然而,实现类图不会使用相同的属性来描述。 类在类图上使用包含三个部分的巨型来描述。最上面的部分显示类的名称,中间 部分包含类的属性,最下面的部分包含类的操作(或者说“方法” ) 。 湖南工业大学本科生毕业设计(论文) 13 图 3.3 核心类图 图 3.4 播放器类图 湖南工业大学本科生毕业设计(论文) 14 图 3.5 获取 apev2 搜索顺序图 湖南工业大学本科生毕业设计(论文) 15 第四章第四

37、章 详细设计与实现详细设计与实现 这里将介绍本系统的技术重点、难点的设计与实现。在整个项目中,大量运用了 java 类库提供的功能,包括 java swing 高级组件的使用,基于对象序列化的配置保 持,基于 dnd 技术的拖放批量文件的播放等。 本系统最重要的部分是获取标签,通过标签来修改文件信息,对文件分类,建立 列表等。 4.14.1 算法分析算法分析 超类 mp3tag,三个子类 mp3tagapev2、mp3tagid3v1、mp3tagid3v23 uml 类图如图 4.1 +decode(string decoder):void() +writetag():void() -get

38、taglength():int() +removetags():void() +insert(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(str

39、ing decoder):void() +writetag():void() -gettaglength():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(

40、):byte() -itemheader(int v1,int v2):byte() -readapev2tags(byte taginfos):void() -stitle:string -sartist:string -salbum:string -syear:string -scomment:string -itrack:int -igenre:int mp3tagapev2 图 4.1 id3 标签 uml 类图 湖南工业大学本科生毕业设计(论文) 16 4.24.2 获取标签的详细代码获取标签的详细代码 package fileread; import java.io.file; i

41、mport java.io.fileinputstream; import model.apev2; import model.id3v1; 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()

42、throws exception return id3v2=id3v2.readerid3v2(this.file); public 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(id3

43、v2.getsize_tag()+10); /size_tag 数值有问题 system.out.println(id3v2.getsize_tag(); fr.read(header); system.out.println(new string(header); if(apev2.hasapev2(header) 湖南工业大学本科生毕业设计(论文) 17 system.out.println(在 id3v2 之后); system.out.println(它含有 apev2 标签); fr.read(apev2.getversion(); fr.read(apev2.gettagsize(

44、); fr.read(apev2.getitemcount(); fr.read(apev2.gettagflags(); fr.read(apev2.getreserved(); 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.prin

45、tln(在 id3v1 之前); system.out.println(它含有 apev2 标签); fr.read(apev2.getversion(); fr.read(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 标签的修改和删除标签

46、的修改和删除 package sxie.mp3tag; import java.io.file; 湖南工业大学本科生毕业设计(论文) 18 import java.io.filenotfoundexception; import java.io.ioexception; import java.io.randomaccessfile; import java.io.unsupportedencodingexception; import javax.activation.unsupporteddatatypeexception; public class mp3tagid3v1 extends

47、 mp3tag string stitle = ; string sartist = ; string salbum = ; string syear = ; string scomment = ; int itrack = 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 unsupported

48、encodingexception int length = size+off; int i = off; for(;i30?30:ssour.length; system.arraycopy(ssour, 0, bid3v1infos, 3, length); ssour = sartist.getbytes(decoder); length = ssour.length30?30:ssour.length; system.arraycopy(ssour, 0, bid3v1infos, 33, length); ssour = salbum.getbytes(decoder); 湖南工业大

49、学本科生毕业设计(论文) 21 length = ssour.length30?30:ssour.length; system.arraycopy(ssour, 0, bid3v1infos, 63, length); ssour = syear.getbytes(decoder); length = ssour.length4?4:ssour.length; system.arraycopy(ssour, 0, bid3v1infos, 93, length); ssour = scomment.getbytes(decoder); length = ssour.length28?30:ss

50、our.length; system.arraycopy(ssour, 0, bid3v1infos, 97, length); if(length != 30) bid3v1infos126 = (byte)itrack; bid3v1infos126 = (byte)igenre; if(btaginfo) fopera.seek(flen-128); fopera.write(bid3v1infos); fopera.close(); else insert(fopera.length(), bid3v1infos); catch (filenotfoundexception e) ca

51、tch (ioexception e) / todo auto-generated catch block try fopera.close(); catch (ioexception e1) fopera = null; public void settitle(string title) if(title = null) stitle = ; 湖南工业大学本科生毕业设计(论文) 22 else stitle = title; public string gettitle() return stitle; public void setartist(string artist) if(art

52、ist = null) sartist =; else sartist = artist; public string getartist() return sartist; public void setalbum(string album) if(album = null) salbum = ; else salbum = album; public string getalbum() return salbum; public void setyear(string year) if(year = null) syear = ; else syear = year; 湖南工业大学本科生毕

53、业设计(论文) 23 public string getyear() return syear; public void setcomment(string comment) if(comment = null) scomment =; else scomment = comment; public string getcomment() return scomment; public void settrack(int track) itrack = math.abs(track); public int gettrack() return itrack; public void setge

54、nre(string genre) igenre = 0; public string getgenre() return string.valueof(igenre); public static void main(string args) throws ioexception / todo auto-generated method stub file f = new file(mp3/江若琳-太早.mp3); /system.out.println(f.getname(); mp3tagapev2 mp = new mp3tagapev2(f); mp.decode(utf-8); 湖

55、南工业大学本科生毕业设计(论文) 24 mp.writetag(); system.out.println(mp.getartist(); 4.44.4 程序运行结果图程序运行结果图 图 4.2 所示为系统主界面图 图 4.2 界面图 点击所有列表会出现图 4.3 所示: 湖南工业大学本科生毕业设计(论文) 25 图 4.3 列表界面图 点击清空列表会出现图 4.4 所示: 图 4.4 清空列表界面图 点击添加文件会出现如下所示: 湖南工业大学本科生毕业设计(论文) 26 图 4.5 查找界面图 点击添加目录出现如 4.6 所示: 图 4.6 添加目录图 点击查找歌曲: 湖南工业大学本科生毕业

56、设计(论文) 27 图 4.7 查找歌曲图 点击删除选定记录: 图 4.8 歌曲操作示意图 湖南工业大学本科生毕业设计(论文) 28 选中歌曲后,可以对歌曲的信息进行更改,如下图所示,你可以更改歌曲的曲名、 艺人、专辑、年份备注等文件信息。 图 4.9 歌曲文件信息修改图 由于时间紧迫,有些功能还没有完善,比如帮助模块,虽然此系统操作简便,对 于大部分人来说都很容易弄懂,但个人觉得还是应该有,只能以后再进行改进了。 湖南工业大学本科生毕业设计(论文) 29 结论结论 经过两个多月的努力,毕业设计终于完成了,在整个设计过程中,出现过很多的 难题,但都在老师和同学的帮助下顺利解决了,在此过程中,我付出了很大的心血, 查了大量的资料,以及无数次的更改和实验。通过这次毕业设计,我以得出了以下几 点结论: 写论文是一个不断学习的过程,从最初刚写论文时对面临的问题的模糊认识到最 后能对该问题有深刻的认识,我体会到实践对于学习的重要性,以前只是明白理论, 没有经过实践考察,对知识的理解不够明确,通过这次的做,真正做到理论实践相结 合。 在进行设计之前,必需要做大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论