基于java的音乐播放器的设计源代码+实验报告

基于java的音乐播放器的设计源代码+实验报告
基于java的音乐播放器的设计源代码+实验报告

主类M U S I C P L A Y E R类:import java.util.*;

public class MusicPlayer implements ActionListener, Serializable,ControllerListener

{

private static final long serialVersionUID = 1L;

private JFrame frame = null;

private JPanel controlPanel = null;

private JButton btnPlay = null;

private JButton btnPre = null;

private JButton btnNext = null;

private JScrollPane listPane = null;

private JList list = null;

private DefaultListModel listModel = null;

private JMenuBar menubar = null;

private JMenu menuFile = null, menuAbout = null, menuMode = null;

private JMenuItem itemOpen, itemOpens, itemExit, itemAbout;

private JRadioButtonMenuItem itemSingle, itemSequence ,itemRandom;

private ListItem currentItem = null;

private static Player player = null;

private boolean isPause = false;

private int mode;

private int currentIndex;

private ImageIcon iconPlay = new ImageIcon("d:\\1.jpg");

private ImageIcon iconPre = new ImageIcon("d:\\3.jpg");

private ImageIcon iconNext = new ImageIcon("d:\\2.jpg");

private ImageIcon iconPause = new ImageIcon("d:\\4.jpg");

public static void main(String[] args)

{

new MusicPlayer();

}

public MusicPlayer()

{

init();

}

public void init()

{

frame = new JFrame();

frame.setTitle("音乐播放器");

frame.setSize(400, 300);

frame.setResizable(false);

frame.setLocationRelativeTo(null);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

menubar = new JMenuBar();

menuFile = new JMenu("文件");

menuAbout = new JMenu("关于");

menuMode = new JMenu("播放模式");

itemOpen = new JMenuItem("添加文件");

itemOpens = new JMenuItem("添加文件夹");

itemExit = new JMenuItem("退出");

itemAbout = new JMenuItem("关于");

itemOpen.addActionListener(this);

itemOpens.addActionListener(this);

itemExit.addActionListener(this);

itemAbout.addActionListener(this);

itemSequence = new JRadioButtonMenuItem("顺序播放"); itemSequence.setSelected(true);

itemSingle = new JRadioButtonMenuItem("单曲循环"); itemSequence.addActionListener(this);

itemRandom = new JRadioButtonMenuItem("随机播放"); itemRandom.addActionListener(this);

itemSingle.addActionListener(this);

ButtonGroup bg = new ButtonGroup();

bg.add(itemRandom);

bg.add(itemSequence);

bg.add(itemSingle);

menuFile.add(itemOpen);

menuFile.add(itemOpens);

menuFile.add(itemExit);

menuAbout.add(itemAbout);

menuMode.add(itemSequence);

menuMode.add(itemSingle);

menuMode.add(itemRandom);

menubar.add(menuFile);

menubar.add(menuAbout);

menubar.add(menuMode);

frame.setJMenuBar(menubar);

frame.setLayout(new BorderLayout());

controlPanel = new JPanel();

controlPanel.setLayout(new FlowLayout());

btnPlay = new JButton(iconPlay);

btnPre = new JButton(iconPre);

btnNext = new JButton(iconNext);

btnPlay.addActionListener(this);

btnPre.addActionListener(this);

btnNext.addActionListener(this);

controlPanel.add(btnPre);

controlPanel.add(btnPlay);

controlPanel.add(btnNext);

listPane = new JScrollPane();

listModel = load();

list = new JList(listModel);

if (list.getSelectedIndex() == -1 && listModel.size() > 0)

{

currentItem = (ListItem) listModel.get(0);

list.setSelectedIndex(0);

currentIndex=0;

}

listPane.getViewport().add(list);

list.addMouseListener(new MouseAdapter()

{

public void mouseClicked(MouseEvent e)

{

if (e.getClickCount() == 2)

{

if(player!=null)

{

player.close();

btnPlay.setIcon(iconPlay);

}

currentIndex = list.locationToIndex(e.getPoint());

currentItem = (ListItem) listModel.get(currentIndex);

list.setSelectedIndex(currentIndex);

play();

}

}

});

frame.setLayout(new BorderLayout());

frame.add(controlPanel, BorderLayout.NORTH);

frame.add(listPane, BorderLayout.CENTER);

frame.setVisible(true);

};

public void actionPerformed(ActionEvent e)

{

if (e.getSource() == itemOpen)

{// add files

JFileChooser jfc = new JFileChooser();

FileNameExtensionFilter filter = new FileNameExtensionFilter("音乐文件", "mp3", "wav");

jfc.setFileFilter(filter);

jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);

jfc.setMultiSelectionEnabled(true);

if (jfc.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION)

{

File[] files = jfc.getSelectedFiles();

for (File f : files)

{

ListItem item = new ListItem(f.getName(), f.getAbsolutePath());

listModel.addElement(item);

}

}

}

else if (e.getSource() == itemOpens)

{// add files in a directory

JFileChooser jfc = new JFileChooser();

jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

if (jfc.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION)

{

File directory = jfc.getSelectedFile();

{

public boolean accept(File f)

{

if (f.getName().toLowerCase().endsWith(".mp3")|| f.getName().toLowerCase().endsWith(".wav"))

return true;

return false;

}

});

for (File file : files)

{

ListItem item = new ListItem(file.getName(), file.getAbsolutePath());

listModel.addElement(item);

}

save(listModel);

}

}

else if (e.getSource() == itemExit)

{

System.exit(0);

}

else if (e.getSource() == itemAbout)

{

JOptionPane.showMessageDialog(frame, "作者:陆鑫");

}

else if (e.getSource() == btnPlay)

{

// play or pause

play();

}

else if (e.getSource() == btnPre)

{

pre();

}

else if (e.getSource() == btnNext)

{// next music

next();

}

else if (e.getSource() == itemSequence)

{

mode = 0;

}

else if (e.getSource() == itemSingle)

{

mode = 1;

}

else if (e.getSource() == itemRandom)

{

mode = 2;

}

}

// play control

/**

* 播放

*/

public void play()

{

if (btnPlay.getIcon() == iconPlay)

{

if (isPause)

{

player.start();

isPause = false;

}

else

{

try

{

player = Manager.createPlayer(new MediaLocator("file:"+ currentItem.getPath()));

player.addControllerListener(this); // 提取媒体内容

player.prefetch();

}

catch (NoPlayerException e1)

{

e1.printStackTrace();

}

catch (IOException e1)

{

e1.printStackTrace();

}

}

btnPlay.setIcon(iconPause);

}

else

{

player.stop();

isPause = true;

btnPlay.setIcon(iconPlay);

}

}

public void next()

{

if (currentIndex == listModel.getSize() - 1)

{

currentIndex = 0;

}

else

{

currentIndex++;

}

currentItem = (ListItem) listModel.get(currentIndex);

list.setSelectedIndex(currentIndex);

Point p = list.indexToLocation(currentIndex);

JScrollBar jScrollBar = listPane.getVerticalScrollBar();// 获得垂直转动条jScrollBar.setValue(p.y);// 设置垂直转动条位置

btnPlay.setIcon(iconPlay);

if (player != null)

player.close();

isPause = false;

play();

}

public void rand()

{

list.setSelectedIndex((int)(Math.random()%(listModel.getSize()-1)));

Point p=list.indexToLocation((int)(Math.random()%(listModel.getSize()-1)));

JScrollBar jScrollBar = listPane.getVerticalScrollBar();

jScrollBar.setValue(p.y);

btnPlay.setIcon(iconPlay);

if (player != null)

player.close();

isPause = false;

play();

}

public void pre()

{

if (currentIndex == 0)

{

currentIndex = listModel.getSize() - 1;

}

else

{

currentIndex--;

}

currentItem = (ListItem) listModel.get(currentIndex);

list.setSelectedIndex(currentIndex);

Point p = list.indexToLocation(currentIndex);

JScrollBar jScrollBar = listPane.getVerticalScrollBar();// 获得垂直转动条jScrollBar.setValue(p.y);// 设置垂直转动条位置

btnPlay.setIcon(iconPlay);

if (player != null)

{

player.close();

}

isPause = false;

play();

}

// end play control

public DefaultListModel load()

{

File file = new File("list.lst");

DefaultListModel dlm = new DefaultListModel();

if (file.exists())

{

try

{

ObjectInputStream ois = new ObjectInputStream(

new FileInputStream(file));

Integer size = (Integer) ois.readObject();

if (size != 0)

{

for (int i = 0; i < size; i++)

{

ListItem item = (ListItem) ois.readObject();

dlm.addElement(item);

}

}

ois.close();

return dlm;

}

catch (FileNotFoundException e)

{

e.printStackTrace();

}

catch (IOException e)

{

e.printStackTrace();

}

catch (ClassNotFoundException e)

{

e.printStackTrace();

}

}

return dlm;

}

public void save(DefaultListModel dlm)

{

try

{

ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("list.lst")));

Integer size = dlm.getSize();

oos.writeObject(size);

for (int i = 0; i < size; i++)

{

ListItem item = (ListItem) dlm.get(i);

oos.writeObject(item);

}

oos.close();

}

catch (Exception e)

{

e.printStackTrace();

}

}

public void controllerUpdate(ControllerEvent e)

{

if (e instanceof EndOfMediaEvent)

{

if (mode == 0)

{// 顺序播放

next();

}

else if (mode == 1)

{ // 单曲循环

player.setMediaTime(new Time(0));

player.start();

}

else if (mode == 2)

{

rand();

}

return;

}

// 当提取媒体的内容结束

if (e instanceof PrefetchCompleteEvent)

{

player.start();

return;

}

}

}

LISTITEM类

public class ListItem implements Serializable

{

private static final long serialVersionUID = 1L;

private String name;

private String path;

public ListItem()

{}

public ListItem(String name, String path)

{

https://www.360docs.net/doc/c816787867.html, = name;

this.path = path;

}

public String getName()

{

return name;

}

public void setName(String name)

{

https://www.360docs.net/doc/c816787867.html, = name;

}

public String getPath()

{

return path;

}

public void setPath(String path)

{

this.path = path;

}

public String toString()

{

return name;

}

}

基于java的音乐播放器的设计

摘要:在信息,技术高速发展的今天,多媒体技术也越来越受到人们的重视。文章对目前使用较多的音乐播放器作出较详细的比较。通过阅读多张文献,分析了一些音乐播放器的功能并考虑了怎样能实现支持更多格式的音乐文件,怎样能满足使用者对播放器的需求。本文主要介绍了一个基于Java Applet来实现的音乐播放器的设计。并对系统开发中涉及到的关键技术作了探讨,简要分析介绍了Java技术和 Applet的工作原理,最后说明系统需要实现的功能。

关键词:java;Applet;音乐播放器;

前言

近年来,听音乐已成为人们生活的一部分,与此同时,音乐播放器以其平易近人的价格也日趋普及,这大大丰富了业余生活也缓解了工作压力,但尚有诸多不足之处有待改进日常生活中,我们在听音时,常感手动操作甚是麻烦且想寻找某个音频文件须从头到尾逐个查看,这样费时费力很是不便。音乐播放器的实现方法,采用口述音乐文件名的方式即可播放指定歌曲文件,避免了繁琐的查找,亦使其更加人性化,实现了播放器的全自动语音控制。我将来要采用java Applet的多媒体技术,设计出一个基于java Applet的音乐播放器。

现在电脑上的音乐播放器百花齐放,以Winamp,Foobar2000,千千静听,酷狗和酷我音乐盒最流行。播放器最重要的参数当属支持的格式了,即使只图个响,也需要有丰富的格式作为后盾。在此方面,千千静听支持多种音频格式,除了常见的MP3,WMA 等,也支持APE,FLAC等无损压缩格式,它一共支持三十多种音频格式,是一个比较全能的播放器。Winamp也支持非常多的格式,但对APE格式的支持需要安装对应插件;除音频格式外,Winamp还支持一些常见的视频格式,这个功能能为用户带来一些方便。Foobar2000支持的格式数量也差不多,但是对APE的支持仍然需要安装插件。不过Foobar2000有一个特色功能,它支持直接读取压缩包里的音乐文件,从电骡上下载的APE 完整碟通常都是打包的,如果用Foobar2000的这个功能就可以不解压直接听歌了。

相比之下,酷我音乐盒支持的格式就比较单一了,无论是网上搜索还是本地播放歌曲,都仅支持MP3和WMA种格式。酷狗的表现则稍微好点,除了支持MP3和WMA 之外,还支持APE和FLAC格式。而酷我音乐盒,则支持在线MV视频的播放。在本文中我利用java语言设计的音乐播放器的功能跟千千静听,酷狗和酷我音乐盒,Winamp,Foobar2000的功能差不多,不过利用java设计的音乐播放器支持的音频文件格式比它们

丰富一点。如:WAP,AIFF,MIDI,AU,RMF等跨平台功能比较强。

1 Java 技术

Java技术已经成为当今Internet应用开发的核心与主流技术。这一方面是因为java 语言具有面向对象,可移植性,强壮性与安全性等优良特征,另一方面也由于java技术对各个层次的分布式应用(包括电器设备的嵌入式计算,桌面计算与企业级计算)都提供了全面系统的方法与技术。因此,目前java已经从单纯的程序设计语言发展成为支撑Internet计算的大技术体系,进入了发展与应用的高级阶段。

1.1java语言

对于都数程序设计语言,其程序运行要么采用编译执行,要么采用解释执行的方式。而java语言的特殊之处在于,程序运行既要经过编译又要进行解释,如图1-1所示。首先,java程序由编译器进行编译,产生了一种中间代码,称为java字节码(java bytecodes)。字节码是java虚拟机的代码,是与平台无关的中性代码,因此不能在各种计算机平台上直接运行,必须在JVM上运行。Java解释器是JVM的实现,它把字节码转换为底层平台的机器码,使Java程序最终得以运行。无论是Application还是嵌入式在浏览器中的Applet,都需要通过解释器才能运行。

图1-1 Java 语言的运行

1.2 Java的特征

Java是一种”简单”(simple),面向对象(object oriented),分布式(distributed),解释性(interpreted),健壮(orbust),安全(secure),体系结构中立(architecture neutral),可移植性(portable),高性能(high performance),多线程(multithreaded),和动态(dynamic)“的编程语言。

1)简单性:Java语言语法和语义都比较单纯,,容易学习和使用。

2)面向对象:作为一种面向对象的编程语言,Java不仅最为“纯洁”,同时,它对面向对象方法的支持最为全面。另外,Java通过抽象类和接口(interface)支持面向的多态性要

求,既一个对外接口,多种内部实现。

3)分布式特征:Java实现两种层次上的分布。(1)数据分布支持:通过java的URL类,Java 程序可以访问网络撒谎那个的各类信息资源。访问方式完全类似于本地文件系统。(2)操作分布支持:java通过嵌在WWW页面中的Applet(小应用程序)将计算从服务器分布至客户机。Applet由WWW浏览器在客户端执行,从而避免了网络拥挤,提高了系统效率。

4)java的解释性:运行Java程序需要解释器。程序被编译为成为字节代码的Java虚拟机代码。字节代码与机器无关,可以在任何有Java解释器的机器上运行。

5)健壮性:Java提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。

6)安全性:在发分布式环境中,安全性是一个十分重要的问题。Java在语言和运行环境中引入了多级安全措施,其采用的主要安全机制有:

(1)内存分配及布局由Java运行系统规定。

(2)运行系统执行基于数字签名技术的代码认证,字节码验证与代码访问权限控制的。

7)体系结构中立:Java语言的设计不是针对某种具体平台结构的。

8)可移植性:Java是迄今为止对可移植性支持最佳的编程语言。Java的最大特点是“一次编程,处处运行”。

9)高性能:Java语言虽然采取字节码解释运行方式,但由于字节码与机器码十分接近,使得字节码到机器码的转换十分快捷。

10)多线性:线程是比进程更小,更为经济的并发执行单位,它与进程的主要差异在于它不拥有单独的资源,而是与其他线程共享所属进程的资源。

11)动态性:Java的动态性是其面向对象设计的延伸。

2 Java Applet概念

Applet(小应用程序)是Java与Web相结合而引入的一种重要的Java应用形式,它不仅使Web页具有动画,声音,图像和其他特殊效果,更重要的是可以使Web页能够与用户动态进行交互,接收用户的输入,然后根据用户的输入作出不同的反应。它是能够嵌入到HTML页面中,并能够在浏览器中运行的Java类。Applet自身不能运行,必须嵌入在其他应用程序(例如 Web 浏览器或Java Appletviewer)中运行。Applet类提供了从制定的URL获取图像和声音的方法,使Applet可以很方便地实现多媒体功能。当图像数据通过网络下载时,由于受网络带宽等因素的限制,用户在浏览器中看到的一般是渐渐增长的图像显示过程。获取指定URL上的声音数据,返回一个类型为AudioClip的对象,通过该对象可以实现声音演播。

2.1 Applet 类

生成 Applet要创建Applet类的子类,一个Applet的运行为框架由Applet类来决定的。Applet类提供了从指定的URL获取图像和声音的方法,使Applet可以很方便地实现多媒体功能的。

要编写Applet小应用程序,就必须继承Applet类,并覆盖其中必要的方法。Applet

类为applet提供了基本的框架结构是applet和其运行环境之间的标准接口。Web浏览器能够自动调用下列方法来控制applet小应用程序的生成和运行:

○1init方法○2Start 方法○3stop 方法○4destroy 方法

3 设计本系统要用到的Java关键技术

3.1在Applet中播放声音的方法和步骤

在Java.Applet包中的Applet类和AudioClip接口提供了播放声音的基本支持。以前计算机存储声音文件的格式有许多,目前Java只支持一种声音文件格式有.au,.mid,.wav等。对于其他格式的文件,可以用相应地工具软件将它们转换为.au 或.mid等Java支持的文件。在Applet中播放声音文件有两种方法:

(1)在Java的API中,Applet类提供了一个方法play(),它可以直接根据URL地址来播放声音。这个方法指定如下:

Public void play(URL url);

Public void play(URL url,string soundFile);

在第一种方法的定义中,参数url是保存声音文件的绝对URL地址,即统一资源定位,它指定Web网上的一个声音文件;在第二种方法定义中,参数URL是保存声音文件的基地址,而参数soundFile是声音文件的文件名。如果声音文件与Applet的HTML文件在相同的目录下,则可以通过使用getCodeBase()方法来获得该声音文件的基地址。如果Applet 本身的URL地址为“http//https://www.360docs.net/doc/c816787867.html,/pro/”,则语句:

Play(gatCodeBase(),“space.au”);

等同于语句:

Play(“http//https://www.360docs.net/doc/c816787867.html,/pro/”,“space.au”);

在程序编写过程中,若使用第一种方法定义,则将程序由一个服务器转移到另一服务器上或从一个目录转移到另一个目录下时,必须改变源代码中的URL地址:若使用第二种方法定义,即使用getCodeBase()方法来定位资源文件,则将程序由一个服务器转移到另一个服务器或从一个目录转移到另一个目录下时,不必改变源代码中的URL地址,而只需将声音文件与播放他的Java文件放在同一目录下即可。

Play()方法只能进行简单的播放,只能一次敬爱那个声音文件播放完,没有停止和连续播放的功能,所以,一般编写播放声音的程序时不采用此方法。

(2)利用Java中的AudioClip类对象播放声音文件。AudioClip类提供了两种获取声音数据的方法,定义如下:

AudioClip getAudioClip(URL url);

AudioClip getAudioClip(URL url,String soundFile);

它们的参数含义与以上相同。使用时可按如下步骤。

○1)声明一个AudioClip类的对象,如:

AudioClip audio;

○2)使用getAudioClip()方法为AudioClip类的对象获得句柄,如:

aud=getAudioClip(getCodeBase(),“space.au”);

或一次完成,如:

AudioClip aud=getAudioClip(getCodeBase(),“space.au”);

或:

AudioClip aud=getAudioClip(“HTTP//https://www.360docs.net/doc/c816787867.html,/pro/”,“space.au”

使用这种方法创建声音播放程序文件的一般步骤如下:

○1创建一个AudioClip对象。

○2装入声音文件到AudioClip对象。

○3一次播放或者不停地循环播放声音。

○4停止播放。

Java.applet.AudioClip类提供了3个方法实现对声音文件播放的控制,它们分别是play(),loop()和stop()。在这个设计过程中使用了java.applet.AudioClip类中的play()方法播放一个载入的声音文件;使用loop()方法循环地播放该声音文件,并且使用stop()方法来停止播放这个声音文件。

方法star()和stop()是Applet类中定义的方法,该程序继承了Applet类,并重新定义了这两个方法,这一过程称做方法的覆盖。这两个方法是由操作系统自动调用的。当程序启动时两个方法,star()方法由操作系统自动调用,star()方法在运行时通过AudioClip对象aud调用loop()方法,实现对声音的循环播放。当程序停止运行时,Applet 类中的stop()方法被自动调用,stop()方法运行时通过AudioClip对象aud调用AudioClip中的stop()方法来终止声音文件的播放。

3.2创建播放器的图形用户界面所需的控件

3.2.1菜单栏与菜单

在程序中创建菜单是最常用图形的用户界面之一。Java语言中,与菜单相关类有5个:JMenuBar,JMenuItem,JCheckBoxMenuItem和JRadioButtonMenuItem。

实现菜单的过程比较复杂,主要下面三步:

(1)创建菜单栏,并将它设计到某个容器中。创建菜单栏需要利用JMenuBar类,该类只有一个默认构造方法

(2)创建菜单条,并将它们添加到菜单栏中。创建菜单条需要利用JMenu类,该类有多种构造方法,其中最常用的是JMenu(String s)。

(3)创建菜单项,并将它们添加到菜单条中。创建菜单项一般需要利用JMenuItem类,

该类有多种构造方法,其中最常用的是JMenuItem(String text)。

3.2.2按钮与标签

1)按钮

创建按钮需要利用JButton类,JButton类中常用的方法有:

public JButton() //创建一个没有标记的空按钮

public JButton(Icon icon) //创建一个标有指定图标的按钮

public JButton(String text) //创建一个标有指定文字的按钮

public JButton(String text ,Icon icon)

//创建一个标有指定文字和图表的按钮

2)标签

标签与按钮相同,标签也可以显示一串文字或图像。创建标签需要利用JLabel类。JLabel类中常用的构造方法有:

public JLabel()

//创建一个空标签

public JLabel(Icon image)

//创建具有指定图标的标签

public JLabel(Icon image,int horizontalAlignment)

//创建具有指定图标和水平对齐方式的标签

public JLabel(String text)

//创建具有指定文字的标签

public JLabel(String text,int horizontalAlignment)

//创建具有指定文字和水平对齐方式的标签

public JLabel(String text,Icon icon,int horizontalAlignment)

//创建具有指定文字,图标和水平对齐方式的标签

3.2.3列表框

列表也允许用户从中进行选择。创建列表需要利用JList类,JList类中常用的构造方法有:

public JList()

//创建一个列表,列表中的选项为空

public JList(Object[] listData)

//创建一个列表,列表中的选项由参数listData指定

结论

本文介绍了基于java applet音乐播放器的关键技术。并对Applet的基本原理与设计方法,对Appplet实现的多媒体功能。我将要设计的播放器,使用Swing组件生成播放器的菜单栏,利用JButton类创建按钮,JLabel类创建标签,JList类创建列表框等方法实现播放器的基本功能。

参考文献:

[1]刘慧宁,那盟.Java程序设计[M].北京:机械工业出版社,2005,10:309-312.

[2]朱喜福,赵敏,夏齐霄,等.java程序设计[M].北京:人民邮电出版社,2005,2:272-290.

[3]Y.Daniel Liang 着,马海军,景丽等译.java编程原理与实践[M].北京:清华大学出版社2005,8:367-643.

[4]徐明浩着,武转海,译.java编程基础应用与实例[M].北京:人民邮电出版社,2005,10:342-347.

[6]王祖析.基于java技术的网络教学互动系统的构建[J].学术探讨,2009:74-78.

[7]汤庸主编,冯至圣,申建芳等.java 程序设计与实践[J].北京:冶金工业出社,2003,1:208-212.

[8] 马义德 ,周炜超 ,文芳 ,李柏年,李庚 . 基于SPCE061A 的声控 mp3播放器设计[J]. 电子设计,2009:217-301.

[9] 周华中,李继凯.基于J2ME 流媒体播放器的模型设计[J].科技创新导报,2009:15-18.

[10]春水东流. 不让超级旋风自动关联QQ音乐播放器[J]. 电脑迷,2009,(7).

大学java课程设计实验报告_计算器

JAVA课程设计报告 组员信息: 第(二)组 计算器的实现问题 问题描述:制作一个计算器 基本要求:要求实现类似Windows操作系统里面的标准计算器。 在此基础上实现部分科学性的功能。 测试数据:分别对加、减、乘、除和sin、cos、tan函数进行测试 算法思想:使用String定义的数组a[25]对每个按钮进行按钮赋值,创建一个Panel进行字符和数字的存放,调用 addActionListener()对各个时间进行监听。调用 系统库函数对数值进行运算。 模块划分:1、主函数main()创建一个计算器。 2、void actionPerformed(ActionEvent e)对鼠标 点击的事件进行响应以及在文本框中的显示。 3、各Buuton对应的功能: “开方”:对输入数字开方 “平方”:对输入数字平方

“getResult()”:对四则运算进行分别运算操 作 “backspace”:取消上一次的操作 “CE”:取消上一次运算的操作 “C”:清空作用 “sin”:对输入数据进行sin运算 “cos”:对输入数据进行cos运算 “tan”:对输入数据进行tan运算 “+/-”:对输入的数据取反 “+”,“-”,“*”,“/”:对数据进行四则 运算 源程序: package hechongwei; import https://www.360docs.net/doc/c816787867.html,ng.String; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; import https://www.360docs.net/doc/c816787867.html,ng.Math; class Calculator extends JFrame implements ActionListener

音乐播放器的详细设计

音乐播放器详细设计 1.引言 随着社会的快速发展,现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,音乐成了我们生活工作中的一个重要的部分。而3G时代的到来,手机移动应用越来越普遍。此文档就是为了能更好地设计出一个基于android系统的音乐播放器而编写的。 1.1 编写目的 为软件的开发者能更好的理解和明确软件开发的详细过程,安排项目与进度、组织软件开发与测试,撰写本文档。本文档供项目组成员,软件开发人员参考。1.2项目背景 本项目由李雪梅、杨挺等人提出,由本组成员联合开发,实现播放现今流行的音乐MP3等文本格式。 该软件是基于Android系统的音乐播放软件,并能够与其他音乐播放软件兼容。 1.3 参考资料 [1] 重庆大学出版社《软件工程》“软件计划与可行性分析” [2] 靳岩、姚尚明人民邮电出版社《Android开发入门与实践》 [3] 可行性分析 [4] 《音乐播放器需求分析书》 [5] 《音乐播放器总体设计说明书》 1.4项目开发计划 实施计划:

阶段名称负责人 需求分析杨挺、李雪梅 总体设计李雪梅、杨挺 详细设计李雪梅、杨挺 软件测试李雪梅、杨挺 在技术方面,编程知识比较缺乏,对有些与项目相关的软件 不熟悉,需进行人员的技术培训(自学为主),技术难点是数据库的构架和软件功能的设计。 2. 总体设计 2.1 项目目的 本项目的目的是开发一个可以播放主流的音乐文本格式的播放器。设计的主要实现功能是播放MP3等格式的音乐文件,并且能控制播放,暂停,停止,音量控制,选择上一曲,选择下一曲,更改皮肤,歌曲列表文件的管理操作,在线播放,读取 存储卡播放等多种播放控制,界面简明,操作简单。 软件系统检测到错误行为时,报告错误,并提示处理操作。 2.2 软件运行环境 硬件:Android操作系统手机 系统软件:Android 2.2 -- 4.0版本 支撑软件:Eclipse 7.5 、ADT 1.5 2.3 需求概述

音乐播放器程序源代码及注释

音乐播放器程序源代码及注释: #include #define uchar unsigned char #define uint unsigned int sbit duan=P2^6; sbit key1=P3^2;//按key1可切换花样 sbit key2=P3^3;//按key2可切换歌曲 sbit fm=P2^4;//蜂鸣器连续的IO口 sbit P30=P3^0;//矩阵键盘的一列 uchar code huayang1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe, 0xfd,0xfb,0xf7,0xef,0xdf,0xbf};//花样1 uchar code huayang2[]={0x7f,0xfe,0xbf,0xfd,0xdf,0xfb,0xef,0xf7, 0xef,0xfb,0xdf,0xfd,0xbf,0xfe};//花样2 uchar code huayang3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x0, 0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; char code huayang4[]={ 0x55,0xaa,0xcc,0x33,0x99,0x66,0x0f,0xf0}; uchar count1;//花样标志 uchar count2;//歌曲标志 uchar timeh,timel,i; //编程规则:字节高位是简谱,低位是持续时间, //代表多少个十六分音符 //1-7代表中央C调,8-E代表高八度,0代表停顿

单片机课程设计报告简易音乐播放器

第一章前言 伴随着科技的发展和时代的进步,人们对生活质量的要求也越来越高,由以前简单的追求温饱和物质财富转向更高层面的精神追求!而这一切催生了智能仪器的发展,音乐则是人们娱乐生活的重要组成部分,目前市场上出现了许许多多的音乐播放器,而人们对播放器的功能需求也越来越广泛,本文将设计一个基于单片机的音乐播放器,通过对其全面的介绍与分析,让大家了解音乐播放器的原理! 第二章: 简易音乐播放器的功能和原理说明 音乐播放器,可以通过单片机板子上的数字按键对音乐播放的曲目进行控制,并且通过LED灯将播放的音乐加以区分,在播放音乐的同时点亮LED灯,让人知道现在正在播放的音乐曲目,从而实现简单的音乐播放功能! 表1 需求分析 功能说明:这次设计是依据单片机技术原理,通过硬件电路设计以及软件的编译而设计的一个简单的音乐播放器,可以通过按键选择播放四首歌曲(歌曲自选,只要将想要播放的歌曲的乐谱写入程序中即可)同时点亮相应的LED灯,并用它来指示当前播放的歌曲序列,只能实现简单的音乐播放功能。 原理说明:这个音乐播放器主要有晶振电路,复位电路,LED电路,按键电路以及扬声器组成。它利用单片机产生乐曲音符,再把乐曲音符翻译成计算机音乐语言,接着用单片机进行信息处理,再通过蜂鸣器或喇叭放出音乐。音乐的产生主要是通过单片机的I/O口输出高低不同的脉冲信号来控制扬声器发音。通常利用单片机的内部定时器0,工作在方式1下,再改变计数初值TH0和TL0来产生不同频率。当控制歌曲按键按下时,按照预先存放在单片机中的程序,就

会自动判断键值,然后启动计数器,按照程序产生一定频率的脉冲,接着通过uln2003芯片驱动扬声器,播放出乐曲。该硬件电路中用P3.0,P3.1,P3.2,P3.3控制四个按键,“0”,“1”,“2”,“3”分别控制四首音乐。P1.0,P1.1,P1.2,P1.3控制四个LED灯,它们分别对应四个按键,用来显示正在播放的歌曲,并用P2.3 来控制扬声器,电路为12MHz晶振频率工作,起振电路中C1 和C2为22pf。 第三章:系统硬件电路设计 1:硬件体系结构设计 该简易音乐播放器主要有单片机核心芯片89C52,LED发光二极管,扬声器,晶振电路,按键电路,复位电路组成,通过芯片引脚输出定时器产生的各种固定频率的方波信号,然后在经由扬声器产生各种频率的声音。另外,该方案使用的是单片机板子的内部振荡电路,89C52芯片的X1,X2引脚外接石英晶体。它的系统组成如图所示。 (1)晶振电路部分晶振的作用是给电路提供工作信号脉冲的,其实就是单片机的工作速度。本次设计选用12M晶振,则单片机的工作速度就是每秒12M。与此同时,也要注意单片机的工作频率范围。 (2)复位电路部分当系统出现问题时可以重置系统,解决一些问题 (3)LED显示部分显示系统在各种不同条件下的状态 (4)89C52芯片整个设计的核心,接收和处理信号及程序 (5)按键电路部分作为系统的输入

Java课程设计实验报告

Java课程设计实验报告 导语:日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。以下是小编为大家整理分享的Java课程设计实验报告,欢迎阅读参考。 1、加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习web应用开发及今后从事专业工作打下基础。 2、使用本学期学习的Java SE技术完成多功能日历GUI 程序的设计,使之具有如下基本功能:一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。 3、在完成基本功能的基础上发挥自己的想象力与创造力,使程序凸显出与众不同的特点与功能,形成本小组的特性色。 1、问题描述准确、规范。 2、程序结构合理,调试数据准确、有代表性、。 3、界面布局整齐,人机交互方便。 4、输出结果正确。 5、正确撰写实验报告。 编写一个GUI程序实现日历的功能。一年日历用12页

显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期以及当前农 历,可以为每页日历选择背景图片。可以实现显示时钟,时钟能进行整点报 时。可以实现备忘记事功能,能在每天添加、修改、删除记事等操作。 1、在上机实验前,小组成员进行选题讨论,确定小组感兴趣而又伸缩性强的题目多功能日历。 2、在第一次上机实验时讨论分工,分工明确之后,分头合作进行。 3、各成员完成自己的任务后,最后进行统筹合并,以及程序最后的优化。 4、根据实验结果,写出合肥工业大学实验报告。实验报告应当包括:实验内容,程序流程图,类结构,程序清单,运行结果,以及通过上机取得的经验。 5、详细的上机实验步骤见任务分工及程序设计进度表。 经过小组成员的共同努力,最终我们小组设计的多功能日历程序能够实现实验的基本要求——一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。另外,在完成基本要求的基础上,我们增添了显示农历、显示时钟、添加备忘录、修改备忘录等功能。整体程序运行流畅、功能

嵌入式MP3播放器的设计

嵌入式MP3播放器的设计 1 系统概述 本文采用STM32系列微控制器,结合解码芯片VS1003、SD卡、LCD等外围设备设计并实现了MP3播放器。其主要功能有:播放VS1003支持的所有音频文件,如MP3、WMA、WAV文件,且音质非常好;通过触摸屏实现按键功能,控制播放上一首/下一首、音量增减等;通过LCD显示歌曲名字和播放状态;本系统还实现了读卡器功能,PC机可通过USB接口直接对开发板上的SD卡进行读写操作,以方便拷贝音频文件。 MP3播放过程是STM32通过SPI1接口将数据从SD卡中取出,然后通过SPI2接口送至解码芯VS1003解码播放。这里解码模块单独使用一个SPI接口,以减小干扰和噪声、提高音质。 2 系统硬件设计方案 本系统在硬件上分为6个模块: 微控制器STM32F103、解码模块VS1003、存储模块SD卡、触摸屏、USB接口和显示屏LCD。系统硬件框架如图5所示。 VS1003 STM32 图5 系统硬件框架图 2.1 存储模块设计 SD卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。SD卡支持两种总线方式: SD方式与SPI方式。其中SD 方式采用6线制,而SPI方式采用4线制,采用单片机对SD卡进行读写时一般都采用SPI模式。可用不同的初始化方式使SD卡工作于SD方式或SPI方式。 在本设计中,音频数据MP3文件是以SD卡为载体。所以在电路设计中必须含有读取SD卡模块。该系统使用STM32内部接口SPI1与SD卡进行通信,下面介绍其引脚连接情况。 PE3:低电平有效,连接到SD卡的片选引脚CD/DAT3。SPI在和SD卡进行通

Java音乐播放器源代码即结果显示

简单的音乐播放器一、程序代码: import java.io.File; import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.FileDialog; import java.awt.Frame; import java.awt.GridLayout; import https://www.360docs.net/doc/c816787867.html,bel; import java.awt.List; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.MenuShortcut; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.SourceDataLine; public class Example extends Frame { private static final long serialVersionUID = 1L; boolean isStop = true;// 控制播放线程 boolean hasStop = true;// 播放线程状态

音乐播放器实验报告

一、实验项目名称 基于单片机的音乐播放器 二、实验目的 Ⅰ设计方案 设计一个基于AT89C51系列单片机的音乐盒,利用按键控制切换演奏出不同的音乐。蜂鸣器发出某个音调,与之对应的LED灯亮起。使用两个按键,一个用来切换歌曲,另一个切换LED的变化花样。Ⅱ研究内容 ①电路有两种模式:演奏音乐模式和花样灯模式 A 演奏音乐模式:演奏完整的一首歌曲,LED随着音乐变化; B 花样灯模式:LED变化出各种花样,蜂鸣器随着发出“滴滴”声; ②按下按键1进入演奏音乐模式,再按切换歌曲,共两首歌曲; 按下按键2进入花样灯模式,再按切换LED花样,共三种花样。Ⅲ总体方案图 a组成框图: 音乐盒的系统结构以AT89C51单片机位控制核心,加上2个按键、时钟复位电路、蜂鸣器、LED模块组成。单片机负责接收按键的输入,根据输入控制音乐播放曲目和音乐花样灯的显示样式以及蜂鸣器发音。系统组成框图如下所示:

b功能结构图: Key1负责切换播放歌曲,共两首。分别是祝你生日快乐和寂寞沙洲冷;Key2负责切换LED显示花样,共3种:顺序显示,由两边向中间移动然后向两边移动,循环显示。 三、实验器材 Windows7 操作系统Proteus仿真软件 keil4软件AT89C51单片机 共阴极数码管开关电容晶振 电阻发光二极管蜂鸣器 四、实验要求 (1)以单片机为主控处理器,用蜂鸣器播放歌曲;

(2)系统要求有选择上一首、下一曲功能; (3)两个按键,可在播放和显示花样中进行切换; (4)用一个键控制花样类型的显示功能; (5)用LED灯闪烁“伴奏”。 五、实训基本原理(附原理图、源程序清单) 1 硬件设计 ①LED显示电路设计与原理 LED显示电路是由8个LED发光二极管组成,连接方式是共阳极,LED接到单片机的P1口,若是低电平,可使LED亮。发光二极管的亮灭是由内部程序控制的,8个LED发光二极管分别对应不同的音阶,所以LED会随着音阶的变化按规律亮灭。 ②硬件电路图及其功能介绍 1)电路中用P3.2、P3.3 控制键; 2)P1.0~P1.7控制LED; 3)P2.3控制蜂鸣器; 4)电路为12MHZ晶振频率工作,起振电路中C1、C2均为30PF。

Java课程设计实验报告及全部源码流程图

课程设计 一、实验目的 1.加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习web应用开发及今后从事专业工作打下基础。 2. 使用本学期学习的Java SE技术(也可以使用课堂教学中没有学习过的Java技术,但是应当以Java SE技术为主)完成多功能日历GUI程序的设计,使之具有如下基本功能:一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。 3.在完成基本功能的基础上发挥自己的想象力与创造力,使程序凸显出与众不同的特点与功能,形成本小组的特性色。 二、实验要求 1.问题描述准确、规范。 2.程序结构合理,调试数据准确、有代表性.。 3.界面布局整齐,人机交互方便。 4.输出结果正确。 5.正确撰写实验报告。 三、实验内容 编写一个GUI程序实现日历的功能。一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期以及当前农历,可以为每页日历选择背景图片。可以实现显示时钟,时钟能进行整点报

时。可以实现备忘记事功能,能在每天添加、修改、删除记事等操作。 四、实验步骤 1.在上机实验前,小组成员进行选题讨论,确定小组感兴趣而又伸缩性强的题目多功能日历。 2.在第一次上机实验时讨论分工,分工明确之后,分头合作进行。 3.各成员完成自己的任务后,最后进行统筹合并,以及程序最后的优化。 4. 根据实验结果,写出合肥工业大学实验报告。实验报告应当包括:实验内容,程序流程图,类结构,程序清单,运行结果,以及通过上机取得的经验。 5.详细的上机实验步骤见任务分工及程序设计进度表。 五、实验结果 经过小组成员的共同努力,最终我们小组设计的多功能日历程序能够实现实验的基本要求——一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。另外,在完成基本要求的基础上,我们增添了显示农历、显示时钟、添加备忘录、修改备忘录等功能。整体程序运行流畅、功能齐全、符合操作习惯。 下面是程序运行效果截图: 日历主界面(可以实现每个月的日历,可以按年或按月前后翻动,能够显示当前日期,并能够选择背景图片):

音乐播放器的设计与实现

德州学院信息管理学院 课程设计报告实习名称课程设计2 设计题目Android音乐播放器的设计与实现实习时间 专业班级12级计算机科学与技术 指导老师刘想 教学单位(盖章) 小组成员分工情况: 学号姓名分工 3018 周生明音乐播放的设计与实现1052曹法瑞 1040 张正奎 1055 李元华 2049 王山 二〇一五年六月三十日

目录 摘要 ................................................................................................................ 错误!未定义书签。 1 引言 ............................................................................................................ 错误!未定义书签。 2 可行性分析................................................................................................. 错误!未定义书签。 2.1 技术可行性...................................................................................... 错误!未定义书签。 2.2 经济可行性...................................................................................... 错误!未定义书签。 2.3 管理可行性...................................................................................... 错误!未定义书签。 2.4 可行性分析结论.............................................................................. 错误!未定义书签。 3 系统需求分析............................................................................................. 错误!未定义书签。 3.1 功能分析.......................................................................................... 错误!未定义书签。 3.2 数据流程分析.................................................................................. 错误!未定义书签。 4 系统功能设计............................................................................................. 错误!未定义书签。 4.1 播放器功能结构.............................................................................. 错误!未定义书签。 4.1.1 播放器主界面功能模块....................................................... 错误!未定义书签。 4.1.2 播放器菜单功能模块........................................................... 错误!未定义书签。 4.2 播放器功能流程.............................................................................. 错误!未定义书签。 5 系统实现..................................................................................................... 错误!未定义书签。 5.1 播放器主界面功能列表.................................................................. 错误!未定义书签。 5.2 播放器基本功能的实现.................................................................. 错误!未定义书签。 5.3 播放列表的实现.............................................................................. 错误!未定义书签。 6 软件测试与验证......................................................................................... 错误!未定义书签。 6.1 软件测试的目的.............................................................................. 错误!未定义书签。 6.2 软件测试的方法.............................................................................. 错误!未定义书签。 6.3 软件测试环境.................................................................................. 错误!未定义书签。 6.3.1 android模拟器 ...................................................................... 错误!未定义书签。 6.3.2 真机测试............................................................................... 错误!未定义书签。 6.4 软件测试流程与结果评估.............................................................. 错误!未定义书签。 6.4.1 测试流程............................................................................... 错误!未定义书签。 6.4.2 结果评估............................................................................... 错误!未定义书签。

音乐播放器代码大全

音乐播放器代码大全 autostart="true"中true或1表示自动播放,false或0表示手动播放 loop="true" 中的true或1表示重复播放,false或0表示只播放一次width= height= 中的数字分别表示播放器的宽度和高度=0表示隐藏播放器 EnableContextMenu="0" 禁右键 ShowStatusBar="1" (带显示文件播放信息) 1隐藏播放器(不循环) 代码: 2.隐藏播放器(循环播放) 代码: 3.黑色皮肤播放器 代码: 4.淡蓝色播放器 代码:

5.迷幻播放器 代码:

6.带菜单的播放器 代码: 7.深黄色带菜单播放器 代码: 8.灰色播放器 代码:

基于51单片机的音乐播放器设计

题目:音乐播放器 课程设计(论文)任务书

摘要 随着电子技术的发展和计算机越来越普遍的使用,单片机作为这两项技术的有机结合也得到了广泛的应用,在某些领域具有不可替代的作用。音乐播放功能随处都会用到,如,在开发儿童智力的玩具中,等等。目前,基于单片机实现音乐播放,其体积小、价格低、编程灵活等特点在这一领域独领风骚。 单片机的英文名称为single chip microcomputer,最早出现在20世纪70年代,国际上现在已逐渐被微控制器(Microcontroller Unit 或MCU)一词所取代。它体积小,集成度高,运算速度快,运行可靠,功耗低,价格廉,因此在数据采集、智能化仪表、通讯设备等方面得到了广泛应用。而8051单片机在小到中型应用场合很常见,已成为单片机领域的实际标准。随着硬件的发展,8051单片机系列的软件工具也有了C 级编译器和实时多任务操作系统RTOS,为单片机编程使用C语言提供了便利的条件;并针对单片机常用的接口芯片编制通用的驱动函数,可针对常用的功能模块,算法等编制相应的函数;C语言模块化程序结构特点,可以使程序模块大家共享,不断丰富,这样就使得单片机的的程序设计更简单可靠,实时性强,效率高。作为测控技术与仪器的学生,掌握8051单片机硬件基础及其相关软件操作,将其应用于现代电子产品中是必要而且重要的,这次课程设计我们的题目是用单片机实验箱系统制作音乐播放器。

本次课程设计主要内容是通过单片机C51语言进行编程,以产生乐曲音符和节拍,把乐谱翻译成计算机语言(音符转换诚成相对应的方波频率即定时器装载初值,节拍转换成相对应的延长时间),并将其预先存储到单片机里,然后根据按键调用再由单片机进行信息处理,在经过信号放大,由喇叭放出乐曲声,实现音乐播放的功能。其主要表现在可以播放十首歌曲,可以用十个数字键控制播放的歌曲,并且能在LCD液晶屏显示器上显示相应播放歌曲的曲名和滚动歌词。再加上一个开关键来控制歌曲的播放停止。 本设计的目的是培养理论联系实际的学习方法以及独立解决工程实际问题的能力。能够熟识单片机C51语言的编程特性,及其应用。能够用C51语言进行编程,能成功的编出较为简单的程序。 关键词:单片机,音乐,蜂鸣器,同步显示 目录 课程设计(论文)任务书.................................................................................................. I 摘要...................................................................................................... 错误!未定义书签。 第一章绪论 .................................................................................................................. 1 1.1课程设计目的............................................................................................................................ 1 1.2课程设计任务............................................................................................................................ 1 1.3课程设计要求............................................................................................................................ 1 1.4课程设计的意义........................................................................................................................ 1 第二章设计原理及总体方案选择................................................................................... 2 2.1设计原理 ................................................................................................................................... 2

JavaWeb课程设计实验报告

湖南科技大学计算机科学与工程学院 WEB编程课程设计报告 题目:网上购物商店 学号:1111111111 姓名: 1 指导老师: 1 完成时间:111111111

目录 一、设计内容 (3) 二、设计方法 (4) 1、网站的整体结构设计 (4) 2、网站设计的技术方案 (5) 3、网站的界面设计 (6) 三、实现方法 (8) 1、数据库的设计 (8) 2、网站具体的实现过程 (10) 开发环境: (10) 设计思路 (10) 四、心得体会 (11)

随着互联网时代的迅猛发展,人们的生活方式已经发生了翻天覆地的变化,传统的实体店购物方式已经不能满足人们的需求,传统购物方式购物不方便,非得出门才能购物,去到了实体店有不一定有自己满意的商品,有时候会浪费大量的时间和精力。 随着网络的全面覆盖,网上支付系统的逐步完善,物流业的快速兴起,网上购物已经成为了当今购物的潮流。 网上购物商店主要满足人们足不出户就能买到自己想要的物品的需要,同时也为商家省去了昂贵的门面租赁费用,而且商品还可以卖到全国各地,大大的扩大了客源又节省了成本。 网上购物商店主要有以下几个方面的功能: 顾客可以浏览整个网站的商品,可以再网站进行注册,注册之后可以登录并购买商品,同时也可以查看和修改自己的个人信息,为了安全的需求,还可以修改密码。 商家,也就是店主,管理员,可以管理网站所出售的所有商品,同时也可以对在网站进行注册的用户进行管理。 1、用户登录、注册功能 (1)注册功能:用户进入网站,如果有兴趣在该商店购买商品,那么用户就可以注册。 (2)登录功能。已经注册的用户可以登录,登录之后方可购买商品。 (3)查看、修改用户信息功能。 (4)修改密码,为了用户安全的需要,经常更换密码可以保证用户账户的安全。 2、购物功能 (1)物品浏览:顾客进入网站,就可以浏览网站的商品。 (2)商品购买:顾客注册自己的账户,并登录之后就可以在网站购买商品了。购买商品的步骤如下; a)添加商品到购物车 b)确定购买 3、商品管理:管理网站所出售的商品。 4、用户管理:管理员对在网站注册的用户进行管理。 5、订单管理:对用户的订单进行管理。

安卓音乐播放器开发,含源代码

基于an droid平台的音乐播放器开发 实验报告 学生姓名:_______ 温从林 _________________ 学号: ___________________________________ 班级:计自1201 _____________ 第一章引言 1.1项目背景 当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Win dowsmobile,symbia n,以及谷歌的An droid操作系统,其中占有开放源代码优势的An droid系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?能的,谷歌An droid系统就能做到。本文的音乐播放器就是基于谷歌An droid手机平台的播放器。 An droid :是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。本次作品音乐播放器就是基于An droid平台的。 1.2编写目的 现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计实现的主要功能是播放Mp3 Wav多种格式的音乐文件,并且能够控制播放,暂停,停止,播放列等基本播放控制功能,界面简明,操作简单。

本项目是一款基于An droid手机平台的音乐播放器,使An droid手机拥有个性的 多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练An droid的技术和其它在市场上的特点。 1.3开发环境 Eclipse、An droid SDK 320 第二章系统需求分析 2.1功能需求(用例图分析) 根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。以下分别描述: 2.1.1播放器的用例图 假设安装了音乐播放器的用户是系统的主要设计对象,其拥有以下操作, 启动软件、播放音乐、暂停播放、停止播放、退出软件,其用例图如下 图2.1 播放器基本用例图 2.1.2用例分析

C#编写的音乐播放器实训报告书

、 1、实习题目 (2) 2、实习目的 (3) 3、实习所需条件 (3) 3.1硬件需求 (3) 3.2 软件需求 (3) 4、实习内容 (4) 5、实习步骤 (4) 5.1实验说明 (4) 5.2面向对象的分析 (4) 5.3面向对象的设计 (5) 5.3.1 界面设计 (5) 5.3.1.1实验说明 (5) 5.3.1.2实验步骤 (5) 5.4系统实现 (11) 5.4.1模式1:Windows界面 (11) 1、双击窗体,打开界面设计部分,然后双击要编辑事件的控件。 双击Form1,双击Button1,响应它的click事件,将会自动转到后台 代码,在鼠标停留处编写其事件代码。 (11) 2、在光标处编辑事件代码,总体设计界面图示。 (11) 3、双击button2 (11) 4、音量调节功能 (14) 5、改变播放模式后的列表顺序调整代码 (14) 6、音乐播放器任务栏logo显示功能代码如下 (17) 7、最小最大化显示歌曲代码如下 (16) 8、播放模式功能实现代码如下 (17) 9、皮肤设置功能代码如下,图示 (18) 10、透明度设置代码如下 (20) 11、添加/删除功能的实现代码: (20) 12、查找功能的实现代码 (24) 13、最大最小化窗口显示界面的实现代码 (24) 14、连接数据库实现登录注册功能的实现代码 (25) 15、雅心音乐播放器运行效果图 (20) 6、实习参考资料 (28) 6、实习心得 (28)

1、实习题目 实习题目:基于.NET音乐播放器设计与实现 雅心音乐播放器是一款本地歌曲音乐聚合播放器。音乐播放器采用面向对象的编程思想,以C#语言作为开发语言,Visual Studio 2010作为开发工具,SQL server 作为后台数据库。音乐播放器客户端软件合理的功能布局将用户的学习成本降至最低,开发出的客户端软件具有操作简洁、界面友好、功能齐全的特点,为音乐爱好者带来舒适的用户体验。 2、实习目的 综合运用《面向对象程序设计》等课程基础理论知识,完成基于.NET音乐播放器设计与实现。使学生 熟悉Windows应用程序开发的基本流程; 熟练掌握面向对象的分析和设计技术; 熟练掌握面向对象语言的基本语法和高级特性; 用配置文件定义音乐播放器的窗口布局,代码不需要关心如何摆放窗口、移动窗口; 用配置文件定义窗口中控件的位置,代码不需要关心如何摆放控件、移动控件; 用配置文件定义窗口、控件的皮肤绘制

java课程设计实验报告

Java课程设计实验报告实验题目:打字游戏小程序 专业:计算机科学与技术系 班级:1202班 成员:

Java课程设计(打字游戏小程序) 一、课程设计目的 经过一学期的java学习,能灵活运用书中和实验中所学习的各类知识和技巧,并且能在程序开发中得以很好的运用和发挥。在以后的学习和工作中,可以从中获取很好的经验,并且锻炼自己开发程序和创新的意识。 二、课程设计内容 1.课程设计简介 设计的是一个打字的小游戏,屏幕上不断地有英文字母下落,键盘输入字母,屏幕上与输入的字母形同的就会消失,并计分,如果有没有消去的字母掉到屏幕底,将扣分。 2.设计说明 因为要进行键盘操作,所以引用了event包,还要注册事件监听。字母是随机产生的,又要用。注册了线程。还要对窗口定义坐标,防止字母出现在同一位子。并且通过一位数组来给随机出现的字母做坐标定义。主要通过一位数组来控制字母的坐标,并且通过字母坐标的改变来对整个游戏的流程进行控制。 3.设计流程图 4.实现功能 随机产生字母,运用了键盘操作当按对屏幕中出现的字母时,该字母全部消失,并且在分数上相应的增加或减少。 5.详细设计(源代码) 1) packageDownCharGame; import import import /** *下落的字母实体类 *@authorshenbf * */ publicclassCharEntity{ raw(g); } etY()>=480){ etX((int)()*580)+30); chs[i].setY(0);

chs[i].setColor(newColor((int)()*256), (int)()*256),(int)()*256))); chs[i].setCh((char)(65+(int)()*26))); } chs[i].down(); } repaint();tart(); } publicvoidkeyTyped(KeyEvente){ } publicvoidkeyPressed(KeyEvente){ } publicvoidkeyReleased(KeyEvente){ etCh()||key==chs[i].getCh()+32){ etY()

相关文档
最新文档