播放器管理:概述和需求分析
需求分析:
- 播放列表管理
- 播放器管理
播放列表管理主要功能:
- 增:将歌曲添加到主播放列表
- 增:将歌曲添加到普通播放列表
- 查:通过歌曲id查询播放列表中的歌曲
- 查:通过歌曲名称查询播放列表中的歌曲
- 改:修改播放列表中的歌曲
- 删:删除播放列表中的歌曲
- 显示:显示所有歌曲
播放器管理主要功能:
- 增:向播放器添加播放列表
- 删:从播放器删除播放列表
- 查:通过名字查询播放列表
- 显示:显示所有播放列表的名称
详细设计
类:
- 歌曲类
Song
- 播放列表类
PlayList
- 播放器类
PlayListCollection
- 测试类
TestDemo
歌曲类Song
:
属性:
- 歌曲id
- 歌曲名name
- 演唱者singer
方法:
- 构造方法
- getter和setter
- hashCode()和equals()
- toString()
播放列表类 PlayList
:
属性:
- 播放列表名称PlayListName
- 播放列表中的歌曲集合musicList
方法:
- 构造方法
- getter和setter
- 将歌曲添加到播放列表:
public void addToPlayList(Song song)
- 显示播放列表中所有歌曲:
public void displayAllSong()
- 通过id查询歌曲:
public Song searchSongById(String id)
- 通过name查询歌曲:
public Song searchSongByName(String name)
- 修改歌曲:
public void updateSong(String id,Song song)
- 删除歌曲:
public void deleteSong(String id)
- 通过歌曲名进行排序:
public void sortBySongName()
ps:会有一个主播放列表,里面会有所有的歌。
播放器类PlayListCollection
:
属性:
- 存放播放列表的集合:
playListMap
方法:
- 构造方法
- getter和setter
- 添加播放列表:
public void addPlayList(PlayList playList)
- 删除播放列表:
public void deletePlayList(PlayList playList)
- 通过名字查询:
public PlayList searchPlayListByName(String playListName)
- 显示所有播放列表名称:
public void displayPlayListName()
歌曲类Song
注意,写完一个类就要测试一下。
public class Song {
private String id;
private String name;
private String singer;
public Song(String id, String name, String singer) {
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() {
return Objects.hash(id, name, singer);
}
@Override
public boolean equals(Object obj) {
// 判断对象是否相等
if (this == obj)
return true;
// 类相同
if (obj.getClass() == Song.class) {
Song song = (Song) obj;
return (song.getId().equals(id) && (song.getName().equals(name) && (song.getSinger().equals(singer))));
}
return false;
}
@Override
public String toString() {
return "歌曲信息 [歌曲id:" + id + ", 歌曲名称:" + name + ", 演唱者:" + singer + "]";
}
}
播放列表类PlayList
public class PlayList {
private String playListName;// 播放列表名称
private List<Song> musicList;// 播放列表歌曲集合
// 构造方法 参数是播放列表的名称
public PlayList(String playListName) {
this.playListName = playListName;
musicList = new ArrayList<Song>();
}
// getter setter
public String getPlayListName() {
return playListName;
}
public void setPlayListName(String playListName) {
this.playListName = playListName;
}
// 将歌曲添加到播放列表
public void addToPlayList(Song song) {
// 要排除重复添加的情况
boolean flag = false;
for (Song s : musicList) {
if (s.equals(song)) {
flag = true;
break;
}
}
if (!flag)
musicList.add(song);
else {
System.out.println("歌曲《" + song.getName() + "》已经在播放列表中!");
}
}
// 显示播放列表中的所有歌曲
public void displayAllSong() {
System.out.println("播放列表中的所有歌曲为:");
for (Song song : musicList) {
System.out.println(song.toString());
}
System.out.println();
}
// 根据歌曲id查询歌曲
public Song searchSongById(String id) {
Song ans = null;
for (Song song : musicList) {
if (id.equals(song.getId())) {
ans = song;
break;
}
}
return ans;
}
// 根据歌曲名称查询歌曲
public Song searchSongByName(String name) {
Song ans = null;
for (Song song : musicList) {
if (name.equals(song.getName())) {
ans = song;
break;
}
}
return ans;
}
// 修改播放列表中歌曲信息
public void updateSong(String id, Song song) {
Song s = searchSongById(id);
if (s == null) {
System.out.println("id为" + id + "的歌曲未找到!");
} else {
musicList.remove(s);
musicList.add(song);
System.out.println("修改成功!");
}
}
// 删除播放列表中歌曲信息
public void deleteSong(String id) {
Song s = searchSongById(id);
if (s == null) {
System.out.println("id为" + id + "的歌曲未找到!");
} else {
musicList.remove(s);
System.out.println("删除成功!");
}
}
}
播放器类PlayListCollection
//播放列表集合
public class PlayListCollection {
Map<String, PlayList> playListMap;// 存放播放列表集合
public PlayListCollection() {
playListMap = new HashMap<String, PlayList>();
}
public Map<String, PlayList> getPlayListMap() {
return playListMap;
}
public void setPlayListMap(Map<String, PlayList> playListMap) {
this.playListMap = playListMap;
}
// 添加播放列表
public void addPlayList(PlayList playList) {
playListMap.put(playList.getPlayListName(), playList);
}
// 删除播放列表
public void deletePlayList(PlayList playList) {
playListMap.remove(playList.getPlayListName());
System.out.println("删除成功!");
}
// 查询播放列表
public PlayList searchPlayListByName(String playListName) {
PlayList playList = null;
Set<String> playListSet = playListMap.keySet();
for (String s : playListSet) {
if (s.equals(playListName)) {
playList = playListMap.get(s);
break;
}
}
return playList;
}
// 显示播放列表
public void displayListName() {
System.out.println("所有播放列表名称为:");
Set<String> playListSet = playListMap.keySet();
for (String s : playListSet) {
System.out.println(s);
}
System.out.println();
}
}
主业务代码
三个菜单
星号:
//星号
public void star() {
System.out.println("*****************************");
}
主菜单:
//主菜单
public void mainMenu() {
star();
System.out.println(" 主菜单");
System.out.println(" 1-播放列表管理");
System.out.println(" 2-播放器管理");
System.out.println(" 0-退出");
star();
}
播放列表管理菜单:
//播放列表管理菜单
public void playListMenu() {
star();
System.out.println(" 播放列表管理");
System.out.println(" 1-将歌曲添加到主播放列表");
System.out.println(" 2-将歌曲添加到普通播放列表");
System.out.println(" 3-通过歌曲id查询播放列表中的歌曲");
System.out.println(" 4-通过歌曲名称查询播放列表中的歌曲");
System.out.println(" 5-修改播放列表中的歌曲");
System.out.println(" 6-删除播放列表中的歌曲");
System.out.println(" 7-显示所有歌曲");
System.out.println(" 0-返回上一级菜单");
star();
}
播放器菜单:
//播放器菜单
public void playerMenu() {
star();
System.out.println(" 播放器管理");
System.out.println(" 1-向播放器添加播放列表");
System.out.println(" 2-从播放器删除播放列表");
System.out.println(" 3-通过名字查询播放列表");
System.out.println(" 4-显示所有播放列表的名称");
System.out.println(" 0-返回上一级菜单");
star();
}
总体代码
public class TestDemo {
public static void main(String[] args) {
TestDemo td = new TestDemo();
td.test();
}
// 主流程
public void test() {
// 创建一个主播放列表
PlayList mainPlayList = new PlayList("mainPlayList");
// 创建喜欢的音乐 播放列表
PlayList love = null;
// 创建播放列表容器(播放器)
PlayListCollection plc = new PlayListCollection();
plc.addPlayList(mainPlayList);
// 输入
Scanner sc = new Scanner(System.in);
int ip1 = 0, ip2 = 0, ip3 = 0;
while (true) {
mainMenu();
System.out.println("请输入对应数字进行操作:");
ip1 = sc.nextInt();// 这里就不处理异常了
if (ip1 == 0) {
System.out.println("退出!");
break;
}
switch (ip1) {
case 1: {
while (true) {
playListMenu();
System.out.println("请输入对应数字进行操作:");
ip2 = sc.nextInt();
if (ip2 == 0) {
System.out.println("退出!");
break;
}
switch (ip2) {
case 1: {
System.out.println(" 1-将歌曲添加到主播放列表");
System.out.println("请输入要添加的歌曲的个数:");
int temp = sc.nextInt();
for (int i = 0; i < temp; i++) {
System.out.println("请输入第" + (i + 1) + "首歌曲的信息:id、歌曲名、演唱者");
String id, name, singer;
id = sc.next();
name = sc.next();
singer = sc.next();
mainPlayList.addToPlayList(new Song(id, name, singer));
}
System.out.println("添加成功!");
mainPlayList.displayAllSong();
break;
}
case 2: {
System.out.println(" 2-将歌曲添加到普通播放列表");
System.out.println("请输入要添加的播放列表名称:");
String name = sc.next();
// 判断此播放列表是否存在
PlayList pl = plc.searchPlayListByName(name);
if (pl != null) {
System.out.println("请输入要添加的歌曲的个数:");
int temp = sc.nextInt();
for (int i = 0; i < temp; i++) {
System.out.println("请输入第" + (i + 1) + "首歌曲的信息:id、歌曲名、演唱者");
String id, namee, singer;
id = sc.next();
namee = sc.next();
singer = sc.next();
// 判断这首歌是否已经在播放列表中
Song song = mainPlayList.searchSongById(id);
if (song == null) {
song = new Song(id, namee, singer);
mainPlayList.addToPlayList(song);
pl.addToPlayList(song);
} else {
pl.addToPlayList(song);
}
}
System.out.println("添加成功!");
// 显示两个播放列表的信息
System.out.println("主播放列表:");
mainPlayList.displayAllSong();
System.out.println("当前播放列表:");
pl.displayAllSong();
} else {
System.out.println("此播放列表不存在!请将其添加到播放器中!");
}
break;
}
case 3: {
System.out.println(" 3-通过歌曲id查询播放列表中的歌曲");
System.out.println("请输入要查询的播放列表名称:");
String name = sc.next();
PlayList pl = plc.searchPlayListByName(name);
if (pl == null) {
System.out.println("此播放列表不存在!请输入正确的播放列表!");
} else {
System.out.println("请输入要查询的歌曲id:");
String id = sc.next();
Song song = pl.searchSongById(id);
if (song == null) {
System.out.println("此歌曲不存在!");
} else {
System.out.println("歌曲信息为:" + song);
}
}
break;
}
case 4: {
System.out.println(" 4-通过歌曲名称查询播放列表中的歌曲");
System.out.println("请输入要查询的播放列表名称:");
String name = sc.next();
PlayList pl = plc.searchPlayListByName(name);
if (pl == null) {
System.out.println("此播放列表不存在!请输入正确的播放列表!");
} else {
System.out.println("请输入要查询的歌曲名称:");
String namee = sc.next();
Song song = pl.searchSongById(namee);
if (song == null) {
System.out.println("此歌曲不存在!");
} else {
System.out.println("歌曲信息为:" + song);
}
}
break;
}
case 5: {
System.out.println(" 5-修改播放列表中的歌曲");
System.out.println("请输入要修改的播放列表名称:");
String name = sc.next();
PlayList pl = plc.searchPlayListByName(name);
if (pl == null) {
System.out.println("此播放列表不存在!请输入正确的播放列表!");
} else {
System.out.println("请输入要修改的歌曲id:");
String id = sc.next();
Song song = pl.searchSongById(id);
if (song == null) {
System.out.println("此歌曲不存在!");
} else {
System.out.println("请输入修改后的歌曲id,名称,演唱者:");
String s1 = sc.next(), s2 = sc.next(), s3 = sc.next();
pl.updateSong(id, new Song(s1, s2, s3));
}
}
break;
}
case 6: {
System.out.println(" 6-删除播放列表中的歌曲");
System.out.println("请输入要修改的播放列表名称:");
String name = sc.next();
PlayList pl = plc.searchPlayListByName(name);
if (pl == null) {
System.out.println("此播放列表不存在!请输入正确的播放列表!");
} else {
System.out.println("请输入要删除的歌曲id:");
String id = sc.next();
Song song = pl.searchSongById(id);
if (song == null) {
System.out.println("此歌曲不存在!");
} else {
pl.deleteSong(id);
}
}
break;
}
case 7: {
System.out.println(" 7-显示所有歌曲");
System.out.println("请输入要显示的播放列表的名称:");
String name = sc.next();
PlayList pl = plc.searchPlayListByName(name);
if (pl == null) {
System.out.println("此播放列表不存在!请输入正确的播放列表!");
} else {
pl.displayAllSong();
}
break;
}
default: {
System.out.println("没有此操作!");
break;
}
}
}
break;
}
case 2: {
while (true) {
playerMenu();
System.out.println("请输入对应数字进行操作:");
ip3 = sc.nextInt();
if (ip3 == 0) {
System.out.println("退出!");
break;
}
switch (ip3) {
case 1: {
System.out.println(" 1-向播放器添加播放列表");
System.out.println("请输入新播放列表的名称:");
String name;
name = sc.next();
love = new PlayList(name);
plc.addPlayList(love);
break;
}
case 2: {
System.out.println(" 2-从播放器删除播放列表");
System.out.println("请输入要删除的播放列表的名称:");
String name = sc.next();
PlayList pl = plc.searchPlayListByName(name);
if (pl == null) {
System.out.println("该列表不存在!");
} else {
if (pl.equals(mainPlayList)) {
System.out.println("主播放列表不可删除!");
} else {
plc.deletePlayList(pl);
System.out.println("删除成功!");
}
}
break;
}
case 3: {
System.out.println(" 3-通过名字查询播放列表");
System.out.println("请输入要查询的播放列表名称:");
String name=sc.next();
PlayList pl=plc.searchPlayListByName(name);
if(pl==null) {
System.out.println("此播放列表不存在!");
}else {
pl.displayAllSong();
}
break;
}
case 4: {
System.out.println(" 4-显示所有播放列表的名称");
plc.displayListName();
break;
}
default: {
System.out.println("没有此操作!");
break;
}
}
}
break;
}
default: {
System.out.println("没有此操作!");
break;
}
}
}
}
// 星号
public void star() {
System.out.println("*****************************");
}
// 主菜单
public void mainMenu() {
star();
System.out.println(" 主菜单");
System.out.println(" 1-播放列表管理");
System.out.println(" 2-播放器管理");
System.out.println(" 0-退出");
star();
}
// 播放列表管理菜单
public void playListMenu() {
star();
System.out.println(" 播放列表管理");
System.out.println(" 1-将歌曲添加到主播放列表");
System.out.println(" 2-将歌曲添加到普通播放列表");
System.out.println(" 3-通过歌曲id查询播放列表中的歌曲");
System.out.println(" 4-通过歌曲名称查询播放列表中的歌曲");
System.out.println(" 5-修改播放列表中的歌曲");
System.out.println(" 6-删除播放列表中的歌曲");
System.out.println(" 7-显示所有歌曲");
System.out.println(" 0-返回上一级菜单");
star();
}
// 播放器菜单
public void playerMenu() {
star();
System.out.println(" 播放器管理");
System.out.println(" 1-向播放器添加播放列表");
System.out.println(" 2-从播放器删除播放列表");
System.out.println(" 3-通过名字查询播放列表");
System.out.println(" 4-显示所有播放列表的名称");
System.out.println(" 0-返回上一级菜单");
star();
}
}