Java综合案例练习4-7,烦请老师检查和指正~

Java综合案例练习4-7,烦请老师检查和指正~

package com.imooc.musicplayer;

import java.util.Scanner;

public class TestDemo {
// 对歌曲类Song进行测试
public void testSong() {
Song song1 = new Song("s001", "两只老虎", "小太阳");
Song song2 = new Song("s002", "小燕子", "风车");
Song song3 = new Song("s003", "茉莉花", "彩虹");
Song song4 = new Song("s003", "茉莉花", "彩虹");
System.out.println(song1);
// 测试song1和song3这两个对象是否相等
System.out.println("song1==song3?" + (song1.equals(song3)));
System.out.println("song4==song3?" + (song4.equals(song3)));
System.out.println(song3 == song4);

}

// 对播放列表类PlayList进行测试
public void testPlayList() {
// 定义几个Song类的对象,添加到播放列表中
Song song1 = new Song("s001", "两只老虎", "小太阳");
Song song2 = new Song("s002", "小燕子", "风车");
Song song3 = new Song("s003", "茉莉花", "彩虹");
Song song4 = new Song("s003", "茉莉花", "彩虹");
// 创建一个PlayList对象
PlayList mainPlayList = new PlayList("主播放列表");
mainPlayList.addToPlayList(song1);
mainPlayList.addToPlayList(song2);
mainPlayList.addToPlayList(song3);
mainPlayList.addToPlayList(song4);
// 显示播放列表的内容
mainPlayList.displayAllSong();
// 通过id查询歌曲信息
Song song = mainPlayList.searchSongById("s005");
if (song != null) {
System.out.println("根据id查询的歌曲信息为:");
System.out.println(song);
} else {
System.out.println("该歌曲不存在!");
}
// 通过名称查询歌曲信息
song = null;
song = mainPlayList.searchSongByName("小燕子");
if (song != null) {
System.out.println("根据name查询的歌曲信息为:");
System.out.println(song);
} else {
System.out.println("该歌曲不存在!");
}
// 修改歌曲信息
Song songUpdate = new Song("s005", "茉莉花", "小太阳");
mainPlayList.updateSong("s003", songUpdate);
mainPlayList.displayAllSong();
// 删除歌曲信息
mainPlayList.deleteSong("s005");
mainPlayList.displayAllSong();

}

// 测试播放列表集合类
public void testPlayListCollection() {
Song song1 = new Song("s001", "两只老虎", "小太阳");
Song song2 = new Song("s002", "小燕子", "风车");
Song song3 = new Song("s003", "茉莉花", "彩虹");
// 创建主播放列表
PlayList mainPlayList = new PlayList("主播放列表");
// 将歌曲添加到主播放列表中
mainPlayList.addToPlayList(song1);
mainPlayList.addToPlayList(song2);
mainPlayList.addToPlayList(song3);
// 定义一个新的播放列表,从主播放列表中添加歌曲进来
PlayList favouritePalyList = new PlayList("最喜欢的歌曲");
favouritePalyList.addToPlayList(mainPlayList.getMusicList().get(0));
favouritePalyList.addToPlayList(mainPlayList.getMusicList().get(1));
favouritePalyList.displayAllSong();
// 将两个播放列表添加到播放列表集合中
PlayListCollection plc = new PlayListCollection();
plc.addPlayList(mainPlayList);
plc.addPlayList(favouritePalyList);
plc.displayListName();
// 根据播放列表名字查询播放列表信息,并显示所有歌曲
PlayList playList = plc.searchPlayListByName("最喜欢的歌曲");
playList.displayAllSong();
// 删除播放列表信息
System.out.println("删除前:");
plc.displayListName();
plc.deletePlayList(favouritePalyList);
System.out.println("删除后:");
plc.displayListName();
}

// 主菜单
public void mainMenu() {
System.out.println("***************************************");
System.out.println(" **主菜单** ");
System.out.println(" 1--播放列表管理 ");
System.out.println(" 2--播放器管理 ");
System.out.println(" 0--退出 ");
System.out.println("***************************************");

}

// 播放列表管理菜单
public void playListMenu() {
System.out.println("*******************************************************");
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(" 9--返回上一级菜单 ");
System.out.println("*******************************************************");
}

// 播放器菜单
public void playerMenu() {
System.out.println("*******************************************************");
System.out.println(" **播放器管理** ");
System.out.println(" 1--向播放器添加播放列表 ");
System.out.println(" 2--从播放器删除播放列表 ");
System.out.println(" 3--通过名字查询播放列表信息 ");
System.out.println(" 4--显示所有播放列表名称 ");
System.out.println(" 9--返回上一级菜单 ");
System.out.println("*******************************************************");
}

// 主流程
public void test() {
TestDemo td = new TestDemo();
Scanner sc = new Scanner(System.in);
int input = 0, input1 = 0, input2 = 0;
//创建一个播放列表容器(播放器)
PlayListCollection plc=new PlayListCollection();
//创建主播放列表
PlayList mainPlayList=new PlayList("主播放列表");
//将主播放列表添加到播放器
plc.addPlayList(mainPlayList);
PlayList favouritePlayList=null;
String strId = null;
String strName = null;
String strSinger = null;
Song song = null;
String playListName = null;
PlayList playList = null;

while (true) {
td.mainMenu();
System.out.println("请输入对应数字进行操作:");
input = sc.nextInt();
if (input == 0) {
break;
}
switch (input) {
case 1:
// 播放列表管理
while (true) {
td.playListMenu();
System.out.println("请输入对应的数字对播放列表进行管理:");
input1 = sc.nextInt();
if (input1 == 9)
break;
switch (input1) {
case 1:
System.out.println("将歌曲添加到主播放列表");
System.out.println("请输入要添加的歌曲的数量:");
int count=sc.nextInt();
for(int i=1;i<=count;i++){
System.out.println("请输入第"+i+"首歌曲:");
System.out.println("请输入歌曲的id:");
strId=sc.next();
System.out.println("请输入歌曲的名称:");
strName=sc.next();
System.out.println("请输入演唱者:");
strSinger=sc.next();
//创建歌曲类的对象
song=new Song(strId,strName,strSinger);
mainPlayList.addToPlayList(song);
//mainPlayList.displayAllSong();
}
break;
case 2:
System.out.println("将歌曲添加到普通播放列表");
System.out.println("请输入要添加的播放列表名称:");
playListName = sc.next();
//根据名称判断播放列表是否在播放器中存在
favouritePlayList=plc.searchPlayListByName(playListName);
if(favouritePlayList==null){
System.out.println("该播放列表不存在,请先将播放列表添加到播放器中!");
}else{
System.out.println("请输入要添加的歌曲的数量:");
int count1=sc.nextInt();
for(int i=1;i<=count1;i++){
System.out.println("请输入第"+i+"首歌曲:");
System.out.println("请输入歌曲id:");
strId=sc.next();
//首先判断该id的歌曲是否在主播放列表存在
song=mainPlayList.searchSongById(strId);
if(song==null){
//如果歌曲不存在,则创建新的添加,并且添加到主播放列表
System.out.println("该歌曲在主播放列表不存在,继续输入歌曲的其他信息!");
System.out.println("请输入歌曲名称:");
strName=sc.next();
System.out.println("请输入演唱者:");
strSinger=sc.next();
//创建一个Song类的对象
song=new Song(strId,strName,strSinger);
//分别将歌曲添加到普通播放列表和主播放列表
favouritePlayList.addToPlayList(song);
mainPlayList.addToPlayList(song);
}else{
//如果歌曲存在于主播放列表,则直接添加到现在的播放列表
favouritePlayList.addToPlayList(song);
}
}
//显示播放列表中的歌曲信息
System.out.println("主播放列表:");
mainPlayList.displayAllSong();
System.out.println("普通播放列表:");
favouritePlayList.displayAllSong();
}
break;
case 3:
System.out.println("通过歌曲id查询播放列表中的歌曲");
System.out.println("请输入要查询的播放列表名称:");
playListName = sc.next();
//查询播放列表是否存在
playList = plc.searchPlayListByName(playListName);
if(playList==null){
System.out.println("该播放列表不存在!");break;
}else{
System.out.println("请输入要查询的歌曲id:");
strId=sc.next();
song = playList.searchSongById(strId);
if(song == null){
System.out.println("该歌曲在播放列表"+playListName+"中不存在!");
}else{
System.out.println("该歌曲的信息为:");
System.out.println(song);
}
}
break;
case 4:
System.out.println("通过歌曲名称查询播放列表中的歌曲");
System.out.println("请输入要查询的播放列表名称:");
playListName = sc.next();
//查询播放列表是否存在
playList = plc.searchPlayListByName(playListName);
if(playList==null){
System.out.println("该播放列表不存在!");break;
}else{
System.out.println("请输入要查询的歌曲名称:");
strName = sc.next();
song = playList.searchSongByName(strName);
if(song == null){
System.out.println("该歌曲在播放列表"+playListName+"中不存在!");
}else{
System.out.println("该歌曲的信息为:");
System.out.println(song);
}
}
break;
case 5:
System.out.println("修改播放列表中的歌曲");
System.out.println("请输入要查询的播放列表名称:");
playListName = sc.next();
//查询播放列表是否存在
playList = plc.searchPlayListByName(playListName);
if(playList == null){
System.out.println("该播放列表不存在!");break;
}else{
System.out.println("请输入要查询的歌曲id:");
strId = sc.next();
song = playList.searchSongById(strId);
if(song == null){
System.out.println("该歌曲在播放列表"+playListName+"中不存在!");
}else{
String newName= sc.next();
String newSinger = sc.next();
song.setName(newName);
song.setSinger(newSinger);
System.out.println("修改后,该歌曲的信息为:");
System.out.println(song);
}
}
break;
case 6:
System.out.println("删除播放列表中的歌曲");
System.out.println("请输入要查询的播放列表名称:");
playListName = sc.next();
//查询播放列表是否存在
playList = plc.searchPlayListByName(playListName);
if(playList == null){
System.out.println("该播放列表不存在!");break;
}else{
System.out.println("请输入要删除的歌曲id:");
strId=sc.next();
song = playList.searchSongById(strId);
if(song == null){
System.out.println("该歌曲在播放列表"+playListName+"中不存在!");
}else{
playList.deleteSong(strId);
mainPlayList.deleteSong(strId);
}
}
break;
case 7:
System.out.println("显示播放列表中的所有歌曲");
mainPlayList.displayAllSong();

break;
default:
System.out.println("该歌曲没有对应的操作!");
break;

}
}
break;
case 2:
// 播放器管理
while (true) {
td.playerMenu();
System.out.println("请输入对应的数字对播放器进行管理:");
input2 = sc.nextInt();
if (input2 == 9)
break;
switch (input2) {
case 1:
System.out.println("向播放器添加播放列表");
System.out.println("输入要添加的播放列表名称:");
playListName=sc.next();
//创建一个新的播放列表对象
favouritePlayList=new PlayList(playListName);
//将播放列表添加到播放器Map
plc.addPlayList(favouritePlayList);
break;
case 2:
System.out.println("从播放器删除播放列表");
System.out.println("请输入要删除的播放列表名称:");
playListName=sc.next();
if(playListName.equals("主播放列表")){
System.out.println("主播放列表不能删除!");
break;
}
//查询播放列表是否存在
playList = plc.searchPlayListByName(playListName);
if(playList == null){
System.out.println("该播放列表不存在!");
}else{
//存在则删除
plc.deletePlayList(playList);
}
break;
case 3:
System.out.println("通过名字查询播放列表信息");
System.out.println("请输入要查询的播放列表名称:");
playListName = sc.next();
playList = plc.searchPlayListByName(playListName);
if(playList == null){
System.out.println("该播放列表不存在!");
}else{
//显示该播放列表名称及其中的所有歌曲
System.out.println("该播放列表存在!");
System.out.println("该播放列表的名称为:"+playListName);
playList.displayAllSong();
}
break;
case 4:
System.out.println("显示所有播放列表名称");
plc.displayListName();
mainPlayList.displayAllSong();
break;
default:
System.out.println("该歌曲没有对应的操作!");
break;

}
}
break;
default:
System.out.println("该歌曲没有对应的操作!");
break;
}
}
}

public static void main(String[] args) {
TestDemo td = new TestDemo();
// td.testSong();
// td.testPlayList();
// td.testPlayListCollection();
td.test();


}

}

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小蓝 2021-10-14 09:46:10

同学你好,同学的代码只有TestDemo类,还需要同学提供一下代码中使用到的Song、PlayList、PlayListCollection类。

祝学习愉快~


  • 提问者 Heijyu #1
    package com.imooc.musicplayer;

    public class Song {
    private String id;//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() {
    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) {
    //判断对象是否相等,相等则直接返回true
    if(this==obj)
    return true;
    //this!=obj
    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 ;
    }
    }
    package com.imooc.musicplayer;

    import java.util.ArrayList;
    import java.util.List;

    public class PlayList {
    private String playListName;//播放列表的名称
    private List<Song> musicList;//播放列表的歌曲集合
    /**
    * 构造方法
    * @param playListName 播放列表的名称
    */
    public PlayList(String playListName){
    this.playListName=playListName;
    musicList=new ArrayList<Song>();
    }
    /**
    * 将歌曲添加到播放列表
    * @param song 要添加的歌曲
    */
    public void addToPlayList(Song song){
    //要排除重复添加的情况
    boolean flag=false;//判断播放列表中的歌曲是否存在
    for(Song song1:musicList){
    if(song1.equals(song)){
    flag=true;break;
    }
    }
    if(flag){
    System.out.println("该歌曲已经存在于播放列表中,添加失败!");
    }else{
    musicList.add(song);
    }
    }
    /**
    * 通过歌曲id查询
    * @param id 歌曲id
    * @return 查询到的歌曲信息
    */
    public Song searchSongById(String id){
    Song song=null;
    //Id是唯一的
    for(Song song1:musicList){
    if(song1.getId().equals(id)){
    //如果相等就找到了
    song=song1;break;
    }
    }
    return song;
    }
    /**
    * 根据歌曲的名称查询
    * @param name 歌曲名称
    * @return 查询到的歌曲信息
    */
    public Song searchSongByName(String name){
    Song song=null;
    for(Song song1:musicList){
    if(song1.getName().equals(name)){
    //如果相等就找到了
    song=song1;break;
    }
    }
    return song;

    }

    /**
    * 修改播放列表中的歌曲信息
    * @param id 要修改的歌曲id
    * @param song 新的歌曲信息
    */
    public void updateSong(String id,Song song){
    //根据id查询到相关的歌曲信息,然后再进行修改
    Song song1=searchSongById(id);
    if(song1==null){
    System.out.println("没有找到id为"+id+"对应的歌曲信息!");
    }else{
    //先移除原来的信息,然后再重新添加
    musicList.remove(song1);
    musicList.add(song);
    System.out.println("修改成功!");
    }
    }
    /**
    * 删除播放列表中的指定歌曲信息
    * @param id 歌曲id
    */
    public void deleteSong(String id){
    Song song=searchSongById(id);
    if(song!=null){
    musicList.remove(song);
    }else{
    System.out.println("没有找到id为"+id+"对应的歌曲信息!");
    }
    }
    /**
    * 显示播放列表中的所有歌曲
    */
    public void displayAllSong(){
    System.out.println("播放列表中的所有歌曲为:");
    for(Song song:musicList){
    System.out.println(song);
    }
    }
    public String getPlayListName() {
    return playListName;
    }
    public void setPlayListName(String playListName) {
    this.playListName = playListName;
    }
    public List<Song> getMusicList() {
    return musicList;
    }
    public void setMusicList(List<Song> musicList) {
    this.musicList = musicList;
    }

    }
    ​package com.imooc.musicplayer;

    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;

    public class PlayListCollection {
    Map<String,PlayList> playListMap;//存放播放列表集合
    public PlayListCollection(){
    playListMap=new HashMap<String,PlayList>();
    }
    /**
    * 向播放列表集合(播放器)添加播放列表
    * @param playList 要添加的播放列表
    */
    public void addPlayList(PlayList playList){
    //播放列表名称作为key值
    playListMap.put(playList.getPlayListName(),playList);
    }
    /**
    * 删除播放列表
    * @param playList 要删除的播放列表对象
    */
    public void deletePlayList(PlayList playList){
    playListMap.remove(playList.getPlayListName());
    System.out.println("删除成功!");
    }
    /**
    * 通过播放列表的名称查询播放列表
    * @param playListName 播放列表名称
    * @return 播放列表
    */
    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(){
    Set<String> playListSet=playListMap.keySet();
    System.out.println("播放列表名称为:");
    for(String s:playListSet){
    System.out.println(s);
    }
    }
    public Map<String, PlayList> getPlayListMap() {
    return playListMap;
    }
    public void setPlayListMap(Map<String, PlayList> playListMap) {
    this.playListMap = playListMap;
    }

    }


    2021-10-14 11:08:29
  • 好帮手慕小蓝 回复 提问者 Heijyu #2

    同学你好,同学的代码符合题目要求,逻辑清晰,书写规范,做的很棒。

    建议同学对Scanner的InputMismatchException进行处理,使得代码更加严谨,养成良好的编程习惯。

    祝学习愉快~


    2021-10-14 13:21:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师