java简易DVD影片管理系统—面向对象


public
class DvdSet { String name [] =new String[15]; // DVD电影名称 String date [] =new String[15]; //DVD电影借出时间 int num [] =new int[15]; //DVD的借出次数 int state[] =new int[15]; //DVD的借出状态 0.没有借出 1.借出去了 }
import java.text.*;
import java.util.*;
import java.util.Scanner;

public class DvdMgr {

    DvdSet dvdSet = new DvdSet();

    //把初始影片的信息传给数组保存
    public void initial() {
        //第一个影片
        dvdSet.name[0] = "羞羞的铁拳";
        dvdSet.state[0] = 1;
        dvdSet.num[0] = 82;
        dvdSet.date[0] = "2017-10-1";
        //第二个影片
        dvdSet.name[1] = "大鱼海棠";
        dvdSet.state[1] = 1;
        dvdSet.num[1] = 189;
        dvdSet.date[1] = "2017-10-7";

        //第三个影片
        dvdSet.name[2] = "缝纫机乐队";
        dvdSet.state[2] = 0;
        dvdSet.date[2] = "暂无";
    }

    public void show() {
        System.out.println("***********************************");
        System.out.println("****** 欢迎使用益达DVD管理器 ******");
        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.退出         ******");
        System.out.println("**********************************");

        System.out.println("请输入你需要选择的编号:(1~6)");
        Scanner input = new Scanner(System.in);
        switch (input.nextInt()) {
            case 1:
                AddMovies();
                backshwo();
                break;
            case 2:
                looklist();
                backshwo();
                break;
            case 3:
                remove();
                backshwo();
                break;
            case 4:
                lend();
                backshwo();
                break;
            case 5:
                backDVD();
                backshwo();
                break;
            case 6:
                System.out.println("感谢使用,我们下次再见!");
                break;
            default:
                System.out.println("输入有误,本系统都吓奔溃了~");
        }
    }


    //返回主菜单

    public void backshwo() {
        System.out.println("请输入0返回主菜单");
        Scanner input = new Scanner(System.in);
        if (input.nextInt() == 0) {
            show();
        } else {
            System.out.println("非常抱歉大爷,你输入有误,请重新输入!");
            backshwo();
        }

    }

    //新增加DVD影片----case 1:
    public void AddMovies() {
        System.out.println("**** 欢迎进入增加影片系统!****");
        System.out.println("请输入你的要增加的影片名称:(拒绝添加黄堵毒等不良内容!)");
        Scanner input = new Scanner(System.in);
        String name = input.next();       //输入要增加的电影名称
        for (int i = 0; i < dvdSet.name.length; i++) {
            if (dvdSet.name[i] == null) {    //if 如果数字的i位置为空,
                dvdSet.name[i] = name;      //那么把输入的name赋值给数组i位置
                dvdSet.state[i] = 0;       //所以i位置的借出状态为 未借出  也就是0;
                dvdSet.date[i]="暂无";     //所以i位置的借出日期为暂无
                break;                  //这里加上break结束循环 否贼会把所有数组中空位置都赋值上
            }
        }
        System.out.println("添加" + name + "影片成功!恭喜你没有搞事情!");
    }

    //查看影片功能-----case 2:
    public void looklist() {
        System.out.println("********************************* 影片列表 ********************************");
        System.out.println("*\t序号\t\t状态\t\t\t名称\t\t\t借出日期\t\t借出次数  *");
        for (int i = 0; i < dvdSet.name.length; i++) {
            if (dvdSet.name[i] == null) {      //如果数组i位置没有影片,那么我们不输出他
                break;
            } else if (dvdSet.state[i] == 0) {   //如果该位置有影片,但是借出状态为0,输出可借出
                System.out.println("*\t" + (i + 1) + "\t\t\t可借出\t" + "\t\t" + dvdSet.name[i] + "\t\t" + dvdSet.date[i] + "\t\t\t" + dvdSet.num[i] + "次\t\t  *");
            } else if (dvdSet.state[i] == 1) {  //如果该位置有影片,但是借出状态为1,输出已经借出
                System.out.println("*\t" + (i + 1) + "\t\t\t已经借出" + "\t\t" + dvdSet.name[i] + "\t\t" + dvdSet.date[i] + "\t\t" + dvdSet.num[i] + "次\t  *");
            }
        }
        System.out.println("***************************************************************************");
    }


    //删除影片功能----case 3:
    public void remove() {
        System.out.println("******欢迎进入删除页面*****");
        looklist();
        System.out.println("请输入您要删除的DVD名称:");
        Scanner input = new Scanner(System.in);
        String name = input.next();

        //没有借出就可以删除
        //1.判断需要删除的电影位置后面是否为空,如果为空就把删除的电影每个属性赋值为空
        //因为显示列表设定如果电影名称为null空的话就不会显示他,所以我们简单点把name赋值为空即可
        //如果后面的位置不为null,那么我们需要把后面的全部数据向前覆盖,即可完成删除操作。

        for (int i = 0; i < dvdSet.name.length; i++) {
            //查找是否存在
            if (dvdSet.name[i] != null) {

                if (dvdSet.name[i].equalsIgnoreCase(name)) { //已经找到

                    //是否已经被借出
                    if (dvdSet.state[i] == 1) { // 借出
                        System.out.println("《" + name + "》已经被借出");
                        break;
                    } else if (dvdSet.state[i] == 0) {

                        //没有借出需要删除
                        //思路 : 1.用后面一个替换前面的。
                        //2.把最后面多余的地方赋值为null.


                        for (int j = i; j < dvdSet.name.length; j++) {

                            //做交换
                            if (dvdSet.name[j + 1] != null) {
                                dvdSet.name[j] = dvdSet.name[j + 1];
                                dvdSet.state[j] = dvdSet.state[j + 1];

                            } else {
                                //清空最后一个值
                                dvdSet.name[j] = null;
                                dvdSet.date[j] = null;
                                break;
                            }

                        }

                        System.out.println("删除《" + name + "》成功");
                        break;
                    }
                }

            } else {

                System.out.println("没有您要删除的dvd");
                System.out.println("***********************************************");
                break;
            }
        }

    }


    //借出DVD----case 4:

    public void lend() {
        System.out.println("欢迎来到借影片系统!");

        //显示影片列表
        looklist();

        //输入要借的影片名
        System.out.println("请输入要借的影片名:");
        Scanner input = new Scanner(System.in);
        String name = input.next();
        for (int i = 0; i < dvdSet.name.length; i++) {
            //只对比数值不为空的数组里的数据
            if (dvdSet.name[i] != null) {
                //检查影片是否存在并且检查有没有被借出,没有就可以借。
                if (dvdSet.name[i].equals(name) && dvdSet.state[i] == 0) {
                    //找到匹配电影名并且状态为未借出,所以开始输入借书时间,并传给数组
                    System.out.println("请输入借DVD的时间(年-月-日):");
                    //把借影片时间传给数组对应位置
                    Scanner Datainput = new Scanner(System.in);
                    dvdSet.date[i] = Datainput.next();
                    //把对应的借影片状态改为已经借出
                    dvdSet.state[i] = 1;
                    //借出次数加1
                    dvdSet.num[i]++;
                    break;
                    //检查影片是否存在并且检查有没有被借出,已经借出,则输出已经借出。
                } else if (dvdSet.name[i].equals(name) && dvdSet.state[i] == 1) {
                    //找到匹配电影名并且状态为已经借出,所以输出已经借出
                    System.out.println("非常抱歉,影片已经被借出!");
                    break;
                }
            } else {
                //如果上面两个条件都不满足,则说明没有找到匹配的影片,输出没有此影片
                System.out.println("抱歉没有找到你要借的影片");
                break;
            }
        }
    }

    //归还DVD-----case 5:

    public void backDVD() {
        //显示影片列表,可以知道影片的借出状态
        looklist();

        System.out.println("请输入你要归还的影片名称:");
        Scanner input = new Scanner(System.in);
        String name = input.next();
        for (int i = 0; i < dvdSet.name.length; i++) {
            //对比名称数组里不为空的值
            if (dvdSet.name[i] != null) {
                //如果我们输入的name电影名称和数组里面有相匹配的并且状态为没有借出,那么输出这部电影还在我们影院
                if (dvdSet.name[i].equals(name) && dvdSet.state[i] == 0) {
                    System.out.println("这部影片还在我们影院啊!您拿来的是盗版吗?");
                    break;
                    //如果我们输入的name电影名称和数组里面有相匹配的并且状态为已经借出,那么输出我们归还影片成功
                } else if (dvdSet.name[i].equals(name) && dvdSet.state[i] == 1) {

                    //添加获取时间差时间差--(若要删除此功能,注释或删除以下三行代码,并注释或删除整个获取时间差的方法)
                    System.out.println("请输入归还书籍的时间(年-月-日):");
                    Scanner inputDate = new Scanner(System.in);
                    //获取时间差,把括号里的参数传给获取时间差的方法里,得到charge时间差,时间差的方法写在了结尾
                    long charge = charge(dvdSet.date[i], inputDate.next());

                    //修改这部影片的状态为---可借出
                    dvdSet.state[i] = 0;
                    //修改这部影片的借出日期为----暂无
                    dvdSet.date[i] = "暂无";
                    //这部影片的借出次数加1
                    dvdSet.num[i]++;
                    System.out.println("归还《" + name + "》影片成功!一共借该影片" + charge + "天!");
                    System.out.println("您借该影片价格为每天2元钱,所以您需要付费"+(charge*2)+"元!");
                    break;
                }
            } else {
                //以上条件都不符合,说明列表无输出的影片,则输出-输入有误
                System.out.println("输入有误,我们影院没有这种三观不正的影片!");
                break;
            }
        }
    }

    //获取时间差的方法----附加
    public long charge(String date1, String date2) {

        //做时间差
        //将String转为Date做计算
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        //初始化时间差为0
        long charge = 0;
        try {
            //借出影片的时间
            Date lendData = simpleDateFormat.parse(date1);
            //归还影片的时间
            Date backData = simpleDateFormat.parse(date2);
            //时间以毫秒为单位,所以乘以1000
            charge = (backData.getTime() - lendData.getTime()) / (1000 * 24 * 60 * 60);
        } catch (ParseException e) {
            System.out.println(e);
        }

        return charge;
    }
public class TestDVD {
    public static void main(String[] args) {
        DvdMgr dvdMgr = new DvdMgr();
        //把原本有的三个电影运行传递给数组
        dvdMgr.initial();

        //开始运行菜单
        dvdMgr.show();
    }
}
原文地址:https://www.cnblogs.com/ichimoku/p/7662113.html