DVD操作系统

package com.qfeud.MiniDVDSystem;
//描述类DVD类 ---》 提供DVD基础信息的存储

import java.util.Objects;

public class DVD {
   private String name;//DVD名称
   private int state;//DVD借出状态(0:已借出,1:可借)
   private int date;//DVD借出日期
   private int count;//借出次数
    public DVD() {

    }
    public DVD(String name, int state, int date, int count) {
        this.name = name;
        this.state = state;
        this.date = date;
        this.count = count;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }

    public int getDate() {
        return date;
    }

    public void setDate(int date) {
        this.date = date;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    //为了打印DVD对象信息方便
    @Override
    public String toString() {
        return (state == 0 ? "已借出" : "可借")+"\t\t《"+name+"》\t"+
                (date == 0 ? "" : date+"日")+"\t\t"+(count == 0 ? "" : count+"次");
    }

    //为了提供比较DVD信息操作 ---》 名字相同就是认为是同一个对象
    @Override
    public boolean equals(Object o) {
       //1.现将Object了类对象o向下转型为DVD类型
       DVD other = (DVD)o;
       return this.name.equals(other.name);
    }

    @Override
    public int hashCode() {
        return name.hashCode()+count;
    }
}
package com.qfeud.MiniDVDSystem;
//DVD中要执行的操作
public interface IDVDInterface {
    /**
     * 增加DVD影片
     * @param dvds  存储DVD信息数组
     * @param dvd   要添加DVD信息
     * @return true ---> 新增成功 false ---> 新增失败
     */
    boolean addDVD(DVD[] dvds ,DVD dvd);

    /**
     * 查看DVD影片
     * @param dvds  存储DVD信息数组
     */
    void selectDVD(DVD[] dvds);

    /**
     * 删除DVD影片
     * @param dvds  存储DVD信息数组
     * @param dvd   要删除DVD信息
     * @return true ---> 删除成功 false ---> 删除失败
     */
    boolean deleteDVD(DVD[] dvds ,DVD dvd);

    /**
     * 借出DVD影片
     * @param dvds  存储DVD信息数组
     * @param dvd   要借出DVD信息
     * @return true ---> 借出成功 false ---> 借出失败
     */
    boolean lendDVD(DVD[] dvds ,DVD dvd);

    /**
     * 归还DVD影片
     * @param dvds  存储DVD信息数组
     * @param dvd   要归还DVD信息
     * @return true ---> 归还成功 false ---> 归还失败
     */
    boolean returnDVD(DVD[] dvds ,DVD dvd);
}
package com.qfeud.MiniDVDSystem;

import com.sun.javafx.logging.JFRInputEvent;

//只要是实现接口类,实现类都不需要在末尾添加Impl,代表是接口的实现类
public class DVDManagerImpl implements  IDVDInterface{
    @Override
    public boolean addDVD(DVD[] dvds, DVD dvd) {
        //1.数组中存储了满了,不允许在添加DVD对象
        if(dvds[dvds.length-1] != null){
            System.out.println("抱歉,DVD存储碟片信息已满,不能在新增DVD了.............");
            return false;
        }
        /*
        2.DVD存储信息如果有名字相同的就不允许在存了 --> 只要DVD名字相等,就认为是相同对象
        可以在DVD类中提供equals重写,比较原则就是DVD的名称
         */
         if(DVDUtils.isExistSameDVD(dvds,dvd)) {
             System.out.println("抱歉,DVD存储的碟盘信息有重名的,不能进行新增DVD了.........");
             return false;
         }
        //3.向DVD数组中新增数据
        for(int  i = 0 ; i<dvds.length;i++){
            if(dvds[i] == null){ //判断等于null,证明数组当前位置没有存数据,所以可以进行存储
                dvds[i] = dvd;
                break;
            }
        }
        return true;

    }

    @Override
    public void selectDVD(DVD[] dvds) {
        //定义一个变量【打印序号】
        int cut = 0;
        //提供打印数据表头
        System.out.println("序号\t\t状态\t\t名称\t\t借出日期\t\t借出次数");
        for (DVD dvd : dvds){
            if(dvd != null){ //证明获取出存储的DVD信息了
                //因为要打印DVD的信息了,所以可以提供toString重写完成信息打印操作
                System.out.println((++cut)+"\t\t"+dvd);
            }
        }
    }

    @Override
    public boolean deleteDVD(DVD[] dvds, DVD dvd) {
        //1.不存在DVD数组中DVD信息对象,不进行删除【原则:判断DVD的名字】
        if(!DVDUtils.isExistSameDVD(dvds,dvd)){
            System.out.println("抱歉,DVD中不存在您要删除的影片:"+dvd.getName()+"不能删除...........");
            return false;
        }
        //2.借出DVD不能删除
        for(DVD dvdTemp : dvds){
            //为了防止空指针和判断要删除DVD信息的存在【找到DVD信息】
            if(dvd != null && dvdTemp != null && dvdTemp.equals(dvd)){
                //判断找到DVD信息借出状态 ---》 如果为0,证明已借出,无法删除
                if(dvdTemp.getState() == 0){
                    System.out.println("抱歉,DVD中您要删除影片,已经被借出:"+dvd.getName()+"不能删除...........");
                    return false;
                }
            }
        }
        //3.删除数组中DVD信息
        for(int  i =0 ; i<dvds.length;i++){
            //为了防止空指针,判断传入删除对象与数组中对象位置
            if(dvd != null && dvd.equals(dvds[i])){
                dvds[i] = null;
                //将数组中有DVD信息数据放置到一起,没有数据放置到一起,保证addDVD操作是可以执行
                for(int j = i; j<dvds.length-1;j++){
                    dvds[j] = dvds[j+1];
                }
                //需要将最后以为赋值为null
                dvds[dvds.length-1] = null;
                break;

            }
        }

        return true;
    }

    @Override
    public boolean lendDVD(DVD[] dvds, DVD dvd) {
        //1.不存在DVD数组中DVD信息对象,不进行借出【原则:判断DVD的名字】
        if(!DVDUtils.isExistSameDVD(dvds,dvd)){
            System.out.println("抱歉,DVD中不存在您要借出的影片:"+dvd.getName()+"不能借出...........");
            return false;
        }
        //2.借出DVD不能借出
        for(DVD dvdTemp : dvds){
            //为了防止空指针和判断要删除DVD信息的存在【找到DVD信息】
            if(dvd != null && dvdTemp != null && dvdTemp.equals(dvd)){
                //判断找到DVD信息借出状态 ---》 如果为0,证明已借出,无法借出
                if(dvdTemp.getState() == 0){
                    System.out.println("抱歉,DVD中您要借出影片,已经被借出:"+dvd.getName()+"不能借出...........");
                    return false;
                }
            }
        }
        //3.借出DVD的信息修改
        for(int  i = 0 ; i<dvds.length;i++){
            if(dvd!= null && dvd.equals(dvds[i])){
                //修改存储在数组中的DVD信息
                dvds[i].setState(0); //将可借状态修改Wie借出
                dvds[i].setDate(dvd.getDate());//修改借出日期
                dvds[i].setCount( dvds[i].getCount()+1);//修改借出次数
                break;
            }
        }
        return true;
    }

    @Override
    public boolean returnDVD(DVD[] dvds, DVD dvd) {
        //1.不存在DVD数组中DVD信息对象,不进行归还【原则:判断DVD的名字】
        if(!DVDUtils.isExistSameDVD(dvds,dvd)){
            System.out.println("抱歉,DVD中不存在您要归还的影片:"+dvd.getName()+"不能归还...........");
            return false;
        }
        //2.可借DVD不能归还
        for(DVD dvdTemp : dvds){
            //为了防止空指针和判断要删除DVD信息的存在【找到DVD信息】
            if(dvd != null && dvdTemp != null && dvdTemp.equals(dvd)){
                //判断找到DVD信息借出状态 ---》 如果为1,证明可借,无法归还
                if(dvdTemp.getState() == 1){
                    System.out.println("抱歉,DVD中您要归还影片,是可借状态:"+dvd.getName()+"不能归还...........");
                    return false;
                }
            }
        }
        //3.提供归还操作
        for(int  i = 0 ; i<dvds.length;i++){
            if(dvd != null && dvds[i] !=null && dvd.equals(dvds[i])){
                //将DVD状态修改为可借
                dvds[i].setState(1);
                //将DVD时间信息修改为0
                dvds[i].setDate(0);
                break;
            }
        }
        return true;
    }
}
package com.qfeud.MiniDVDSystem;
//DVD工具类
public class DVDUtils {
    private  DVDUtils(){}

    /**
     * 判断数组中是否存在相同DVD对象
     * @param dvds 存储DVD信息对象数组
     * @param dvd  外界得到DVD对象【与数组中进行比较】
     * @return true 证明存储相同DVD  false 证明没有存储相同DVD
     */
    public  static boolean isExistSameDVD(DVD[] dvds,DVD dvd){
        for(DVD dvdtmp : dvds){
            if (dvdtmp != null && dvd != null && dvdtmp.equals(dvd)){
                return true;  //证明找到了相同DVD对象
            }
        }
        //for循环中return一次都不执行,证明没有相同DVD对象
        return false;
    }
}
package com.qfeud.MiniDVDSystem;

import java.util.Arrays;
import java.util.Scanner;

//提供的执行类 ---》 DVD程序主体运行
public class MiniDVDSystem {
    public static void main(String[] args) {
        //1.提供获取用户输入
        Scanner input = new Scanner(System.in);
        //2.提供初始化数据操作
        /*2.1提供第一种创建方式
        【提供存储DVD信息数组,存储DVD类的对象,所以数组中存储的数据类型DVD,DVD是类即引用类型】
        创建了一个容量为6的数组,没有存储数据之前,数组中存储的值是---》[null,null,null,null,null,null];
         */
        DVD[] dvds = new DVD[6];
        //提供基础数据存储 ---》[DVD对象1,DVD对象2,DVD对象3,null,null,null]
        dvds[0] = new DVD("罗马假日",0,1,15);
        dvds[1] = new DVD("风声鹤唳",1,0,12);
        dvds[2] = new DVD("浪漫满屋",1,0,30);
        /*2.2 提供第二种创建方式
        初始容量是6,现在只存储3个对象,剩余三个对象是没有,所以使用 null占位
         DVD[] dvds2 = {
             new DVD("罗马假日",0,1,15),
             new DVD("风声鹤唳",1,0,12),
             new DVD("浪漫满屋",1,0,30),
             null,null,null
        };
         */

        //3.创建一个操作DVD业务对象
        DVDManagerImpl  manager = new DVDManagerImpl();

        //4.模拟DVD业务执行操作
        while(true){
            //4.1提供实现菜单页面
            System.out.println("欢迎进入到miniDVD管理系统");
            System.out.println("-------------------------------------------------------------");
            System.out.println("1.新增DVD");
            System.out.println("2.查看DVD");
            System.out.println("3.删除DVD");
            System.out.println("4.借出DVD");
            System.out.println("5.归还DVD");
            System.out.println("6.退出DVD");
            System.out.println("-------------------------------------------------------------");
            System.out.println("请选择:");
            //4.2接收用户输入的数据
            int num = input.nextInt();
            //提供一个DVD对象创建,存储外界数据,方便在业务逻辑中进行数据传递操作
            DVD dvd = new DVD();
            switch (num){
                 //4.3业务处理调用逻辑
                case 1:
                    System.out.println("--->新增DVD");
                    System.out.println("请输入DVD的名字:");
                    dvd.setName(input.next());
                    dvd.setState(1);//设置DVD的状态信息
                    if(manager.addDVD(dvds,dvd)){
                        System.out.println("新增DVD"+dvd.getName()+"成功");
                    }else{
                        System.out.println("新增DVD"+dvd.getName()+"失败");
                    }
                    break;
                case 2:
                    System.out.println("--->查看DVD");
                    manager.selectDVD(dvds);
                    break;
                case 3:
                    System.out.println("--->删除DVD");
                    System.out.println("删除DVD的名字:");
                    dvd.setName(input.next());
                    if(manager.deleteDVD(dvds,dvd)){
                        System.out.println("删除DVD"+dvd.getName()+"成功");
                    }else{
                        System.out.println("删除DVD"+dvd.getName()+"失败");
                    }
                    break;
                case 4:
                    System.out.println("--->借出DVD");
                    System.out.println("借出DVD的名字:");
                    dvd.setName(input.next());
                    System.out.println("借出DVD的日期:");
                    dvd.setDate(input.nextInt());
                    if(manager.lendDVD(dvds,dvd)){
                        System.out.println("借出DVD"+dvd.getName()+"成功");
                    }else{
                        System.out.println("借出DVD"+dvd.getName()+"失败");
                    }
                    break;
                case 5:
                    System.out.println("--->归还DVD");
                    System.out.println("归还DVD的名字:");
                    dvd.setName(input.next());
                    if(manager.returnDVD(dvds,dvd)){
                        System.out.println("归还DVD"+dvd.getName()+"成功");
                    }else{
                        System.out.println("归还DVD"+dvd.getName()+"失败");
                    }
                    break;
                default:
                    System.out.println("--->退出DVD");
                    System.out.println("谢谢使用Thanks♪(・ω・)ノ");
                    return;

            }
        }

    }
}
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值