java 迷你DVD管理器


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、運行結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM