首先说明一下,本系统只是用来练习一下面向对象思想,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实战项目 教学视屏
还可以在平时与我交流交流!!!!!!!!!!!!!