package sy.com.cn;
import java.util.*;
    public class DvdWorker {
        public static void main(String[]args){
            //标识是否退出DVD
            boolean biao=false;
            //初始化数据 DVD名称
            String[] name=new String[6];
            //DVD 的状态
            int[] state=new int[6];
            //DVD的借出时间
            int[] date=new int[6];
            //DVD借出次数
            int[] conut=new int[6];
            //变量的初始化
            name[0]="罗马假日";
            state[0]=1;// 1表示已借出 0表示可阅借;
            date[0]=7;//借出日期是7日
            conut[0]=13;//已借出13次
            name[1]="风声鹤唳";
            state[1]=0;// 1表示已借出 0表示可阅借;
            date[1]=0;//借出日期是0日
            conut[1]=15;//已借出15次
            name[2]="浪漫满屋";
            state[2]=0;// 1表示已借出 0表示可阅借;
            date[2]=0;//借出日期是0日
            conut[2]=19;//已借出19次
            name[3]="笑傲江湖";
            state[3]=0;// 1表示已借出 0表示可阅借;
            date[3]=0;//借出日期是0日
            conut[3]=100;//已借出100次
            //用户输入数字的变量 no
            int no=-1;
            do{
                //输出DVD菜单
                System.out.println("欢迎使用迷你DVD管理器");
                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("---------------------------------------------");
                Scanner input=new Scanner(System.in);
                System.out.println("请选择:");
                //获取用户输入的数字
                no=input.nextInt();
                switch(no){
                    case 1:
                        //新增DVD的操作 
                        System.out.println("--->新增DVD\n");
                        System.out.println("请输入DVD名称:");
                        String names=input.next();
                        //false表示没有插入进去 true表示插入进去了。
                        boolean flag=false;
                        for( int i=0;i<name.length;i++){
                        //插入的DVD 位置是空的时候方能插入
                            if(name[i]==null){
                                name[i]=names;
                                flag=true;
                                break;
                            }
                        }
                        if(flag){
                            System.out.println("新增《"+names+"》成功!");
                        }else{
                            System.out.println("光盘已满,不能新增了");
                        }
                        break;
                    case 2:
                        //查看DVD的操作 循环输出 名称 状态 等属性
                        System.out.println("--->查看DVD\n");
                        System.out.println("序号\t状态\t名称\t\t\t借出日期\t借出次数");
                        //输出 查看DVD菜单
                        for(int i=0;i<name.length;i++){
                            if(name[i]!=null){
                                String yue=(state[i]==0)?"可阅借":"已借出";
                                String ri=(date[i]==0)?"":date[i]+"日";
                                String ci=conut[i]+"次";
                                System.out.println((i+1)+"\t"+yue+"\t"+name[i]+"\t\t\t"+ri+"\t"+ci);
                            }
                        }
                        break;
                    case 3:
                        //删除DVD的操作 首先要输入要删除的名称 是否能被删除 以及从后往前赋值。
                        System.out.println("--->删除DVD\n");
                        System.out.print("请输入DVD名称:");
                        String shanChu=input.next();
                        int index=name.length;
                        //标识输入的名称是否能被删除 false是不能被删除 true能被删除
                        boolean biao2=false;
                        for(int i=0;i<name.length;i++){
                            if(shanChu.equals(name[i])&&state[i]==1){
                                biao2=true;
                                System.out.println("对不起,DVD已经解除无法删除");
                                break;
                            }else if(shanChu.equals(name[i])&&state[i]==0){
                                biao2=true;
                                index=i;
                                System.out.println("删除《"+shanChu+"》成功!");
                                break;
                            }
                        }
                        //进行删除出操作
                        for(int j=index;j<name.length-1;j++){
                            name[j]=name[j+1];
                            state[j]=state[j+1];
                            date[j]=date[j+1];
                            conut[j]=conut[j+1];
                        //依次往前赋值之后 最后一个值是0
                            name[name.length-1]=null;
                            state[state.length-1]=0;
                            date[date.length-1]=0;
                            conut[conut.length-1]=0;
                        }
                        if(!biao2){
                        //标识 如果是false 就找不到相匹配的 无法删除
                            System.out.println("对不起,没有找到相应的DVD,不能删除");
                        }
                        break;
                    //借出DVD的操作
                    case 4:
                        System.out.println("--->借出DVD\n");
                        System.out.print("请输入DVD名称:");
                        String jieChu=input.next();
                        for(int i=0;i<name.length;i++){
                        //如果里面是空的话 则找不到DVD 不能借出
                            if(name[i]==null){
                                System.out.println("抱歉,没有找到DVD");
                                break;
                            }else if(jieChu.equals(name[i])&&state[i]==1){
                                System.out.println("抱歉,您找的DVD已借出");
                                break;
                            }else if(jieChu.equals(name[i])&&state[i]==0){
                                System.out.println("请输入借出日期:");
                                date[i]=input.nextInt();
                                //日期必须在1到31之间 否则就从新输入日期
                                while(date[i]<1||date[i]>31){
                                    System.out.println("日期输入错误必须在1-31日之间,\n请重新输入:");
                                    date[i]=input.nextInt();
                                }
                                //借出之后 次数加1 然后状态变为已借出
                                state[i]=1;
                                conut[i]++;
                                System.out.println("借出《"+jieChu+"》成功!");
                                break;
                            }
                        }
                        break;
                    //归还DVD的操作
                    case 5:
                        System.out.println("--->归还DVD\n");
                        //获取用户的输入 想要归还的DVD
                        System.out.print("请输入DVD名称:");
                        String guiHuan=input.next();
                        for(int i=0;i<name.length;i++){
                            if(name[i]==null){
                                System.out.println("没有匹配的DVD信息");
                                break;
                            }else if(guiHuan.equals(name[i])&&state[i]==0){
                                System.out.println("已存在 无法归还");
                                break;
                            }else if(guiHuan.equals(name[i])&&state[i]==1){
                                System.out.print("请输入归还日期:");
                                int dates=input.nextInt();
                                //归还日期必须大于借出日期
                                while(dates<date[i]||dates>31){
                                    if(dates<date[i]){
                                        System.out.println("输入日期有误,归还日期不能小于借出日期\n请重新输入:");
                                    }else if(dates>31){
                                        System.out.println("输入日期有误,归还日期必须在1-31日之间\n请重新输入:");
                                    }
                                    dates=input.nextInt();
                                }
                                //计算租金 一天一元钱 money=(dates-date[i])*1
                                double money=(dates-date[i])*1.0;
                                System.out.println("*************************************");
                                System.out.println("归还《"+guiHuan+"》成功!");
                                System.out.println("借出日期是:"+date[i]+"日");
                                System.out.println("归还日期是:"+dates+"日");
                                System.out.println("应付租金(元):"+money+"元");
                                //数据更新
                                state[i]=0;
                                date[i]=0;
                                break;
                            }
                        }
                        break;
                    // 退出DVD程序 
                    case 6:
                        biao=true;
                        break;
                    default:
                        biao=true;
                        break;
                }
                if(biao){
                    no=-1;
                    break;
                }else{
                    System.out.println("**********************************");
                    //获取用户的输入
                    System.out.println("请输入0返回");
                    no=input.nextInt();
                }
            //当no的值是0的时候再次进入循环体
            }while( no==0);
            System.out.println("退出DVD");
        }
    }