java实战项目音乐管理系统

首先说明一下,本系统只是用来练习一下面向对象思想,java语言的基础,包括java数组,废话不多说,先上效果图

eclipse中运行的结果

运行效果

 然后说些废话!!!嘻嘻,,,,其实不是废话啦,就是一些如果和实现这个程序的过程,

首先冷静的分析一上午

------------------------------------------------------------------------分析中-----------------------------------------------------------------------

系统文件结构如下

一个项目,三个包名四个类

Music类代码如下:

package com.lph.musicmanager.model;
/*歌曲类
 *属性:
 *    歌名 歌手 歌曲时长
 *方法:
 *    toString打印信息方法
 *    以及set get访问方法
 *    方便实例化的构造方法
 *    
 */
public class Music {
    //歌名
    private String name;
    //歌手
    private String musicPlayer;
    //歌长
    private double musicTime;
    //标记歌曲的状态变量(由于数组定长 ,打标记的方法实现删除false默认正常true删除)
    private boolean isDelete;
    public Music() {
        this("","",0);
    }
    //带参数的构造方法
    public Music(String name,String player,double time) {
        this.name = name;
        this.musicPlayer = player;
        this.musicTime = time;
    }
    //set get方法
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getMusicPlayer() {
        return musicPlayer;
    }
    public void setMusicPlayer(String musicPlayer) {
        this.musicPlayer = musicPlayer;
    }
    public double getMusicTime() {
        return musicTime;
    }
    public void setMusicTime(double musicTime) {
        this.musicTime = musicTime;
    }
    
    public boolean isDelete() {
        return isDelete;
    }

    public void setDelete(boolean isDelete) {
        this.isDelete = isDelete;
    }

    //打印方法(歌名 歌手 歌长)
    @Override
    public String toString() {
        return "Music [name=" + name + ", musicPlayer=" + musicPlayer + ", musicTime=" + musicTime + "]";
    }
    
}

MusiList如下

package com.lph.musicmanager.model;

import java.util.Scanner;


/*歌单类
 *属性:歌曲数组
 *功能:查看歌单 查询歌曲 删除歌曲 添加歌曲
 */
public class MusicList {
    // 定义歌曲数组
    Music[] musicsArray;

    public MusicList() {
        // 实例化歌曲数组
        musicsArray = new Music[5];
        // 调用初始化方法
        initMusicArray();
    }

    // 私有的方法初始化歌单
    private void initMusicArray() {
        // 构造方法实例化一个对象,然后添加到数组
        Music music1 = new Music("平凡的一天", "毛不易", 240.0);
        musicsArray[0] = music1;
        Music music2 = new Music("北京欢迎你", "群星", 345.0);
        musicsArray[1] = music2;
    }

    // 歌单打印
    public void musicPrint() {
        // 遍历数组
        for (int i = 0; i < musicsArray.length; i++) {
            Music music = musicsArray[i];
            if (music != null) {
                System.out.println(music);
            }
        }
    }

    // 删除歌曲
    public void delete(String name) {
        // 遍历数组
        for (int i = 0; i < musicsArray.length; i++) {
            // 当前位置对象
            Music music = musicsArray[i];
            // 判断当前歌曲对象不为空并且歌名等于输入的歌名
            if (music != null && music.getName().equals(name)) {
                // 将状态设置为true
                music.setDelete(true);
                // 清空当前位置的
                musicsArray[i] = null;
                System.out.println("歌曲:" + music.getName() + "删除成功");
                return;
            }
        }
        System.out.println("不存在此歌曲信息");
    }

    // 添加歌曲
    public void musicAdd() {
        System.out.println("请输入歌曲名称");
        String musicName = new Scanner(System.in).next();
        System.out.println("请输入演唱者");
        String musicPlayer = new Scanner(System.in).next();
        System.out.println("请输入歌曲时长");
        double musicPayer = new Scanner(System.in).nextDouble();
        // 封装对象
        Music music = new Music(musicName, musicPlayer, musicPayer);
        // 调用对象添加方法
        boolean b = add(music);
        // 判断b
        if (b) {
            System.out.println("添加成功");
        } else {
            System.out.println("添加失败");
        }

    }

    // 添加歌曲对象
    public boolean add(Music music) {
        // 调用索引方法查看空索引
        int index = searchEmptyIndex();
        // 找到空索引
        if (index != -1) {
            musicsArray[index] = music;
            return true;
        }
        return false;
    }

    // 搜索歌曲
    public void searchMusic() {
        System.out.println("输入要查寻的歌名");
        String songName  = new Scanner(System.in).next();
        // 遍历数组
        for (int i = 0; i < musicsArray.length; i++) {
            // 获得数组当前位置元素
            Music music = musicsArray[i];
            // 不为空并且歌曲名字想同就返回
            if (music != null && music.getName().equals(songName)) {
                //打印歌曲信息
                System.out.println(music);
                return;
            }
        }
        System.out.println("歌曲搜索失败");
    }

    // 查询索引
    private int searchEmptyIndex() {
        for (int i = 0; i < musicsArray.length; i++) {
            Music music = musicsArray[i];
            // 当前位置为空,返回当前下标,用来把保存新的歌曲对象
            if (music == null) {
                return i;
            }
        }
        return -1;
    }

}

MainFrame代码如下

package com.lph.musicmanager.view;

import java.util.Scanner;

import com.lph.musicmanager.model.MusicList;


/*系统界面类的实现
 *功能:启动该类,为用户提供五个选项,通过选择不同的选项进行相应的操作
 *    1:查看歌单
 *    2:添加歌去
 *    3:搜索歌曲
 *    4:删除歌曲
 *    0:退出系统
 */
public class MainFrame {
    //创建歌单对象
    MusicList musicList;
    //构造器
    public MainFrame() {
        musicList = new MusicList();
        initFrame();
    }
    //初始化界面
    public void initFrame() {
        System.out.println("=================欢迎使用MUSIC系统=================");
        System.out.println();
        //while循环系统一直可以操作,知道输入0
        while(true) {
            System.out.print("1:查看歌单"+"  ");
            System.out.print("2:添加歌曲"+"  ");
            System.out.print("3:查询歌曲"+"  ");
            System.out.print("4:删除歌曲"+"  ");
            System.out.println("0:退出    ");    
            System.out.println();
            System.out.println("请选择你要执行的操作");
            //匿名类创建键盘输入对象 ,获取键盘输入
            int input = new  Scanner(System.in).nextInt();
            switch(input) {
            case 1:
                //调用查看歌单方法
                System.out.println("*********************查看歌单*********************");
                musicList.musicPrint();
                System.out.println("================================================");
                break;
            case 2:
                //调用添加歌曲方法
                System.out.println("*********************添加歌曲*********************");
                musicList.musicAdd();
                System.out.println("================================================");
                break;
            case 3:
                //调用查询歌曲方法
                System.out.println("*********************查询歌曲*********************");
                musicList.searchMusic();
                System.out.println("================================================");
                break;
            case 4:
                //调用删除歌曲方法
                System.out.println("*********************删除歌曲*********************");
                System.out.println("输入要删除的歌曲名称");
                //匿名类和创建键盘输入对象
                String name = new Scanner(System.in).next();
                musicList.delete(name);
                System.out.println("================================================");
                break;
            case 0:
                System.out.println("******************欢迎下次使用,再见!****************");
                return;
            default :
                System.out.println("!!!!!!!输入序号有误,重新选择!!!!!!");
                break;
            }
        }
    }
}

Test类如下

package com.lph.musicmanager.test;

import com.lph.musicmanager.view.MainFrame;

/*测试系统类
 *功能:实例化系统界面对象即可
 */
public class Test {
    public static void main(String[] args) {
        MainFrame mainFrame = new MainFrame();
    }
}

到这代码就写完了,自己运行看看效果,还是很不错的,有木有!!!!

当然这个只限于使用java基础知识+面向对象的思想写的,完全没有什么稍微深的知识

下面就是我装逼的时候了

--------------------------------------------------------------------思考中----------------------------------------------------------------------------------------

这个系统存储数据(对象)是用数组实现的!!!!但是数组有一个特点是定长的

那么如何搞定这个问题了,,通过在歌曲对象里面设置标记变量的思想,如果标记变量为false就记当前歌曲没删除,如果等于true就删除,这个也许是系统中最难的一点,也就是最难搞定的一点啦

到此博客写就写完了!!本人也很喜欢和志同道合的人交流啦!!工作一天了!!!!要休息了

晚安了

哦对了,感兴趣的可以关注一下我的公众号  java一号 

里面有大量java实战项目  教学视屏 

还可以在平时与我交流交流!!!!!!!!!!!!!

猜你喜欢

转载自blog.csdn.net/qq_34491508/article/details/81414822
今日推荐