Java播放器管理 基础作业

Java播放器管理


需求分析

  • 播放列表管理
    • 将歌曲添加到主播放列表
    • 将歌曲添加到普通播放列表
    • 通过歌曲id查询播放列表中的歌曲
    • 通过歌曲名称查询播放列表中的歌曲
    • 修改播放列表中的歌曲
    • 删除播放列表中的歌曲
    • 显示播放列表中的所有歌曲
  • 播放器管理
    • 向播放器添加播放列表
    • 从播放器删除播放列表
    • 通过名字查询播放列表信息

详细设计

  • 类:

  • 歌曲类( Song )

    • 属性:歌曲id ( id )、歌曲名(name)、演唱者(singer) , 均为字符串类型
    • 方法:
    • 构造方法
      • getter和setter方法
      • hashCode()和equals()方法
      • toString(方法
  • 播放列表类( PlayList )

    • 属性:
      • 播放列表名称( playListName ) : 字符串类型
      • 播放列表中的歌曲集合( musicList ) : List类型
    • 方法:
      • 构造方法
      • getter和setter方法
      • 将歌曲添加到播放列表: public void addToPlayList(Song song);
      • 显示播放列表中所有歌曲: public void displayAllSong0;
      • 通过id查询歌曲: public Song searchSongById(String id);
      • 通过歌曲名称查询歌曲: public Song searchSongById(String n);
      • 修改歌曲: public void updateSong(Stirng id,Song song);
      • 从播放列表删除歌曲: public void deleteSong(String id);
      • 按歌曲名进行排序: public void sortBySongName0;
  • 播放器类( PlayListCollection )

    • 属性
      • 存放播放列表的集合(playListMap):Map
    • 方法
      • 构造方法
      • getter与setter
      • 添加播放列表: public void addPlayList(PlayList playList);
      • 删除播放列表: public void deletePlayList(PlayList playList);
      • 通过名字查询: public PlayList searchPlayListByName(String playListName);
      • 显示所有播放列表名称: public void displayPlayListName();
  • 测试类( TestDemo )

代码实现

  • PlayList
package may11.player;

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

/**
 * 播放列表类
 * @author zzh
 */
public class PlayList {
    // 属性
    private String playListName;
    private List<Song> musicList;

    //方法
    public PlayList(){}

    /**
     * 构造方法
     * @param playListName
     */
    public PlayList(String playListName) {
        this.playListName = playListName;
        musicList=new ArrayList<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;
    }

    /**
     * 将歌曲添加到列表
     * @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);
        }
    }

    /**
     * 显示列表所有歌曲
     */
    public void displayAllSong(){
        System.out.println("播放列表所有歌曲:");
        for (Song song:musicList){
            System.out.println(song);
        }
    }

    /**
     * 提高Id查询
     * @param id
     * @return
     */
    public Song searchSongById(String id){
        for (Song song:musicList){
            // id唯一
            if (song.getId().equals(id)){
                return song;
            }
        }
        return null;
    }
    public Song searchSongByName(String name){
        for (Song song:musicList){
            if (song.getName().equals(name)){
                return song;
            }
        }
        return null;
    }

    /**
     * 修改歌曲信息
     * @param id
     * @param song
     */
    public void updateSong(String id,Song song){
        Song song1=searchSongById(id);
        if (song1==null){
            System.out.println("not find");
        }else {
            musicList.remove(song1);
            musicList.add(song);
            System.out.println("modify success");
        }
    }
    public void deleteSong(String id){
        Song song=searchSongById(id);
        if (song==null){
            System.out.println("not find music");
        }else {
            musicList.remove(song);
            System.out.println("delete success");
        }
    }
    public void sortBySongName(){
    }
}

  • Song
package may11.player;

import java.util.Objects;

/**
 * 歌曲类
 * @author zzh
 */
public class Song {
    // 属性
    private String id;
    private String name;
    private String singer;

    //方法
    public Song(){}

    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 String toString() {
        return "Song{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", singer='" + singer + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        // 判断对象是否相等
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        // 强制转换
        Song song = (Song) o;
        return Objects.equals(id, song.id) && Objects.equals(name, song.name) && Objects.equals(singer, song.singer);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name, singer);
    }
}

  • PlayListCollection 未完成,只做了部分功能。
package may11.player;

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

/**
 * 播放列表集合
 * @author zzh
 */
public class PlayListCollection {
    // 属性
    private Map<String,PlayList> playListMap; // 存放播放列表集合

    //method
    public PlayListCollection(){
        playListMap=new HashMap<String,PlayList>();
    }

    public Map<String, PlayList> getPlayListMap() {
        return playListMap;
    }

    public void setPlayListMap(Map<String, PlayList> playListMap) {
        this.playListMap = playListMap;
    }

    /**
     * 添加播放列表
     * @param playList
     */
    public void addPlayList(PlayList playList) {
        // 播放列表名称作为Key
        playListMap.put(playList.getPlayListName(),playList);
    }

    /**
     * delete 播放列表
     * @param playList
     */
	public void deletePlayList(PlayList playList) {
        playListMap.remove(playList.getPlayListName());
        System.out.println("delete success!");
    }

    /**
     * 通过名称查询列表
     * @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 displayPlayListName(){
        System.out.println("播放列表集合");
	    Set<String> listSet=playListMap.keySet();
	    for (String s:listSet){
            System.out.println(s);
        }
    }
}

  • TestDemo
package may11.player;

import java.util.Scanner;

public class TestDemo {
    // 对歌曲类进行测试
    public void testSong() {
        Song song = new Song("s001", "hello", "adaier");
        Song song2 = new Song("s002", "hello2", "adaier2");
        Song song3 = new Song("s003", "hello3", "adaier3");
        Song song4 = new Song("s003", "hello3", "adaier3");
        System.out.println(song);
        System.out.println("song1==song3:" + (song.equals(song3)));
        System.out.println("song3==song4:" + (song3.equals(song4)));

    }

    // 对播放列表PlayList测试
    public void testPlayList() {
        Song song = new Song("s001", "hello", "adaier");
        Song song2 = new Song("s002", "hello2", "adaier2");
        Song song3 = new Song("s003", "hello3", "adaier3");
        PlayList mainPlatList = new PlayList("主播放列表");
        mainPlatList.addToPlayList(song);
        mainPlatList.addToPlayList(song2);
        mainPlatList.addToPlayList(song3);
        mainPlatList.addToPlayList(song3);

        mainPlatList.displayAllSong();
        // 通过ID查询
        System.out.println("***********************************************");
        Song song1 = mainPlatList.searchSongById("s002");
        if (song1 != null) {
            System.out.println(song1);
        } else {
            System.out.println("歌曲不存在");
        }
        // 通过名称查询
        System.out.println("***********************************************");
        song1 = mainPlatList.searchSongByName("hello5");
        if (song1 != null) {
            System.out.println(song1);
        } else {
            System.out.println("歌曲不存在");
        }
        // 修改歌曲
        System.out.println("************************************************");
        Song song4 = new Song("s004", "hello4", "adaier4");
        mainPlatList.updateSong("s003", song4);
        mainPlatList.displayAllSong();
        // delete song
        System.out.println("************************************************");
        mainPlatList.deleteSong("s004");
        mainPlatList.displayAllSong();
        System.out.println("************************************************");
    }

    // 测试播放列表集合
    public void testPlayListCollection() {
        Song song = new Song("s001", "hello", "adaier");
        Song song2 = new Song("s002", "hello2", "adaier2");
        Song song3 = new Song("s003", "hello3", "adaier3");
        // 创建主播放列表
        PlayList mainPlayList = new PlayList("主播放列表");
        mainPlayList.addToPlayList(song);
        mainPlayList.addToPlayList(song2);
        mainPlayList.addToPlayList(song3);
        // 定义新的播放列表
        PlayList favouritePlayList = new PlayList("favourite");
        favouritePlayList.addToPlayList(mainPlayList.getMusicList().get(0));
        favouritePlayList.addToPlayList(mainPlayList.getMusicList().get(1));
        favouritePlayList.displayAllSong();
        System.out.println("************************************************");
        // 将2个播放列表添加进集合中
        PlayListCollection plc = new PlayListCollection();
        plc.addPlayList(mainPlayList);
        plc.addPlayList(favouritePlayList);
        plc.displayPlayListName();
        System.out.println("************************************************");
        PlayList pl = plc.searchPlayListByName("favourite");
        pl.displayAllSong();
        System.out.println("************************************************");
        // 删除
        plc.deletePlayList(favouritePlayList);
        plc.displayPlayListName();

    }

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

    // 播放列表管理菜单
    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 input1, input2, input3;
        // 创建播放列表容器
        PlayListCollection plc = new PlayListCollection();
        //创建主播放列表
        PlayList mainPlayList = new PlayList("主播放列表");
        PlayList favouritePlayList = null;
        plc.addPlayList(mainPlayList);
        while (true) {
            td.mianMenu();
            System.out.println("请输入对应数字进行操作:");
            input1 = sc.nextInt();
            if (input1 == 0) {
                break;
            }
            switch (input1) {
                case 1:
                    while (true) {
                        td.playListMenu();
                        System.out.println("请输入对应数字进行操作:");
                        input2 = sc.nextInt();
                        if (input2 == 9)
                            break;
                        switch (input2) {
                            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:");
                                    String strId = sc.next();
                                    System.out.println("请输入歌曲的名称:");
                                    String strName = sc.next();
                                    System.out.println("请输入演唱者:");
                                    String strSinger = sc.next();
                                    //创建歌曲类的对象
                                    Song song = new Song(strId, strName, strSinger);
                                    mainPlayList.addToPlayList(song);
                                    mainPlayList.displayAllSong();
                                }
                                break;
                            case 2:
                                System.out.println("将歌曲添加到普通播放列表");
                                System.out.println("请输入要添加的播放列表名称:");
                                String sName = sc.next();
                                //根据名称判断播放列表是否在播放器中存在
                                favouritePlayList = plc.searchPlayListByName(sName);
                                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:");
                                        String strId = sc.next();
                                        //首先判断该id的歌曲是否在主播放列表存在
                                        Song song = mainPlayList.searchSongById(strId);
                                        if (song == null) {
                                            //如果歌曲不存在,则创建新的添加,并且添加到主播放列表
                                            System.out.println("该歌曲在主播放列表不存在,继续输入歌曲的其他信息!");
                                            System.out.println("请输入歌曲名称:");
                                            String strName = sc.next();
                                            System.out.println("请输入演唱者:");
                                            String 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;
                        }
                    }
                    break;
                case 2:
                    while (true) {
                        td.playerMenu();
                        System.out.println("请输入对应数字进行操作:");
                        input3 = sc.nextInt();
                        if (input3 == 9)
                            break;
                        switch (input3) {
                            case 1:

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值