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