MP3音乐播放器课程设计

合集下载

音乐播放器课程设计报告

音乐播放器课程设计报告

课程设计报告之水城攒孽创作课程设计名称:音乐播放器院系:信息工程学院学生姓名:班级:学号:成绩:指导教师:开课时间:2016-2017学年 2 学期音乐播放器一、实践的内容和要求学习WAV格式音频播放原理、数字音频接口及的相关知识。

了解模拟音频信号和数字音频信号的概念。

掌握编写音频播主要内容放器的方法。

实现音频播放,小键盘输入操纵。

本系统要做一个音乐播放器,使用通用定时器定时,用比较输出功能,输出乐谱频率的方波发生声音,对 3 首歌曲编码,其支持 WAV 格式音频播放(上键:暂停;左键:上一首;右键:下一首)。

利用硬件ARM 嵌入式开发平台、用于ARM7TDMI 的 JTAG 仿真器、PC 机 Pentium100开发实现实现音频播放。

主要实现:上一首按键:当点击上一首按键时,当前播放歌曲的上一首歌首被播放。

下一首按键:当点击下一首按键时,当前播放歌曲的下一首歌曲即被播放。

当点击停止键时,当前歌曲即会被停止。

播放界面设计:在歌曲进行播放时,界面应包含所有的按键,而且要歌曲的曲目单。

二、实践原理WAV播放器系统要求能够对mp3、wav格式的音频文件进行解码,处理起来速度是有要求的,尤其是对320Kbps的MP3格式数据流的处理,必须非常快,才干实现MP3的流畅播放,可供选择的八位机有AVR、PIC,可供选择的32位处理器有SAMSUNG、STM32、ATMEL等。

选择MCU优先考虑于拥有丰富的RAM,八位机RAM主要靠扩展,内部RAM一般在4Kbyte以内,32位机里面,SAMSUNG一般不内带RAM,也要外扩。

本实验使用了ARM7处理器,MP3解码可以有两种方法,一是通过ARM处理器软解码,通过对MP3数据格式的解析实现MP3播放,二是通过外部解码芯片直接解码。

第一种方法在解码高码率的MP3时,ARM7处理能力吃紧,而且STM32还需要外部DAC来做音频输出,所以采取第二种方法进行解码。

MP3罕见的解码芯片有VS100X系列和STA01系列,STA01需要外接DAC做音频输出,而VS1003自带DAC,且解码的文件格式包含mp3和wav,另外它还可以实现录音功能,方便以后进行功能的拓展应用。

MP3音乐播放器实验报告

MP3音乐播放器实验报告

河南科技大学课程设计说明书课程名称面向对象程序课程设计题目MP3仿真程序设计院系电子信息工程学院班级计103 班学生姓名指导教师日期 2013.3.3~2013.3.17课程设计任务书任课教师:时间:2013.3.3课程设计报告文档题目:MP3仿真程序设计一.引言1.编写目的:随着多媒体技术的发展,如何简单方便的播放各类媒体已成为人们普遍关注的问题。

本设计就是基于面向对象技术,利用VC++6.0开发制作一个具有自己设计风格的简单的多媒体MP3播放器。

该播放器是基于MFC集成开发环境,利用MCIWnd类,建立了一个MP3播放器,通过调用这个类的函数来实现MP3播放器的暂停,播放,上一首,下一首,快进等基本功能。

它外观简洁,操作简便,系统资源占用少等功能。

通过MP3仿真程序设计,更加深入了解面向对象的编程。

通过本课程设计,巩固面向对象程序设计的基本概念、原理和技术,学会使用C++语言进行简单程序的开发,将理论与实际相结合,并在此基础上强化了实践意识,提高其实际动手能力和创新能力。

2.定义:HWND m_PreAudio,m_Audio;bool m_IsPaused,m_IsOpened;前两个变量用来存储MCIWndCreate返回的窗口句柄,初始值为NULL;后两者分别用来记录文件的播放与暂停状态,初始值分别为true与false;3.参考资料:1.郑秋生、吴庆涛,《C/C++程序设计》,北京:电子工业出版社2.谭浩强《C++程序设计》,北京:清华大学出版社二.任务的描述1.目标:利用C++编写制作一个MP3播放器。

2.功能描述:实现添加音乐,播放音乐,上一首,下一首,暂停,关闭播放,删除音乐,快进控制,循环播放,背景添加等功能。

3.性能描述(1)数据精确度:各种按钮点击之后1秒内都会触发点击事件,其中快进拖动,反应时间在1—2秒。

(2)时间特性:程序2秒内就可以运行。

功能按钮1秒内触发点击事件。

基于LabVIEW的MP3播放器设计

基于LabVIEW的MP3播放器设计

成绩评定表课程设计任务书目录1目的及基本要求 (1)2 MP3播放器设计原理 (1)2.1 MP3播放器原理 (1)2.2 流程图 (1)2.3 设计步骤 (1)3 MP3播放器设计和仿真 (2)3.1 总体程序设计 (2)3.2 各功能模块详细设计 (4)4 结果及性能分析 (5)4.1 运行结果 (5)4.2 性能分析 (6)参考文献 (7)1 目的及基本要求熟悉LabVIEW开发环境,掌握基于LabVIEW的虚拟仪器原理、设计方法和实现技巧,运用专业课程中的基本理论和实践知识,采用LabVIEW开发工具,实现MP3播放器的设计和仿真。

基本要求:基于LabVIEW的MP3播放器设计,主要利用labview的Activex, 属性节点,调用节点,Event structure等控制实现的, MP3音乐播放器界面包括播放歌曲名字,播放路径以及停止按钮。

能熟练运用LabVIEW开发环境完成其他一些项目程序。

2 MP3播放器的设计原理MP3播放器,主要用于播放已存储计算机磁盘中的音乐文件。

它是将播放器的系统装入计算机,以通用的计算机硬件及操作系统为依托,实现音乐功能的。

VI程序设计里,默认容易识别的格式为WAV格式,所以在设计MP3时采取调用的方法,本系统主要利用labview的Activex, 属性节点,调用节点,Event structure 等控制实现的。

2.1 MP3播放器工作原理MP3的工作原理:从内存中取出并读取存储器上的信号→到解码芯片对信号进行解码→通过数模转换器将解出来的数字信号转换成模拟信号→再把转换后的模拟音频放大→低通滤波后到耳机输出口,输出后就是我们所听到的音乐了。

2.2 流程设计程序流程设计:设定路径,判定路径是否有效→无效报错;有效,执行下一阶段程序→调用媒体播放器,编写歌名显示和文件路径显示,设置停止功能按钮→程序结束。

本程序主要涉及到一下控件或结构的使用:(1)事件结构:包括一个或多个子程序框图或事件分支,结构执行时,仅有一个子程序框图或分支在执行。

基于DSP的MP3播放器设计

基于DSP的MP3播放器设计

基于DSP的MP3播放器设计————————————————————————————————作者:————————————————————————————————日期:2淮阴工学院《DSP技术及应用》课程设计选题名称: 基于DSP的MP3播放器设计系(院):专业:班级:姓名:学号:指导教师:学年学期:2010 ~ 2011 学年第 2 学期2010 年7 月 2 日设计任务书课题名称基于DSP的MP3播放器设计设计目的1.了解MP3播放器系统的功能;2.理解DSP应用系统开发的基本思路及方法;3.练习使用汇编语言编写应用程序的基本步骤;4.学习软件开发过程及资料收集与整理,学会撰写课程设计报告;5.学会对所学知识进行总结与提高;实验环境1.Windows 2000以上操作系统;2.CCS开发环境;任务要求1.利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集与整理;2.在第18周末之前完成预设计,并请指导教师审查.通过后方可进行下一步工作;3.按指导书要求设计软件,实现设计的功能,并显示正确的结果;4.要求形成稳定的程序软件,可以运行,方可申请参加答辩;工作进度计划序号起止日期工作内容1 2011.6.27~2011.6。

28 在预设计的基础上,进一步查阅资料,完成硬件电路设计。

2 2011.6。

28~2011。

6.29 编写软件代码,调试与完善。

3 2011.6。

29~2011。

6.30 测试程序,优化代码,增强功能,撰写课程设计报告.4 2011。

6.30~2011。

7。

1 提交软件代码、硬件电路成果和设计报告,参加答辩. 指导教师(签章):年月日摘要:在当今这个信息、科技高速发展的数字化时代,数字信号处理技术逐步体现出它的优势与拓展空间.越来越多的电子产品将数字信号处理作为技术核心,并广泛应用于控制、通信、图像处理等各个领域。

为了适应这一发展趋势,基于DSP的MP3播放器设计的这一课题也就如期而至,在这次接近实践的实习中我们将针对DSP的硬件实现原理和其结构特点,利用汇编语言设计相应的代码来实现预期目的中所要达到的MP3播放器各项功能。

音乐播放器课程设计

音乐播放器课程设计

音乐播放器课程设计一、课程目标知识目标:1. 学生能够理解音乐播放器的基本原理和功能。

2. 学生掌握音乐播放器界面设计的基本元素和布局。

3. 学生了解音乐播放器中不同音乐格式及其特点。

技能目标:1. 学生能够使用音乐播放器软件进行音乐播放、暂停、停止等基本操作。

2. 学生能够通过音乐播放器软件对音乐进行分类、排序和搜索。

3. 学生能够运用所学知识设计和制作简单的音乐播放器界面。

情感态度价值观目标:1. 培养学生对音乐的热爱和欣赏能力,提高审美情趣。

2. 培养学生团队协作和沟通能力,学会分享和交流音乐心得。

3. 增强学生对科技产品的认识,激发创新意识和探索精神。

课程性质:本课程为信息技术与音乐相结合的综合性课程,注重实践操作和实际应用。

学生特点:六年级学生具有一定的信息技术基础和音乐素养,对新事物充满好奇,喜欢动手实践。

教学要求:结合学生特点,采用任务驱动法,引导学生自主探究和合作学习,注重理论与实践相结合,提高学生的实际操作能力和创新能力。

通过本课程的学习,使学生能够将所学知识应用于实际生活,提升音乐欣赏和信息技术素养。

二、教学内容1. 音乐播放器原理与功能- 了解音乐播放器的基本构成和原理- 掌握音乐播放器的主要功能及操作方法2. 音乐播放器界面设计- 学习音乐播放器界面设计的基本原则- 分析并模仿经典音乐播放器界面布局3. 音乐格式及特点- 介绍常见音乐格式(如MP3、WAV等)及其特点- 了解音乐格式对播放效果和文件大小的影响4. 音乐播放器操作与使用- 学习使用音乐播放器软件进行基本操作(播放、暂停、停止等)- 掌握音乐播放器的高级功能(如音乐分类、排序、搜索等)5. 设计制作音乐播放器界面- 学习运用设计软件制作音乐播放器界面- 结合团队协作,设计并展示个性化的音乐播放器界面教学大纲安排:第一课时:音乐播放器原理与功能第二课时:音乐播放器界面设计第三课时:音乐格式及特点第四课时:音乐播放器操作与使用第五课时:设计制作音乐播放器界面教学内容关联教材章节:《信息技术》六年级上册:第五章 多媒体技术应用,第三节 音乐播放器原理与使用。

音乐播放器课程设计报告

音乐播放器课程设计报告

课程设计报告课程名称PLD原理与应用设计题目音乐播放器专业通信工程四位抢答器摘要随着我国经济和文化事业的发展,在这个竞争激烈的社会中,知识竞赛、评选优胜,选拔人才之类的活动愈加频繁。

在很多竞争场要求有快速公正的竞争裁决,例如:证劵、股票交易及各种智力竞赛等。

在现代社会生活中,智力竞赛更是作为一种生动活泼的教育形式和方法能够引起观众极大的兴趣。

但是、在竞赛中往往是多个选手一起,分为几个小组参加比赛,针对主持人提出的问题各竞赛小组进行抢答,而抢答环节就要有一种逻辑电路抢答器作为裁判员功能、实现其比赛公平、公正的规则。

智能抢答器是一种应用十分广泛的设备,在各种竞赛、抢答场合中,它都能客观、迅速地判别出最先获得发言权的选手。

新增了许多功能,如选手号码显示,抢按后的计时,选手得分显示等功能。

随着科技的发展,现在的抢答器向着数字化、智能化的方向发展.本设计借助于QuartusⅡ软件仿真制作了四人抢答器。

通过选手按动按键的先后,判定由哪位选手回答问题,并且实现倒计时和对选手加分的功能。

本设计分为三个模块:控制模块、计时模块、计分模块,各个模块共同作用,以实现整个设计的总体功能。

关键词:QuartusⅡ,仿真,抢答器,控制模块,计时模块,计分模块Four-way responderABSTRACTWith the development of China's economic and cultural undertakings, in this competitive society, knowledge contests, selection of superior, talents such as activities more and more frequent. In many competitive games require fast fair competition award. In the modern society life, quiz is as a kind of lively education form and the method can cause the audience interest. But, in the competition is often several players together, divided into several groups to participate in the game, against the host question carries on the competition team vies to answer first, vies to answer first link will have a logic circuit buzzer as referee function, achieve the game rules of fairness and justice.Smart responder is a kind of equipment, they are widely used in various competitions, vies to answer first, it can be objective, quickly won the voice discriminant out first. Added many features, such as the contestant number display, rob after pressing time, players score shows, and other functions. With the development of science and technology, now the responder toward digital, intelligent direction.This design with the aid of Quartus Ⅱsoftware simulation produced four responder. Through the player has to press a button, decide which players to answer the question, and can realize the function of the countdown and the player points. This design is divided into three modules: control module, timing module, scoring module, each module combination, to achieve the over all function of the whole design.KEY WORDS: QuartusⅡ,Simulation ,Answer four device,Control,Timing,Scoring目录前言 (1)第1章绪论 (2)1.1 抢答器系统图 (2)1.2 抢答器设计要求 (2)1.3 基本功能 (3)第2章模块设计 (4)2.1 主控制模块 (4)2.1.1 主要功能 (4)2.1.2 代码编写 (4)2.1.3 仿真波形及其分析 (6)2.2计时模块 (7)2.2.1 主要功能 (7)2.2.2 代码编写 (7)2.2.3 仿真波形及其分析 (8)2.3 计分模块 (9)2.3.1 主要功能 (9)2.3.2 代码编写 (9)2.3.3 仿真波形及其分析 (12)第3章顶层电路 (13)3.1 电路图 (13)3.2 抢答器工作原理 (14)3.2.1 各个端口的含义 (14)3.2.2 操作流程及相应波形图 (14)结论 (16)谢辞 (17)参考文献 (18)前言关于这次设计的用于多人竞赛抢答的器件,在现实生活中很常见,尤其是在随着各种智益电视节目的不断发展,越来越多的竞赛抢答器被用在了其中,这种抢答器的好处是不仅能够锻炼参赛选手的反应能力,而且能增加节目现场的紧张、活跃气氛,让观众看得更有情趣。

基于STM32的MP3播放器设计与实现_毕业设计论文

基于STM32的MP3播放器设计与实现_毕业设计论文

《嵌入式系统原理》课程设计说明书题目:利用STM32实现MP3播放器院(系):信息与电气工程学院STM32芯片应用实验设计任务书第一种方案是简易声波播放器,仅使用STM103V100评估板,令计时器TIM4工作在PWM模式下,将wav格式的声波文件从SD卡中读出,由TIM4产生不同频率的方波通过低通滤波器和放大器送喇叭,如图1所示;第二种方案则是简易MP3播放器,还需要使用额外的解码芯片,将MP3格式的文件从SD卡读出,然后送解码芯片解码播放,如图2所示。

本节将先介绍SD卡、FAT16文件格式、VS1003编解码器等关键部分,然后再分别给出两种设计方案的软件设计。

图1 简易声波播放器方案图2 简易MP3 Player方案1 SD卡的结构及读写方法STM103V100评估板有SD连接器,其使用SPI总线与STM32处理器连接,如图3所示。

图3 SD连接器与STM32处理器SPI连接图SD卡(Secure Digital Memory Card)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式。

本小节仅简要介绍在SPI模式下,STM32处理器如何读写SD卡,如果读者如希望详细了解SD 卡,可以参考相关资料。

SD卡内部结构及引脚如图4所示。

图4 SD卡内部结构及引脚SD卡主要引脚和功能为:CLK:时钟信号,每个时钟周期传输一个命令或数据位,频率可在0~25MHz 之间变化,SD卡的总线管理器可以不受任何限制的自由产生0~25MHz的频率;CMD:双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有卡;DAT0~3:数据线,数据可以从卡传向主机也可以从主机传向卡。

SD卡以命令形式来控制SD卡的读写等操作。

可根据命令对多块或单块进行读写操作。

音乐播放器的设计—课程设计论文

音乐播放器的设计—课程设计论文

单片机课程设计报告项目名称音乐播放器的设计专业班级通信111班学生姓名指导教师2013年12月6日I摘要本设计是一个基于AT89S52系列单片机的音乐播放器,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐播放器。

该音乐播放器主要由按键电路、显示电路、复位电路、时钟电路以及蜂鸣器组成。

使用四个按键控制音乐播放器,两个用来切换歌曲,即上一曲和下一曲;一个用作暂停,还有一个是复位键。

本音乐播放器共有三首歌曲。

播放歌曲时,按上一曲和下一曲数码管就会相应的显示出当前播放的歌曲,利用暂停来控制歌曲的播放/停止。

本设计利用KEIL编程软件对音乐播放器源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试。

本播放器具有电路简单,功能强大,易于拓展等特点。

关键词:单片机;音乐播放器;蜂鸣器;数码管I IAbstractThis design is a series based on AT89S52 SCM music player, based on single chip microcomputer technology principle, through the hardware circuits and software compilation, design to produce a multi-functional multi-purpose music player. The music player is mainly composed of the key circuit, display circuit and reset circuit, clock circuit and a buzzer. Using four buttons control the music player, two used to switch songs, on the one and the next song; One used as a pause and a reset button. This music player three songs. Play songs, according to one song and the next song digital tube will be corresponding shows the current playing song, using the pause to play/stop control songs. This design using the KEIL programming software for music player source program of programming and debugging, cooperate with the PROTEUS simulation software for hardware simulation debugging. This player has the circuit is simple, powerful, easy to expand, etc.Key words: single chip microcomputer; Music player; Buzzer.; Digital tube;I I I目录摘要 (I)Abstract ....................................................................................................I II 目录 . (IV)第1章绪论 (1)1.1 单片机概述 (1)1.2 课题概述 (1)第2章设计目的、要求、仪器及芯片 (3)2.1 设计目的 (3)2.2 设计要求 (3)2.3 设计使用的仪器 (3)2.4 单片机芯片介绍 (4)第3章硬件电路设计 (6)3.1 总体设计方案 (6)3.2 单元电路设计 (6)3.2.1 晶振电路 (6)3.2.2 复位电路 (7)3.2.3 发声电路 (7)3.2.4 显示电路 (7)3.3 总体电路 (8)第4章系统的软件设计 (9)4.1 音乐产生原理 (9)4.1.1 音调和节拍 (9)4.1.3 编码 (10)4.2 总体流程图 (11)4.3 键控子程序 (12)4.3.1 播放/暂停子程序 (12)4.3.2 曲目选择子程序 (13)4.4 程序的编译 (14)4.4.1 KEIL软件简介 (14)4.4.2 程序的编译 (15)I V第5章电路仿真调试 (16)5.1 仿真平台 (16)5.1.1 PROTEUS软件简介 (16)5.2 仿真测试 (16)5.3 测试总结 (17)总结 (18)致谢 (19)参考文献 (20)项目创新及特色 (21)附录1 程序清单 (22)附录2 元器件清单 (26)附录3 电路实物图 (27)V第1章绪论1.1单片机概述单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

MP3音乐播放器软件课程设计报告(MFC)

MP3音乐播放器软件课程设计报告(MFC)

课程设计说明书课程设计名称:软件综合课程设计课程设计题目:音频播放器程序的设计与实现学院名称:信息工程学院电子信息工程专业课程设计任务书正文:目录引言 (5)一、设计程序的目的与要求 (6)目的 (6)要求 (6)二、方案实现与调试 (6)总体设计 (6)1、实现功能 (6)2、功能模块图 (7)详细设计 (7)1、界面布局 (7)2、各模块功能设计 (8)2.1处理“打开”按钮 (9)2.2处理“播放”按钮 (9)2.3处理“暂停”按钮 (9)2.4处理“停止”按钮 (9)2.5处理“音量”按钮 (10)2.6处理“退出”按钮 (10)3 操作步骤 (10)三、课程设计分析与总结 (11)分析 (11)总结 (11)附录 (13)关键程序清单 (13)参考文献 (20)引言MP3播放器的设计是利用MFC应用程序、媒体控制接口MIC 的基本知识而设计的。

1.1 MFC简介MFC是Visual C++是核心。

MFC类库将所有图形用户界面的元素如窗口、菜单和按钮等都以类的形式进行了封装,MFC AppWizard 向导根据继承性利用MFC派生出自己的类,并对Windows应用程序进行了分解,利用MFC派生类对应用程序重新进行组装,同时还规定了应用程序中各个MFC派生类对象之间的相互联系,实现了标准Windows应用程序的功能,这就是向导生成的所谓MFC应用程序框架。

每个MFC类都包括了一些函数,函数放到类中,符合C++编程方法。

这些函数,必须通过类定义对象才能使用[1]。

1.2 MCI简介MCI(Media Control Interface)媒体控制接口是MircroSoft提供的一组多媒体设备和文件的标准接口,它的好处是可以方便地控制绝大多数多媒体设备包括音频、视频、影碟、录像等多媒体设备,而不需要知道它们的内部工作状况。

它所支持的媒体格式包括mp3、avi、wav、mpeg等等[2]。

音频技术发展较早,几年前一些技术已经成熟并产品化,音频技术主要包括四个方面:音频数字化、语音处理、语音合成及语音识别。

MP3播放器课程设计报告

MP3播放器课程设计报告

VB课程设计报告报告名称 MP3播放器详细设计报告年级 10级学院计算机学院专业计算机科学与技术专业学号 12101113 姓名张木春任课教师于时飞完成时间 2013.5.31 成绩(报告在给出成绩的同时须由评阅人写出评语)详细设计说明1.引言 (3)1.1编写目的 (3)1.2项目背景 (3)1.3定义 (3)1.4参考资料 (4)2.总体设计 (4)2.1需求概述 (4)2.2软件结构 (4)3.程序描述 (4)3.1功能 (8)3.2性能 (8)3.3输入项目 (8)3.4输出项目 (9)3.5限制条件 (9)3.6测试要点 (9)1.引言1.1编写目的编写本程序的目的是设计一个MP3播放器,能实现,播放,停止,暂停,音量设置,左右声道,音乐添加删除,音乐列表的记忆功能,顺序播放,随机播放,循环播放等功能.通过阅读详细设计说明书,我们可以清楚的知道界面上每个控件的功能及每段代码所实现的功能.该说明说适合于所有了解VB语言的读者,可读性强.1.2项目背景本项目是在我们上完Visual Basic 2005 程序设计课和软件工程课之后,王国伟老师为了对我们进行简单考核而提出的课程设计题目.该项目由王国伟老师直接主管,并依托于信息技术学院六楼数学实验室来完成,项目时间为两周.1.3定义1.3定义(1)数据类型:String 字符串Boolean 浮点型Integer 整型(2)常用控件及属性Button 命令按钮控件RadioButton 单选框控件OpenFileDialog 打开文件对话框控件File close()关闭文件函数ListView控件:(属性)Add: 添加列表项SelectedItems():选中的列表项Remove: 删除列表项AxWindowsMediaPlayer控件:(属性)URL:获取多媒体文件的路径及文件名Ctlcontrols: 获取多媒体文件的控制方法CurrentPosition:获取多媒体当前的播放进度TrackBar控件:(属性)Value:获取滑块目前所在的位置1.4参考资料[1] 李捷. Visual Basic 2005—程序设计教程-北京机械工业出版社,2007.7[2] 杨富国. Visual Basic 程序开发案例解析-清华大学出版社,2006.1[3]康祥顺. Visual Basic 案例开发集锦-电子工业出版社,2006.12.总体设计2.1需求概述本项目的开发宗旨是实现Windows Media player 的MP3播放器功能,使用户方便的播放音乐,并根据兴趣添加播放列表.根据系统实现的目的,可以描述出MP3播放器功能,该系统主要包括下列四部分:1.音乐播放功能;2.歌曲列表管理功能;3.音量设置,左右声道设置;4.播放模式更换功能.其中,音乐播放功能包括音乐的播放,暂停,停止, ,是本程序的基本功能.歌曲列表管理功能实现了歌曲列表的添加,删除保存等功能,方便用户使用.音量,声道设置功能可以实现,歌曲音量大小的调节和左右声道模式的转换.播放模式更换功能,可以实现顺序播放,随机播放,单曲循环等不同模式之间的转换,,使播放方式更加人性化.2.2软件结构需求分析---详细设计---调试----改进---再调试3.程序描述1.全局变量声明Public Class Form1'设置全局变量Dim paths() As String'定义打开文件路径数组Dim FileName As String'定义文件名Dim SingName As String'定义歌曲名称Dim i As IntegerDim selIndex As IntegerDim path As StringDim d1, d2 As Integer2.‘添加按纽事件Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim sfile As String'定义歌曲名称Dim j As Integer'定义循环变量Dim count As Integer'定义已有歌曲数目With OpenFileDialog1 '打开新文件.Title = "打开mp3文件".Multiselect = True.Filter = "mp3文件(*.mp3)|*.mp3".ShowDialog()paths = .FileNamesEnd Withi = paths.GetUpperBound(0) '获取此次打开文件的数目For j = 0 To icount = ListView1.Items.Countsfile = paths(i - j).Substring(paths(j).LastIndexOf("/") + 1) '获取歌曲名称Dim mitem As New ListViewItem(Str(count + 1), j)mitem.SubItems.Add(sfile)mitem.SubItems.Add(paths(i - j))ListView1.Items.Add(mitem) '把新打开的文件添加到列表控件中NextEnd Sub3.'播放按纽事件Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.ClickselIndex = ListView1.SelectedItems(0).Text - 1FileName = ListView1.SelectedItems.Item(0).SubItems(1).Text '获取歌曲名称 path = ListView1.SelectedItems.Item(0).SubItems(2).TextAxWindowsMediaPlayer1.URL = path '设置播放文件 AxWindowsMediaPlayer1.Ctlcontrols.play() '开始播放Label2.Text = FileNameDim Str As StringLabel2.Text = FileNameTimer1.Enabled = TrueButton2.Enabled = TrueStr = FileName.Substring(stIndexOf("."))FileName = FileName.Remove(FileName.Length - _Str.Length, Str.Length)Label2.Text = FileName '对字符串进行处理,仅获取无后缀歌曲名End Sub4.'停止按纽事件,Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.ClickAxWindowsMediaPlayer1.Ctlcontrols.stop()End Sub5.'退出并保存列表按纽事件Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.ClickFileOpen(1, "d:\xs.txt", OpenMode.Output)Dim i, j As IntegerDim st As String = ""j = ListView1.Items.Count - 1For i = 0 To jst = ListView1.Items(i).SubItems(2).TextPrintLine(1, st)NextFileClose(1)Close()EndEnd Sub6.'计时器事件Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.TickDim m1, m2 As IntegerDim s1, s2 As IntegerDim n As Integerd1 = AxWindowsMediaPlayer1.Ctlcontrols.currentPosition '获取当前播放进度 d2 = AxWindowsMediaPlayer1.currentMedia.duration '获取需要的总时间 TrackBar1.Value = d1TrackBar1.TickFrequency = d2TrackBar1.Maximum = d2m1 = d1 \ 60 : s1 = d1 Mod 60m2 = d2 \ 60 : s2 = d2 Mod 60Label1.Text = "已播放" & m1 & ":" & Format(s1, "00") & "(" & m2 & ":" & Format(s2, "00") & ")"'显示播放进度If m1 = m2 And m1 <> 0 And s1 = s2 ThenIf RadioButton1.Checked = True Thenn = selIndexListView1.Items(n).Selected = Falsen = n + 1If n < ListView1.Items.Count - 1 ThenListView1.Items(n).Selected = Truebf()End IfElseIf RadioButton2.Checked = True Thenn = selIndexListView1.Items(n).Selected = FalseRandomize()n = CInt(Int((ListView1.Items.Count - 1 - 0 + 1) * Rnd()))ListView1.Items(n).Selected = Truebf()Elsebf()End IfEnd IfEnd Sub7 '列表视图控件Private Sub ListView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.DoubleClickDim str As StringselIndex = ListView1.SelectedItems(0).Text - 1FileName = ListView1.SelectedItems.Item(0).SubItems(1).Text '获取歌曲名称 path = ListView1.SelectedItems.Item(0).SubItems(2).Text '获取歌曲路径 AxWindowsMediaPlayer1.URL = path '设置播放文件 AxWindowsMediaPlayer1.Ctlcontrols.play() '开始播放Label2.Text = FileNameTimer1.Enabled = TrueButton2.Enabled = Truestr = FileName.Substring(stIndexOf("."))FileName = FileName.Remove(FileName.Length - str.Length, str.Length)Label2.Text = FileNameEnd Sub8'删除Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.ClickDim INQ As IntegerDim ri As IntegerDim count As IntegerINQ = ListView1.SelectedItems(0).Text - 1ListView1.Items(INQ).Remove()count = ListView1.Items.CountFor ri = 0 To count - 1ListView1.Items(ri).SubItems(0).Text = Str(ri + 1)NextEnd Sub9 '左声道Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.ClickAxWindowsMediaPlayer1.settings.balance = -100End Sub10'右声道Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.ClickAxWindowsMediaPlayer1.settings.balance = 100End Sub11'暂停Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.ClickAxWindowsMediaPlayer1.Ctlcontrols.pause()End SubSub bf()selIndex = ListView1.SelectedItems(0).Text - 1FileName = ListView1.SelectedItems.Item(0).SubItems(1).Text '获取歌曲名称 path = ListView1.SelectedItems.Item(0).SubItems(2).TextAxWindowsMediaPlayer1.URL = path '设置播放文件 AxWindowsMediaPlayer1.Ctlcontrols.play() '开始播放Label2.Text = FileNameEnd SubEnd Class3.1功能1.音乐播放功能;2.歌曲列表管理功能;3.音量设置,左右声道设置;4.播放模式更换功能.3.2性能本播放器结构简单,性能良好,操作简单,适合于大众人群的使用.3.3输入项目对该播放器的播放列表添加想要播放的歌曲,播放器就能按要求播放音乐.3.4输出项目3.5限制条件硬件条件:普通的计算机和工作站软件条件:运行环境需安装Visual Basic 2005软件3.6测试要点对播放器的每个功能都需要逐一测试,具体要求是:1.对播放功能的各个控件功能进行测试2.对歌曲列表管理功能进行测试3.对音量设置功能进行测试,包括音量测试,和左右声道功能测试4.对不同的播放模式进行测试,看能否实现音乐的顺序播放,随机播放,单曲循环功能.。

androidmp3课程设计

androidmp3课程设计

androidmp3课程设计一、课程目标知识目标:1. 学生能理解Android系统中MP3播放器的基本原理和功能。

2. 学生能掌握在Android平台上开发MP3播放器的关键技术和步骤。

3. 学生能了解MP3文件格式和相关音频处理知识。

技能目标:1. 学生能够运用Android Studio开发环境,独立设计和编写具有基本功能的MP3播放器应用程序。

2. 学生能够通过调试和测试,优化MP3播放器性能,解决常见问题。

3. 学生能够运用所学的编程知识,为MP3播放器添加自定义功能和界面设计。

情感态度价值观目标:1. 学生培养对编程和移动应用开发的兴趣,提高信息技术素养。

2. 学生树立团队协作意识,学会与他人共同解决问题,提高沟通能力。

3. 学生养成自主学习和持续探究的习惯,勇于面对挑战,克服困难。

课程性质:本课程为信息技术课程,以实践操作为主,理论讲解为辅。

学生特点:学生具备一定的编程基础,对Android系统有一定了解,具有较强的学习能力和动手能力。

教学要求:教师应注重培养学生的实际操作能力,鼓励学生自主探究和团队协作,关注学生个体差异,提供有针对性的指导。

教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. Android系统简介:Android平台的发展历程、系统架构及特点。

- 教材章节:第一章 Android概述2. MP3文件格式与处理:MP3文件的结构、编码原理及音频处理技术。

- 教材章节:第二章 音频技术基础3. Android音频播放框架:MediaPlayer类的使用、音频焦点管理、通知栏控制等。

- 教材章节:第三章 Android音频播放4. Android Studio开发环境配置:安装Android Studio、配置模拟器及真机调试。

- 教材章节:第四章 Android开发工具与环境5. MP3播放器界面设计:UI布局、控件使用、自定义控件。

- 教材章节:第五章 Android界面设计6. 编写MP3播放器代码:初始化MediaPlayer、播放/暂停/停止功能、进度条更新、列表播放等。

音乐播放器课程设计

音乐播放器课程设计

音乐播放器课程设计一、课程目标知识目标:1. 学生理解音乐播放器的基本组成结构与功能;2. 学生掌握音乐播放器界面设计的基本原则;3. 学生了解音乐播放器中音乐格式及播放原理。

技能目标:1. 学生能够运用所学的界面设计原则,设计出美观、实用的音乐播放器界面;2. 学生能够利用相关软件或编程语言,实现音乐播放器的基本功能,如播放、暂停、切换歌曲等;3. 学生能够通过小组合作,共同完成音乐播放器的制作,提高团队协作能力。

情感态度价值观目标:1. 学生培养对音乐艺术的热爱和欣赏能力;2. 学生养成积极探索、勇于创新的学习态度,增强解决问题的信心;3. 学生通过课程学习,认识到科技与艺术的结合,提高审美观念和人文素养。

课程性质:本课程以实践操作为主,结合理论讲解,培养学生的动手能力和创新思维。

学生特点:六年级学生对音乐有一定的兴趣和认知,具备一定的计算机操作能力,喜欢探索新事物。

教学要求:教师需关注学生的个体差异,提供个性化的指导,鼓励学生积极参与课堂讨论和实践活动,以达到课程目标。

在教学过程中,注重将目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. 音乐播放器的基本原理- 介绍音乐播放器的发展历程;- 讲解音乐播放器的硬件与软件组成;- 分析音乐播放器的工作原理。

2. 音乐播放器界面设计原则- 探讨界面设计的基本原则,如简洁、易用、美观等;- 分析优秀音乐播放器界面的设计特点;- 学习界面设计的基本工具和方法。

3. 音乐格式及播放器功能实现- 介绍常见的音乐格式,如mp3、wav等;- 讲解音乐播放器中解码、播放、音效处理等功能的实现方法;- 学习使用编程语言或软件实现音乐播放器的功能。

4. 实践操作:音乐播放器制作- 分组讨论,确定音乐播放器的主题和功能;- 设计并制作音乐播放器界面;- 编程实现音乐播放器的基本功能;- 测试、优化音乐播放器。

教学内容依据课程目标,结合教材,确保科学性和系统性。

音乐播放器课程设计报告

音乐播放器课程设计报告

音乐播放器摘要本设计是一个音乐播放器,由节拍发生器、歌曲存储器、译码器、分频器四部分组成。

能够连续播放或选曲播放预存在ROM里的4首歌曲。

该播放器用Quartus II仿真软件设计并测试功能正常,下载到试验箱验证成功。

关键词:音乐播放器,节拍发生器,存储器,译码器,分频器目录前言 (3)第1章系统原理 (6)1.1音乐编码 (6)1.1.1编码原理 (6)1.1.2编码参照表 (6)1.2设计原理 (7)第2章系统工作过程 (8)2.1.1 工作原理 (8)2.1.2仿真分析 (9)2.2 歌曲存储器 (9)2.2.1 工作原理 (9)2.2.2 歌曲编码 (10)2.2.2 ROM定制 (14)2.3 译码器电路设计 (16)2.3.1 译码器工作原理 (16)2.3.2 仿真分析 (17)2.4 分频器电路设计 (17)2.4.1 工作原理 (17)2.4.2 仿真分析 (20)第3章下载验证 (21)3.1 引脚锁定设置 (21)3.1.1 器件选择 (21)3.1.2 引脚分配 (21)3.2 配置文件下载 (22)3.3 硬件测试 (22)结论 (23)参考文献 (24)前言世界上第一片FPGA由美国Xilinx公司于1985年率先推出。

进入21世纪之后,以FPGA为核心的单片系统(SOC)和可编程系统(SOPC)有了显著的发展,单片FPGA的集成规模已达到几百万门,其工作速度已超过300MHz。

FPGA在结构上已经实现了复杂系统所需要的主要功能,并将多种功能集成在一片FPGA器件中,如嵌入式存储器、嵌入式乘法器、嵌入式处理器、高速I/O缓冲器、外置存储器接口和实现数字信号处理的DSP等功能。

随着FPGA性能的不断完善,FPGA器件的种类日益丰富,受到世界范围内电子设计人员的普遍欢迎,并占据了较大的市场,其生产厂家也由原来的Xilinx公司一家增加到Altera、Actel、lattice等十几家公司。

Mp3播放器课程设计专业方向课程设计

Mp3播放器课程设计专业方向课程设计

软件专业方向课程设计——— Mp3音频播放器学号:姓名:班级:专业:软件工程指导老师:成绩:目录1. 需求分析 (4)课题背景 (4)音频播放器简介 (4)目的和意义 (4)功能需求 (4)进度安排 (4)2概要设计 (5)系统需求用例设计: (5)3.详细设计 (7)播放器界面 (7)添加各空间类向导 (8)音乐浏览控件: (8)播放功能控件: (9)考文献 (10)1.需求分析课题背景音频播放器简介音频播放器(audio player)是一种可储存、组织与播放音讯档案格式的装置。

常被称为“MP3播放器”(因为MP3格式的普遍性),它可以播放很多其他的格式,如WMA,AAC,WA V等。

一些格式会跟有限制性的技术DRM合并, 比如Janus和FairPlay, 一般是一些付费下载网站的一部分。

其它一些格式则是完全的专利自由或者在另外一些方面开放,比如Ogg V orbis,FLAC,Speex (Ogg开放多媒体工程的所有部分),以及Module file格式。

目的和意义通过独立设计完成制作一个播放器软件,更加理解了MFC单文档和多文档程序的构成框架,以及各个类之间数据传递的关系。

同时,对鼠标和键盘的多消息响应有了进一步的认识。

在设计制作的过程中,C++语言是基础,在熟悉MFC Windows 程序设计的同时,也复习了C++程序语言设计。

功能需求随着社会的发展,有越来越多的人接触电脑,也有越来越多的人喜欢在上网、工作的时候,播放一点音乐,娱乐一下,缓解一下。

所以,应运而生的是音频播放器软件,能够为用户播放常见的格式音频文件。

并且,在使用的过程中,也尽可能设计出一些人性化的设计。

比如,能最小化到托盘并可以进行操作。

良好的人机交互界面,也能给人以美好的感官享受。

利用MFC 应用程序、媒体控制接口MIC 的基本知识,设计一个MP3 播放器。

要求能够浏览本地音乐文件,播放常用Windows 音频格式的文件;实现播放控制:播放、暂停、停止等;实现音量控制:静音、声音放大减小;软件说明;退出系统。

音乐播放器课程设计

音乐播放器课程设计

目录一、设计要求 (1)二、设计目的 (1)三、设计的具体实现 (1)3.1 系统概述 (1)3.2单元电路设计 (1)3.2.1 8086中央处理器 (1)3.2.2 74LS373地址锁存电路 (5)3.2.3 74LS138 译码电路 (6)3.2.4 定时/计数器8253A (7)3.3 软件程序设计和调试 (13)四、结论与展望 (17)五、心得体会及建议 (17)六、附录 (18)七、参考文献 (19)电子音乐播放器设计报告一、设计要求利用8253作为音频频率发生器,应先对一段音乐进行编码后存入音符表,并建立好音阶表(只建立一个8度即可,音阶表见附录),音符长度不能少于60个,连续播放3遍后停止。

具体要求如下:1、系统硬件电路设计:根据所选题目和所用的接口电路芯片设计出完整的系统硬件电路,并进行电路连接和调试。

2、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释。

二、设计目的本课程设计培养学生运用该课程的理论知识和技术知识解决工程实际问题的能力,学习微机系统设计的方法;学生通过对实验室系统的实际调试,进一步培养并提高了科学实验的能力。

因此,本课程设计为学生提供一个良好的理论联系实际的机会和场所,有利于为学生树立微机整体的概念,同时加强了学生编制和调试程序的能力,进一步培养学生的独立工作能力。

因此,课程设计是教学计划中必不可少的重要一环。

三、设计的具体实现1.系统概述该音乐播放器通过用8086中央处理器、74LS373地址锁存电路、74LS138译码电路、定时/计数器8253A来实现功能。

8086中央处理器输出地址码A16-A19和数据AD0-AD15,将AD0-AD7输入地址锁存器输出A0-A7,再将A0-A7通过译码器进行译码输出作为8253的片选信号,8253产生不同频率的脉冲来模拟音符,通过时间的长短来模拟音长,从而设计出一个功能完整的音乐播放器。

2.单元电路设计2.1 8086中央处理器8086中央处理器是Intel系列的16位微处理器,有16根数据线和20跟地址线。

课程设计电子音乐播放器-完整版

课程设计电子音乐播放器-完整版

课程设计电子音乐播放器-完整版-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN目录1.课程设计题目 (1)2.课程设计任务及要求 (1)3.总体方案与设计说明 (1)4.硬件电路设计及描述 (3)5.软件设计流程及描述 (7)6.源程序代码 (9)7.系统调试 (10)8.结论与说明 (11)9.课程设计体会 (11)10.参考文献 (11)1一.课程设计题目电子音乐播放器二.课程设计任务及要求设计要求:利用8253作为音阶频率发生器,应先对一段音乐进行编码后存入音符表,并建立好音阶表(只建立一个8度即可,音阶表见附录),音符长度不能少于60个,连续播放3遍后停止。

三.总体方案与设计说明3.1音阶频率表表3.1音阶和频率对应关系设计程序时,数据段设置两张“表”。

一张是频率表,将与音符对应的频率值依次写入表中,另一张是时间表,依次存放每个音符的单位时间。

当然,频率表和时间表的表项要一一对应,不能错位,频率表最后一个表项为0,作为重复演唱或停止演唱的标志。

在接通扬声器的情况下,依次取出频率表中的频率值,转换成计数初值写入计数器,依次取出时间表中的单位时间和调试参数N相乘,然后再调用延时子程序即可得到延时时间,也就是音符演奏时间。

3.2主机扬声器电路图主机扬声器电路图3.2从图中可以看出,PC机发声系统以8253为核心。

系统初始化时,8253工作在“方波发生器”方式,初值为二进制数,写入顺序为先低后高,经过简单滤波以后,送至扬声器。

改变计时器的初值就可以使扬声器发出不同频率的音响。

3.3设计总框图设计总框图3.33.4 电路连接开关(置高电平)音响A0 A1电路连接图3.4四.硬件电路设计及描述(含所需器件、硬件原理图)4.1 芯片介绍8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为0~2MHZ,它所有的技术方式和操作方式都通过编程控制。

音乐播放器课程设计报告

音乐播放器课程设计报告

目录一、设计任务要求 ................................................................................................ - 2 -1、课程设计题目 ............................................................................................. - 2 -2、工程设计总述 ............................................................................................. - 4 -二、选择器件 .......................................................................................................... - 4 -三、功能模块 .......................................................................................................... - 4 -1.分频器(div) ............................................................................................... - 4 -2、计数器(notetabs)................................................................................... - 6 -3、选择模块(choice)................................................................................... - 7 -4、数据翻译模块(tontaba): ...................................................................... - 9 -5、译码器模块(deled) .............................................................................. - 10 -6、数控分频器模块(speakera)................................................................ - 14 -7、乐谱数据ROM(四个模块)................................................................. - 15 -四、总体设计电路图 ............................................................................................ - 21 -1、顶层设计的电路原理图 ........................................................................... - 21 -2、顶层设计的仿真结果: ........................................................................... - 22 -3、电路的顶层文件管脚分配图 ................................................................... - 22 -五、心得体会 ........................................................................................................ - 22 -音乐播放器课程设计一、设计任务要求1、课程设计题目设计一个乐曲演奏电路,能够自动播放2首音乐。

c课程设计音乐播放器

c课程设计音乐播放器

c 课程设计音乐播放器一、教学目标本课程的目标是让学生掌握音乐播放器的制作原理和技巧,学会使用C语言进行程序设计,培养学生的编程能力和逻辑思维能力。

具体的学习目标包括:1.知识目标:学生需要了解音乐播放器的基本原理,掌握C语言的基本语法和数据结构,熟悉音乐文件的处理方法和音效控制技术。

2.技能目标:学生能够运用C语言编写音乐播放器程序,进行音频文件的播放、暂停、停止、跳转等操作,调整音量大小和音效效果,实现歌词同步和专辑封面显示等功能。

3.情感态度价值观目标:学生通过制作音乐播放器,培养对编程和音乐的兴趣,提高创新意识和团队合作能力,增强自信心和自我成就感。

二、教学内容根据课程目标,教学内容主要包括以下几个部分:1.音乐播放器的基本原理:介绍音乐播放器的工作原理,包括音频解码、音量控制、音效处理等模块。

2.C语言基础知识:讲解C语言的基本语法、数据类型、运算符、控制结构等,为学生编写音乐播放器程序打下基础。

3.音乐文件处理:介绍音乐文件的常见格式和结构,讲解如何读取、解析和播放音乐文件。

4.音效控制技术:讲解如何在音乐播放器中实现音量调整、音效效果等功能。

5.歌词同步和专辑封面显示:介绍如何实现歌词同步播放和专辑封面显示功能,提高音乐播放器的用户体验。

6.音乐播放器程序设计:引导学生运用所学知识,分组设计和实现一个简单音乐播放器程序。

三、教学方法为了激发学生的学习兴趣和主动性,本课程采用以下教学方法:1.讲授法:讲解音乐播放器的基本原理、C语言基础知识、音乐文件处理方法等,为学生提供理论支持。

2.案例分析法:分析实际的音乐播放器案例,引导学生学会分析问题、解决问题,提高编程能力。

3.实验法:分组进行音乐播放器程序设计,让学生动手实践,培养学生的实际操作能力。

4.讨论法:学生进行小组讨论,分享编程心得和解决问题的方法,促进团队合作和交流。

四、教学资源为了支持教学内容和教学方法的实施,本课程准备以下教学资源:1.教材:选用权威、实用的C语言编程教材,为学生提供系统的学习资料。

VC++MP3播放器课程设计实验报告

VC++MP3播放器课程设计实验报告

西安科技大学《VC++程序设计》课程设计报告题目 MP3播放器院、系(部)计算机学院软件工程系专业及班级软件工程0902 姓名王浩日期09080102241 题目要求要求用所学知识编写mp3播放器来实现mp3播放基本功能2 功能需求Mp3播放器基本的添加歌曲,播放,暂停,暂停恢复,停止,下一首,前一首,播放列表,最小化到托盘等3 总体设计3.1 系统模块3.2 系统业务处理流程4 详细设计1.新建对话框MFC应用程序2.添加基类class MCIMP3在头文件中添加#include<mmsystem.h>#pragma comment(lib,"winmm.lib")类成员public:MCIMP3();virtual ~MCIMP3();DWORD MCIOpen(const CString &strPath);DWORD MCIClose();DWORD MCIPlay();DWORD MCIPause();DWORD MCIResume();DWORD MCIStop();DWORD MCISetMute(BOOL bMute);DWORD MCIGetLength(DWORD *dwReturn);DWORD MCIGetPos(DWORD *dwPos);DWORD MCISeekTo(DWORD dwTo);DWORD MCISeekToStart();DWORD MCISeekToEnd();BOOL MCIIsPlaying();BOOL MCIIsOpened();DWORD m_dwLength;protected:MCIDEVICEID m_wID;在类实现文件MCIMP3.cpp中添加如下代码//构造函数MCIMP3::MCIMP3(){m_wID=NULL;m_dwLength=0;}//析构函数MCIMP3::~MCIMP3(){MCIClose();}//打开MCI设备参数为文件地址DWORD MCIMP3::MCIOpen(const CString &strPath) {MCI_OPEN_PARMS mciOP;DWORD dwReturn;ASSERT(m_wID==NULL);mciOP.lpstrDeviceType=NULL;mciOP.lpstrElementName=strPath;dwReturn=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_WAIT|MCI_O PEN_SHAREABLE,(DWORD)(LPVOID)&mciOP);if (dwReturn==0){m_wID=mciOP.wDeviceID;if(this->MCIGetLength(&m_dwLength)!=0)m_dwLength=0;}elsem_wID=NULL;return dwReturn;}//关闭MCI设备DWORD MCIMP3::MCIClose(){MCI_GENERIC_PARMS mciGP;DWORD dwReturn;dwReturn=mciSendCommand(m_wID,MCI_CLOSE,MCI_NOTIFY|MCI_WAIT, (DWORD)(LPVOID)&mciGP);m_wID=NULL;return dwReturn;}//播放DWORD MCIMP3::MCIPlay(){MCI_PLAY_PARMS mciPP;return mciSendCommand(m_wID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)&mciPP);}//暂停DWORD MCIMP3::MCIPause(){MCI_GENERIC_PARMS mciGP;return mciSendCommand(m_wID,MCI_PAUSE,MCI_NOTIFY|MCI_WAIT, (DWORD)(LPVOID)&mciGP);}//继续(从暂停恢复)DWORD MCIMP3::MCIResume()MCI_GENERIC_PARMS mciGP;return mciSendCommand(m_wID,MCI_RESUME,MCI_NOTIFY|MCI_WAIT, (DWORD)(LPVOID)&mciGP);}//停止播放DWORD MCIMP3::MCIStop(){MCI_GENERIC_PARMS mciGP;return mciSendCommand(m_wID,MCI_STOP,MCI_NOTIFY|MCI_WAIT, (DWORD)(LPVOID)&mciGP);}//到dwTo处DWORD MCIMP3::MCISeekTo(DWORD dwTo){DWORD dwreturn;if (dwTo>0&& dwTo<m_dwLength){MCI_SEEK_PARMS mciSP;mciSP.dwTo=dwTo*1000;dwreturn=mciSendCommand(m_wID,MCI_SEEK,MCI_WAIT|MCI_NOTIFY|MCI_TO, (DWORD)(LPVOID)&mciSP);}else if (dwTo>=m_dwLength)dwreturn=MCISeekToEnd();elsedwreturn=MCISeekToStart();return dwreturn;}//到开始处DWORD MCIMP3::MCISeekToStart(){MCI_SEEK_PARMS mciSP;return mciSendCommand(m_wID,MCI_SEEK,MCI_WAIT|MCI_NOTIFY|MCI_SEEK_TO_START,(DWORD)(LPVOID)&mciSP); }//到结束处DWORD MCIMP3::MCISeekToEnd(){MCI_SEEK_PARMS mciSP;returnmciSendCommand(m_wID,MCI_SEEK,MCI_WAIT|MCI_NOTIFY|MCI_SEEK_TO_END, (DWORD)(LPVOID)&mciSP);}//得到播放文件长度DWORD MCIMP3::MCIGetLength(DWORD *dwLength){MCI_STATUS_PARMS mciSP;mciSP.dwItem=MCI_STATUS_LENGTH;DWORD dwReturn=mciSendCommand(m_wID,MCI_STATUS,MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciSP);if(dwReturn==0)*dwLength=mciSP.dwReturn/1000;return dwReturn;}//得到当前播放文件播放到的地方DWORD MCIMP3::MCIGetPos(DWORD *dwPos){MCI_STATUS_PARMS mciSP;mciSP.dwItem=MCI_STATUS_POSITION;DWORD dwReturn=mciSendCommand(m_wID,MCI_STATUS,MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciSP);if(dwReturn==0)*dwPos=mciSP.dwReturn/1000;return dwReturn;}//静音DWORD MCIMP3::MCISetMute(BOOL bMute){MCI_SET_PARMS mciSP;mciSP.dwAudio=MCI_SET_AUDIO_ALL;DWORD dwFlags;if(bMute)dwFlags=MCI_WAIT|MCI_SET_AUDIO|MCI_SET_OFF;elsedwFlags=MCI_WAIT|MCI_SET_AUDIO|MCI_SET_ON;return mciSendCommand(m_wID,MCI_SET,dwFlags,(DWORD)(LPVOID)&mciSP);}//判断是否播放BOOL MCIMP3::MCIIsPlaying(){MCI_STATUS_PARMS mciSP;mciSP.dwItem=MCI_STATUS_MODE;DWORD dwReturn=mciSendCommand(m_wID,MCI_STATUS,MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciSP);if(dwReturn==0){if(mciSP.dwReturn==MCI_MODE_PLAY)return true;}return false;}//判断是否打开BOOL MCIMP3::MCIIsOpened(){MCI_STATUS_PARMS mciSP;mciSP.dwItem=MCI_STATUS_MODE;DWORD dwReturn=mciSendCommand(m_wID,MCI_STATUS,MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciSP);if(dwReturn==0){if(mciSP.dwReturn==MCI_MODE_OPEN||mciSP.dwReturn==MCI_MODE_PLAY||mciSP.dwReturn==MCI_MODE_PAUSE||mciSP.dwReturn==MCI_MODE_STOP||mciSP.dwReturn==MCI_MODE_SEEK)return true;}return false;}3.按如图方式添加控件对话框属性改为无边框,列表框属性也为无边框编辑框改为只读无边框控件名控件类型ID 变量类型变量关联正在播放静态文本示例编辑框编辑框ID_NAME CString path示例编辑框编辑框ID_TIME CString m_time列表框IDC_LIST CListBox m_list滑块IDC_SLIDER1 CSliderCrtl m_ctrlSlider4.int flag;int j;int pause;void view();CString str1;CString str;int file1;int play;int time;int nPos;int temp;int i;CString m_Path;MCIMP3 m_mp3player;5.引入背景位图并改ID为IDB_BEIJING和IDB_BEIJINGM在OnPaint函数中else后屏蔽CDialog::OnPaint();在后面添加如下代码if(flag==1){CPaintDC dc(this);CDC memdc;memdc.CreateCompatibleDC(&dc);CBitmap bkg;bkg.LoadBitmap(IDB_BEIJING);BITMAP bkginfo;bkg.GetBitmap(&bkginfo);memdc.SelectObject(&bkg);RECT rect;GetWindowRect(&rect);dc.StretchBlt(0,0,rect.right-rect.left,rect.bottom-rect.top,&memdc,0,0,bkginfo.bmWidth,bk ginfo.bmHeight,SRCCOPY);}if(flag==0){CPaintDC dc(this);CDC memdc;memdc.CreateCompatibleDC(&dc) ;CBitmap bkg;bkg.LoadBitmap(IDB_BEIJINGM);BITMAP bkginfo;bkg.GetBitmap(&bkginfo);memdc.SelectObject(&bkg);RECT rect;GetWindowRect(&rect);dc.StretchBlt(0,0,rect.right-rect.left,rect.bottom-rect.top,&memdc,0,0,bkginfo.bmWidth,bk ginfo.bmHeight,SRCCOPY);}6.系统托盘实现在CPlayerDlg类中添加函数toTray(bool show)void CPlayerDlg::toTray(bool show){// TODO: Add your control notification handler code hereNOTIFYICONDATA pnid;pnid.cbSize=(DWORD)sizeof(NOT IFYICONDATA);pnid.hIcon=AfxGetApp()->LoadI con(IDR_MAINFRAME);strcpy(pnid.szTip,"MP3播放");pnid.hWnd=m_hWnd;pnid.uCallbackMessage=UM_SHOW WINDOW;pnid.uFlags=NIF_ICON|NIF_MESS AGE|NIF_TIP;pnid.uID=ID_TASKBARICON;pnid.uID=(UINT)m_hIcon;if(show){Shell_NotifyIcon(NIM_ADD,&pni d);ShowWindow(SW_HIDE);}else{Shell_NotifyIcon(NIM_DELETE,& pnid);ShowWindow(SW_SHOW);}}在构造函数中添加ON_MESSAGE(UM_SHOWWINDOW,OnNotif yIcon)到BEGIN_MESSAGE_MAP(CPlayerDlg, CDialog)和END_MESSAGE_MAP()之间添加函数voidCPlayerDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam){switch(lParam){case WM_LBUTTONDBLCLK:toTray(false);break;}}最后对按钮- 添加消息响应函数void CPlayerDlg::OnMin(){// TODO: Add your control notification handler code here toTray(true);}7.实现点击对话框拖动打开classwizard添加WM_LBUTTONDOWNvoidCPlayerDlg::OnLButtonDown(UINT nFlags, CPoint point){// TODO: Add your messagehandler code here and/or calldefaultPostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));CDialog::OnLButtonDown(nFlags, point);}8.初始化变量在构造函数中添加m_time = _T("");path = _T("");i=0;temp=0;nPos=0;play=0;file1=0;pause=0;j=0;flag=0;9.对?按钮添加消息响应函数void CPlayerDlg::OnAbout(){CAboutDlg dlg;dlg.DoModal();}10.对退出按钮添加消息响应函数void CPlayerDlg::OnExit(){exit(0);}11.对添加按钮添加消息响应函数void CPlayerDlg::OnOpen() {CFileDialogfile(TRUE,NULL,NULL,OFN_HIDEREAD ONLY,"MP3 Files (*.mp3)|*.mp3|AVI Files(*.avi)|*.avi|WAVFiles(*.wav)|*.wav|WMAFiles(*.wma)|*.wma");file.DoModal();m_Path=file.GetPathName();intnIndex=m_list.InsertString(-1,m_ Path);m_list.SetCurSel(j);j++;file1=1;}12.对播放按钮添加消息响应函数void CPlayerDlg::OnPlay(){if(play==0&&file1==1){m_ctrlSlider.SetRange(0,100);SetTimer(1,1000,NULL);m_mp3player.MCIOpen(m_Path);m_mp3player.MCIPlay();play=1;path=m_Path;UpdateData(FALSE);}}13.对暂停按钮添加消息响应函数void CPlayerDlg::OnPause(){if(play==1){KillTimer(1);m_mp3player.MCIPause();pause=1;}}14.对继续按钮添加消息响应函数void CPlayerDlg::OnResume() {if(play==1&&pause==1){SetTimer(1,1000,NULL);m_mp3player.MCIResume();}}15.对停止按钮添加消息响应函数void CPlayerDlg::OnStop(){if(play==1){m_mp3player.MCIStop();KillTimer(1);m_ctrlSlider.SetPos(0);// m_mp3player.MCISeekTo(0);m_mp3player.MCIClose();play=0;file1=0;i=0;view();UpdateData(FALSE);}}16.对上一首按钮添加消息响应函数void CPlayerDlg::OnPre(){int n=m_list.GetCurSel();if( play==1 && file1==1 && n-1>=0){CString p;KillTimer(1);m_list.GetText(n-1,p);m_Path=p;i=0;m_list.SetCurSel(n-1);OnStop();file1 = 1;play = 1;m_mp3player.MCIOpen(m_Path);m_mp3player.MCIPlay();path=m_Path;SetTimer(1,1000,NULL);}if(play==1 && file1==1 &&n-1<0){KillTimer(1);m_list.SetCurSel(j-1);CString p;m_list.GetText(j-1,p);m_Path=p;i=0;OnStop();file1 = 1;play = 1;m_mp3player.MCIOpen(m_Path);m_mp3player.MCIPlay();path=m_Path;SetTimer(1,1000,NULL);}}16.对下一首添加消息响应函数void CPlayerDlg::OnNext(){int n=m_list.GetCurSel();if( play==1 && file1==1 && n+1<j){CString p;KillTimer(1);m_list.GetText(n+1,p);m_Path=p;i=0;m_list.SetCurSel(n+1);OnStop();file1 = 1;play = 1;m_mp3player.MCIOpen(m_Path);m_mp3player.MCIPlay();path=m_Path;SetTimer(1,1000,NULL);}if(play==1 && file1==1 && n+1>=j) {n=0;KillTimer(1);m_list.SetCurSel(n);CString p;m_list.GetText(n,p);m_Path=p;i=0;OnStop();file1 = 1;play = 1;m_mp3player.MCIOpen(m_Path);m_mp3player.MCIPlay();path=m_Path;SetTimer(1,1000,NULL);}}17.添加定时器响应滑块的移动在classwizard中添加WM_TIMER消息编辑函数void CPlayerDlg::OnTimer(UINT nIDEvent){if(i<m_mp3player.m_dwLength){i++;temp=i*100/m_mp3player.m_dwLengt h;m_ctrlSlider.SetPos(temp);view();Invalidate(FALSE);}CDialog::OnTimer(nIDEvent);}其中view函数需另行添加在类CPlayerDlg中添加view函数void CPlayerDlg::view(){str.Format("%d",i);zhuanhuan(str);str1.Format("%ld",m_mp3player .m_dwLength);zhuanhuan(str1);m_time=str+'/'+str1;UpdateData(FALSE);}18.给DEL按钮添加消息响应函数void CPlayerDlg::OnDellist() {intnIndex=m_list.GetCurSel();if(nIndex!=LB_ERR){delete(CString*)m_list.GetItemDataPtr (nIndex);m_list.DeleteString(nIndex);UpdateData(FALSE);}}19用classwizard添加WM_HSCROLL水平滚动消息的处理函数void CPlayerDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar){if(pScrollBar->GetDlgCtrlID() ==IDC_SLIDER1&&play==1){KillTimer(1);nPos=m_ctrlSlider.GetPos();time=nPos*m_mp3player.m_dwLength /100;i=nPos*m_mp3player.m_dwLength/10 0;m_mp3player.MCISeekTo(time);m_mp3player.MCIPlay();SetTimer(1,1000,NULL);}}19.对话框资源选中列表框打开classwizard添加LBN_DBLCLK响应函数代码如下void CPlayerDlg::OnDblclkList() {intnIndex=m_list.GetCurSel();if(nIndex!=LB_ERR||play==1||f ile1==1){CString p;m_list.GetText(nIndex,p);m_Path=p;i=0;OnStop();m_mp3player.MCIOpen(m_Path);m_mp3player.MCIPlay();path=m_Path;SetTimer(1,1000,NULL);play=1;file1=1;}}20.在初始化时定义对话框的大小以及位置在OnInitDialog函数中添加MoveWindow(200,200,444,146);为List按钮添加消息响应函数void CPlayerDlg::OnListbutt() {if(flag==0){for(int i=146;i<=233;i++){Sleep(2);MoveWindow(200,200,444,i);Invalidate(FALSE);}flag=1;}else{for(int i=233;i>=146;i--){Sleep(2);MoveWindow(200,200,444,i);Invalidate(FALSE);}flag=0;}}5 测试与实现主界面打开列表添加列表添加列表项并播放上一首List最小化到托盘停止Del6 总结该程序基本完成了一个播放器需要的基本功能,能显示进度条能通过进度条的拖动到歌曲相应位置,但是不足之处也是很多,首先一些空间在刷过背景图后成了白色的块块影响美观,没有完成连续播放,随机播放,单曲循环等等,没有实现音量的变化,在时间的位置没有把秒转化为分钟:秒的样子,由于时间的原因从原先不会mci到现在懂得了点皮毛并作出了个播放器,我觉得我收获还是挺大的,通过这个程序以及这一周来的时间做的课程设计,我对对话框的编程又有了更深入的认识,明显比上次做计算器要来的熟练的多,希望以后通过程序的制作能提高我的编程能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java程序设计课程设计说明书简单音乐播放器起止日期:2011年12月6日至2012年1月4日学生姓名XXX班级软件工程093班学号09408300310 成绩指导教师计算机与通信学院2011年12 月28日目录一、绪论 (1)1.1 课题背景 (1)1.2 课程设计目的 (1)1.4 课程设计实验环境 (1)1.5 课程设计要求 (1)二、课程系统分析 (3)2.1 系统分析 (3)2.1 功能分析 (3)三、系统设计 (4)3.1 系统功能结构图 (4)3.2 模块功能设计 (4)3.2.1处理“添加”按钮 (4)3.2.2处理“播放”按钮 (4)3.2.3 处理“停止”按钮 (4)3.2.4 处理“单曲循环”按钮 (5)四、系统实现 (6)4.1 系统主界面的实现 (6)4.2 系统主要功能实现 (6)4.2.1系统主界面及关键代码: (6)4.2.2添加文件的界面和代码: (9)4.2.3 播放音乐的界面和代码: (11)4.2.4 单曲循环的界面和代码: (12)五、设计总结 (15)5.1 设计体会及评价 (15)参考文献 (16)致谢 (17)一、绪论1.1 课题背景随着社会电子音乐文件的与日俱增,作为现在最流行的音乐文件*.mp3,*.wav文件的数量和规模也在比以往的任何时候要多,不论是电台DJ需要使用方便而有效地管理自己所使用的音乐文件,还是个人。

在计算机日益普及的今天,若采用一套有效的音乐播放器。

将自己所收藏的大量的音乐文件能随时随地的播放,这将方便于众用户听音乐的需求。

通过使用本音乐播放器能为音乐爱好者带来意想不到的收获。

1.2 课程设计目的《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

1.4 课程设计实验环境程序运行在安装有windows操作系统的计算机上(台式机和笔记本),兼容windows 2K/XP/Vista/7计算机硬件要求:1.CPU:1G;2.内存:512M. ;3.显卡:256M显存;文件播放:需要安装有声卡、要求安装有语音库。

JA VA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。

1.5 课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。

要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JA VA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。

同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。

二、课程系统分析2.1 系统分析2.2.1程序界面布局设计(1) 创建一个对话框类,类名为music类。

(2) 向对话框中添加JSlider控件、JList控件以及按钮控件。

(3) 设置所添加的控件的属性。

系统界面的运行结果图如图2-1所示:图2-12.1 功能分析MP3播放器主要对常用Windows音频格式的文件实现播放控制:◆播放歌曲;◆单曲循环;◆停止播放;◆添加音乐文件;◆删除文件;◆实现音频播放的进度;◆修改音乐文件;三、系统设计3.1 系统功能结构图音乐文件播放器的功能结构图如图3-1所示:图3-13.2 模块功能设计3.2.1处理“添加”按钮单击“添加”按钮后,在setFileSelectionMode()函数中,首先对文件类型进行过滤,调用accept()函数打开对话框选择一个媒体文件,通过GetPathName()函数获取文件路径,通过GetFileName()函数获取文件名后,调用GetDlgItem()函数设置“暂停”按钮以及“停止”按钮不可用。

3.2.2处理“播放”按钮单击“播放”按钮后,在OnButtonPlay()函数中,通过调用MCIMP3类的MCIOpen()函数获取刚才选择的文件路径以及文件名,调用该类的MCIPlay()函数播放歌曲,此时调用DisplayInfo()函数在Static Text控件上显示“正在播放的歌曲是(文件名)”,进行歌曲的播放,然后利用GetDlgItem()函数设置“播放”按钮不可用。

3.2.3 处理“停止”按钮单击“停止”按钮后,在OnButtonStop()函数中,首先通过调用MCIMP3类的MCIPause()函数停止正在播放的歌曲,然后调用DisplayInfo()函数在Static Text控件上显示“停止播放歌曲(文件名)”,将停止正在播放歌曲,利用GetDlgItem()函数设置“停止”按钮不可用。

3.2.4 处理“单曲循环”按钮单击“单曲循环”按钮后在Applet类中调用newAudioClip()并将选择的音乐文件的文件地址和文件名以参数形式传给newAudioClip()中。

从面而实现单曲循环的功能。

四、系统实现4.1 系统主界面的实现界面是保证系统正常运行的一个重要因素,通过以上系统分析和功能分析系统的最终界面如图4-1所示:图4-14.2 系统主要功能实现4.2.1系统主界面及关键代码:下面为简单音乐播放器的主界面如图4-2所示:图4-2程序主界面简单音乐播放器主界面的代码如下:public JLabel shijian;private JSlider sldDiameter;//private JSlider sldYingliang;public AudioClip soumd1;public JButton playSound, loopSound, stopsound;public JButton tjian, shanc, baocun, duqu;public JPanel jp1, jp2, jp3, jp4;public JList jl;public Vector vector, mingcheng;boolean fo = false;JLabel jl1, jl2, sj1, sj2;JTextField jt1, jt2;JButton queding, xiugai;int zong = 0;int a = 0, b = 0, you = 0;int fenzhong, miaozhong;public music() {super("java简单音乐播放器");Container c = getContentPane();c.setLayout(new FlowLayout());mingcheng = new Vector();jp1 = new JPanel();shijian = new JLabel();jp1.add(shijian);c.add(jp1);playSound = new JButton("开始播放");loopSound = new JButton("单曲循环");stopsound = new JButton("停止播放");jp2 = new JPanel();jp2.add(playSound);jp2.add(loopSound);jp2.add(stopsound);c.add(jp2);jp4 = new JPanel();sj1 = new JLabel();sj2 = new JLabel();sldDiameter= new JSlider(SwingConstants.HORIZONTAL, 0, 100, 0);// sldYingliang=newJSlider(SwingConstants.VERTICAL,0,60,0);sldDiameter.setMajorTickSpacing(1);sldDiameter.setPaintTicks(true);jp4.add(sj1);jp4.add(sldDiameter);jp4.add(sj2);// jp4.add(sldYingliang);c.add(jp4);vector = new Vector();jl = new JList(mingcheng);jl.setVisibleRowCount(5);jl.setFixedCellHeight(40);jl.setFixedCellWidth(265);jl.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);c.add(new JScrollPane(jl));tjian = new JButton("添加");shanc = new JButton("删除");duqu = new JButton("读取");duqu.setVisible(false);baocun = new JButton("保存");baocun.setVisible(false);jp3 = new JPanel();jp3.add(tjian);jp3.add(shanc);jp3.add(baocun);jp3.add(duqu);c.add(jp3);try {String s = "c:\\music.txt";ObjectInputStream input = new ObjectInputStream( new FileInputStream(s));dizhi a1 = (dizhi) input.readObject();mingcheng = a1.b;vector = a1.a;jl.setListData(mingcheng);} catch (Exception e) {}4.2.2添加文件的界面和代码:添加文件的界面如图4-3和如图4-4所示:图4-3添加文件界面图4-4添加文件界面添加音乐文件的界面的主要代码如下:tjian.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent event) { JFileChooser fileChooser = new JFileChooser(); // 实例化文件选择器fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_D IRECTORIES); // 设置文件选择模式,此处为文件和目录均可fileChooser.setCurrentDirectory(new File(".")); // 设置文件选择器当前目录fileChooser.setFileFilter(newjavax.swing.filechooser.FileFilter() {public boolean accept(File file) { // 可接受的文件类型String name = file.getName().toLowerCase();returnname.endsWith(".wav")||name.endsWith(".au")||file.isDirec tory();}public String getDescription() { // 文件描述return"音乐文件(*.wav,*.au)";}});if (fileChooser.showOpenDialog(music.this) == JFileChooser.APPROVE_OPTION) { // 弹出文件选择器,并判断是否点击了打开按钮String fileName =fileChooser.getSelectedFile().getAbsolutePath(); // 得到选择文件或目录的绝对路径vector.add(fileName);StringBuffer buffer = daoxu(fileName);mingcheng.add(buffer);}}4.2.3 播放音乐的界面和代码:播放音乐的界面如图4-5所示:图4-5播放音乐界面播放音乐主要代码如下:playSound.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {if (jl.getSelectedIndex() >= 0) {String yy = (String)vector.get(jl.getSelectedIndex());try {if (soumd1 != null) {soumd1.stop();a = 0;b = 0;you = 0;}soumd1 = Applet.newAudioClip(newFile(yy).toURL());//给定 URL 处获取音频剪辑fo = true;String a = fen(yy);sj2.setText(a);soumd1.play();}catch (Exception e1){e1.printStackTrace();}} elseJOptionPane.showMessageDialog(null, "请选择音乐文件");}4.2.4 单曲循环的界面和代码:单曲循环的界面如图4-6所示:图4-6单曲循环播放界面单曲循环播放的主要代码如下:loopSound.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {if (jl.getSelectedIndex() >= 0) {if (soumd1 != null) {soumd1.stop();a = 0;b = 0;you = 0;}String yy = (String)vector.get(jl.getSelectedIndex());try {soumd1 = Applet.newAudioClip(newFile(yy).toURL());} catch (MalformedURLException e1) {e1.printStackTrace();}fo = true;String a = fen(yy);sj2.setText(a);soumd1.loop();} elseJOptionPane.showMessageDialog(null, "请选择音乐文件");}});五、设计总结5.1 设计体会及评价JA VA是目前最流行的软件开发语言之一,称为网络上的“世界语”。

相关文档
最新文档