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();
}
}