音乐播放器Java课程设计报告.docx
《音乐播放器Java课程设计报告.docx》由会员分享,可在线阅读,更多相关《音乐播放器Java课程设计报告.docx(12页珍藏版)》请在冰豆网上搜索。
音乐播放器Java课程设计报告
课程设计报告
课程设计题目:
java音乐播放器
学生姓名:
专业:
XXXXXXXXXXXXX
班级:
指导教师:
20XX年X月X日
一、课程设计目的
1、编程设计音乐播放软件,使之实现音乐播放的功能。
2、培养学生用程序解决实际问题的能力和兴趣。
3、加深java中对多媒体编程的应用。
二、课程设计的要求
利用学到的编程知识和编程技巧,要求学生:
1、系统设计要能完成题目所要求的功能,设计的软件可以进行简单的播放及其他基本功能。
2、编程简练,可用,尽可能的使系统的功能更加完善和全面
3、说明书、流程图要清楚。
三、课程设计内容
1、课程设计的题目及简介
音乐播放软件要求:
有图形界面,能播放MP3歌曲,有播放列表,前一首、后一首等常用播放软件功能。
2、设计说明
主要运用多媒体编程、图形界面、数组及循环进行设计,从而实现简单的音乐播放。
publicMyMusicPlayer():
实现窗口的成员方法
publicvoidrun():
实现改变歌曲的播放状态的成员方法
publicAudioCliploadSound(Stringfilename):
实现对声音的加载
publicvoidmouseClicked(MouseEvente):
实现对按钮的监听
publicvoiditemStateChanged(ItemEventarg0):
返回一个AudioClip对象
3、程序流程图
4、程序清单
importjava.awt.*;
importjavax.swing.*;
importjava.applet.*;
importjava.awt.event.*;
import.*;
publicclassMyMusicPlayerextendsThreadimplementsMouseListener,ItemListener{
JFrameMainFrame=newJFrame("MyMusicPlayer");//定义主窗体
JLabelsongname=newJLabel();//用标签显示状态
JButtonlast=newJButton();
JButtonplay=newJButton();
JButtonnext=newJButton();
JButtonloop=newJButton();//定义上一曲,播放,下一曲,循环四个按钮
JLabellist=newJLabel("播放列表");
Listsonglist=newList();//显示歌曲列表
AudioClip[]song=newAudioClip[10];//将音频文件放在数组中
AudioClipplaysong;//当前选定播放的音频文件
String[]name={"黄小琥-顺其自然.wav","陈奕迅-张氏情歌.wav","黄小琥_没那么简单.wav",
"戚薇-如果爱忘了.wav","郭采洁-狠狠哭.wav","test.wav"};
//将所有文件名存放在字符串数组name中
Stringplayname;//当前选定播放的音频名
intj=0;//记录当前选定播放的是哪首歌曲,默认为第一首
booleanplaybutton=true;//记录播放状态,默认为暂停播放
booleanloopbutton=false;//记录循环状态,默认为没有循环
Threadthread=newThread("pl");
staticMyMusicPlayerYu;
publicMyMusicPlayer(){
MainFrame.setLayout(null);
MainFrame.setBounds(300,50,310,500);
MainFrame.setVisible(true);
MainFrame.setDefaultCloseOperation(3);
MainFrame.add(songname);
Fontsname=newFont("斜体",Font.ITALIC,18);
songname.setFont(sname);//设置显示状态的字体为斜体
songname.setText("我的音乐播放器");
songname.setBounds(10,10,300,40);
last.setBounds(10,70,50,40);
play.setBounds(70,70,50,40);//设置四个功能键位置和大小
next.setBounds(130,70,50,40);
loop.setBounds(190,70,50,40);
last.setIcon(newImageIcon("1.png"));
play.setIcon(newImageIcon("2.png"));
next.setIcon(newImageIcon("3.png"));
loop.setIcon(newImageIcon("4.png"));//设置四个功能键的图片
last.addMouseListener(this);
play.addMouseListener(this);
next.addMouseListener(this);
loop.addMouseListener(this);//添加按键鼠标监听器
MainFrame.add(last);
MainFrame.add(play);
MainFrame.add(next);
MainFrame.add(loop);
list.setBounds(10,120,100,30);
Fontlis=newFont("宋",Font.BOLD,15);
list.setFont(lis);//显示“播放列表”
MainFrame.add(list);
songlist.setBounds(10,150,250,300);
songlist.setBackground(Color.GREEN);//设置播放列表的背景色为绿色
songlist.setVisible(true);
songlist.addItemListener((ItemListener)this);//添加列表监听器
MainFrame.add(songlist);
for(inti=0;i{
song[i]=loadSound(name[i]);//逐个获取音频文件
songlist.add(name[i]);//将歌曲名添加到播放列表
}
playsong=song[0];
}
publicstaticvoidmain(String[]args){
Yu=newMyMusicPlayer();
Yu.start();
}
publicvoidmouseClicked(MouseEvente){
JButtonbtn=(JButton)e.getSource();
playsong.stop();
if(btn==play)
{if(playbutton==false)
playbutton=true;
else
playbutton=false;//当按下play后改变播放状态
}
else
if(btn==last)
{j-=1;//当按下last后将上一曲选定
if(j<0)
j=name.length-1;//若之前选定为第一首,则跳到最后一首
playbutton=true;
loopbutton=false;
}
else
if(btn==next)
{j+=1;//当按下next后将下一曲选定
if(j>=name.length)
j=0;//若之前选定为最后一首,则跳到第一首
playbutton=true;
loopbutton=false;
}
else
if(btn==loop)
{if(loopbutton==false)
{
loopbutton=true;
playbutton=true;
}
else
{//按下loop后,改变循环状态和播放状态
loopbutton=false;
playbutton=false;
}
}
if(playbutton==true)
Yu.run();
else
{
songname.setText("暂停播放:
"+playname);//暂停播放歌曲
play.setIcon(newImageIcon("2.png"));
}
}
publicvoidmouseEntered(MouseEventarg0){
//TODOAuto-generatedmethodstub
}
publicvoidmouseExited(MouseEventarg0){
//TODOAuto-generatedmethodstub
}
publicvoidmousePressed(MouseEventarg0){
//TODOAuto-generatedmethodstub
}
publicvoidmouseReleased(MouseEventarg0){
//TODOAuto-generatedmethodstub
}
publicvoiditemStateChanged(ItemEventarg0){
Stringstr=songlist.getSelectedItem();
playsong.stop();
for(inti=0;iif(str==name[i])
{
j=i;
break;
}
Yu.run();
}
publicvoidrun(){
playsong=song[j];//播放状态为播放时
playsong.play();//播放选定歌曲
playname=name[j];
if(loopbutton==true)
{
playsong.loop();//循环播放选定歌曲
songname.setText("循环播放:
"+playname);
}
else
songname.setText("正在播放:
"+playname);
songlist.select(j);//播放列表中选定播放歌曲项目
play.setIcon(newImageIcon("5.png"));
}
publicAudioCliploadSound(Stringfilename){//返回一个AudioClip对象
URLurl=null;
try{
url=newURL("file:
"+filename);
}catch(MalformedURLExceptione){}
returnApplet.newAudioClip(url);
}
}
5、程序运行结果
四、课程设计总结
经过这几天的Java课程设计,让我知道了做课程设计的一般方法,通过各种努力终于完成了设计要求.这次课程设计基本上含盖了大学一年学习到的Java语言知识点,课设题目要求不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。
这次课设使我了解我编程思想和编程技巧,也再一次熟悉了开发程序的过程,包括构思、设计、编写、调试、修订。
做课程设计不仅让我修补了以前学习的漏洞,也让我跟激发了对程序开发的兴趣和自信。
创新思维至关重要,这应该可以借鉴在老师的教学工作上,这不仅让我们写出精简的代码,也有助于开发出高效的程序。
五、参考文献
《Java程序设计实用教程》张永常主编