import java.util.*;
import java.text.*;

class DVDSet
{
    String[] name = new String[50]; //名字
    int[] state = new int[50];        //状态 1为可借,0为借出
    String[] date = new String[50]; //借出日期
    int[] count = new int[50];        //排行榜
}

class DVDMgr
{
    // 创建一个对象
    DVDSet dvd = new DVDSet();
    
    // 初始值
    public void initial(){
        dvd.name[0] = "罗马假日";
        dvd.state[0] = 0;
        dvd.date[0] = "2016-11-17";
        dvd.count[0] = 20;
        dvd.name[1] = "浪漫满屋";
        dvd.state[1] = 1;
        dvd.date[1] = " ";
        dvd.count[1] = 30;
        dvd.name[2] = "阿甘正传";
        dvd.state[2] = 1;
        dvd.date[2] = " ";
        dvd.count[2] = 10;
    }

    // 添加
    public void add(){

        System.out.print("请输入DVD名称:");
        Scanner sc = new Scanner(System.in);
        String newD = sc.next();

        for(int i = 0;i < dvd.name.length; i++){
            // 添加就是给数组的第一个null元素赋值
            if(dvd.name[i] == null){
                dvd.name[i] = newD;
                dvd.state[i] = 1;
                dvd.date[i] = " ";
                System.out.println("新增《"+newD+"》成功!");
                break;
            }
        }

    }

    // 查看
    public void search(){
        // 直接遍历数组 state为0 为不可借, 1为可借
        for(int i = 0;i < dvd.name.length; i++){
            if(dvd.name[i] == null){
                break;
            } else if(dvd.state[i] == 0){
                System.out.println((i+1) + "        "+ "不可借" + "     《"+ dvd.name[i] +"》        " +  dvd.date[i]);
            } else if(dvd.state[i] == 1){
                System.out.println((i+1) + "        "+ "可借" + "       《"+ dvd.name[i] +"》        " +  dvd.date[i]);
            }
        }
    }

    // 删除
    public void delete(){
        System.out.print("请输入DVD名称:");
        Scanner sc = new Scanner(System.in);
        String scDVD = sc.next();

        for(int i = 0;i < dvd.name.length;i++){
            if(dvd.name!=null &&dvd.name[i].equalsIgnoreCase(scDVD) && dvd.state[i] == 1){
                 int j=i;
                 // 删除原理:数组的后面一个覆盖前面的一个
                 while(dvd.name[j+1]!=null){
                    dvd.name[j]=dvd.name[j+1];
                    dvd.state[j]=dvd.state[j+1];
                    dvd.date[j]=dvd.date[j+1];
                     j++;
                 }
                 //并把数组的最后一个置为空
                dvd.name[j]=null;
                dvd.date[j]=null;
                dvd.state[j] = 0;
                System.out.println("删除《"+scDVD+"》成功!");
                 break;
            } else if(dvd.name!=null &&dvd.name[i].equalsIgnoreCase(scDVD) && dvd.state[i] == 0){
                System.out.println("《"+dvd.name[i]+"》该书为借出状态,不能删除");
                break;
            }
        }

    }

    // 借出
    public void lend(){
        System.out.print("请输入DVD名称:");
        Scanner sc = new Scanner(System.in);
        String scDVD = sc.next();
        for(int i = 0; i < dvd.name.length; i++){
            if(dvd.name[i] == null){
                System.out.println("没有找到匹配信息!");
                 break;
             }else if(dvd.name[i].equals(scDVD)&& dvd.state[i]==1){

                 dvd.state[i] = 0; // 借出时把状态设置为已借出, 模拟被借走
                System.out.print("请输入借出日期(年-月-日):");
                Scanner input = new Scanner(System.in);
                dvd.date[i]=input.next();
                System.out.println("借出《"+scDVD+"》成功!");

                dvd.count[i]++;//借出一次 借出次数就加1
                break;
             }else if(dvd.name[i].equals(scDVD)&& dvd.state[i]==0){
                System.out.println("《"+scDVD+"》已被借出!");
                break;
              }
         }
    }

    // 归还 并且模拟需要租金
    public void returnDvd(){
        System.out.print("请输入DVD名称:");
        Scanner sc = new Scanner(System.in);
        String scDVD = sc.next();

        for(int i = 0;i < dvd.name.length;i++){
            if(dvd.name[i].equals(scDVD)){
                System.out.print("请输入归还日期(年-月-日):");
                Scanner sc1 = new Scanner(System.in);
                String returnDVD = sc.next();
                long num = change(dvd.date[i],returnDVD); // 获取时间差  
                System.out.println();
                System.out.println("归还《"+dvd.name[i]+"》成功。");
                System.out.println("借出日期为:"+dvd.date[i]);
                System.out.println("归还日期为:"+returnDVD);
                dvd.state[i] = 1;   // 归还后 状态设置为1
                dvd.date[i] = " "; //清除时间
                System.out.println("应付租金(元): "+num);
                break;
            }else {
                System.out.println("请输入正确的DVD!");    
            }
        }
    }
    
    //计算日期差
    public long change(String str1, String str2){
        long change = 0;
        SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");  // 字符串转为Date做计算
        try{
            Date d1 = sd.parse(str1);  //该时间是以毫秒为单位,计算时记得转换
            Date d2 = sd.parse(str2);
            change = (d2.getTime()-d1.getTime())/(24*60*60*1000);  //转换得到天
        } catch(ParseException e){
            e.printStackTrace();
        }

        return change;
    }
    
    // 排行榜
    public void list (){
        int count = 0;
        String[] n =  new String[50];
        int[] c = new int[50];

        for(int i = 0; i < n.length; i++){
                c[i] = dvd.count[i];
                n[i] = dvd.name[i];
        }
    for(int i = 0;i < c.length; i++){     //使用排序算法
            for(int j = 1; j < c.length - i;j++){
                if(c[j]>c[j-1]){
                    String stemp = n[j];
                    n[j] = n[j-1];
                    n[j-1] = stemp;

                    int temp = c[j];
                    c[j] = c[j-1];
                    c[j-1] = temp;
                }
            }
        }
        System.out.println("次数      名称");
        for(int i = 0;i < c.length; i++){
            if(n[i]!=null){
                System.out.println(c[i]+"       "+n[i]);
            }
        }
    }

    // 菜单
    public void startMenu(){
        //界面的提示
        System.out.println("欢迎使用迷你DVD管理器\n----------------------------------------");
        String[] content = {"0. 借出排行帮","1. 新增DVD","2. 查看DVD","3. 删除DVD","4. 借出DVD","5. 归还DVD","6. 退   出"};
        for(String s:content){
            System.out.println(s);
        }
        System.out.println("----------------------------------------\n");
        System.out.print("请选择:");
        Scanner s = new Scanner(System.in);
        int num = s.nextInt();

        //switch 的多种选择
        switch(num){
            case 0:
                System.out.println("---> 排行榜\n");
                System.out.println("**************************");
                list(); //排行榜
                System.out.println("**************************");
                returnMain();
                break;
            case 1:
                System.out.println("---> 新增DVD\n");
                add(); //添加
                System.out.println("**************************");
                returnMain();
                break;
            case 2:
                System.out.println("---> 查看DVD\n");
                System.out.println("序号     状态        名称               借出日期");
                search(); // 查看
                System.out.println("******************************");
                returnMain();
                break;
            case 3:
                System.out.println("---> 删除DVD\n");
                delete();//删除
                System.out.println("******************************");
                returnMain();
                break;
            case 4:
                System.out.println("---> 借出DVD\n");
                lend(); //借出
                System.out.println("******************************");
                returnMain();
                break;
            case 5:
                System.out.println("---> 归还DVD\n");
                returnDvd(); //归还
                System.out.println("******************************");
                returnMain();
                break;
            default:
                System.out.println("欢迎下次继续使用!");
                break;

        }

    }

    // 返回键
    public void returnMain(){
        Scanner input = new Scanner(System.in);
        System.out.print("请输入0返回:");
        if(input.nextInt() == 0){
            startMenu();
        } else {
            System.out.println("输入错误,异常终止!");
        }
    }
}

class Demo
{
    public static void main(String[] args)
    {
        DVDMgr dvdM = new DVDMgr();
        //初始化数组
        dvdM.initial();
        // 开始菜单
        dvdM.startMenu();

    }
}

java模拟DVD管理器的更多相关文章

  1. java 迷你DVD管理器

    1.DvdSet类 package dvd_01; /** * 定义dvd的一些属性 * @author Administrator * */ public class DvdSet { String ...

  2. DVD管理器集合版

    利用所学的集合写出的DVD管理系统,运用到了所学到集合基础. import java.text.ParseException; import java.text.SimpleDateFormat; i ...

  3. 迷你DVD管理器

    import java.text.*; import java.util.*; class DVDSet { String[] name=new String[50]; //定义一个DVD数组 boo ...

  4. 迷你DVD管理器项目

    package chapter5; import java.util.*; public class MiniDVD { public static void main(String[] args){ ...

  5. 运用集合来做一个DVD管理器(全代码)

    package DVD;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Array ...

  6. java基础 布局管理器

    概念: 组建在容器(比如JFrame)中的位置和 大小 是由布局管理器来决定的.所有的容器都会使用一个布局管理器,通过它来自动进行组建的布局管理. 种类: java共提供了物种布局管理器:流式布局管理 ...

  7. JAVA 网格布局管理器

    //网格布局管理器 import java.awt.*; import javax.swing.*; public class Jiemian3 extends JFrame{ //定义组件 JBut ...

  8. JAVA 边界布局管理器

    //边界布局管理器 import java.awt.*; import javax.swing.*; public class Jiemian1 extends JFrame{ //定义组件 JBut ...

  9. Java 的布局管理器GridBagLayout的使用方法(转)

    GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求 ...

随机推荐

  1. eclipse 启动 出现Failed to create the Java Virtual Machine" 解决方案

    方法如下: 找到eclipse目录下的eclipse.ini,可以看到如下内容:-startupplugins/org.eclipse.equinox.launcher_1.1.0.v20100507 ...

  2. iOS Xcode制作模板类-b

    为什么要定义模板类 遵守代码规范可以提高代码可读性, 降低后期维护成本. 当我们定下了一个团队都认同的代码规范, 如我们要求所有的viewController的代码都得按照下面来组织: #pragma ...

  3. XMLHttpRequest 使用概括

    ***********************************************XMLHttpRequest对象初始化:********************************* ...

  4. 三菱plc编程电缆通讯端口设置方法(转载)

    三菱plc编程电缆通讯端口如何设置?三菱plc编程电缆通讯端口设置方法 时间:2015-10-21 05:09:20编辑:电工栏目:三菱plc 导读:三菱plc编程电缆通讯端口的设置方法,三菱plc上 ...

  5. hdu 4433

    一道dp题,虽然知道是dp,但是不会做: 学习了ACM_cxlove大神的代码,终于明白了: 搬运工: dp[i][j][k]表示 前i个已经完全匹配,而这时候,第i+1个已经加了j位,第i+2位已经 ...

  6. 《attodiskbenchmarks-v2.47》说明文件

    对于用电脑方便且不喜欢在手机上乱装软件的我来说,很喜欢,特此整理,并在miui首发. 一.软件介绍 ATTO Disk Benchmark是一款电脑端使用的专业测速软件,该软件非常小巧,但却很专业,是 ...

  7. 【Xamarin挖墙脚系列:典型的业务程序的结构搭建】

    原文:[Xamarin挖墙脚系列:典型的业务程序的结构搭建] 其实app就是客户端.在现代的程序中,都是典型的C/S结构.当然,一些离线的小游戏,功能性应用除外,如:电话本,通信录,短信查看等等 这个 ...

  8. Android ViewDragHelper源码解析

    在自定义ViewGroup的过程中,如果涉及到View的拖动滑动,ViewDragHelper的使用应该是少不了的,它提供了一系列用于用户拖动子View的辅助方法和相关的状态记录,像Navigatio ...

  9. Win7资源管理器已停止工作——StackHash_6c37,R6205错误

      2013-9-20 此问题由来已久,截图及"问题签名"如下: 问题签名: 问题事件名称: BEX64 应用程序名: Explorer.EXE 应用程序版本: 6.1.7601. ...

  10. linux svn服务器搭建、客户端操作、备份与恢复

    Subversion(SVN)是一个开源的版本控制系統,管理着随时间改变的数据.这些数据放置在一个中央资料档案库中,这个档案库很像一个普通的文件服务器,它会记住每一次文件的变动,这样就可以把档案恢复到 ...