一、需求分析
播放列表管理
- 将歌曲添加到主播放列表
- 将歌曲添加到普通播放列表
- 通过歌曲id查询播放列表中的歌曲
- 通过歌曲名称查询
- 修改播放列表中的歌曲
- 删除。。。。。。。。
- 显示播放列表中的所有歌曲
播放器管理
- 向播放器添加播放列表
- 从播放器删除播放列表
- 通过名字查询播放列表信息
- 显示所有播放列表名称
二、详细设计
类
- 歌曲类(Song)
- 播放列表类(Playlist)
- 播放器类(PlayListCollection)
- 测试类(TestDemo)
类详细设计
1.歌曲类(Song)
- 属性:歌曲id(id),歌曲名(name),演唱者(singer),均为字符串类型
- 方法:
- 构造方法
- getter和setter
- hashCode()和equals()
- toString()
2.播放列表类(PlayList)
- 属性:
- 播放列表名称(playListName):字符串类型
- 播放列表中的歌曲集合(musicList):List类型
- 方法:
- 构造方法
- getter和setter方法
- 将歌曲添加到播放列表:public void addToPlayList(Song song)
- 显示播放列表中所有歌曲:public displayAllSong()
- 通过id查询歌曲:public Song searchSongById(String id)
- 通名称查询歌曲: public Song searchSongByName(String name)
- 修改歌曲:public void updateSong(String id,Song song)
- 从播放列表(通过id)删除歌曲:public void deleteSong(String id)
- 导出所有歌曲
3、播放器类(PlayListCollection)
- 属性:
- 存放播放列表的集合(playListMap):Map
- 方法:
- 构造方法
- getter和setter方法
- 添加播放列表:public void addPlayList(PlayList playList);
- 删除播放列表:public void deletePlayList(PlayList playList);
- 通过名字查询:public PlayList searchPlayListByName(String playListName);
- 显示所有播放列表的名称:public void displayPlayListName();
4.测试类(TestDemo)
三、代码实现
song.java
/*
* 歌曲类
*/
public class Song{
private String id;//歌曲id
private String name;//歌曲名
private String singer;//演唱者
public Song(){
}
public Song(String id,String name,String singer){
super();
this.id = id;
this.name = name;
this.singer = singer;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSinger() {
return singer;
}
public void setSinger(String singer) {
this.singer = singer;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((singer == null) ? 0 : singer.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Song other = (Song) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (singer == null) {
if (other.singer != null)
return false;
} else if (!singer.equals(other.singer))
return false;
return true;
}
//toString方法
@Override
public String toString() {
return "歌曲信息 [歌曲id:" + id + ", 歌曲名称:" + name + ", 演唱者:" + singer + "]";
}
}
Playlist.java
import com.sun.corba.se.spi.ior.ObjectKey;
import javax.swing.text.html.parser.Entity;
import java.io.File;
import java.util.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintStream;
/*
* 播放列表类
*/
public class PlayList{
private String playListname;//播放列表名称
public List musicList = new ArrayList();//播放列表中的歌曲合集
public String mainName;//主播放列表名称
public List mainList = new ArrayList();//主播放列表
public PlayListCollection p = new PlayListCollection();
//构造方法
public PlayList(){
}
public PlayList(String playListname,List musicList){
super();
this.playListname = playListname;
this.musicList = musicList;
}
//getter & setter
//playlist
public String getPlayListname() {
return playListname;
}
public String setPlayListname(String playListname) {
return this.playListname = playListname;
}
public List getMusicList() {
return musicList;
}
public void setMusicList(List musicList) {
this.musicList = musicList;
}
// mainList
public String getMainName() {
return mainName;
}
public String setMainName(String mainName) {
return this.mainName = mainName;
}
public List getMainList() {
return mainList;
}
public void setMainList(List mainList) {
this.mainList = mainList;
}
public PlayListCollection getP(){
return p;
}
public void setP(PlayListCollection p){
this.p = p;
}
/*
将歌曲添加到播放列表:public void addToPlayList(Song song)
显示播放列表中所有歌曲:public displayAllSong()
通过id查询歌曲:public Song searchSongById(String id)
通名称查询歌曲: public Song searchSongByName(String name)
修改歌曲:public void updateSong(String id,Song song)
从播放列表(通过id)删除歌曲:public void deleteSong(String id)
导出所有歌曲
*/
//将歌曲添加到播放列表:public void addToPlayList(Song song)
public void addToPlayList(Song song,boolean state) {
Scanner sc = new Scanner(System.in);
if (state) {
//如果歌曲是添加到 主列表
String key = setMainName("main");
System.out.println("请输入要添加的歌曲的数量:");
int n = sc.nextInt();
int i = 0;
while (i < n) {
//每创建一个对象,让Song的对象产生不同的id
Song song1 = new Song();
System.out.println("请输入第" + (i + 1) + "首歌曲的id:");
song1.setId(sc.next());
System.out.println("请输入第" + (i + 1) + "首歌曲的名称:");
song1.setName(sc.next());
System.out.println("请输入第" + (i + 1) + "首歌曲的演唱者:");
song1.setSinger(sc.next());
//将歌曲添加到播放列表
mainList.