聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> 音乐播放器的设计与实现毕业论文

音乐播放器的设计与实现毕业论文

时间:2021-08-19    下载该word文档
毕业设计说明书
学生姓名 ___________________ ______________________

计算机科学与技术学院 ____________ 计算机科学与技术(软件工程) ___________________

音乐播放器的设计与实现 ____________ 指导教师一
(姓 名)
(专业技术职称/学位)

淮阴师范学院毕业论文(设计)
随着生活水平的提高,娱乐已成为非常主流的话题,人们不仅需要通过音乐陶冶 情操,而且越来越多的人倾向于使用音乐、视频等娱乐和放松自己,这大大促进了媒体软 件的发展本文旨在介绍研究常用数字音频编码和解码的相关知识,并结合
VS2008编写多
功能音乐播放器,了解音乐播放器功能的实现,掌握开发音乐播放器所需的相关知识,采 用了面向对象软件工程方法,其开发主要包括应用程序界面设计和后台代码运行两个方 面,实现了多功能音乐播放器在计算机上的应用,可以在很大程度上满足用户的需求

系统主要具备:音乐播放控制、音乐文件控制、音量控制、下载控制、歌词控制、进度控 制、音乐剪辑等功能模块。
关键字:音乐播放器,音频编码格式, TechSmith Screen Capture Codec FFmpegC#
Visual
Studio 2008 Abstract: With the improvement of standards of living, entertainment has become very main stream topics, it is required not only by music, edify ing, and as more and more people tend to use music, video and other entertainment and relax, which greatly promoted the development of media software. This article aims to in troduce the research kno wledge of com mon digital audio en cod ing and decod ing, and in conj un cti on with VS2008 prepared multif unctional music player, understand the functions of the music player to acquire related knowledge needed to develop music player, object-orie nted software engin eeri ng methods are used, their developme nt in cludes the applicati on in terface desig n and code to run in the backgro und tracks to realize multifunctional music player application on your computer, you can to a large extent, meet the needs of users. The system mainly includes: a music player, music file control, volume control, control, control, schedule control of lyrics, music editing function module. Keywords music player, audio coding format, techsmith screen capture codec, c#, visual studio 2008 目录
1 前言 ....................................................................................................................................... -.4 - 1.1选题的背景及意义 .......................................................................................................... -.4 - -1 -



淮阴师范学院毕业论文(设计)
1.2 网络流行音乐播放器简介 ......................................................................................... -.4 - 2系统相关技术及开发平台介绍 ........................................................................................ -.5 - 2.1开发应用技术介绍 ......................................................................................................... -.6 - 2.2开发及运行坏境 .............................................................................................................. -.8 - 3 系统的分析 .......................................................................................................................... -.8 - 3.1可行性分析 ...................................................................................................................... -.8 - 3.2常见的几种音频格式及其特点 .................................................................................... -.9 - 3.3 需求分析 .......................................................................................................................... -10 - 4系统设计 .................................................................................................................................. -12 - 4.1 系统概要设计 .................................................................................................................. -12 - 4.2 系统功能设计及描述 ...................................................................................................... -12 - 5系统功能实现 .......................................................................................................................... -14 - 5.1 歌曲添加模块 .................................................................................................................. -15 - 5.2歌曲列表模块 ....................................................................................................................... -19 - 5.3播放控制模块 ....................................................................................................................... -20 - 5.4 音量控制模块 ................................................................................................................. -23 - 5.5进度控制模块 ....................................................................................................................... -24 - 5.6滚动字幕模块 ....................................................................................................................... -24 - 5.7歌曲下载模块 ....................................................................................................................... -29 - 5.8歌曲剪辑模块 ....................................................................................................................... -31 - 结论 .............................................................................................................................................. -35 - 参考文献 ...................................................................................................................................... -36 - 致谢 .............................................................................................................................................. -37 - 1 前言 1.1
选题的背景及意义
音乐是情感的艺术,美妙动听的音乐来源于情感,又潜移默化地影响情感,让我们进 入瑰丽多彩的虚化与现实的意境之中。向上追溯百年或千年,直至最原始的音乐诞生之初, 我相信音乐是为了倾诉而不是表现,是自然的流露而不是技巧的夸张,是自我的沉醉而不 是别人的掌声。因为爱与感动,因为生命的圆满与缺憾,因为思想的灵动与创造。所以音 乐不单在乐谱上,更在我们的心中。
众所周知任何格式的音乐都要通过音乐播放软件播放,那么音乐播放软件是通过什么
样的原理实现-2 -



淮阴师范学院毕业论文(设计)
音乐的播放的呢?音乐播放器就是音频解码器的可视化操作界面,其实质是 针对各种音频编码格式的解码器。例如 APE格式调用的是Mon key's Audio解码器,FLAC 格式调用的是FLAC解码器,MP3调用的lame解码器。大部分音乐播放器都支持多种音 乐格式的文件,这是因为这些播放器将不同的音频解码器打包起来,并制作统一的播放界 面,从而让使用者能够方便地播放和聆听各种音乐。
伴随着改革开放人们的生活水平普遍提高如今音乐已成为越来越多人的心灵寄托。随 着因特网在我国的普及随之而来的是各式各样的播放器软件。
尽管未来的音乐播放器将具备各种丰富多彩的功能,但作为一款多媒体软件,音频应 用才是最基本的,也是最能决定获取用户数量的因素。
基于上述分析音质高,外形美观,小巧且功能强大是未来播放器发展的主流趋势。作 为一个音乐爱好者兼软件工程专业的一员若能编写一款小巧功能强大的音乐播放器无疑 是一件很有成就感的事情。
1.2 网络流行音乐播放器简介
本小节举例介绍目前网络上流行的几款音乐播放器,
比如国产千千静听,酷狗音乐等。
比较分析了它们各自特有的功能,此外还集中介绍了常见的几种编码格式以及它们各自的 特点。
1.2.1 千千静听
千千静听是一款专为用户定制的全新一代的免费听歌下载音乐播放器软件。提供百万 首歌曲免费试听下载,拥有最新、最流行的歌曲,提供第一时间音乐资讯;超咼品质320kbps 的音乐歌曲下载,给耳朵更优质的享受;超炫的智能语音搜歌功能让听歌更加快捷;免费 的手机铃声歌曲下载;轻松拖拽歌词,保持歌词同步,支持边听边唱;支持在线播放下载; 流量限额提醒功能。
软件特色:1、高精度音质,完美还原听觉 2、在线自动下载歌词,卡拉 OK式同步 显示;3、软件小、运行快、支持众多插件,自由编辑歌词,由你做主;4、自由转换MP3 WMAAPEWAV等多种音频格式,批量修改歌曲标签信息;5、个性化皮肤,多种视 觉效果享受永远免费。
1.2.2 酷狗音乐
酷狗音乐是中国领先的数字音乐交互服务提供商,互联网技术创新的领军企业,致力 于为互联网用户和数字音乐产业发展提供最佳的解决方案,公司的使命是成为亚太地区最 大的数字音乐销售推广企业。自公司创建以来,一直在数字音乐发展上大胆尝试,先后与 几十家唱片公司、版权管理机构合作探索发展,积累了数万首数字音乐版权,并在推动广 范围的跨行业、跨平台合作上做出努力,在艰巨的全球音乐数字化进程中做出自身的贡献。 全球最受欢迎的免费中文播放软件,流行音乐搜索平台。
软件特色:1、迷你界面、界面更酷、绚丽流行;保持了 Windows VistaXP下的完 美表现,让人耳目一新;2、卡拉OK酷狗独创“卡拉OK”歌词显示,多种模式,边听边 唱,让你听歌更好玩;3、支-3 -



淮阴师范学院毕业论文(设计)
持本地音乐播放完美音质,支持所有的音频文件,本地文件 拖放,同时支持网络高速下载和本地播放;
4、超强搜索和下载优化歌曲搜索引擎,提高
5、流行音乐资讯酷狗榜单家族、狗友
6、个性化手机炫
8 搜索准确度;智能化节约带宽,可关闭网络功能;
推荐、酷吧、狗窝,最新流行音乐一网打尽,好听的音乐来“找”你;
DIY,让拥有张扬个性的铃声7、音频格式我选择我的歌曲我制作,音质音效我决定 收音机动感音乐识别体验精选多家电台,收听全球风云变化,更能识别电台中的音乐。
2系统相关技术及开发平台介绍
本系统是采用面向对象的软件开发方法,基于微软的
C#作为本系统的开发语言实现音乐播放器预定的需求功能。
Visual Studio .Net开发平台,以
2.1 2.1.1
开发应用技术介绍
TechSmith Screen Capture Codec 简介
TechSmith Screen Capture Code TechSmith公司开发的 Camtasia Studio的一个组件,
用于压Camtasia Recorde冲的视频文件,最大的优点是可以保证图像的质量,截取的屏 幕经过多次压缩,还能保证高质量。
比传统的压缩方式相比,优势十分明显。
Camtasia Studio TechSmith旗下一款专门录制屏幕动作的工具,无论在何种颜色模式
下它都能轻松地对屏幕动作进行记录,包括声音、图像、鼠标的移动轨迹等。此外,它还 能够对音频片段进行编辑、压缩、剪接从而实现多种音效的播放。它还能输出包括
FlashSWF/FLVAVIWMVM4VCAMVMOVRMGIF 动画等多种常见格式,
是制作视频演示的绝佳工具。其实 Camtasia Studio已不仅仅是一个录屏工具了,它包括了 5个组件:Camtasia像器、菜单制作器、音频编辑器、剧场及播放器。
本播放器在运行之前需要安装 TechSmith Screen Capture Codec组件,此组件会和系统 一起打包发行,用户也可以自己从网上下载更高版本的组件,只有安装此组件才能实现播 放器中的歌词剪切功能。
2.1.2 FFmpeg简介
FFmpegLinux平台下开发,但它同样也可以在其它操作系统环境中编译运行, 包括 WindowsMac OS X 等。这个项目最早由 Fabrice Bellard 发起,现在由 Michael Niedermayer 维护。许多FFmpeg的开发人员都来自 MPlayer项目,而且当前FFmpeg也是放在MPlayer 项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward" 使用本播放器如果要对flv格式的文件进行播放则要安装 FFmpeg
-4 -



淮阴师范学院毕业论文(设计)
2.1.3 Visual Studio .Net 集成开发环境简介
.NET平台为创建新一代分布式 Web应用提供了所有工具和技术(表示技术、构件技
术和数据库技术)。.NET平台支持标准的In ternet协议,包括HTTP (超文本传输协议)、 XML (可扩展标记语言)SOAP (简单对象访问协议)等,从而实现了异构系统间应用 程序的集成和通信,即用户和供应商可将在此平台上开发的产品和服务无缝地嵌入自身的 业务进程和日常活动的信息架构中。
.NET平台建立在开放系统结构基础之上,集 Microsoft在软件领域的主要技术成就于 一身。.NET台包括一下4种核心技术:.NET Framework.NET企业服务器、构件模块 服务和 Visual Studio .NET
.NET Framework.NET平台核心中的核心,它为.NET平台下应用程序的运行提供
基本框架,如果 Windows操作系统比作一幢摩天大厦的地基,那么.NET Framework 是摩天大厦中由钢筋和混凝土搭成的框架。
.NET企业服务器是 Microsoft为企事业单位提供的技术服务中的一部分,它包括
Microsoft BizTalk ServerMicrosoft Commerce ServerHost Integration ServerExchange ServerSQL Server等技术的开发工具包。
构建模块服务主要是 Microsoft提供的COM+组件服务和XML Web服务技术,利用构 建模块服务开发应用程序模块,可以迅速地组装一个功能完备的软件。
Visual Studio .NET.NET平台的主要开发工具,由于.NET平台是建立在开放系统结
构基础之上的,因此应用程序开发人员也可以使用其它开发工具。
2.1.4 C#语言简介
C#倂原为音乐标记,读 Sharp是一种面向对象的编程语言,主要用于开发可以运行
.NET平台上的应用程序。C#语言是微软公司开发的基于.NET Framework的一种编程语 言,它继承了
C/C++优良传统,又借鉴了 Java的很多特点。微软对C#的定义是:“C#是从 CC++派生出来的一种简单、现代、面向对象和类型安全的编程语言。C#主要是从C/C++ 编程语言家族移植过来的,CC++的程序员能够很快熟悉它。C#试图结合Visual Basic 的快速开发能力和C++的强大灵活的能力。”⑵
C#20006月微软公司发布的一种全新编程语言,是由
Anders Hejlsberg和他的微
软开发团队所设计,具体如下特点:
通用,支持跨平台。C#程序的客户端可以运行在不同类型的客户端上,女口 PC装置。
简单,主要体现在垃圾收集、指代等特性上。垃圾收集机制将减轻开发人员对内存的 管理负担,而指代功能更是可以让开发者不经过内部类就调用函数。利用
C#的这些功 PDA、手机
,可以使开发者通过较少的代码来实现更强大的应用程序,并且能够更好地避免错
误发生,从而缩-5 -



淮阴师范学院毕业论文(设计)
短了应用系统的开发周期。
面向对象设计,C#具有封装、继承和多态等面向对象程序语言的特征。
Web应用紧密的结合,C#支持绝大多数的 Web标准,如HTMLXMLSOAP等。 这是C#最大的特点,使用它可以轻松开发各种企业级应用平台。
安全性机制,消除软件开发中常见错误(如语法错误),.NET提供的垃圾回收器能够 帮助开发者有效的管理内存资源。
兼容性,C#遵循.NET的公共语言规范(CLS),能够保证与其它语言开发组件兼容。 灵活的版本处理技术,C#在语言本身内置了版本控制功能,开发人员可以更加容易地 开发和维护。
C#提供了完善的错误和异常触发机制。
2.2 开发及运行坏境
硬件平台:
CPU奔腾双核主频2.0GHz
内存1G 32PC 160G硬盘
软件平台:
操作系统: Windows XP \ Win7\Win8 开发工具:Visual Studio 2008
本软件占用系统空间小,能满足用户对常见音频格式文件的播放要求,还具有歌曲、歌词 下载等功能,界面美观交互性好,易于用户理解操作,且不依赖于其它软件,消耗资源少 易维护,程序有较好的健壮性和正确性。运行该软件所需的坏境配置不高,能满足绝大多 数用户的需求。
3系统的分析 3.1
可行性分析
可行性研究feasibility study的目的,是弄清楚待开发的项目是不是可能实现和值得进 行,通常由系统分析员完成,并需写出可行性论证报告。如结论认为可行,即可制定项目 实施计划,同时开始软件开发;如结论认为不可行,则应提出终止该项目的建议。可行性 论证其实是在高层次上进行的一次大大简化了的需求分析与设计。但它的目的不是去解决 用户提出的问题,仅是确定这项开发是否值得进行,分析它存在哪些风险。换句话来说,
在投入大量精力前研究成功的可能性,减小可能出现的风险。-6 -



淮阴师范学院毕业论文(设计)
即使研究的结论是不值得进 行,所花的精力也并不浪费,因为它避免了一次更大的浪费。下面我们将根据本系统的特 点具体描述以下可行性分析。[3]
3.1.1 经济可行性
开发一个基于计算机的系统主要是为了获取较好的经济效益和社会效益。因此对待开 发系统的经济可行性论证就成为可行性研究的重要内容。成本-效益分析可用于评估系统的 经济合理性,给出系统开发的成本估算,并将估算的成本与获得的利润进行比对,从经济 的角度论证待开发系统是否可行。一般来说,基于计算机系统的成本主要由
1 购置并安装软硬件及有关设备的费用。 2 系统开发费用。
3 系统安装、运行和维护费用。 4 人员培训费用。
5 结合毕业设计的整个开发过程可知开发音乐播放器所需的全部软件平台都是免费的,
4部分组成: 所以在经济上是完全可行的。
3.1.2 技术可行性
技术可行性是可行性研究的关键内容。由于系统分析和定义过程与系统技术可行性评 估过程同时进行,此时系统的功能、性能和目标的不确定性会给技术可行性论证带来许多 困难。因此,技术可行性研究往往是系统开发过程中难度最大的工作。该音乐播放器是用 C#语音开发的,调试比较简单,所需的计算机硬件配置要求不高,一般
PC机完全能满足
开发要求。软件方面:基于微软.net开发平台使用C#面向对象的编程语音,它开发速度快, 简单易用,技术成熟,软件也容易从网上获得,完全能满足开发需求。
3.1.3 法理可行性
法律可行性主要研究新系统的开发和使用是否会侵犯他人权益,是否触犯了国家的法 律法规。本次的毕业设计是由本人独立完成,开发的系统不会侵犯任何人的权益,所用的 软件都是通过合法途径获取,因此完全符合法律法规。
综上所述,本系统的开发从经济上、技术上、法律上都是完全可行的。
3.2 常见的几种音频格式及其特点
MP3格式:MP3 的全称是 Moving Picture Experts Group Audio Layer 川。MP3
Fraunhofer-IIS研究所的杰出成果。在 MP3出现前,以有损方式进行音频编码最好的效果 能够压缩到4:1。而强大的MP3可以实现12:1的高压缩比,正是因为这种性能的巨大提升,
并且在实现高压缩比的-7 -



淮阴师范学院毕业论文(设计)
同时还能够保持较好的音质, 所以使得MP3迅速地流行起来。MP3 是世界上第一个实用化的有损压缩编码方案,几乎所有的播放软件都支持它,也曾今产生 了许多第三方的编码工具。 码率VBR。⑷
特点:音质好,压缩比比较高,被大量软件和硬件支持,应用广泛。
MP3编码质量分为:固定码率CBR,平均码率ABR和动态
WM格式:WMA就是Windows Media Audio编码后的文件,它是微软公司推出的与
MP3格式齐名的一种新的音乐格式。WMA在压缩比和音质方面都超过了 MP3,更是远胜 RAReal Audio,即使在较低的采样频率下也能产生较好的音质。 WMA针对的不是单
机市场,而是网络!竞争对手就是网络媒体市场中著名的 Real NetworksWMA格式有非 常高的压缩率,一般为1:18,因此它的文件所占空间比相应的 MP3文件少一半。这是通过 提高音质、减少数据流量的方法来实现更高的压缩率的。此外它还有很强的防盗版功能。
特点:低码率下的音质表现难有对手。

WA\格式:WAV是微软Windows系统本身自带的音频格式,因为 Windows系统的普
及性,此格式已经成了当前最主流的音频格式之一。WAV文件里面存放的每一块数据都有 自己独立的标识,通过这些标识可以告诉用户究竟是什么数据。WAV格式的设计非常灵活, 该格式本身与任何媒体数据都不冲突,只要有软件支持,我们甚至可以在
WAV格式里面
存放图像。在 Windows平台上,通过 ACM结构及相应的驱动程序,例如 CODEC编码/ 解码器,可以在
WAV文件中存放超过20种的压缩格式,比如ADPCMGSMCCITT G.711 G.723MP3等。⑷
特点:音质非常好,被大量软件所支持。
RA格式RA格式是Real Networks公司所开发的一种新型流式音频 Real Audio文件
格式。这是网上接触得非常多的一种格式,大部分音乐网站的在线试听都采用了
Real Audio,这种格式完全针对的就是网络上的媒体市场,支持非常丰富的功能。最大的优点
就是这种格式可以根据听众的带宽来控制自己的码率,在保证流畅的前提下尽可能提高音 质。⑷
特点:码率可控,支持多种音频编码,可边读边放。
3.3 需求分析
软件需求是指用户对目标软件系统在功能、性能、行为、设计约束等方面的期望。需
求分析就是通过对应用问题及其坏境的分析与理解采用一系列的分析方法和技术将用户 的需求逐步精确化、完全化、一致化,最终形成需求规模说明文档的过程。本节将从不同 的角度描述系统的需求。
3.3.1 播放器的基本控制需求
然后逐步细化,
在着手开发系统之前首先要明确该系统应该实现的一些最基本的功能,
-8 -



淮阴师范学院毕业论文(设计)
为每个功能创建一个模块,再对各个模块进行开发。通过分析我们得出一款音乐播放器的
基本控制如图3-1所示:

-9 -



淮阴师范学院毕业论文(设计)

332 功能需求
用户利用这些功能来完成任务,
功能需求规定开发人员必须在产品中实现的软件功能, 满足业务需求。功能需求有时也被称作行为需求
behavioral requiremen),因为习惯上总
是用“应该”对其进行描述。功能需求描述是开发人员需要实现什么。功能需求定义一个 软件系统或组件的功能,也是一个系统需提供的功能及服务。功能可以用一组输入、行为 及输出的组合来表示。功能需求可以是计算、技术细节、数据处理或其他说明系统希望达 成功能的内容。功能需求会以非功能性需求(或是质量需求)为其基础。
结合音乐播放器所要实现的内容,我们列出用户操作的模块,其中每个模块对应一个 功能。 用户启动程序进入主界面,用户可以通过添加模块添加本地歌曲,可以一首一首添也 可以添加整个歌曲文件夹。通过播放列表用户可以实现对歌曲的查找、播放、暂停、音量 调节、静音。通过歌词模块可以实行歌曲歌词的显示、比对、歌词字体选择。 此外用户还可以联网下载歌词、歌曲。其功能模块时序图如下
3-2所示:
-10



淮阴师范学院毕业论文(设计)

4系统设计 4.1
系统概要设计
在需求明确、准备开始编码之前,要做概要设计。概要设计的主要任务是把需求分析 得到的DFD换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统 按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。 数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。概要设计 有多种方法。在早期有模块化方法、功能分解方法;在
60年代后期提出了面向数据流和
面向数据结构的设计方法;近年来又提出面向对象的设计方法等。本系统采用模块化软件 设计,自顶向下逐层把软件系统划分成若干模块。每个模块完成一个特定的功能,最后将 所有模块按照某种方法组合成一个整体,达到整个播放器所要求的功能。
4.2 系统功能设计及描述
本音乐播放器不仅要实现对一些常见的音频格式文件的播放,而且还要有友好的用户
界面。其最终设计目标是:实现对多种音频格式文件的播放、实现对歌词的滚动播放及当 前播放曲目长度显示、显示歌曲文件信息、实现静音和音量控制;播放器软件占用系统资 源少、运行平台要求不高、界面美观舒适、操作简单、易维护、高稳定性、 的常见需求。
主要划分为以下七个功能模块,每个功能模块的作用描述如下:
,能满足用户
-11



淮阴师范学院毕业论文(设计)
播放控制:控制歌曲的播放状态,如:播放、暂停、上一曲、下一曲。播放过的歌曲 按播放顺序排列在播放列表中,每次退出程序、重启播放器后播放列表中的播放记录 会自动保存不会清空。 文件控制:主要用来打开本地播放文件。通过研究音频编码解码的相关技术,了解音 频编码解码的原理和过程,本音乐播放器支持常见音频格式文件播放如: MP3WMA WAV等。可以单个曲目添加,也可以将整个文件夹中的曲目全部添加,实现歌曲文件 添加的多样化;此外还可以对播放列表进行清空,对曲目的播放顺序进行控制;当播 放列表中曲目过多时,可以从播放列表中快速搜索到需要播放的歌曲。还有对播放列 表进行控制如:打开文件所在目录、移除列表、删除文件、显示歌曲文件的相关信息, 女口:歌手、专辑等。
歌词控制:播放音乐时控制是否显示歌曲歌词,若歌词存在则同步滚动显示歌词,若 歌词不存在则可联网下载歌词。此外还可以对歌词字体进行设置。
进度控制:显示当前歌曲的播放总时长和已播放时长,可以通过鼠标调整歌曲的播放 进度,实现歌曲的跳跃式播放。其实现方式是通过进度条和时间的同步显示。 声音控制:调整歌曲音量的大小,显示是否静音。
下载控制:可以联网下载自己喜欢的歌曲、歌词。若不知道歌曲名称则可以按歌手名 查找歌曲下载,若知道歌曲名则可直接输入名称进行下载,可以在下载进度列表中查 看下载状态。
音乐剪切:对音乐文件进行剪切。添加当前路径,对想要的歌曲进行播放,在歌曲播 放过程中你可以在任何地方设置一个起点,然后,再设置一个终点。
“试听歌曲”就是
把你选出来的这一段播放一遍,看是不是你要的那一段,有时候可以早开始了几秒或 者早结束了几秒,这个时候可以直接在起点和终点的地方进行调整。然后在这个窗口 的上面有个“保存歌曲”,就可以把你选出来的这段音乐保存起来了。我们可以通过歌 曲剪切功能截取自己喜欢的音乐片段,来做为自己的手机铃声。 其具体功能模块如图4-1所示:

-12



淮阴师范学院毕业论文(设计)

4-1音乐播放器功能模块图
5系统功能实现
根据上一章对系统各个模块的分析,本节主要讲述如何具体实现这些模块功能。
几乎所有的Windows程序都离不开窗体,Windows窗体应用程序是Windows下进行软 件开发的基础。在C#中,通过Visual Studio 2008开发平台模版,可以自动生成多种基于 Windows的应用程序框-13


淮阴师范学院毕业论文(设计)
架,主要包括基于.NET Framework Windows窗体应用程序、-14


淮阴师范学院毕业论文(设计
Windows服务应用程序。最常用的是 Windows窗体应用程序。在 Windows窗体应用程序 中,有窗体(Form和控件(Control两个基本概念。窗体是控件的容器,控件是应用程序显
示数据或接受数据输入的相对独立的用户界面元素。 .NET类库提供了丰富的窗体相关类,
包括窗体、按钮、状态栏、工具栏、菜单、文本框、列表等多种不同的界面元素;此外还 提供各种控件、组件、容器。通过这些界面元素的不同组合,可以设计出友好的用户界面。 对于软件开发中要用到的图片可以自己绘制,相关控件可以调用类库,从而设计出外形美 观的界面。但这也做相当费时,由于毕业设计的时间有限,图片都从网上下载,并做稍微 处理,所以美观方面有一定欠缺,待以后有时间慢慢改进。此外界面是由窗体、控件拖放 组成,大部分代码由视图设计器自动生成,无需太多改动,因此这一部分不再详细阐述, 下面将主要介绍主要功能模块的核心代码实现。
5.1 歌曲添加模块
很多的应用程序都有打开文件功能,本程序使用
Ope nF ileDialog组件,用来打开本地
磁盘上的一个或多个文件,并添加到文件播放列表中。
5.1.1 添加歌曲文件
为了赶上社会的潮流,我们经常会从网上下载最热门的音乐,本模块功能就是实现添 加本地歌曲或已下载到电脑的最新歌曲到播放列表,同时更新播放列表,使我们能及时欣 赏到自己喜欢的音乐。其具体代码如下:
private void AddSong_Click( object sender, EventArgs e
{ ofd . Filter ="音乐文件(*.wmv, *.mp3,*.wav| *.wmv; *.mp3;*.wav||AII files (*.*|*.*"
; ofd . InitialDirectory ofd . FileName =""; ofd . RestoreDirectory = false ; ofd . Title ="添加音乐文件"; if ( ofd . ShowDialog( == DialogResult . OK { string strLongPath = ofd . FileName; WriteFileByLongPath (strLongPath ; private void WriteFileByLongPath (string strLongPath
= Application . StartupPath ; -15 -



淮阴师范学院毕业论文(设计)
{
int b = strLongPath . LastIndexOf ("\\"; string strShortPathWithExtension = strLongPath . Substring (b + 1; StreamWriter sw = new StreamWriter ("list.ini" , true ; stri ng exte nsion = strShortPathWithExte nsio n
.Substri ng (strShortPathWithExte nsio n
. Le ngth - 3;
if ( extension .ToLower( == " wmv " || extension . ToLower( == " mp3"
|| extension .ToLowerQ == "wav"
{ string strShortPathWithoutExtension
1, strShortPathWithExtension . Length - 4; Mp3mp3= new Mp3 strLo ngPath; if (!( String . IsNullOrEmpty (mp3 Artist ||
String . IsNullOrEmpty (mp3Title
{ //获取成功的结果(歌手名-歌曲名
strShortPathWithoutExte nsio n
mp3 Title . Trim (;
} //否则原文件名
if
(! this . myListBox . Items . Contains (strShortPathWithoutExtension
{ //不包含
songList . Adc(strShortPathWithoutExtension ;
= mp3 Artist .Trim ( + " - " +
= strLongPath . Substring (b +
Image image = getImageByArtistOrSongName (mp3 Artist ,
strShortPathWithoutExte nsio n
;
imageList . Adc( image; this . myListBox . Items . Adc(strShortPathWithoutExtension this . myListBox . songList = songList ; this . myListBox. imageList = imageList ; sw WriteLine (strShortPathWithoutExtension ; ; -16 -



淮阴师范学院毕业论文(设计)
sw WriteLine (strLongPath ; } } sw Flush (; sw Close(; } // 写入全路径
5.1 . 2添加歌曲文件夹
当我们要欣赏歌曲专辑时,可能要添加的文件比较多,显然单曲添加比较麻烦,这时
我们就可以使用 Ope nFileDialog组件的Multiselect属性和File names属性实现整个文件夹 的添加,同时更新播放列表。代码如下:
private void tsmiAddSongFolder_Click (object sender, EventArgs e
{
if ( fbd . ShowDialog( == DialogResult . OK
{
string str = fbd . SelectedPath ; Directorylnfo r = new Directorylnfo (str ; GetAllFiles (r; } } public void GetAllFiles (Directorylnfo dir { FileSystemInfo [] fileinto = dir . GetFileSystemInfos (; foreach ( FileSystemInfo
{
if ( i is Directorylnfo
{
i in fileinto -17 -



淮阴师范学院毕业论文(设计)
GetAllFiles (( Directorylnfo i;
}
else string strLongPath = i. FullName; WriteFileByLongPath (strLongPath ; } } } private void tsmiSearch_Click (object sender, EventArgs e { if ( this . mySearchPanel. boolSearchShow { //已经打开,则关闭
this . mySearchPanel. close (;
}
else
{ this . mySearchPanel. boolSearchShow = true ; this . mySearchPa nel.lb = this . myListBox ; this . mySearchPanel. copyValueList (; } in itialSearchPa nel }
(; -18 -



淮阴师范学院毕业论文(设计)
@圏片
_d L爾下戴 直乐
|-4颐其昌席… 前举静-梦耀时分””
S^ftsn * 1=1. mp3
0左农耳自酷
2 Down By The- Sai ley Jeanie Madder

(CJ
TOOLS (D: Lj DATA (E; .BACKUP (F4]


5.2 歌曲列表模块
播放列表主要用来显示要播放歌曲的信息,如歌手、照片、曲名。在这里我们使用
ListBox控件来实现相关功能。详细代码如下:
this . myListBox. Anchor = ((System. Windows Forms AnchorStyles ((( System. Windows Forms AnchorStyles . Top | System. Windows Forms AnchorStyles . Bottom
|
System. Windows Forms AnchorStyles . Left ;
this . myListBox . DrawMode=
System. Windows Forms DrawModeOwnerDrawVariable ;
this . myListBox . FormattingEnabled = true ; this . myListBox . Location = new System. Drawing. Point (2, 115; this . myListBox. Name= "myListBox";
this . myListBox . Size = new System. Drawing. Size (302, 354; -19 -



淮阴师范学院毕业论文(设计)
this . myListBox . Tablndex = 0; this . myListBox . MouseDow+= new System. Windows Forms MouseEventHandler(this . myListBox_MouseDown private void myListBox_MouseDownobject sender, MouseEventArgs e
{
if ( this . myListBox. thisIndex != -1
{
if ( e. Butt on == System. Win dows Forms MouseButt ons. Right
{
this . myListBox . ContextMenuStrip = this . cmsListBox ; } } } IVI SAlry
1黄小峡-旧顺其自然
2 Joaini« M add@n Down By The Salley Gar dens; 3梁静麺-竽聲时分
5 Westlife - My Love 6 1+1卓文宣
T3组台二等愛走了以启 & 5533. Coir ■多慝1 品质1 昌乐-5583- Com
9 IMari直虹redondo普特英倍听力多- Burning 10 Nobody bonder Girls
11t冉也没有像我这祎的人了吗 12刘若英bbS. com -听说? 13林恆杰-養不会绝迹 B木年华-耳美世界壬题曲 15 Akon ft - Wi h Yrm 16胡敌-月的床1 1T讦走丢-—帘豳梦 18閏桑-寂冀在唱欹 19云①泣-羞泪 20侵奇
21呻叱 爰尔兰画底口琴曲录音
-20 -



淮阴师范学院毕业论文(设计)
仪檻外的姐收徹(许茹乏)-站独角秋
23 - h*' 5
pirate -ari'hh^ftn R111 A
5-2播放列表
5.3 播放控制模块
播放是音乐播放器最重要的功能。本程序使用 Windows Media Player命名空间中定 义的属性和方法来实现歌曲的播放、暂停、上下去切换等。其核心代码如下:
private
{
void initialBtn ( if ( playStatue == MediaPlayer . PlayStatue .播放
-21 -



淮阴师范学院毕业论文(设计
{ //正在播放暂停图片
btnPlay .Image = Image. FromFile ("picWpause.bmp" ;
} else if ( playStatue == MediaPlayer. PlayStatue .暂停
|| playStatue == MediaPlayer. PlayStatue .停止
{ //开始播放图片
btnPlay . Image = Image. FromFile ("picWplay.bmp"
}
if ( this . boolVolumn
{
this . bt nV olu mn .Image = Image. FromFile ("picW02.gif"
}
else
this . bt nV olu mn .Image = Image. FromFile ("picW01.gif"
}
private void nextSongPlay (
{ //下一曲
if ( playStyle == MediaPlayer. PlayStyle .随机播放
{ //选择随机播放时就产生一个随机数组播放记录,根据数组,上一曲下一
if ( randomindex + 1 >= randomList . Count
{ ran domS on gPla«;
}
else
this . myListBox . doubleClick In dex =
(int randomList [++ randomlndex];
} else if ( playStyle == MediaPlayer. PlayStyle .顺序播放
{ this . myListBox. doubleClickIndex ++; if ( this . myListBox . doubleClick In dex >=
this . myListBox . Items . Count ; ;
; 曲都有用
-22 -



淮阴师范学院毕业论文(设计)
{ playStatue = MediaPlayer . PlayStatue .停止
this . myListBox . doubleClick In dex =
this . myListBox . Items . Count - 1; stop (; in itialBtn (; return ; } } else
{ //下一曲,如果到底将播放第一首歌曲全部循环
this . myListBox. doubleClicklndex ++; if ( this . myListBox . doubleClick In dex >=
this . myListBox . Items . Count
{ //转第一首
this . myListBox . doubleClick In dex = 0; } } btn Cha ngeS on c(; in itialBtn (; } private void lastSongPlay ( { if (playStyle == MediaPlayer. PlayStyle .随机播放
&& randomlndex >= 1 {
this . myListBox. doubleClick In dex =
(int randomList [-- randomindex];
} else if ( playStyle == MediaPlayer. PlayStyle .顺序播放
{ this . myListBox. doubleClickIndex --; if ( this . myListBox . doubleClickIndex <= -1
{
this . myListBox . doubleClick In dex = 0; -23 -



淮阴师范学院毕业论文(设计)
playStatue = MediaPlayer . PlayStatue .停止 stop (; in itialBtn (; return ; } } else this . myListBox. doubleClicklndex --; if ( this . myListBox . doubleClicklndex <= -1 { //转最后一首
this . myListBox . doubleClick In dex =
this . myListBox . Items . Count - 1;
} } btn Cha ngeS on c(; } 5.4 音量控制模块
通过调节音量大小来达到歌曲播放的最佳状态。可以调用
API函数SENDMESSAGE APPCOMMAND_VOLUME_MUTE TrackBar类来实现音量控制。代码如下:
private void btnVolumn_Click (object sender, EventArgs e
{ IniUtility . FilePath = Application . StartupPath + "\\INI.ini" if ( this . boolVolumn
{ player . setAudioOnOff("off"; this . boolVolumn = false ;
;
IniUtility
}
else
{
. WriteIniKey ("Player" , "boolVolumn" , "0"; player . setAudioOnOff ("on"; this . boolVolumn = true ; IniUtility } -24 -
. WriteIniKey ("Player" , "boolVolumn" , "1";



淮阴师范学院毕业论文(设计)
in itialBtn (;
}
private void myTBVolumn_Scroll( object sender, EventArgs e-25 -



淮阴师范学院毕业论文(设计
IniUtility . FilePath = Application . StartupPath + "WINI.ini" int value = this . myTBVolumnValue; player . SetVolume( value; IniUtility . WriteIniKey ("Player" , "Volume", value . ToString (;
}
; 5.5 进度控制模块
进度控制用来显示歌曲的播放进度,也可以通过鼠标拖动实现歌曲的任意播放,通过 把当前播放长度和进度条同步结合起来实现。此外还能够显示歌曲的播放时长,这是通过 Timer组件的Tick事件实现。其主要代码如下:
private void myTBPIayProcess_MouseDow(nbject sender, MouseEventArgs e
{ player . setPlayPosition (this . myTBPlayProcess. Value; this . lblTime . LblCurSecond = this . myTBPlayProcess. Value; } private void changeCurSeconc( int value
{ this . myTBPlayProcess. Value = value ; this . showLrc. curPlayTimeSecond = value ; } 5.6 滚动字幕模块
有很多音乐播放器都可以实现一边听音乐一边看歌词的功能,这样做可以帮助用户更 好地欣赏音乐,同时还可以强化对歌词的记忆进而达到背诵,
为听者以后独唱歌曲做铺垫。
此外还可以对歌词字体进行设置,从而达到视觉和听觉的双重享受。其核心代码如下:
public partial class ShowLrc : Form { //歌词文件名就是ListBox中项的名称 public ShowLrc( { In itializeComp onent (; } -26 -



淮阴师范学院毕业论文(设计)
private Fo nt font = new Fo nt(” 华文行楷",25.0f, public int curPlayTimeSecond = 0; Fo ntStyle .Bold; //IbITime 传递过来播放的秒数(
于歌词提前和延后,因为有时候获取时间不准确
public bool isPlay = false ; private void ShowLrc_Loac( object sender, EventArgs e {
in itialBtn (;
} public void initial { graphics = this . CreateGraphics (; time . Interval = 100; time . Tick += new EventHandler (time_Tick ; in itialINI (; } void timer_Tick (object sender, EventArgs e { clearPanel (;
if ( string . IsNullOrEmpty (strLrcContext
{ drawString ("未找到歌词"; }
else
{
drawString (regc (curPlayTimeSecond;
}
}
( -27 -



淮阴师范学院毕业论文(设计)
public void clearC on text (
{ curFileName =""; subgc = null ; mylist . Clear (; } private void clearPanel ( {
graphics . Clear (Color. Maroon;
} private void split ( { subgc = strLrcC on text . Split (n ew char [] { //subgc存儲歌詞文件中所有的时间信息和歌词
//使用正则表达式判断时间格式提取出时间信息,并进行排序
for ( int i = 0; i < subgc. Length; i ++
{
if ( Regex IsMatch (subgc[ i ], "A([01][0-9]|2[0-3]:[0-5][0-9].[0-9][0-9]$" "A([01][0-9]|2[0-3]:[0-5][0-9]$"
{ stri ng temp = subgc[ i ]; mylist .Adc(subgc[ i ];



'[' , ']' , '\r' , '\n' };
|| // 是否匹配
Regex IsMatch (subgc[ i ],

} }

for ( int
{ i = 0; i < mylist . Count - 1;
i++ -28 -



淮阴师范学院毕业论文(设计)

for (int j
{



=i ; j < mylist . Count;
j++

if ( string . Compare mylist [ i ]. ToString (,
mylist [j ]. ToString ( > 0
{
stri ng temp; temp = mylist [ i ]. ToString (; mylist [ i ] = mylist [ j ]; mylist [j] = temp; } } } } private void readLrc ( { if ( curFileName == string . Empty return ; lrcPath = string . Format("lrc\\{0}.lrc" , curFileName; if (! File . Exists (lrcPath { strLrcContext =""; return ;
}
FileStream fs = new FileStream (lrcPath , FileMode. Oper; StreamReader sr = new StreamReader(fs , Encoding. UTF8 strLrcContext sr. Close(; = sr. ReadToEnd; -29 -



淮阴师范学院毕业论文(设计)
}
{
{
5 < 0

fs . Close(; split (; private stri ng regc( int strTimeSec ond string temptime = secToMin(strTimeSecond ; int k; for ( k = 0; k < mylist . Count; k++ if ( string . Compare temptime, mylist [ k]. ToString (. Substring (0,

-30 -


淮阴师范学院毕业论文(设计)
if ( k < mylist . Count && k >= 1
{

stri ng tempsj = mylist [ k - 1]. ToString (. Substring (0, 5
//歌词的时间,查找时间显示歌词
int in dex = strLrcC on text .In dexOf (tempsj; int len gth = strLrcC on text .Substring (index. IndexOf(T
+ 1;
index += length ;
while ( strLrcC on text [ in dex ]=='['
{
}
in dex += len gth + 1; int l = strLrcContext . Substring (index . IndexOf ('['; {
if ( l <= 0
}
return ""; } }
return strLrcC on text . Substri ng (in dex , l;
return "" private stri ng secT oMin(int sec on ds {
int tempm inute = sec onds / 60; string minute = tempminute.ToString (; int tempsec ond = sec onds % 60; stri ng sec ond = tempsec on d. ToStri ng (; if ( tempminute < 10-31 -



淮阴师范学院毕业论文(设计
private void butt on 1_Click (object sen der. Eve ntArgs e {
IniUtility
. FilePath = Application . StartupPath + "WINI.ini" ColorDialog colorDialog = new ColorDialog (; colorDialog . Color = foreColor ;
if ( colorDialog . ShowDialog( == DialogResult . OK
{ foreColor = colorDialog . Color; drawString (regc (curPlayTimeSecond; IniUtility foreColor . Nam$
}
} 1
- 03其自憨
Down By Th Salley Gardits

. WriteIniKey ("ShowLrc", "FontColor", 2 0^5 -爭强时甘 3
Jowkife 樱鄴懐下馭夷

下载遵愷

31-

在怀中 谁会让你偶尔想要拥 5-3滚动歌词
5.7 歌曲下载模块
有时我们播放的歌曲没有歌词,这时我们就可以通过联网下载歌词,还可以下载自己
喜欢的歌曲。实现代码如下:
private void btnSearch_Click (object sender, EventArgs e { this . lblErrorMsg . Text =""; if ( txtTitle . Text. Trim (=="" -32 -



淮阴师范学院毕业论文(设计)
{ this . lblErrorMsg .Text ="请填写完整"; return ; else { //信息完整
//启动多线程防止假死现象
try
{
AsyncCallback callback = new
AsyncCallback (this . AsyncCallBacklmpI ;
gets on gWord Begi nlnv oke (this . txtTitle . Text. Trim (, this . txtArtist .
Text. Trim(, callback , null ; this . lblErrorMsg . Text ="正在搜索请稍等...."; }
catch ( Exception ex
{ this . lblErrorMsg . Text ="未搜索到相关歌词"; } } } private delegate void beginlnvokeDelegate (DataTable dt; private void AsyncCallBackImpl (IAsyncResult ar { DataTable dt = getSongWord Endlnvoke(ar; if ( dt == null || dt. RowsCount == 0 { this . lblErrorMsg . Text ="未搜索到相关歌词"; return ; -33 -



淮阴师范学院毕业论文(设计)
}
dt;
}
{ } } }

this . lblErrorMsg . Text ="搜索成功"; this . dgvSongLrc. Beginlnvoke (new beginlnvokeDelegate (dataBind ,
//dataB in d(dt;
private static DataTable gets on g(stri ng son gName stri ng sin gerName {
Lrc lrc = newLrc(;
return lrc . getSongWorc(songName singerName; private void dataBind (DataTable dt this . dgvSongLrc. DataSource = dt; 5-4歌曲下载
-34 -


淮阴师范学院毕业论文(设计)
5.8 歌曲剪辑模块
一个好的播放器不仅能够播放各种格式的铃声还能对音乐文件进行剪辑,使用户能够
制作自己喜欢的铃声。此功能要用到TechSmith Screen Capture Code组件,核心代码如下: partial class MusicCute { private System. Comp onen tModellC on tai ner comp onents = n ull protected override void Dispose(bool disposing { if ( disposing && ( components != null { components. Dispose (;
}
base. Dispose( disposing ; } #regi on
Win dows Form Desig ner gen erated code
( private void InitializeComponent {
System. ComponentMode! ComponentResourceManagerresources = new
System. ComponentModeJ ComponentResourceManage(rtypeof (MusicCute; this . btnOpen. Location = new System. Drawing. Point (43, 171; this . btnOpen. Name= "btnOpen"; this . btnOpen. Size = new System. Drawing. Size (75, 23; this . btnOpen. Tablndex = 0; this . btnOpen. Text ="打开歌曲"; this . btnOpen. UseVisualStyleBackColor = true ; this . btnMake. Location = new System. Drawing. Point (327, 171; -35 -



淮阴师范学院毕业论文(设计)
this . btnMake. Name= "btnMake"; this . btnMake. Size = new System. Drawing. Size (75, 23; this . bt nMake. Tab In dex = 1; this . btnMake. Text ="制作" this . btnMake. UseVisualStyleBackColor = true ; this . btnMake. Click += new System. EventHandler (this . btnMake_Click ; this . btnSetStart this . btnSetStart this . btnSetStart this . btnSetStart this . btnSetStart .Location = new System. Drawing. Point (139, 171; .Name= "btnSetStart"; .Size = new System. Drawing. Size(75, 23; .Tab In dex = 2; .Text - "设置起点"; this . btnSetStart . UseVisualStyleBackColor = true ; this . btnSetStart . Click += new System. EventHandler (this . btnSetStart_Click ; this . btnSetEnd. Location = new System. Drawing. Point (230, 171; this . btnSetEnd. Name "btnSetEnd"; this . btnSetEnd. Size = new System. Drawing. Size (75, 23; this . btnSetEnd.Tablndex = 3; this . btnSetEnd. Text ="设置终点"; this . btnSetEnd. UseVisualStyleBackColor = true ; this . btnSetEnd. Click += new System. EventHandler (this . btnSetEnd_Click ; System. Drawing. Color. AliceBlue ; this . myTBPlayProcess. TrackerColor = System. Draw in g. Color. FromArgb((( in t ((( byte (139, (( in t ((( byte (208, ((int ((( byte(237; this . myTBPlayProcess. TrackerSize = 10; this . myTBPlayProcess. Value = 0; this . myTBPlayProcess. MouseDow+= new System. Windows Forms MouseEventHandler(this . myTBPIayProcess_MouseDown this . AutoScaleDimensions = new System. Drawing. SizeF(6F, 12F; -36 -



淮阴师范学院毕业论文(设计)
this . AutoScaleMode = System. Windows Forms AutoScaleMode. Font; this . Controls . Adc(this . btnMake; this . Controls . Adc(this . btnOpen; this .Icon = ((System. Draw in g. Ic on ( resources . GetObject ("$this .Icon" this . Name= "MusicCute"; this . StartPosition = System. Windows Forms FormStartPosition . CenterScreen ; this . Text = "MusicCute"; this . FormClosed += new
System. Windows Forms FormClosedEventHandler (this . MusicCute_FormClosed;

; -37 -



淮阴师范学院毕业论文(设计)
this . Load += new System. EventHandler (this . MusicCute_Load; this . ResumeLayou(false ; this . PerformLayout (; ^usicCute 当前耿曲:
£: \mumi cplaytr \Musi cPl\Musi cFlayer\bixADebu 00:00/04:235-5歌曲剪辑
-38 -



淮阴师范学院毕业论文(设计)
结论
通过本次毕业设计我学到了很多知识。首先,开始选题时比较迷茫,因为从来没 有独立完成过一个系统的开发,所以有很长时间都在思考自己该做,能做什么。后来 确定课题后又无从着手,不知到该怎么进行。在开发过程中又遇到很多不懂的技术, 查阅了很多的文献。在不断的解决问题中我取得了很大的进步。在老师细心指导下, 在同学的无私帮助下终于顺利完成了毕业设计。
此次的毕业设计达到了既定的功能要求,也使我对多媒体音频方面的技术及理论 知识有了更深刻的理解。通过开发平台的使用,使我能够更加熟练的使用visual studio 由于时间有限,本系统还存在一些缺陷和不足。例如播放界面的设计等,这些待以后 有时间慢慢改进。但其功能齐全、占用系统资源少、运行平台要求不高、界面美观舒 适、操作简单、易维护、高稳定性是本软件所特有的。-39 -



淮阴师范学院毕业论文(设计)
参考文献
[1] 庄捷•流媒体原理与应用[M].北京:中国广播电视出版社.2007:144. [2] 张里正.C#4.0程序设计与项目实战[M].北京:清华大学出版社.2012:2.
[3] 史济民,顾春华,郑红.软件工程:原理方法与应用(第三版)[M]. 北京:高等教育出版社. 2009:35. [4] 路锦正,周冬梅.Visual C++ 音频/视频处理技术及工程实践 .2009:5.
[5] 齐维毅,申海,张亚琴.API函数在制作多媒体播放器中的应用 学版),2006 02 :199.
[6] 刘晓灵.Neusoft Media Player 的设计与实现[J].科技信息,201233:569.
[J].沈阳师范大学学报(自然科
[M].北京:电子工业出版
[7] 焦志明,斯桃枝,何守才.FullMedia 多媒体播放器[J].上海第二工业大学学报,200402 期:22.-40 -



淮阴师范学院毕业论文(设计)
致谢
有一种生活,你没有经历过,就不知道其中的艰辛;有一种艰辛你没有体会过,就不 知道其中的快乐;有一种快乐,你没有拥有过,就不知道其中的纯粹。转眼间,我已经是 一名大四学生,在即将毕业之际,回顾我四年的大学生活,有苦也有乐,但更多的是收获 在此我要感谢我的母校和那些给过我帮助的老师和同学,你们不仅教给我知识,还让我明 白做人做事的道理。
本论文是在翁小兰老师的悉心指导下完成的。在这里我要感谢翁老师,作为我的毕业 设计指导老师,翁老师给了我很大的帮助。她一直对我们严格要求,在教学、科研任务很 重的情况下她也一直不忘对我们毕业设计的督促、检查和指导;她严谨的治学精神、深厚 的理论水平和认真负责的工作态度都让我受益匪浅。其次,我还要感谢那些教过我的专业 课老师,正是因为有他们认真负责的教学精神,才使我对学习更加有动力,对计算机更加 感兴趣,从而顺利完成大学学业;还要感谢那些无私帮助过我的同学,不论在我生活上遇 到困难,还是学习上遇到困难,都有你们陪伴在我身边,帮助我度过难关。正是在你们的 无私帮助下我才能顺利完成毕业设计。最后再次感谢各位老师能在百忙之中抽出时间审阅 我的毕业论文!
-41 -


  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服