ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:757.38KB ,
资源ID:6783054      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6783054.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件课程设计实验报告个人报告1.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

软件课程设计实验报告个人报告1.docx

1、软件课程设计实验报告个人报告1软件课程设计实验报告(个人报告)课 题: 音乐播放器设计 班 级: 成 员: 学 号: 指导老师: 课设评价: 课设成绩:一、需求分析 1)引言 3 2)预期功能 3 3)设计目标 4二、界面方案设计说明 1)拟选用的开发平台和工具介绍 4 2)系统框图 5 3)软件各功能模块划分 6 4)模块间的相互关系 8 5)开发计划 8三、详细设计说明1) 主界面轮廓设计及初始化 82) 界面外框和关闭最小化等的实现 103) 菜单添加歌曲设计 13 菜单界面设计:4)播放列表list的实现 13 播放列表的界面设计5) 播放的控制部分 14 播放按钮、进度条等的控制面板

2、设计:6) 歌名、歌词、目录显示的部分 16 歌词界面设计(含有全部显示和滚动两部分): 四、测试过程说明 1)测试用例说明 18 2)测试情况说明 20 3)测试经历与想法 .21五、功能模块使用说明 .22六、开发总结 241、需求分析1)引言 本课程软件课程设计,旨在运用所学课程中有关数据结构、操作系统、数据库系统知识来进行本课程设计,熟练掌握高级程序设计技术,加深对课程内容的理解、提高软件应用设计能力及编程和调试能力。同时加强学生的自我学习能力和团队协作能力,让同学学会面对问题,并学会独立去解决问题,也能触发学生的创新能力。 此次,我们班抽的任务是任选一门自己熟悉或擅长喜欢的语言设计一

3、个基于windows平台的音乐播放器软件,要能实现对音乐库的管理和基本播放功能。随着信息时代的到来以及网络的日益发展,音乐播放器软件随处可见,人人都在使用自己喜欢的播放应用软件。其中也不乏一些优秀的成品,如酷狗、天天动听、qq音乐播放器等。对于各色各样的播放器,用户心中都有自己的评价,如今我们作为它们的使用者,以用户的角度重新来设计一个音乐播放器,不仅要实现播放等最基本功能,最重要的是要提供一个良好的用户体验,即给使用者简洁,明了,方便,功能丰富的感受。这依赖于我们课堂知识基础、课下大量的资料查阅、自主学习思考,以及小组成员之间的讨论、纠正与创新。在我们参考了很多的播放器软件,查阅了很多jav

4、a的有关媒体播放器的知识后,我们才正式开始设计我们自己的播放器,并有了如下的成果。2)预期功能*软件基本要求1.有图形界面;2.提供基本播放功能:播放、暂停、快进、快退、停止;3.支持播放模式:单曲播放、单曲循环、顺序播放和随机播放;4.支持播放信息显示:歌曲名、播放时间;5.支持播放列表管理:歌曲增加、歌曲删除、歌曲播放次序调整。*可选要求1.支持歌词显示和同步播放;2.支持本地歌曲搜索和管理;3.均衡器管理:支持不同风格的音乐模式播放;4.自动记忆播放功能(程序关闭时能记忆当前播放的歌曲,重启后继续播放);5.提供更良好的操作界面;6.其他功能。3)设计目标 对于功能完成方面,力求在出色完

5、成所有预期基本功能的基础上,基本实现所有可选要求,并且努力创新出新的功能。 对于用户界面设计方面,力求简洁明了,做到即便对没有任何编程基础的人也能无障碍使用我们设计的播放器。 对于程序编写方面,力求用简单的语句实现更多复杂的功能,不重复,不缀余。 对于软件稳定方面,力求软件运行不出错,力求稳定无bug。2、总体方案设计说明1)开发平台和工具 经过小组商定,因为之前有接触过java,所以我们选用了java语言,而java语言,其本身相对于其他编程语言也有着非常大的优势,作为一门面向对象的语言,java具有很强的灵活性、模块化、透明性、可重用性强的优点。相对C+,java更加强大、健壮、安全,而且

6、又很简单,容易入门和掌握。个人在初次接触java之后就非常喜欢这门语言,之前也用java编写过爬虫带哦吗所以我们选用了以下的开发平台和工具开发平台Java Eclipse: Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。个人觉得用eclipse写java非常快捷方便,也很容易debug纠错。运行平台Jdk(Java Development Kit):java的运行环境。工具windows office 2013 :用于编写项目过程计划书、项目报告等。2)系统框图 本人在此次软件课设中主要负责界面设计和绘制

7、和课设报告的代码分析。个人认为,音乐播放器作为一个交互性较强的,着重于用户体验的一个应用程序软件,对于其界面设计的要求是比较高的,要力求简单完善,但又要功能强大简洁明了,让任何一个人都可以很快的用起来得心应手而又爱不释手,希望用户体验能有新奇和愉悦感。 这次的软件课设,本人负责界面设计,所以用到了java语言的swing和JMF,初次使用,学到了很多东西,觉得JMF非常强大,对Swing也长生了浓厚的兴趣。本人负责的部分在系统框图中显示如下:3)基本模块划分 1、界面整体框架划分 整个框架是用的java swing的Frame: public class MusicPlayer extends

8、 JFrame 由于panel的双缓冲性能,故选择了在frame里套上一个panel,然后再在panel 的基础上绘制组件,并实现对其划分模块: JPanel frame=new JPanel();/伪frame,实则是panel,因为panel有缓 冲,更有利于在其上画组件 frame.setLayout(new BorderLayout(); this.add(frame,BorderLayout.CENTER); 考虑到界面美化情况,选择了去除原JFrame的边框,自己绘制边框和关闭响应 this.setUndecorated(true);/去掉frame框架 加监听器使边框可以随鼠标移

9、动(原去边框后无此功能) this.addMouseListener(new MouseAdapter() this.addMouseMotionListener(new MouseMotionAdapter() 添加关闭按钮: JButton closeButton = new JButton(); closeButton.addActionListener(new ActionListener()/关闭操作 界面最小化到托盘的实现,需要调用java的systemTray类: SystemTray systemTray; systemTray = SystemTray.getSystemTr

10、ay(); /构建托盘实例 界面格局划分 JSplitPane jspp1= new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true) JSplitPane jspp2= new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,ctropanel,list); 2、歌名显示和添加菜单 labelfilepath = new JLabel(播放目录:); labelfilename = new JLabel(播放文件:); menubar = new JMenuBar(); menufile = new JMenu(打开

11、文件); menubar.add(menufile);3、播放控制界面 按钮组: JButton lastBttn=new JButton(上一曲); JButton nextBttn=new JButton(下一曲); JButton playBttn=new JButton(播放); JButton waitBttn=new JButton(暂停); JButton quickBttn=new JButton(快进); JButton slowBttn=new JButton(快退); JButton stopBttn=new JButton(停止); 各个button会设置相应的形状颜色

12、及背景图片,加上相应的监听器 播放进度条控制:jSlider = new JSlider(); 音量: (最终因响应的功能未实现而放弃) slider2=new JSlider(JSlider.HORIZONTAL,0,100,50); JLabel label=new JLabel(),/音量标签 label1=new JLabel(-), label2=new JLabel(+);4、播放列表界面 list = new List(); JSplitPane jspp2 =new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,ctropanel,list

13、);5、歌词显示界面 全部歌词显示界面: textArea = new JTextArea(); textArea.setFont(new Font(宋体,Font.ITALIC,15); 滚动歌词显示界面: lyricsJTextField=new JTextField(); lyricsJTextField.setFont(new Font(serif,Font.BOLD,20); 6、界面背景图片 背景图片重绘: public void paint(Graphics g) g.drawImage(image, 0, 0, this.getSize().width,this.getSize

14、().height, this); super.paint(g); 4)模块间的相互关系 监听器模块实现对鼠标的监听,当鼠标点击界面上设置的不同功能按键时,由监听器进入不同的功能模块,实现具体的功能。而鼠标点击的界面按键是由界面设计模块完成,同时功能模块中的歌词模块和播放列表管理模块的可视性也是由界面设计模块完成的。 总体而言,各个模块互相依赖,彼此支持,缺一不可。5)开发计划6-7周确定项目功能,分配任务8-11周个人根据个人任务学习,查阅资料12周设定基本框架和方案13周考试周不作安排14周对最初的模板进行讨论完善,完成期中报告15-16周各自开发16-17周集中开发18周各个模块调试、测

15、试,就现实的完成程度讨论优化及方案3、详细设计说明代码程序分析1)主界面轮廓设计及初始化private static final long serialVersionUID = 1L; private long time = 0; private int N = 0; private int memorytime = 0; private long jumpSecond = 5000000; private String lrc; private long lrctime; private long songtime; private int fileIndex = 0; boolean is

16、Stop = true;/ 控制播放线程 boolean hasStop = true;/ 播放线程状态 boolean isPause = false; boolean hasPause = false; String item1; String item2; String filepath;/ 播放文件目录 String filename;/ 播放文件名称 AudioInputStream audioInputStream;/ 音频文件流 AudioFormat audioFormat;/ 音频文件格式 private Clip clip;/ 接口:源数据行,可以写入音频数据 List l

17、ist;/ 文件列表 JTextArea textArea; JMenuBar menubar; JMenu menufile; JMenuItem menuopensong; JPanel panelmain; Container container; JPanel paneright; MenuItem menu_add; MenuItem menu_del; JTextField textField; JTextField lyricsJTextField; Container container2; PopupMenu popupMenu; JLabel labelfilepath;/

18、 播放目录显示标签 JLabel labelfilename;/ 播放文件显示标签 static int testtimethread=0; TimeThread timeThread; private Timer timer; private JLabel startPoint; private JLabel endPoint; JSlider jSlider; JSlider slider2; int xOld=0; int yOld=0;SystemTray systemTray; 2)界面外框和关闭最小化等的实现 this.setLayout(new BorderLayout(); t

19、his.setTitle(音乐播放器); this.setSize(800, 600); this.setUndecorated(true);/去掉frame框架 this.setVisible(true); /最下面也有一行次代码,最好是保留那一行的 ImageIcon icon =new ImageIcon(Imageplayer.jpg); this.setIconImage(icon.getImage(); /设置应用程序的图标显示 /添加监听器使窗体可以移动 this.addMouseListener(new MouseAdapter() public void mousePress

20、ed(MouseEvent e) xOld = e.getX(); /得到鼠标的位置 yOld = e.getY(); ); this.addMouseMotionListener(new MouseMotionAdapter() public void mouseDragged(MouseEvent e) int xOnScreen = e.getXOnScreen(); int yOnScreen = e.getYOnScreen(); int xx = xOnScreen - xOld; int yy = yOnScreen - yOld; MusicPlayer.this.setLoc

21、ation(xx, yy); ); /去掉了框体,所以要自己加一个关闭按钮,此关闭按钮实则是实现最小化到托盘 JButton closeButton = new JButton(); closeButton.setIcon(new ImageIcon(Imageclose.jpg); /设置托盘图标 closeButton.setPreferredSize(new java.awt.Dimension(30,27); closeButton.setContentAreaFilled(false); closeButton.setBorder(null); closeButton.addActi

22、onListener(new ActionListener() public void actionPerformed(ActionEvent e) dispose(); /如果点击按钮则关闭窗体但不关闭应用程序 );/托盘的右键菜单的添加和实现 PopupMenu pop = new PopupMenu(); / 构造一个右键弹出式菜单 MenuItem show = new MenuItem(打开程序(s); MenuItem exit = new MenuItem(退出程序(x); pop.add(show); pop.add(exit); ImageIcon image = new I

23、mageIcon(Imageplayer.jpg);/设置托盘图标 TrayIcon trayIcon =new TrayIcon(image.getImage(),MusicPlayer!,pop);/设置托盘的图标,延时显示内容,添加右键菜单 trayIcon.setImageAutoSize(true); /显示图标 trayIcon.isImageAutoSize(); systemTray = SystemTray.getSystemTray(); /构建托盘实例 try systemTray.add(trayIcon); catch(AWTException ex) System.

24、out.println(系统托盘不可用); trayIcon.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent e) if(e.getClickCount() = 2)/双击托盘窗口再现 setVisible(true); / systemTray.remove(trayIcon); / 从系统的托盘实例中移除托盘图标 ); show.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) /

25、systemTray.remove(trayIcon); / 从系统的托盘实例中移除托盘图标 setVisible(true); / 显示窗口 ); exit.addActionListener(new ActionListener() / 点击“退出演示”菜单后退出程序 public void actionPerformed(ActionEvent e) FileWriter fw1 = null;/退出时保存当前播放信息 try fw1 = new FileWriter(D:MusicPlayer_log.txt); catch (IOException e1) e1.printStack

26、Trace(); /set route BufferedWriter bw1 = new BufferedWriter(fw1); try bw1.write(list_number=); String n=String.valueOf(N); bw1.write(n); bw1.newLine(); bw1.write(filepath=); bw1.write(filepath); bw1.newLine(); bw1.write(song=); bw1.write(list.getSelectedItem(); bw1.newLine(); bw1.write(time=); String playtime=String.valueOf(toMillisecond(clip.getMicrosecondPosition(); bw1.write(playtime); bw1.flush(); fw1.flush(); catch (IOException e2) e2.printStackTrace(); FileWriter fw2 = null; try fw2 = new FileWriter(D:list_log.txt); catch (IOException e3) e3.printStac

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1