课程设计汇报课程设计题目: java音乐播放器学生姓名:专业: XXXXXXXXXXXXX班级:指导老师:20XX年X月X日一、课程设计目标1.编程设计音乐播放软件, 使之实现音乐播放功效。
2.培养学生用程序处理实际问题能力和爱好。
3.加深java中对多媒体编程应用。
二、课程设计要求利用学到编程知识和编程技巧, 要求学生:1.系统设计要能完成题目所要求功效, 设计软件能够进行简单播放及其它基础功效。
2、编程简练, 可用, 尽可能使系统功效愈加完善和全方面3.说明书、步骤图要清楚。
三、课程设计内容1.课程设计题目及介绍音乐播放软件要求:有图形界面, 能播放MP3歌曲, 有播放列表, 前一首、后一首等常见播放软件功效。
2.设计说明关键利用多媒体编程、图形界面、数组及循环进行设计, 从而实现简单音乐播放。
public MyMusicPlayer(): 实现窗口组员方法publi c void run(): 实现改变歌曲播放状态组员方法public AudioClip loadSound(String filename): 实现对声音加载public void mouseClicked(MouseEvent e): 实现对按钮监听public void itemStateChanged(ItemEvent arg0): 返回一个AudioClip对象3.程序步骤图4.程序清单import java.awt.*;import javax.swing.*; import java.applet.*; import java.awt.event.*; import .*;public class MyMusicPlayer extends Thread implements MouseListener,ItemListener{JFrame MainFrame=new JFrame("MyMusicPlayer"); //定义主窗体JLabel songname=new JLabel(); //用标签显示状态JButton last=new JButton();JButton play=new JButton();JButton next=new JButton();JButton loop=new JButton(); //定义上一曲,播放,下一曲,循环四个按钮JLabel list=new JLabel("播放列表");List songlist=new List(); //显示歌曲列表AudioClip[] song=new AudioClip[10]; //将音频文件放在数组中AudioClip playsong; //目前选定播放音频文件String[] name={"黄小琥 - 顺其自然.wav","陈奕迅-张氏情歌.wav","黄小琥 _没那么简单.wav","戚薇-假如爱忘了.wav","郭采洁 - 狠狠哭.wav","test.wav"};//将全部文件名存放在字符串数组name中String playname; //目前选定播放音频名int j=0; //统计目前选定播放是哪首歌曲, 默认为第一首boolean playbutton=true; //统计播放状态, 默认为暂停播放boolean loopbutton=false; //统计循环状态, 默认为没有循环Thread thread=new Thread("pl");static MyMusicPlayer Yu;public MyMusicPlayer(){MainFrame.setLayout(null);MainFrame.setBounds(300,50,310,500);MainFrame.setVisible(true);MainFrame.setDefaultCloseOperation(3);MainFrame.add(songname);Font sname=new Font("斜体",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(new ImageIcon("1.png"));play.setIcon(new ImageIcon("2.png"));next.setIcon(new ImageIcon("3.png"));loop.setIcon(new ImageIcon("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);Font lis=new Font("宋",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(int i=0;i<name.length;i++){song[i]=loadSound(name[i]); //逐一获取音频文件songlist.add(name[i]); //将歌曲名添加到播放列表}playsong=song[0];}public static void main(String[] args){Yu=new MyMusicPlayer();Yu.start();}public void mouseClicked(MouseEvent e) {JButton btn=(JButton)e.getSource();playsong.stop();if(btn==play){ if(playbutton==false)playbutton=true;elseplaybutton=false; //当按下play后改变播放状态}elseif(btn==last){ j-=1; //当按下last 后将上一曲选定if(j<0)j=name.length-1; //若之前选定为第一首, 则跳到最终一首playbutton=true;loopbutton=false;}elseif(btn==next){ j+=1; //当按下next后将下一曲选定if(j>=name.length)j=0; //若之前选定为最终一首, 则跳到第一首playbutton=true;loopbutton=false;}elseif(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(new ImageIcon("2.png"));}}public void mouseEntered(MouseEvent arg0) {// TODO Auto-generated method stub}public void mouseExited(MouseEvent arg0) {// TODO Auto-generated method stub}public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub}public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub}public void itemStateChanged(ItemEvent arg0) { String str=songlist.getSelectedItem();playsong.stop();for(int i=0;i<name.length;i++)if(str==name[i]){j=i;break;}Yu.run();}public void run(){playsong=song[j]; //播放状态为播放时playsong.play(); //播放选定歌曲playname=name[j];if(loopbutton==true){playsong.loop(); //循环播放选定歌曲songname.setText("循环播放: "+playname);}elsesongname.setText("正在播放: "+playname);songlist.select(j); //播放列表中选定播放歌曲项目play.setIcon(new ImageIcon("5.png"));}public AudioClip loadSound(String filename){ //返回一个AudioClip对象URL url=null;try{url=new URL("file:"+filename);}catch(MalformedURLException e){ }return Applet.newAudioClip(url);}}5.程序运行结果四、课程设计总结经过这几天Java课程设计, 让我知道了做课程设计通常方法, 经过多种努力最终完成了设计要求.这次课程设计基础上含盖了大学十二个月学习到Java语言知识点, 课设题目要求不仅要求对书本知识有较深刻了解, 同时要求程序设计者有较强思维和动手能力。