03_模拟DVD

package com.entity;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DVD {
    private String name;
    private boolean borrowed;
    private Date borrowedTime;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Date getBorrowedTime() {
        return borrowedTime;
    }
    public void setBorrowedTime(Date borrowedTime) {
        this.borrowedTime = borrowedTime;
    }
    public DVD(String name, boolean borrowed, Date borrowedTime) {
        super();
        this.name = name;
        this.setBorrowed(borrowed);
        this.borrowedTime = borrowedTime;
    }
    public DVD() {
        super();
    }
    public String toString(){
        String status= isBorrowed()?"已借出":"可借";
        String date;
        if(getBorrowedTime()==null){
            date="";
        }else{
            date=new SimpleDateFormat("yyyy-MM-dd").format(getBorrowedTime());
        }
        return "《"+getName()+"》\t"+status+"\t"+date;
    }
    public void setBorrowed(boolean borrowed) {
        this.borrowed = borrowed;
    }
    public boolean isBorrowed() {
        return borrowed;
    }

}
package com.entity;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;

public class DVDManager {
    private ArrayList<DVD> dvdList;
    private final int price=2;//一张DVD2块钱1天
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    Scanner input=new Scanner(System.in);

    public void setDvdList(ArrayList<DVD> dvdList) {
        this.dvdList = dvdList;
    }

    public ArrayList<DVD> getDvdList() {
        return dvdList;
    }
    public DVDManager(){

    }
    public DVDManager(ArrayList<DVD> dvdList){
        this.dvdList=dvdList;
    }
    public void initial(){
        dvdList=new ArrayList<DVD>();
        try {
            DVD d=new DVD("罗马假日",true,sdf.parse("2013-07-01"));
            DVD d2=new DVD("风声鹤唳",false,null);
            DVD d3=new DVD("浪漫满屋",false,null);
            dvdList.add(d);
            dvdList.add(d2);
            dvdList.add(d3);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    public void mainMenu(){
        System.out.println("欢迎使用迷你DVD管理器");
        System.out.println("-------------------------------------------------------");
        System.out.println("" +
                "1. 新增DVD\n" +
                "2. 查看DVD\n" +
                "3. 删除DVD\n" +
                "4. 借出DVD\n" +
                "5. 归还DVD\n" +
                "6. 退出DVD");
        System.out.println("-------------------------------------------------------");
        System.out.print("请选择:");
        input=new Scanner(System.in);
        String regex="^[1-6]{1}$";
        while(!input.hasNext(regex)){
            input=new Scanner(System.in);
            System.out.print("输入有误,请重新选择:");
        }
        int check_1=input.nextInt();
        switch(check_1){
            case 1:
                addDVD();
                break;
            case 2:
                queryAll();
                break;
            case 3:
                deleteDVD();
                break;
            case 4:
                borrowDVD();
                break;
            case 5:
                lend();
                break;
            case 6:
                System.out.println();
                System.out.println("谢谢使用!");
                System.exit(0);
                break;
            }
            System.out.println("********************************");
            back();
    }

    public void back(){
        System.out.print("输入0返回:");
        input=new Scanner(System.in);
        String regex="^0$";
        while(!input.hasNext(regex)){
            input=new Scanner(System.in);
            System.out.print("输入有误,输入0返回:");
        }
        mainMenu();
    }
    public void queryAll(){
        System.out.println("---->  查看DVD\n");
        System.out.println("序号\t         名称 \t\t状态\t    借出日期");
        for(int i=0;i<dvdList.size();i++){
            System.out.println((i+1)+"\t"+dvdList.get(i));
        }
    }
    public DVD findDVDByName(String name){
        //DVD dvd=null; 与DVD dvd=new DVD();是有不同的
        DVD dvd=null;
        for(int i=0;i<dvdList.size();i++){
            if(dvdList.get(i).getName().equals(name)){
                dvd=dvdList.get(i);
                break;
            }
        }
        return dvd;
    }

    public void addDVD(){//新增DVD
        System.out.println("----> 新增DVD\n");
        System.out.print("请输入DVD名称:");
        String name=input.next();
        DVD d=findDVDByName(name);
        if(d!=null){
            System.out.println("该DVD已经存在,不能再次添加!");
            return;
        }
        d=new DVD(name,false,null);
        dvdList.add(d);
        System.out.println("新增《"+d.getName()+"》成功!");
    }

    public void borrowDVD(){
        System.out.println("----> 借出DVD\n");
        System.out.print("请输入DVD名称:");
        String name=input.next();
        DVD d=findDVDByName(name);
        if(d==null){
            System.out.println("该DVD不存在,无法借出!");
            return;
        }else if(d.isBorrowed()){
            System.out.println("不好意思,该DVD已被借出!");
        }
        System.out.print("请输入借书日期(年-月-日):");
        String regex="\\d{4}-(([1][012])|([0][0-9]))-(([012][0-9])|([3][0]))";
        while(!input.hasNext(regex)){
            input=new Scanner(System.in);
            System.out.print("借书日期格式有误请重新输入:");
        }
        Date date = null;
        try {
            date=sdf.parse(input.next());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        int index=dvdList.indexOf(d);
        d.setBorrowed(true);
        d.setBorrowedTime(date);
        dvdList.set(index, d);
        System.out.println("借出《"+name+"》成功!");
    }

    public void deleteDVD(){
        System.out.println("----> 删除DVD\n");
        System.out.print("请输入DVD名称:");
        String name=input.next();
        DVD d=findDVDByName(name);
        if(d==null){
            System.out.println("该DVD不存在,无法删除!");
            return;
        }else if(d.isBorrowed()){
            System.out.println("该DVD已被借出,无法删除");
            return;
        }
        dvdList.remove(d);//移除第一个,后面自动左移
        System.out.println("删除《"+name+"》成功!");
    }

    public void lend(){
        System.out.println("----> 归还DVD\n");
        System.out.print("请输入DVD名称:");
        String name=input.next();
        DVD d=findDVDByName(name);
        if(d==null){
            System.out.println("归还失败,该DVD不是我们店里的!");
            return;
        }else if(!d.isBorrowed()){
            System.out.println("归还失败,该DVD已经归还,您的DVD不是我们店里的!");
            return;
        }
        Date borrowDate = d.getBorrowedTime();
        Date lendDate = null;
        long spend;
        System.out.print("请输入还书日期(年-月-日):");
        String regex="\\d{4}-(([1][012])|([0][0-9]))-(([012][0-9])|([3][0]))";
        while(true){//感觉还是玩死循环跳出爽
            while(!input.hasNext(regex)){
                input=new Scanner(System.in);
                System.out.print("还书日期格式有误请重新输入:");
            }
            try {
                lendDate=sdf.parse(input.next());
            } catch (ParseException e) {
                e.printStackTrace();
            }

            if(lendDate.before(borrowDate)){//Date的比较前者是否在后者之前的方法
                System.out.println("还书日期不可能比借出日期还早,请重新输入");
            }else{
                break;
            }
        }
        spend=lendDate.getTime()-borrowDate.getTime();
        int money=(int) Math.ceil(spend/(24*60*60*1000))*price;
        int index=dvdList.indexOf(d);
        d.setBorrowed(false);
        d.setBorrowedTime(null);
        dvdList.set(index, d);
        System.out.println("归还成功!");
        System.out.println("应付租金(元):"+money);
    }

}
package com.test;

import com.entity.DVDManager;

public class Test {
    public static void main(String[] args) {
        DVDManager dm=new DVDManager();
        dm.initial();
        dm.mainMenu();
    }
}
时间: 2024-10-29 19:11:10

03_模拟DVD的相关文章

MySQL Sakila样本数据库

Sakila样本数据库介绍 Sakila样本数据库是MySQL官方提供的一个模拟DVD租赁信息管理的数据库,提供了一个标准模式,可作为书中例子,教程.文章.样品,等等,对学习测试来说是个不错的选择. 1.下载地址: MySQL :: Other MySQL Documentation https://dev.mysql.com/doc/index-other.html (Example Databases --> sakila database --> zip包或.tar.gz包均可) 2.导

诸城模拟赛 dvd的逆序对

[题目描述] dvd是一个爱序列的孩子. 他对序列的热爱以至于他每天都在和序列度过 但是有一个问题他却一直没能解决 给你n,k求1~n有多少排列有恰好k个逆序对 [输入格式] 一行两个整数n,k [输出格式] 输出一个整数,表示答案对1000000007取模后的结果 [样例输入] 4 1 [样例输出] 3 [样例解释] 1 2 4 3 1 3 2 4 2 1 3 4 [数据规模及约定] 对于10%的数据  n<=10 对于30%的数据  k<=50 对于100%的数据 1<=n,k<

03_天气查询_socket方式模拟_多线程方式

[简述] 要重视Socket开发,企业后台服务特长使用Socket. 1.服务端要有可持续运行能力,保证线程一致在运行 2.并发处理能力,使用多线程 [工程截图] [WeatherRunner.java] package com.Higgin.socket.Runnable; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.So

Oracle模拟文件损坏BBED

模拟文件损坏可以使用两个工具,windows nt 下使用uttra edit ,还有就是使用ORACLE内部工具BBED,下面主要看这个工具如何使用. 一.BBED(Oracle?Block?Browerand?EDitor Tool),用来直接查看和修改数据文件数据的一个工具,是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,在一些极端恢复场景下比较有用.该工具不受Oracle支持,所以默认是没有生成可执行文件的,在使用前需要重新连接. 我这里的作用 二.BBED 安装

存储学习之--通过StarWind在Windows 2008 Server模拟IP SAN

存储学习之--通过StarWind在Windows 2008 Server模拟IP SAN 一.StarWind 介绍 StarWind 与 StarPort iSCSI 一起,这个软件准许你输出任何本地 CD 和 DVD 数据到网络上,你在网络上能够虚拟硬盘,输出整体服务器储存子系统和大量的快照工作. 1.软件介绍 ISCSI软件. StarWind 是一个独立于硬件,适合网吧.企业虚拟磁盘数据管理.速度非常的快! 成本效益和可升级的存储管理解决方案,能够得到存储区域网络的好处,如:增强的灾难

Flaresim 2.0 火炬模拟设计软件\

Encom modelvision pro 中文使用教程使用手册.pdfHypersizer Pro 5.3_usb 专业的复合材料结构分析和优化软件\INPHO ORTHOVISTA 4.0.2_usb\Landmark EDT 2003.21 Compass-ISO 2CD\Magma Siliconsmart v2009.02 Linux\Nonlinear.Dynamics.TotalLab.TL120.v2009\Smart-Cam.2D.CMM.Build.160.14.4 1CD\

模拟MBR扇区故障

模拟MBR扇区故障 产生MBR扇区故障主要有以下两点原因: 1. 病毒.木马的入侵. 2. 不正确的分区操作和磁盘读写操作. MBR分区故障主要有以下两点现象: 1. 找不到引导程序,启动中断. 2. 无法加载操作系统,开机后黑屏 模拟MBR扇区故障: 将MBR进行备份 打开桌面终端: 使用fdisk –l 命令查看此服务器当前硬盘: OK,可以看到我们当前的服务器上有两块硬盘,分别是sda和sdb. 我们将MBR进行备份也就是对sda进行备份,但是这里要注意,sda是一块硬盘,所以我们备份的目

KBC Petro-SIM Suite v4.0 SP2-ISO 1CD(炼油工艺流程模拟软件)

KBC Petro-SIM Suite v4.0 SP2-ISO 1CD(炼油工艺流程模拟软件)KBC公司的Petro-SIM软件是把图形化的过程模拟器和KBC先进的工业技术以及严格的炼厂.石化厂过程模型结合起来基于HYSYS.Refinery界面的先进模拟工具.Petro-SIM 可以根据实验室数据或者获取可用到的拥有400多种国际油品的商业原油数据库来建立自己的化验数据库.QQ:16264558 电话:13963782271另外它可以进行单元优化.清洁燃料研究.实时优化.故障排除研究和操作过

Lakes Environmental ARTM View v1.4.2 1CD放射物扩散模拟模型

Lakes Environmental ARTM View v1.4.2 1CD放射物扩散模拟模型Lakes.AERMOD.View.v8.9.0 1CD大气扩散模型软件包ARTM(Atmospheric Radionuclide Transport Model)模型是根据德国核电法案计算气载放射性物质扩散的新标准,由德国联邦办公室基于 德国环境保护署的大气扩散模型-AUSTAL2000,而开发的放射物扩散模拟模型,它是拉格朗日粒子跟踪空气扩散模型,它不但可以模拟点源. 面源.线源.体源,还可以