1、DvdSet類
package dvd_01; /** * 定義dvd的一些屬性 * @author Administrator * */ public class DvdSet { String[] name=new String[50]; //定義一個數組存dvd名字 boolean[] state=new boolean[50]; //定義DVD借出狀態:true為已借出 false為可借 String[] date=new String[50]; //定義借出日期 }
2、DvdManager類
package dvd_01; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class DvdManager { Scanner input = new Scanner(System.in); DvdSet dvd = new DvdSet(); // 初始化對象 boolean isJiechu = true; // 已借出是true 可借是false // 初始化三張DVD信息 public void initial() { dvd.name[0] = "羅馬假日"; dvd.state[0] = true; // 已借出 dvd.date[0] = "2019-9-11"; dvd.name[1] = "變形金剛"; dvd.state[1] = false; // 可借 dvd.name[2] = "生化危機"; dvd.state[2] = false; // 可借 dvd.name[3] = "鋼鐵俠"; dvd.state[3] = true; // 已借出 dvd.date[3] = "2019-9-10"; } public void startMenu() { System.out.println("歡迎使用迷你DVD管理器"); System.out.println("--------------------------"); 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.print("請選擇:"); int choice = input.nextInt(); switch (choice) { case 1: add(); // 新增DVD break; case 2: search(); // 查看DVD break; case 3: delete(); // 刪除DVD break; case 4: lend(); // 借出DVD break; case 5: returnDvd(); // 歸還DVD break; case 6: System.out.println("感謝您的使用!"); break; default: System.out.println("你的輸入有誤,請重新輸入"); returnMain(); } } public void returnMain() { System.out.print("輸入0返回:"); if (input.nextInt() == 0) { startMenu(); } else { System.out.println("輸入錯誤,程序結束!"); } } // 新增DVD public void add() { /** * 首先判斷i是否為空,如果為空就將name傳給i,並將狀態改為可借 */ System.out.println("--->新增DVD\n"); System.out.print("請輸入DVD的名稱:"); String name = input.next(); for (int i = 0; i < dvd.name.length; i++) { if (dvd.name[i] == null) { // 判斷位置是否為空 dvd.name[i] = name; dvd.state[i] = false; // 新增的dvd是可借的 System.out.println("新增《" + name + "》成功"); break; } } System.out.println("**************************"); returnMain(); } // 查看DVD public void search() { /** * 如果i為空跳出循環i+1,如果狀態為不可借就輸出已經借出,並輸出時間 */ System.out.println("--->查看DVD\n"); System.out.println("序號\t狀態\t名稱\t\t借出日期"); for (int i = 0; i < dvd.name.length; i++) { if (dvd.name[i] == null) { break; } else if (dvd.state[i] == true) { System.out.println((i + 1) + "\t已借出\t《" + dvd.name[i] + "》\t" + dvd.date[i]); } else if (dvd.state[i] == false) { System.out.println((i + 1) + "\t可借\t《" + dvd.name[i] + "》"); } } System.out.println("**************************"); returnMain(); } // 刪除DVD public void delete() { /** * 判斷i位置不為空,名字匹配,狀態為可借。循環將名字,狀態和日期往前移動,最后一位置空 * 如果狀態為借出就跳出,不能刪除 */ System.out.println("--->刪除DVD\n"); System.out.print("請輸入DVD的名稱:"); String name = input.next(); boolean flag = false; for (int i = 0; i < dvd.name.length; i++) { if (dvd.name[i] != null && dvd.name[i].equalsIgnoreCase(name) && dvd.state[i] == false) { int j = i; while (dvd.name[j + 1] != null) { dvd.name[j] = dvd.name[j + 1]; // 刪除元素,元素前移 dvd.state[j] = dvd.state[j + 1]; dvd.date[j] = dvd.date[j + 1]; j++; } // 最后一個不為空的元素置空 dvd.name[j] = null; dvd.date[j] = null; System.out.println("刪除《" + name + "》成功!"); flag = true; // 標識位 break; } else if (dvd.name[i] != null && dvd.name[i].equalsIgnoreCase(name) && dvd.state[i] == true) { System.out.println("《" + name + "》為借出狀態,不能刪除!"); flag = true; break; } if (flag == true) { System.out.println("沒有找到《"+name+"》這個dvd!"); } } System.out.println("**************************"); returnMain(); } // 借出DVD public void lend() { /** * 名字不為空,狀態為可借,就可以借出,並將狀態改為借出狀態 * 按格式輸入結束日期,並存儲在date中 * 名字不為空,狀態為借出,輸出不可借 * */ System.out.println("--->借出DVD\n"); System.out.print("請輸入DVD的名稱:"); String name = input.next(); for (int i = 0; i < dvd.name.length; i++) { if (dvd.name[i] == null) { System.out.println("沒有找到《"+name+"》這個dvd!"); break; } else if (dvd.name[i].equals(name) && dvd.state[i] == false) { System.out.print("請輸入借出日期(年-月-日):"); dvd.date[i] = input.next(); System.out.println("《" + name + "》借出成功"); dvd.state[i] = true; break; } else if (dvd.name[i].equals(name) && dvd.state[i] == true) { System.out.println("不好意思,《" + name + "》已被借出!"); break; } } System.out.println("**************************"); returnMain(); } // 歸還DVD public void returnDvd() { /** * 定義一個long存儲租金 * 如果名字存在,狀態為借出,按規定輸入歸還日期,將參數傳給charge方法,狀態改為可借,輸出相關信息 * 如果名字存在,狀態可借,輸出無法操作 */ System.out.println("--->歸還DVD\n"); System.out.print("請輸入DVD名稱:"); String name = input.next(); long money = 0; // 租金 for (int i = 0; i < dvd.name.length; i++) { if (dvd.name[i] == null) { System.out.println("沒有找到《"+name+"》這個dvd!"); break; } else if (dvd.name[i].equals(name) && dvd.state[i] == true) { System.out.print("請輸入歸還日期(年-月-日):"); String redate = input.next(); money = charge(dvd.date[i], redate); //租金計算,將兩個參數傳遞給charge方法 System.out.println("\n《" + name + "》歸還成功"); dvd.state[i] = false; System.out.println("借出日期為:" + dvd.date[i]); System.out.println("歸還日期為:" + redate); System.out.println("應付租金(元):" + money); break; } else if (dvd.name[i].equals(name) && dvd.state[i] == false) { System.out.println("《" + name + "》沒有被借出,無法進行歸還操作!"); break; } } System.out.println("**************************"); returnMain(); } // 計算日期差 public long charge(String dstr1, String dstr2) { /** * 定義返回值為long的方法,調用格式化日期方法,將兩個參數分別賦值給date對象, * 計算money,返回 */ long money = 0; SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); // 格式化日期 try { Date d1 = sd.parse(dstr1); Date d2 = sd.parse(dstr2); money = (d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000); } catch (ParseException e) { e.printStackTrace(); } return money; } }
3、Test類
package dvd_01; public class Test { public static void main(String[] args) { DvdManager dvdManager = new DvdManager(); dvdManager.initial(); //調用初始化方法 dvdManager.startMenu(); //調用開始菜單 } }
4、運行結果

