
java实战项目音乐管理系统
发布日期:2021-05-14 13:25:00
浏览次数:16
分类:精选文章
本文共 7325 字,大约阅读时间需要 24 分钟。
概述
本系统可用来练习面向对象思想,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(); }}
目前系统存储数据是用数组实现的,但是数组有一个特点是定长的。对于这个问题了,通过在歌曲对象里面设置标记变量的思想,如果标记变量为false就记当前歌曲没删除,如果等于true就删除,这个也许是系统中最难的一点,也就是最难搞定的一点啦
更多java实战项目关注公众号 java一号
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月30日 22时55分20秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
vcenter访问报503错误处理
2021-05-15
项目计划甘特图绘制说明
2021-05-15
1004.串口收发数据集成bug
2021-05-15
09.QT应用程序启动外部exe文件
2021-05-15
1009. clion调试段错误
2021-05-15
C/C++:线性表之顺序表
2021-05-15
嵌入式系统试题库(CSU)
2021-05-15
图神经网络7日打卡营学习心得
2021-05-15
electronJS 开发linux App
2021-05-15
STM32F7 LWIP协议栈TCP速度测试
2021-05-15
Arm Mbed OS 更适合大学实训平台
2021-05-15
MbedOS 设备中的模数转换(ADC)
2021-05-15
MbedOS+MQTT+TICK 栈构建企业大数据平台
2021-05-15
C++ influxdb 客户端
2021-05-15
关于编程能力的思考
2021-05-15
【vue】setInterval的嵌套实例
2021-05-15
【SpringBoot】如何配置热部署
2021-05-15
【rabbitMQ】04 如何实现高可用?
2021-05-15