一、详细代码
package demo2.Test;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;public class DVD2 {//DVD管理系统//声明三个数组 用来存储 名称 状态 借出日期 借出次数String[] names = new String[50];String[] state = new String[50];//状态String[] dts = new String[50];//借出日期int[] num = new int[50];//借出次数Scanner sc =new Scanner(System.in);//初始化定义public void init() {names[0] = "罗马假日";names[1] = "超级玛丽";names[2] = "功夫熊猫";state[0] = "可借";state[1] = "借出";state[2] = "可借";dts[0] = null;dts[1] = "2012-12-13";dts[2] = null;num[0] = 20;num[1] = 15;num[2] = 36;}public static void main(String[] args) {DVD2 dvd2 = new DVD2();//创建了一个 DVD2 类的 新实例,并将 其引用赋值 给 变量 dvd2。具体功能取决于 DVD2 类的定义dvd2.init();//调用的是对象 dvd2的 init方法,用于初始化dvd2相关资源或状态dvd2.menu();}// 1.菜单public void menu() {System.out.println("---------------------欢迎:DVD管理系统-------------------------");System.out.println("0.热门排行;1.查看;2.新增;3.删除;4.借用;5.归还并结算;6.退出系统");int i = sc.nextInt();switch (i) {case 0:System.out.println("0.热门排行");sort();break;case 1:System.out.println("1.查看");check();break;case 2:System.out.println("2.新增");add();break;case 3:System.out.println("3.删除");delete();break;case 4:System.out.println("4.借用");lend();break;case 5:System.out.println("5.归还并结算");back();break;case 6:System.out.println("退出成功,感谢使用");System.exit(6);}menu();}//2. 热门排行public void sort() {int sum = 0;for (int i = 0; i < names.length; i++) {if (names[i] == null) {sum = i ;break;}}for (int i = 1; i <= sum - 1; i++) { //count - 1:表示数组最后一个元素的索引。for (int j = 0; j <= sum - 1 - i; j++) {//count - 1 - i:表示当前未排序部分的最后一个元素的索引if (num[j] < num[j + 1]) {int tnum = num[j];String tstate = state[j];String tnames = names[j];String tdts = dts[j];num[j] = num[j + 1];state[j] = state[j + 1];names[j] = names[j + 1];dts[j] = dts[j + 1];num[j + 1] = tnum;state[j + 1] = tstate;names[j + 1] = tnames;dts[j + 1] = tdts;}}}check();}//3. 查看public void check() {for (int i = 0; i < names.length; i++) {if (names[i] != null) {System.out.println("序 号 状态 名称 借出日期 借次数");System.out.println((i + 1) + "\t\t" + state[i] + "\t\t" + names[i] + "\t" + dts[i] + "\t\t\t" + num[i]);}}}// 4.新增public void add() {System.out.println("请输入新增名称:");String name = sc.next();for (int i = 0; i < names.length; i++) {if (name.equals(names[i])) {//查到 说明 已经存在 不能增加System.out.println("名称已经存在,请重新输入:");add();break;} else if (names[i] == null) {//没查找到 可以新增 赋值给正好置空的位置names[i] = name;state[i] = "可借";for (int j = 0; j < names.length; j++) {if (name.equals(names[i])) {dts[j] = null;//因为有的DVD没有借出 借出日期是空的 所以如果跟着之前的循环走 会串格break;}}break;}}check();}// 删除public void delete() {System.out.println("输入删除作品的名称:");String name = sc.next();boolean bool = false;for (int i = 0; i < names.length; i++) {//遍历数组if (name.equals(names[i]) && "可借".equals(state[i])) {bool = true;for (int j = 0; j < names.length; j++) {//可以删除 进行删除动作 最后一位置空 最后之前的每一位if (names[j]!=null) {//为空时 说明没有数据,或者到最后一位 表示已经删除names[j] = names[j + 1];state[j] = state[j + 1];dts[j] = dts[j + 1];num[j] = num[j + 1];} else if (j == names.length - 1) {names[j] = null;state[j] = null;dts[j] = null;num[j] = 0;}}} else if (!bool) {System.out.println("该书无法删除(借出/查无),重新输入");delete();break;}}check();}// 借用public void lend() {System.out.println("请输入借用名称:");String name = sc.next();boolean found = false;for (int i = 0; i < names.length; i++) {if (name.equals(names[i])) {found = true;if (state[i].equals("可借")) {System.out.println("请输入借出日期:");String dtsl = sc.next();state[i] = "借出";dts[i] = dtsl;num[i]++;System.out.println("借出成功!!!");check();break;} else if (state[i].equals("借出")) {System.out.println("已借出,请重新输入:");lend();break;}break;}}if (!found) { // 只在未找到时打印System.out.println("名称不存在,请重新输入:");lend();}}// 归还结算费用public void back() {System.out.println("输入归还名称:");String name = sc.next();boolean found = false;for (int i = 0; i < names.length; i++) {if (name.equals(names[i])) {found = true;if (state[i].equals("借出")) {state[i] = "可借";String dtsl = dts[i];System.out.println("请输入归还日期:");String dtsb = sc.next();dts[i] = null;System.out.println("归还成功");System.out.println("应付租金:" + getmoney(dtsl, dtsb));check();break;} else if (state[i].equals("可借")) {System.out.println("该名称未借出,请重新输入:");back();break;}break;}}if (!found) {System.out.println("未查找到该项,请重新输入:");back();}}
//租金public int getmoney(String dtsl,String dtsb) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//控制日期输入标准格式try{Date date1 =sdf.parse(dtsl);Date date2=sdf.parse(dtsb);long lon=(date2.getTime()-date1.getTime())/(1000*60*60*24);//求出时间差 目前设置 1天1块钱 租金就等于时间差return (int)lon;}catch(ParseException e){e.printStackTrace();return 1;}}
}
// 退出系统 输入6直接退出
二、运行结果
备注:谁有好方法能让输入的日期和上面的题头“借出日期”对齐!!!打在评论区,观摩一下~