class DvdSet { //定義三個屬性 String[] name = new String[50]; // 為保證數組足夠大 String[] date = new String[50];// 借書的時間 int[] state = new int[50]; // 借書的狀態 , 0表示借出 ,1.表示可以借。 int[] count = new int[50]; // 借書的次數 }
import java.util.*; import java.text.*; class DvdMgr { //創建一個DvdSet對象 DvdSet dvd = new DvdSet(); //1.第一個方法初始化三個DVD數據 public void initial(){ //初始化三個Dvd dvd.name[0]= "羅馬假日"; dvd.state[0]=0; dvd.count[0] = 30; dvd.date[0]= "2016-11-18"; dvd.name[1]="風聲鶴唳"; dvd.state[1]=1; dvd.name[2]= "浪漫滿屋"; dvd.state[2]=1; dvd.count[2] = 10; } //2.實現一個菜單切換 public void startMenu() { 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.DVD排行榜 ******"); System.out.println("****** 7.退出 ******"); System.out.println("*********************************"); Scanner input = new Scanner(System.in); System.out.println("請輸入您的操縱:"); int option = input.nextInt(); switch(option){ case 1 : addDvd(); returnMenu(); break; case 2 : searchDvd(); returnMenu(); break; case 3 : deleteDvd(); returnMenu(); break; case 4 : lendDvd(); returnMenu(); break; case 5 : returnDvd(); returnMenu(); break; case 6: list(); returnMenu(); break; case 7: System.out.println("謝謝使用,歡迎下次在來"); break; default: System.out.println("輸入異常,程序已經嚇崩潰,正在重啟中..."); break; } } //3.返回菜單 public void returnMenu() { System.out.println("輸入0返回:"); Scanner input = new Scanner(System.in); if(input.nextInt() == 0){ //在此進入菜單切換 startMenu(); }else { System.out.println("輸入異常,請從輸入:"); returnMenu(); // 遞歸調用。 } } //4.查看的功能 public void searchDvd(){ System.out.println("******歡迎進入查看頁面*****"); //\t Tap System.out.println("序號\t名稱\t\t狀態\t借出時間\t"); for(int i=0;i<dvd.name.length ; i++){ if(dvd.name[i] == null){ break; }else if (dvd.state[i] == 0){ //代表已經借出 System.out.println(i+1+"\t"+"<<"+dvd.name[i]+">>\t已借出\t"+dvd.date[i]); }else if(dvd.state[i] == 1){ //代沒有借出 System.out.println(i+1+"\t"+"<<"+dvd.name[i]+">>\t可借\t"); } } System.out.println("**************************************"); } //5.新增Dvd public void addDvd(){ System.out.println("******歡迎進入添加頁面*****"); System.out.println("請輸入您要添加的Dvd:"); Scanner input = new Scanner(System.in); 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] = 1; System.out.println("<<"+name+">>dvd添加成功"); break; } } } //6.刪除dvd public void deleteDvd(){ System.out.println("******歡迎進入刪除頁面*****"); System.out.println("請輸入您要刪除的Dvd名稱:"); Scanner input = new Scanner(System.in); String name = input.next(); //1.沒有找到 : 提示沒有找到 請重新輸入 //2.找到 : //1.已經借出去 : 不能夠刪除 //2.沒有借出去 : 刪除 for(int i = 0;i<dvd.name.length;i++){ //查找是否存在 if(dvd.name[i] != null){ if(dvd.name[i].equalsIgnoreCase(name)){ //已經找到 //是否已經被借出 if(dvd.state[i] == 0){ // 借出 System.out.println("《"+name+"》已經被借出"); break; }else if(dvd.state[i] == 1) { //沒有借出需要刪除 //思路 : 1.用后面一個替換前面的。 //2.把最后面多余的地方賦值為null. for(int j = i ;j<dvd.name.length;j++){ //做交換 if(dvd.name[j +1] != null){ dvd.name[j] = dvd.name[j+1]; dvd.state[j] = dvd.state[j+1]; }else{ //清空最后一個值 dvd.name[j] = null; dvd.date[j] = null; break; } } System.out.println("刪除《"+name+"》成功"); break; } } }else { System.out.println("沒有您要刪除的dvd"); System.out.println("***********************************************"); break; } } } //7.借dvd的功能 public void lendDvd(){ System.out.println("********歡迎進入借書頁面********"); System.out.println("請輸入您要借的dvd名稱:"); Scanner input = new Scanner(System.in); String name = input.next(); //1.判斷有沒有dvd //1.又沒有被借出去。 for(int i = 0;i<dvd.name.length;i++){ if(dvd.name[i] != null){ // 有dvd if(dvd.name[i].equalsIgnoreCase(name) && dvd.state[i] == 1){ //有書並且沒有被借出去 //借書 //1.修改狀態 dvd.state[i] = 0; System.out.println("請輸入借書的時間(年-月-日):"); Scanner inputDate = new Scanner(System.in); dvd.date[i] = inputDate.next(); System.out.println("借書成功"); dvd.count[i]++; break; }else if(dvd.name[i].equalsIgnoreCase(name) && dvd.state[i] == 0){ System.out.println("不好意思此借書已經被借出"); break; } }else { // dvd System.out.println("沒有您要找的DVD"); break; } } } //8.還Dvd 計算價格 public void returnDvd(){ System.out.println("********歡迎進入還DVD頁面******************"); System.out.println("請輸入還dvd的名稱:"); Scanner input = new Scanner(System.in); double price = 0.0; String name = input.next(); for(int i = 0;i<dvd.name.length;i++){ if(dvd.name[i]!=null){ //有 if(dvd.name[i].equalsIgnoreCase(name) && dvd.state[i] == 0){ //以借出就可以歸還 dvd.state[i] = 1; System.out.println("請輸入歸還書籍的時間(年-月-日):"); Scanner inputDate = new Scanner(System.in); //獲取時間差 long charge = charge(dvd.date[i],inputDate.next()); price = charge * 1; System.out.println("《"+dvd.name[i]+"》歸還成功"); System.out.println("您應付"+price+"元"); //清空時間 dvd.date[i] = null; break; } }else{ System.out.println("沒有找到匹配的信息"); break; } } System.out.println("************************************************"); } public long charge(String date1,String date2){ //做時間差 //將String轉為Date做計算 SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); long charge = 0; try{ Date d1 = sd.parse(date1); Date d2 = sd.parse(date2); //時間也是以毫秒為單位。 charge = (d2.getTime() - d1.getTime()) / (1000*24*60*60); }catch(ParseException e){ System.out.println(e); } return charge; } //排行榜 public void list(){ System.out.println("歡迎進入Dvd排行榜"); //排序 for(int i = 0 ; i <dvd.name.length-1;i++){ if(dvd.name[i] != null){ for(int j = 0; j<dvd.name.length-1-i;j++){ if(dvd.name[j] != null){ if(dvd.count[j] < dvd.count[j+1]){ int temp = dvd.count[j]; dvd.count[j] = dvd.count[j+1]; dvd.count[j+1]= temp; String name1 = dvd.name[j]; dvd.name[j] = dvd.name[j+1]; dvd.name[j+1] = name1; String date1= dvd.date[j]; dvd.date[j] = dvd.date[j+1]; dvd.date[j+1] = date1; int state1= dvd.state[j]; dvd.state[j] = dvd.state[j+1]; dvd.state[j+1] = state1; } }else { break; } } }else{ break; } } System.out.println("序號\t名稱\t\t狀態\t借出時間\t"); for(int i=0;i<dvd.name.length ; i++){ if(dvd.name[i] == null){ break; }else if (dvd.state[i] == 0){ //代表已經借出 System.out.println(i+1+"\t"+"<<"+dvd.name[i]+">>\t已借出\t"+dvd.date[i]); }else if(dvd.state[i] == 1){ //代沒有借出 System.out.println(i+1+"\t"+"<<"+dvd.name[i]+">>\t可借\t"); } } System.out.println("**************************************"); } }
class DvdMain{ public static void main (String[] args){ DvdMgr dvd = new DvdMgr(); //初始化dvd dvd.initial(); //開始進入切換菜單 dvd.startMenu(); } }