最新MP3音乐播放器课程设计.doc
精品资料MP3音乐播放器课程设计.Java程序设计课程设计说明书简单音乐播放器起止日期: 2011年12月6日 至 2012年 1月 4日学生姓名XXX班级软件工程093班学号09408300310成绩指导教师计算机与通信学院2011年 12 月28日目录 一、绪论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显存;文件播放:需要安装有声卡、要求安装有语音库。JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。1.5 课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。二、课程系统分析2.1 系统分析2.2.1程序界面布局设计(1) 创建一个对话框类,类名为music类。(2) 向对话框中添加JSlider控件、JList控件以及按钮控件。(3) 设置所添加的控件的属性。系统界面的运行结果图如图2-1所示:图2-12.1 功能分析MP3播放器主要对常用Windows音频格式的文件实现播放控制:u 播放歌曲;u 单曲循环;u 停止播放;u 添加音乐文件;u 删除文件;u 实现音频播放的进度;u 修改音乐文件;三、系统设计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=new JSlider(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_DIRECTORIES); / 设置文件选择模式,此处为文件和目录均可 fileChooser.setCurrentDirectory(new File("."); / 设置文件选择器当前目录 fileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() public boolean accept(File file) / 可接受的文件类型 String name = file.getName().toLowerCase(); return name.endsWith(".wav")|name.endsWith(".au")|file.isDirectory(); 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(new File(yy).toURL();/给定 URL 处获取音频剪辑 fo = true; String a = fen(yy); sj2.setText(a); soumd1.play(); catch (Exception e1) e1.printStackTrace(); else JOptionPane.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(new File(yy).toURL(); catch (MalformedURLException e1) e1.printStackTrace(); fo = true; String a = 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 求是科技编著,Delphi 7程序设计与开发技术,北京: 人民邮电出版社, 2004年第1版,2004年11月北京第一次印刷;2 明日科技:李文立, 刘强,梁冰编著,Delphi 数据库系统开发案例精选,北京: 人民邮电出版社, 2006年5月第一版,2006年5月北京第一次印刷;3 求是科技:周新会,周金根编著,Delphi通用模块及典型系统开发实例导航, 北京: 人民邮电出版社, 2006年2月第一版,2006年2月北京第1次印刷;4 郑阿奇,Oracle实用教程, 北京: 电子工业出版社, 2007年11月第5次印刷;致 谢在课程设计即将完成之际,回顾紧张但又充实的课程设计和开发过程,本人在此向所有关心我及帮助我的老师和同学们致以最真诚的感谢。在将近4周的课程设计中,所收获的不仅仅是愈加丰厚的知识,更重要的是在阅读、实践中所培养的思维方式和表达能力。很庆幸这些年来我遇到了许多恩师益友,无论在学习上、生活上还是工作上都给予了我无私的帮助和热心的照顾。对他们的感激之情难以用语言量度,谨以我最朴实的话语致以最真挚的谢意。在这里首先要感谢我的指导老师专业老师。他认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,从确定课程、制定计划、系统分析、系统设计、总体设计和详细设计到系统调试,让我懂得了整个系统开发的全过程同时也加深了我对JAVA程序设计以及编程的理解,熟悉了音乐播放器知识的加深,使我在思考问题、分析问题、解决问题和综合运用专业知识的能力上大大提高。这对于我以后的工作和学习都有一种巨大的帮助,在此感谢他耐心的辅导。在撰写课程设计说明书的阶段,老师几次审阅我们的课程设计电子稿,提出了许多宝贵意见,没有他的指导,我就不能较好的完成课题设计的任务,除了敬佩老师们的专业水平外,他们严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力也对我影响深远。谨此向满老师表示衷心的感谢和崇高的敬意。同时我也感谢我的同学在这次课程设计中的支持和帮助。