基于C#的智能音乐播放器的设计和实现毕业设计.doc
通化师范学院本 科 生 毕 业 论 文( 2014 届 )题 目:基于C#的智能音乐播放器的设计和实现系 别: 计算机学院 专 业: 计算机科学与技术 班 级: 2010级1班 作者姓名: 学号: 201011010103 指导教师: 职称: 讲师 学历: 研究生论文成绩: 2013 年 12 月目 录绪 论3第一章 C#概述41.1 什么是C#?41.1.1C#简介4第二章 系统分析42.1功能需求分析52.1.1 播放器的基本控制需求52.1.2 媒体文件列表的获取52.2 系统界面需求5第三章 系统设计53.1系统模块设计53.2 模块详细概述73.2.1 开始模块73.2.2 播放模式模块73.2.3 透明度模块73.2.4 界面设置模块73.2.5关于模块7第四章 系统功能实现84.1 播放器主界面功能84.2 开始模块84.3 播放模式模块13第五章 系统测试195.1 单元测试一195.2 单元测试二20第六章 结论与展望20参 考 文 献21指导教师评语评阅人评语基于c#的智能音乐播放器的设计和实现 摘 要:本文针对当今流行音乐播放器的内存大量占用和操作复杂等缺点,设计并实现了开发出了一个功能丰富、占用内存少、操作简易的音乐点播系统,该播放器具有低内存占用和绿色无广告的特点,因此具有广阔的市场前景。本文基于.NET开发环境,采用microsoft vc+语言编写核心代码,调用采用Windows Media Player的编程接口,完成播放器的设计与实现.该播放器能够完成添加音乐文件、音乐播放放、暂停、停止、播放进度显示、音量控制等的功能。该播放器界面美观,操作简单,具有低内存占用和绿色无广告的特点,因此具有广阔的市场前景。 关键字:C#;音乐播放器;应用程序Design and implementation of intelligent music player based on C#Ding Weilan Class 1 Grade 2010 Department of Computer ScienceAbstract:In recent years, due to various music player appear ceaselessly and update to bring a lot of surprises, but in surprise at the same time, there has been a lot of inconvenience, like not operation, less skilled, can't quickly grasp, bring a lot of inconvenience, then, I have designed a very simple and practical intelligent music player, this paper is to introduce the design and implementation of it. The player is based on C#, and gives the detailed system design process, some screenshots and main function flow chart, meet the development process of the problem and the solution are discussed. The player to achieve the main music playback, the player can play, pause, a song, the next song, stop, and it includes how to add music files, music folder, background images, play mode, interface settings and other functions, the operation is simple and practical, and can grasp in a short time to feel the music of the aesthetic feeling! Promotion to the modern people is very popular.Key words: C#; Music player; Application;绪 论随着社会的经济的不断发展,现如今人们的生活节奏不断加快,与此同时现在的科技不断提高,出现了很多音乐播放器,编写这些播放器的语言有很多,有Java,C+, C#等编程语言。其中C#编程语言是很简单的一门语言,可以很方便轻松的设计出很多应用程序。本文所介绍的音乐播放器就是基于c#的播放器。 C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。它是一种安全的、稳定的、简单的、优雅的,由C和C+衍生出来的面向对象的编程语言。它在继承C和C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C+的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。我开发的播放器就是基于C#的播放器。随着社会的科技不断发展,各种音乐播放器相继被开发出来,但是很多播放器一味追求外观花俏,功能过于庞大,导致用户电脑资源被过度占用,造成资源浪费。比如说CPU,内存等占用率过高,在用户执行多任务操作时经常出现卡机甚至是死机的现象。其实对于大多数普通用户,很多功能都是形同虚设。针对以上各种弊端,我们选择了开发一种功能实用,用户交互友好的多媒体播放器,将各种性能优化,继承音乐播放器的常用功能,满足一般用户的需求。我研究了市场上主流的音乐播放器,了解它们各自的编码方式,分析了各种开发方式的优缺点,从可行性分析出发,找出一条适合自己的开发之路,编写出功能实用,使用方便,占用资源小的播放器。目前已经实现的功能有能播放常见(MP3)音频文件的功能,具备一般播放器的功能,如播放、暂停、上一曲、下一曲、停止,添加音乐文件,自动换背景图片等。第一章 相关技术简介1.1Visual Studio 2005Visual Studio 2005是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Studio 2005 的中心内容包括HYPERLINK l "language" 语言和 IDE 工作效率。作为 Visual Studio 一部分的四种语言(Visual Basic、Visual C+、Visual C# 和 Visual J#),Microsoft 为其每一种语音都构建了独特的特征。1.2 C#语言Visual C#是微软公司可视化开发工具Microsoft Visual Studio中的系列产品,是创建Windows应用程序最简便、最快捷的开发工具之一。它由C#是由C和C+衍生出来的面向对象的编程语言,一个C#应用程序可以由一个文件组成,也可以由多个文件组成,C#源文件的扩展名为.CS,如helloworld.cs,一个源文件中可以有一个类,也可以有多个类。文件名可以和其中的类名相同,也可以不同。C#主要优点简单。微软公司在设计C语言时力求简单,尽量把一些复杂的东西,如宏、模板、多重继承统统消除。面向对象。C#是一种面向对象的编程语言,支持面向对象的特征,如封装性、继承性和多态性。强大灵活。使用C#编程的用户几乎没有任何约束,可以创建图形、电子表格、管理信息系统,甚至其他语言的编译器。类型安全。C#去掉了指针,这从根本上保证了程序的稳定性和类型安全。兼容性强。C#允许访问不同的API。第二章 系统分析2.1可行性分析 2.1.1技术可行性技术可行性是可行性研究的关键内容。该音乐播放器是用C#语音开发的,调试比较简单,所需的计算机硬件配置要求不高,一般PC机完全能满足开发要求。软件方面:基于微软.net开发平台使用C#面向对象的编程语音,它开发速度快,简单易用,技术成熟,软件也容易从网上获得,完全能满足开发需求。 2.1.2经济可行性本系统适应于个人pc机,硬件设施投入少、成本低廉、开发周期短等;本系统所使用开发环境、.Net编程技术以及Windows Media Player编程接口,简单易学,易于掌握,能节约时间,提高效率,并且对于硬件的开发环境要求不高;本系统所需开发人员少,使用本系统可以有效地节约人力;本系统开发成功后可应用于个人pc机,使用本系统能更好的节约资源,是操作方便、智能。综上对开发本系统在人力、财力、物力、时间上的考虑,可以看出本系统在经济上是可行的。2.1.4操作可行性这套系统是利用自己的计算机加微软的集成开发环境Microsoft Visual Studio2005 作为软件的开发平台,使开发出来的系统有友好的用户界面、有良好的安全性设置、有详细的操作说明书,这样更使各类用户很快地掌握系统的使用方法,操作友好因此在操作上是可行的.2.2需求分析软件需求是指用户对目标软件系统在功能、性能、行为、设计约束等方面的期望。需求分析就是通过对应用问题及其坏境的分析与理解采用一系列的分析方法和技术将用户的需求逐步精确化、完全化、一致化,最终形成需求规模说明文档的过程。本节将从不同的角度描述系统的需求,并且使用用例图来描述.2.2.1功能需求系统的功能需求,我们分成三部分来概括,即播放器的基本控制需求,播放列表管理需求和播放器友好性需求。以下分别描述:1. 播放器的基本控制需求 基本控制需求的UML图:用例名称:播放模式控制参与者:用户目标:使得用户按个人喜好播放列表中的歌曲前置条件:播放器正在运行,并且播放列表中有要删除的音乐文件基本事件流:1.用户点击“模式”按钮 2.系统弹出一个快捷菜单, 3.用户可以从中选择“单曲播放,单曲循环,顺序播放,循环播放” 4播放器进如相应的播放模式用例名称:播放文件参与者:用户目标:使得用户可以播放本地计算机的歌曲文件前置条件:播放器正在运行基本事件流:1.用户点击播放文件的按钮 2.用户选择要播放的歌曲文件后置条件:将用户选择要播放的歌曲文件添加到当前播放列表,并播放歌曲文件用例名称:音量控制参与者:用户目标:使得用户可以调节播放器的音量前置条件:播放器正在运行基本事件流:1.用户右或左滑动音量控制按钮 2.播放器的音量增大或降低,用例名称:静音控制参与者:用户目标:使得用户可以快速将播放器调到无声状态前置条件:播放器正在运行基本事件流:1.用户点击静音控制按钮 2.播放器的音量立即降到最低,即无声状态用例名称:上一首/下一首参与者:用户目标:使得用户可以选择播放播放列表中上一首/下一首歌曲前置条件:播放器正在运行,当前播放列表有上一首/下一首歌曲基本事件流:1.用户单击“下一首/下一首”按钮 2.播放器将播放播放列表中的上一首/下一首歌曲用例名称:播放参与者:用户目标:使得用户可以播放在播放播放列表中选中的歌曲前置条件:播放器正在运行基本事件流:1.用户单击“播放”按钮 2.播放器将播放播放列表中当前的歌曲用例名称:暂停参与者:用户目标:使得用户可以暂停正在播放的歌曲前置条件:歌曲正在播放基本事件流:1.用户点击暂停按钮 2.正在播放的歌曲暂停播放,2. 播放列表管理需求当用户选定某一播放列表,应有的需求:用例名称:播放歌曲文件参与者:用户目标:使得用户可以选择播放播放列表中的歌曲文件前置条件:播放器正在运行,播放列表有歌曲文件基本事件流:1.用户双击或右击要播放的歌曲文件后置条件:播放选定的歌曲文件添加歌曲文件控制用例名称:添加歌曲文件参与者:用户目标:使得用户可以添加本地计算机的音乐文件或文件夹前置条件:播放器正在运行,并且本地计算机存储有音乐文件基本事件流:1.用户单击【添加歌曲】按钮 2.系统弹出一个“选择文件/文件夹”对话框, 3.用户选定要添加的文件或文件夹并按“确定” 4文件或文件夹被添加到播放列表后置条件:播放列表显示了添加的音乐文件用例名称:删除歌曲文件参与者:用户目标:使得用户可以删除播放列表中的音乐文件前置条件:播放器正在运行,并且播放列表中有要删除的音乐文件基本事件流:1.用户右击选定要删除的音乐文件 2.系统弹出一个快捷菜单 3.用户选择“删除” 4文件在播放列表中被删除后置条件:播放列表删除了被选定的音乐文件3. 播放器友好性需求 用例名称:视觉外观显示参与者:系统或用户目标:使得播放器根据歌曲文件的特性,通过视觉外观来动态显示前置条件:播放器正在播放歌曲文件基本事件流:1.系统读取要播放的歌曲文件的特性, 2接着调用一个视觉外观显示组件来动态显示出来后置条件:视觉外观显示组件来动态显示播放中的歌曲文件用例名称:歌曲时间显示参与者:系统目标:使得播放器能显示歌曲文件的播放时间,并通过视觉数字动态显示前置条件:播放器播放歌曲文件基本事件流:1.系统读取要播放的歌曲文件的时间, 2并通过视觉数字动态显示已播放了歌曲文件多长时间后置条件:视觉数字显示动态显示播放中的歌曲文件的时间用例名称:播放状态显示参与者:系统目标:使得播放器能显示播放器现时的状态,是播放还是暂停中前置条件:播放器已打开基本事件流:1.系统读取播放器状态, 2通过文字标签显示出来后置条件:文字标签将播放器状态显示出来用例名称:歌曲文件信息显示参与者:系统目标:使得用户能了解歌曲文件的信息,例如标题,歌手,声道,比特率等信息前置条件:播放器播放歌曲文件基本事件流:1.系统读取歌曲文件的信息, 2并且通过文字标签显示出来后置条件:文字标签将歌曲文件状态显示出来2.2.2界面需求播放器界面要求布局合理,颜色舒适,控制按钮友好;为了减少开发工程量,我们借鉴了现时流行的千千静听的皮肤来作为我们播放器的界面目标需求,此皮肤版权归原作者所有,我们只是作学习所用,2.2.3性能需求1. 数据精确度 我们开发的是音乐播放器,音乐播放器解码的时候本身就需要很高的精确度才行,不然会出现乱码或有损音质的情况发生。失真控制循环和非归一化量化控制循环是量化编码循环过程,它通过量化减少各MDCT系数的精度,使编码比特数得以降低。不同系数采用不同的量化阶,从耳敏感的频率量化精度高,不敏感的频率量化精度低,量化误差则不会被人耳察觉。 2. 时间特性 音乐播放器的响应时间是需要严格把关控制的,太长则会影响用户体验,不利于流畅的切换,我们的播放器需要很短的时间内响应用户的请求并作出高效的应答。具体时间要求如下: (1)当要求歌曲播放时,软件响应时间最长不能超过2秒。 (2)当要求歌曲暂停时,软件响应时间最长不能超过1秒。2.2.4可靠性需求系统能持续运行,播放歌曲文件。2.4.5运行环境需求硬件平台: AMD Athlon(tm)64 X2 Dual Core QL-60 1.90 GHz 2GB内存 160GB硬盘 软件平台:操作系统:Windows 7 开发工具:Microsoft Visual Studio2005 第三章 系统设计本音乐播放器不仅要实现对一些常见的音频格式文件的播放,而且还要有友好的用户界面。其最终设计目标是:实现对多种音频格式文件的播放、实现对歌词的滚动播放及当前播放曲目长度显示、显示歌曲文件信息、实现静音和音量控制;播放器软件占用系统资源少、运行平台要求不高、界面美观舒适、操作简单、易维护、高稳定性、,能满足用户的常见需求。3.1系统总体结构设计智能播放器主要是以播放MP3音频文件而设计与实现的。根据系统需求以及实际可操作及耐用性、实用性,通过设计主界面、添加代码等步骤最终实现播放器的功能。 按照系统所要完成的功能,本文的智能播放器系统总体框架如下图所示: 智能音乐播放器 开始模块播放模式模块 关于模块 界面设置模块 透明度模块 迷你模式不透明设置透明度设置皮肤更换随机循环列表循环顺序循环单曲循环退出添加音乐文件夹添加音乐文件3.2 系统各功能子模块设计3.2.1主界面模块 3.2.2 开始模块 开始模块主要实现的功能:添加音乐文件,主要是为了选择单个音乐文件,适合广大用户的喜爱的歌曲选择。开始模块包括四个子模块1. 添加音乐文件:功能描述:选择电脑中或者从乐库中,将之加入播放器的播放列表,同时更新播放列表。2. 添加音乐文件夹:功能描述:实现加入一个目录下面所有需要进行播放的歌曲,同时更新播放器播放列表。 3. 添加背景图片:功能描述:主要是为了选择你喜欢的音乐播放器的主题图片,可以单个添加,也可以添加多个图片,然后在播放音乐的同时,欣赏你喜爱的图片。4. 退出 :功能描述:从这里就可以退出播放器。 3.2.2 播放模式模块 播放模式模块主要实现的功能:对歌曲进行打开/播放、暂停、停止、上一首、下一首、循环播放等控制。 播放模式模块包括四个子模块1. 歌曲播放模块(1) 单曲循环:当选中一个音频时播放该音频;当选中多个音频时播放选中的第一个音频;当未选中音频时播放当前选中的播放列表中的第一个音频。且该音频只播放一次,播放完毕后停止。(2) 顺序循环:当选中一个音频时,播放效果同单曲播放;当选中多个音频时,从选中的第一个音频开始播放,直到选中的最后一个音频;当没有选中音频时,从当前选中的播放列表中的第一个音频开始播放,直到列表中的最后一个音频。且当最后一个音频播放完毕后播放停止。(3) 列表循环:当选中一个音频时,播放效果同单曲循环;当选中多个音频时,从选中的第一个音频开始播放,直到选中的最后一个音频;当没有选中音频时,从当前选中的播放列表中的第一个音频开始播放,直到列表中的最后一个音频。且当最后一个音频播放完毕后从第一个音频开始重新播放。(4) 随机循环:当选中一个音频时,播放效果同单曲循环;当选中多个音频时,会随机播放选中的文件。2. 歌曲暂停子模3. 歌曲停4. 上一首/下一首 3.2.3音量控制功能实现功能描述:可以对当前正在播放的歌曲调节播放音量的大小,方便快捷的享受音乐带来的感动。3.2.4歌曲列表功能实现功能描述:此功能模块实现通过一个对话框显示歌曲的相关信息并可以进行编辑,保存,删除。3.2.5皮肤透明度设置功能描述:此功能模块实现对当前入播放器直接进行皮肤选择。透明度模块主要实现的功能是改变播放器皮肤的透明度,进而增加播放器界面的美观度。透明度模块包括二个子模块1. 透明度设置模块:2. 不透明设置模块: 3.2.45界面设置模块界面设置模块主要实现的功能:正常模式与迷你模式的切换,能适合长时间听歌的享受,可以缓解长时间玩播放器听歌曲的视觉疲劳感。界面设置模块包括两个子模块:1. 迷你模式子模块:2. 正常模式子模块: 3.2.6 关于模块关于模块主要实现的功能:告诉广大用户本款音乐播放器的主要功能,它的好处,以及播放器制作人的联系方式,便于用户的咨询。 第四章 系统功能实现4.1 播放器主界面功能新音乐播放器具备音乐播放、歌曲搜索、主题切换、窗口透明等功能,是一款性能卓越、体积“瘦小”、界面绚丽、操作简单的全功能音乐软件;新音乐播放器满足用户的音乐需要,为您的音乐享受带来更美妙的体验。4.2 开始模块4.2.1添加音乐文件功能:一首一首添加你所需要的音乐文件。主要代码:FolderBrowserDialog folder = new FolderBrowserDialog();/文件夹初始化 folder.ShowDialog(); string file = Directory.GetFiles(folder.SelectedPath.ToString(), "*.MP3");/使用数组存得到的文件 int fileName = 0; try foreach (string Music in file) fileCount1+; FileInfo f = new FileInfo(filefileName);/读取文件 musicfilefileCount = filefileName; fileName+; fileCount+;/数组存文件数 string total = fileCount1.ToString() + "_" + f.Name;/f.Name只取f中的文件名 this.listBox1.Items.Add(total); catch (Exception) MessageBox.Show("输入的音乐总数超出!"); 运行结果界面:4.2.2添加音乐文件夹功能:能一次添加多首音乐文件。主要代码: FolderBrowserDialog folder = new FolderBrowserDialog();/文件夹初始化 folder.ShowDialog(); string file = Directory.GetFiles(folder.SelectedPath.ToString(), "*.MP3");/使用数组存得到的文件 int fileName = 0; try foreach (string Music in file) fileCount1+; FileInfo f = new FileInfo(filefileName);/读取文件 musicfilefileCount = filefileName; fileName+; fileCount+;/数组存文件数 string total = fileCount1.ToString() + "_" + f.Name;/f.Name只取f中的文件名 this.listBox1.Items.Add(total); catch (Exception) MessageBox.Show("输入的音乐总数超出!"); 运行结果界面:4.2.3添加背景图片功能:能一次添加一张或多张用户喜欢的播放器主题图片。主要代码:FolderBrowserDialog folder = new FolderBrowserDialog(); folder.ShowDialog(); string BGfile = Directory.GetFiles(folder.SelectedPath.ToString(), "*.jpg"); foreach (string pic in BGfile) imageorder = Image.FromFile(pic); order+; this.timer1.Enabled = true;/启动定时器/添加背景图片按钮的代码this.label2.Image= imageImagecount; if (Imagecount >= order - 1) Imagecount = 0; else Imagecount+; /定时器的代码运行结果界面:4.2.4退出功能:退出播放器。主要代码:this.Close();4.3 播放模式模块4.3.1单曲循环功能:一首歌重复播放。主要代码:CurrentPosition = axWindowsMediaPlayer1.Ctlcontrols.currentPosition;/得到正在播放的位 axWindowsMediaPlayer1.Ctlcontrols.currentPosition=CurrentPosition;/接着停止的位置继续播放 State = 1; axWindowsMediaPlayer1.settings.setMode("loop", true); 顺序循环ToolStripMenuItem.Checked = false; /顺序循环 单曲循环ToolStripMenuItem.Checked = true; /单曲循环 列表循环ToolStripMenuItem.Checked = false; /列表循环 随机播放ToolStripMenuItem.Checked = false; /随机播放4.3.2顺序循环功能:对于音乐播放器列表中的歌曲,进行从上至下的进行一首一首的播放,直到播放到列表最后的一首歌为止。主要代码: ToolStripMenuItem.Checked = true; /顺序循环 ToolStripMenuItem.Checked = false; /单曲循环 ToolStripMenuItem.Checked = false; /列表循环 ToolStripMenuItem.Checked = false; /随机播放 State = 0;4.3.3列表循环功能:对于播放器列表中的歌曲进行顺序播放,然后在播放到列表最后一首歌曲时,再从列表第一首歌曲再次顺序播放。主要代码: ToolStripMenuItem.Checked = false; /顺序循环 ToolStripMenuItem.Checked = false; /单曲循环 ToolStripMenuItem.Checked = true; /列表循环 ToolStripMenuItem.Checked = false; /随机播放 State = 3;4.3.4随机循环功能:对于播放列表中的歌曲,进行随机的选取一首歌进行播放。主要代码: ToolStripMenuItem.Checked = false; /顺序循环 ToolStripMenuItem.Checked = false; /单曲循环 ToolStripMenuItem.Checked = false; /列表循环 ToolStripMenuItem.Checked = true; /随机播放 State = 2;4.4界面设置模块 4.4.1迷你模式 功能:改变当前部分播放器的颜色,能使感官感受更加舒适。 主要代码: Color color = Color.LightGoldenrodYellow; this.listBox1.BackColor = color; this.Up.BackColor = color; this.PlayOrStop.BackColor = color; this.Down.BackColor = color; this.stoop.BackColor = color; this.button5.BackColor = color; 运行结果界面:4.5透明度模块4.5.1透明度的设置功能:主要有5种透明度选择。分别是0.1,0.3,0.5,0.7,0.9等5种透明度。能让播放器主界面的透明度不一样,给人不一样的美感的追求。主要代码:this.Opacity = 0.1;this.Opacity = 0.3;this.Opacity = 0.5;this.Opacity = 0.7;this.Opacity = 0.9;运行结果界面:4.5.2不透明功能:恢复原来的主界面不透明的正常状态。主要代码:this.Opacity = 1.0;运行结果界面:4.6关于模块功能:主要是告诉用户这款音乐播放器的主要功能以及优点,以及和这款播放器的制作人,和制作人的联系方式,方便咨询。主要代码: MessageBox.Show("软件版本:2.0 正式版n发布时间:.01.19nn新音乐播放器具备音乐播放、歌曲搜索、主题切换、窗口透明等功能,是一款性能卓越、体积“瘦小”、界面绚丽、操作简单的全功能音乐软件;n新音乐播放器满足用户的音乐需要,为您的音乐享受带来更美妙的体验。nntt欢迎大家提出宝贵意见!nntttt通化师院nnttt制作人:丁为蓝 联系方式QQ:1146910429","关于软件");运行结果界面: 第五章 系统测试5.1 单元测试一主要在模拟器上测试音乐播放器各个功能的实现情况,包括界面切换、多媒体文件列表的获取情况、播放控制功能和相关功能的实现。及时优化相关代码,并进一步美化界面。5.2 单元测试二往模拟器的SD卡里上传MP3音乐文件,测试该播放器的功能能否顺利实现,发现情况与预期的情况一致,即能正常播放。第六章 结论与展望通过对基于C#的智能音乐播放器软件的开发,使我对该播放器系统的整体设计有一个深入的了解。开发该音乐播放器,要抓住开发的核心部分,该播放器主要由播放主界面、播放列表、菜单、播放设置、背景等部分组成,这样这个播放器就能初具规模。而其它的功能都是在这些个功能的基础上去补充添加的。基于C#的智能音乐播放器系统实现了播放器的基本功能:播放,暂停、停止、上/下曲、音量调节、界面设置等功能。开发该播放器的软件是Microsoft Visual Studio 2005,s使用它实现了多媒体播放器的系统编程。