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();
}
}
03_模拟DVD的更多相关文章
- java模拟DVD管理器
import java.util.*;import java.text.*;class DVDSet{ String[] name = new String[50]; //名字 int[] ...
- SpringBoot系列: JdbcTemplate 事务控制
============================Spring JdbcTemplate 事务控制============================之前使用 JDBC API 操作, 经常 ...
- SpringBoot系列: JdbcTemplate 快速入门
对于一些小的项目, 我们没有必要使用MyBatis/JPA/Hibernate等重量级技术, 直接使用Spring JDBC 即可, Spring JDBC 是对 jdbc的简单封装, 很容易掌握. ...
- MySQL Sakila样本数据库
Sakila样本数据库介绍 Sakila样本数据库是MySQL官方提供的一个模拟DVD租赁信息管理的数据库,提供了一个标准模式,可作为书中例子,教程.文章.样品,等等,对学习测试来说是个不错的选择. ...
- 诸城模拟赛 dvd的逆序对
[题目描述] dvd是一个爱序列的孩子. 他对序列的热爱以至于他每天都在和序列度过 但是有一个问题他却一直没能解决 给你n,k求1~n有多少排列有恰好k个逆序对 [输入格式] 一行两个整数n,k [输 ...
- 03_天气查询_socket方式模拟_多线程方式
[简述] 要重视Socket开发,企业后台服务特长使用Socket. 1.服务端要有可持续运行能力,保证线程一致在运行 2.并发处理能力,使用多线程 [工程截图] [WeatherRunner.jav ...
- X-Plane飞行模拟资源整理一
计划开一个博客整理一下飞行仿真软件二次开发的相关内容 预计将陆续介绍X-Plane.Microsoft Flight Simulator.FlightGear三个主流飞行模拟器. 此处为目录(占坑,随 ...
- 【Java基础】【18Map集合&模拟斗D主X排和F排】
18.01_集合框架(Map集合概述和特点) A:Map接口概述 查看API可以知道: 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 B:Map接口和Collection接 ...
- RHCSA-EXAM 模拟题目
参考答案:http://www.cnblogs.com/venicid/category/1088924.html 请首先按找以下要求配置考试系统: * Hostname: server0.examp ...
随机推荐
- ES6 利用 Set 数组去重法
例子: const set = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => set.add(x) ); const arr = [...set]; ...
- Android事件处理下(按键、触摸屏和滚动球的一些实现细节)
http://www.cnblogs.com/andtt/articles/2145563.html 对于按键事件,调用mDevices[i]->layoutMap->map进行映射.映射 ...
- spark client + yarn计算
前提:完成hadoop + kerberos安全环境搭建. 安装配置spark client: 1. wget https://d3kbcqa49mib13.cloudfront.net/spark- ...
- Java-JVM调优常见配置举例
常见配置举例 堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统 下,一般限制在1.5G~ ...
- 重写(overwrite)、重载(overload)和覆盖(override)三者之间的区别
覆盖:子类继承了父类的同名无参函数.当子类从父类继承了一个无参函数,而又定义了一个同样的无参函数,则子类定义的方法覆盖父类的方法,称为覆盖. 重载:子类继承了父类的同名有参函数.当子类继承了父类的一个 ...
- saltstack之haproxy的安装配置
使用saltstack编译安装haproxy: 由于编译安装haproxy,所以安装之前需要建立编译环境,将编译环境需要安装的包单独放置在一个目录中,当编译haproxy或其他时,直接include这 ...
- 20145103JAVA第二次实验报告
实验二 Java面向对象程序设计 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验 ...
- CentOS7系统安装及环境初始化
操作系统安装: 将网卡名称设置为eth*,不使用CentOS 7默认的网卡命名规则.所以需要在安装的时候,增加内核参数.1. 光标选择“Install CentOS 7” 2. 点击Tab,打开 ...
- Windows Server 2008驱动安装全攻略
安装设备驱动程序原本是一件非常简单的事情,很多驱动程序在安装的时候我们只要不停单击“下一步”按钮,就能让驱动程序顺利地在对应计算机系统“落户”;不过,当身边的计算机系统升级为Windows Serve ...
- java如何调用接口 2
在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适,所以,问题来了,java如何调用接口?很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接 ...