MP3音乐播放器课程设计.docx
- 文档编号:17995998
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:19
- 大小:103.76KB
MP3音乐播放器课程设计.docx
《MP3音乐播放器课程设计.docx》由会员分享,可在线阅读,更多相关《MP3音乐播放器课程设计.docx(19页珍藏版)》请在冰点文库上搜索。
MP3音乐播放器课程设计
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操作系统的计算机上(台式机和笔记本),兼容windows2K/XP/Vista/7
计算机硬件要求:
1.CPU:
1G;
2.内存:
512M.;
3.显卡:
256M显存;
文件播放:
需要安装有声卡、要求安装有语音库。
JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。
1.5课程设计要求
按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。
同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。
二、课程系统分析
2.1系统分析
2.2.1程序界面布局设计
(1)创建一个对话框类,类名为music类。
(2)向对话框中添加JSlider控件、JList控件以及按钮控件。
(3)设置所添加的控件的属性。
系统界面的运行结果图如图2-1所示:
图2-1
2.1功能分析
MP3播放器主要对常用Windows音频格式的文件实现播放控制:
◆播放歌曲;
◆单曲循环;
◆停止播放;
◆添加音乐文件;
◆删除文件;
◆实现音频播放的进度;
◆修改音乐文件;
三、系统设计
3.1系统功能结构图
音乐文件播放器的功能结构图如图3-1所示:
图3-1
3.2模块功能设计
3.2.1处理“添加”按钮
单击“添加”按钮后,在setFileSelectionMode()函数中,首先对文件类型进行过滤,调用accept()函数打开对话框选择一个媒体文件,通过GetPathName()函数获取文件路径,通过GetFileName()函数获取文件名后,调用GetDlgItem()函数设置“暂停”按钮以及“停止”按钮不可用。
3.2.2处理“播放”按钮
单击“播放”按钮后,在OnButtonPlay()函数中,通过调用MCIMP3类的MCIOpen()函数获取刚才选择的文件路径以及文件名,调用该类的MCIPlay()函数播放歌曲,此时调用DisplayInfo()函数在StaticText控件上显示“正在播放的歌曲是(文件名)”,进行歌曲的播放,然后利用GetDlgItem()函数设置“播放”按钮不可用。
3.2.3处理“停止”按钮
单击“停止”按钮后,在OnButtonStop()函数中,首先通过调用MCIMP3类的MCIPause()函数停止正在播放的歌曲,然后调用DisplayInfo()函数在StaticText控件上显示“停止播放歌曲(文件名)”,将停止正在播放歌曲,利用GetDlgItem()函数设置“停止”按钮不可用。
3.2.4处理“单曲循环”按钮
单击“单曲循环”按钮后在Applet类中调用newAudioClip()并将选择的音乐文件的文件地址和文件名以参数形式传给newAudioClip()中。
从面而实现单曲循环的功能。
四、系统实现
4.1系统主界面的实现
界面是保证系统正常运行的一个重要因素,通过以上系统分析和功能分析系统的最终界面如图4-1所示:
图4-1
4.2系统主要功能实现
4.2.1系统主界面及关键代码:
下面为简单音乐播放器的主界面如图4-2所示:
图4-2程序主界面
简单音乐播放器主界面的代码如下:
publicJLabelshijian;
privateJSlidersldDiameter;
//privateJSlidersldYingliang;
publicAudioClipsoumd1;
publicJButtonplaySound,loopSound,stopsound;
publicJButtontjian,shanc,baocun,duqu;
publicJPaneljp1,jp2,jp3,jp4;
publicJListjl;
publicVectorvector,mingcheng;
booleanfo=false;
JLabeljl1,jl2,sj1,sj2;
JTextFieldjt1,jt2;
JButtonqueding,xiugai;
intzong=0;
inta=0,b=0,you=0;
intfenzhong,miaozhong;
publicmusic(){
super("java简单音乐播放器");
Containerc=getContentPane();
c.setLayout(newFlowLayout());
mingcheng=newVector();
jp1=newJPanel();
shijian=newJLabel();
jp1.add(shijian);
c.add(jp1);
playSound=newJButton("开始播放");
loopSound=newJButton("单曲循环");
stopsound=newJButton("停止播放");
jp2=newJPanel();
jp2.add(playSound);
jp2.add(loopSound);
jp2.add(stopsound);
c.add(jp2);
jp4=newJPanel();
sj1=newJLabel();
sj2=newJLabel();
sldDiameter=newJSlider(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=newVector();
jl=newJList(mingcheng);
jl.setVisibleRowCount(5);
jl.setFixedCellHeight(40);
jl.setFixedCellWidth(265);
jl.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
c.add(newJScrollPane(jl));
tjian=newJButton("添加");
shanc=newJButton("删除");
duqu=newJButton("读取");
duqu.setVisible(false);
baocun=newJButton("保存");
baocun.setVisible(false);
jp3=newJPanel();
jp3.add(tjian);
jp3.add(shanc);
jp3.add(baocun);
jp3.add(duqu);
c.add(jp3);
try{
Strings="c:
\\music.txt";
ObjectInputStreaminput=newObjectInputStream(newFileInputStream(s));
dizhia1=(dizhi)input.readObject();
mingcheng=a1.b;
vector=a1.a;
jl.setListData(mingcheng);
}catch(Exceptione){
}
4.2.2添加文件的界面和代码:
添加文件的界面如图4-3和如图4-4所示:
图4-3添加文件界面
图4-4添加文件界面
添加音乐文件的界面的主要代码如下:
tjian.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevent){
JFileChooserfileChooser=newJFileChooser();//实例化文件选择器
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//设置文件选择模式,此处为文件和目录均可
fileChooser.setCurrentDirectory(newFile("."));//设置文件选择器当前目录
fileChooser.setFileFilter(newjavax.swing.filechooser.FileFilter(){
publicbooleanaccept(Filefile){//可接受的文件类型
Stringname=file.getName().toLowerCase();
returnname.endsWith(".wav")||name.endsWith(".au")||file.isDirectory();
}
publicStringgetDescription(){//文件描述
return"音乐文件(*.wav,*.au)";
}
});
if(fileChooser.showOpenDialog(music.this)==JFileChooser.APPROVE_OPTION){//弹出文件选择器,并判断是否点击了打开按钮
StringfileName=fileChooser.getSelectedFile().getAbsolutePath();//得到选择文件或目录的绝对路径
vector.add(fileName);
StringBufferbuffer=daoxu(fileName);
mingcheng.add(buffer);
}
}
4.2.3播放音乐的界面和代码:
播放音乐的界面如图4-5所示:
图4-5播放音乐界面
播放音乐主要代码如下:
playSound.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(jl.getSelectedIndex()>=0){
Stringyy=(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;
Stringa=fen(yy);
sj2.setText(a);
soumd1.play();
}
catch(Exceptione1)
{
e1.printStackTrace();
}
}else
JOptionPane.showMessageDialog(null,"请选择音乐文件");
}
4.2.4单曲循环的界面和代码:
单曲循环的界面如图4-6所示:
图4-6单曲循环播放界面
单曲循环播放的主要代码如下:
loopSound.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
if(jl.getSelectedIndex()>=0){
if(soumd1!
=null){
soumd1.stop();
a=0;
b=0;
you=0;
}
Stringyy=(String)vector.get(jl.getSelectedIndex());
try{
soumd1=Applet.newAudioClip(newFile(yy).toURL());
}catch(MalformedURLExceptione1){
e1.printStackTrace();
}
fo=true;
Stringa=fen(yy);
sj2.setText(a);
soumd1.loop();
}else
JOptionPane.showMessageDialog(null,"请选择音乐文件");
}
});
五、设计总结
5.1设计体会及评价
JAVA是目前最流行的软件开发语言之一,称为网络上的“世界语”。
JAVA适合开发基于多媒体、与平台无关、用面向对象的方法进行的基于Internet、Intranet、Extranet的Applet和应用程序。
它具有简单高效、面向对象、不依赖于机器结构的特点,支持多线程、分布和并发机制。
用JAVA开发的应用软件在可移植性、健壮性、安全性等方面大大优于已存在的其他编程语言。
JAVA是一门包含多种知识的学科,提供了丰富的类库,能最大限度地利用网络。
JAVA可广泛用于面向对象的事件描述、处理面向对象的企业型的应用开发,还应用于Internet系统管理、Web页面设计、Internet可视化软件开发等方面。
在学习的过程中我学到了许多以前没有学到的概念和新鲜资讯。
运用这些知识可以完成老师交给我的课程设计任务。
这次老师让我们自己拟订题目,给了我们很大的想象空间。
我选了一个打字游戏的课程设计题目。
在接到这个课程设计任务的时候,我茫然了,不知道应该作些什么,从哪里出发。
回到寝室我静静的思考,整理了一下思绪,又在同学的帮助下,我有了系统的规划。
我首先去图书馆查找资料,找了一些JAVA课程设计相关的书籍;然后我又上网查找了有关的图片和说明。
最后,在老师的指导和帮助下,在加上自己的努力,一份成功的JAVA课程设计终于完成了。
JAVA课程设计的制作过程虽然是艰难而辛苦的,但是我却从中感到了快乐与欣慰。
快乐是因为我以前对于JAVA的知识可以说是孤陋寡闻,但是通过这次课程设计我使自己的知识更加的丰富了,加大了自己的知识面。
让自己的实力扩大了。
所以我感到非常的快乐。
欣慰是因为看着自己做出的课程设计得到了老师的认同,取得了成功。
这次课程设计的整体过程是充实而满足的。
JAVA这门课程对于我们来说是很重要的,很感谢学校为我们开设了这样一门课程,丰富了我们的知识范围,促使我们的知识多样化发展,使我们的阅历更加坚实。
让我们在以后的工作中有所应用。
参考文献
[1]求是科技编著,Delphi7程序设计与开发技术,北京:
人民邮电出版社,2004年第1版,2004年11月北京第一次印刷;
[2]明日科技:
李文立,刘强,梁冰编著,Delphi数据库系统开发案例精选,北京:
人民邮电出版社,2006年5月第一版,2006年5月北京第一次印刷;
[3]求是科技:
周新会,周金根编著,Delphi通用模块及典型系统开发实例导航,北京:
人民邮电出版社,2006年2月第一版,2006年2月北京第1次印刷;
[4]郑阿奇,Oracle实用教程,北京:
电子工业出版社,2007年11月第5次印刷;
致谢
在课程设计即将完成之际,回顾紧张但又充实的课程设计和开发过程,本人在此向所有关心我及帮助我的老师和同学们致以最真诚的感谢。
在将近4周的课程设计中,所收获的不仅仅是愈加丰厚的知识,更重要的是在阅读、实践中所培养的思维方式和表达能力。
很庆幸这些年来我遇到了许多恩师益友,无论在学习上、生活上还是工作上都给予了我无私的帮助和热心的照顾。
对他们的感激之情难以用语言量度,谨以我最朴实的话语致以最真挚的谢意。
在这里首先要感谢我的指导老师——专业老师。
他认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。
他无论在理论上还是在实践中,都给与我很大的帮助,从确定课程、制定计划、系统分析、系统设计、总体设计和详细设计到系统调试,让我懂得了整个系统开发的全过程同时也加深了我对JAVA程序设计以及编程的理解,熟悉了音乐播放器知识的加深,使我在思考问题、分析问题、解决问题和综合运用专业知识的能力上大大提高。
这对于我以后的工作和学习都有一种巨大的帮助,在此感谢他耐心的辅导。
在撰写课程设计说明书的阶段,老师几次审阅我们的课程设计电子稿,提出了许多宝贵意见,没有他的指导,我就不能较好的完成课题设计的任务,除了敬佩老师们的专业水平外,他们严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力也对我影响深远。
谨此向满老师表示衷心的感谢和崇高的敬意。
同时我也感谢我的同学在这次课程设计中的支持和帮助。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MP3 音乐 播放 课程设计