在臺灣商業環境中,有效的庫存管理至關重要。本文介紹如何運用物件導向程式設計的原則,構建一個商品庫存管理系統。系統的核心是一個商品類別,包含商品編號、描述和價格等屬性,並提供對應的設定和讀取方法。透過 Java 程式碼示範,我們展示瞭如何例項化商品物件、輸入商品資訊、計算稅後價格,以及最終顯示商品的完整資訊。此外,文章也說明瞭如何利用陣列儲存和管理多個商品物件,並運用迴圈進行物件資料的輸入和顯示,提升程式碼的效率和可讀性。這套方法能有效協助企業管理商品庫存,降低營運成本,並提升決策效率。

商品庫存管理系統

在商品庫存管理系統中,需要設計一個能夠有效管理商品訊息的類別。這個類別應該包含商品的編號、描述、價格等屬性,並提供相關的方法來設定和取得這些屬性。

商品類別設計

  classDiagram
    class InventoryItem {
        -inventoryNumber: string
        -description: string
        -price: num
        +setInventoryNumber(number: string)
        +setDescription(desc: string)
        +setPrice(price: num)
        +getInventoryNumber(): string
        +getDescription(): string
        +getPrice(): num
    }

看圖說話:

上述類別圖展示了商品類別的設計。商品類別包含三個私有屬性:inventoryNumberdescriptionprice,分別代表商品的編號、描述和價格。同時,類別提供了六個公有方法,分別用於設定和取得這三個屬性的值。

商品訊息輸入和顯示

在系統中,需要有一個方法來輸入商品的訊息,並將這些訊息儲存在商品類別的例項中。同時,還需要有一個方法來顯示商品的訊息,包括計算商品的稅後價格。

  flowchart TD
    A[開始] --> B[輸入商品編號]
    B --> C[輸入商品描述]
    C --> D[輸入商品價格]
    D --> E[計算稅後價格]
    E --> F[顯示商品訊息]
    F --> G[結束]

看圖說話:

上述流程圖展示了商品訊息輸入和顯示的過程。首先,系統提示使用者輸入商品的編號、描述和價格。然後,系統計算商品的稅後價格。最後,系統顯示商品的訊息,包括商品的編號、描述、原價和稅後價格。

實作商品訊息管理

public class InventoryItem {
    private String inventoryNumber;
    private String description;
    private double price;

    public void setInventoryNumber(String number) {
        this.inventoryNumber = number;
    }

    public void setDescription(String desc) {
        this.description = desc;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getInventoryNumber() {
        return inventoryNumber;
    }

    public String getDescription() {
        return description;
    }

    public double getPrice() {
        return price;
    }

    public double calculateTaxPrice(double taxRate) {
        return price * (1 + taxRate);
    }

    public static void displayItem(InventoryItem item, double taxRate) {
        double taxPrice = item.calculateTaxPrice(taxRate);
        System.out.println("商品編號: " + item.getInventoryNumber());
        System.out.println("商品描述: " + item.getDescription());
        System.out.println("原價: " + item.getPrice());
        System.out.println("稅後價格: " + taxPrice);
    }

    public static InventoryItem getItemValues(String number) {
        InventoryItem inItem = new InventoryItem();
        Scanner scanner = new Scanner(System.in);

        System.out.print("Enter description... ");
        String desc = scanner.nextLine();
        System.out.print("Enter price... ");
        double price = scanner.nextDouble();
        scanner.close();

        inItem.setInventoryNumber(number);
        inItem.setDescription(desc);
        inItem.setPrice(price);

        return inItem;
    }

    public static void main(String[] args) {
        String number = "12345";
        InventoryItem item = getItemValues(number);
        double taxRate = 0.06;
        displayItem(item, taxRate);
    }
}

看圖說話:

上述程式碼實作了商品訊息的輸入和顯示。getItemValues方法用於輸入商品的訊息,displayItem方法用於顯示商品的訊息,包括計算商品的稅後價格。main方法示範瞭如何使用這些方法。

物件導向程式設計中的陣列應用

在物件導向程式設計中,陣列可以用來儲存多個物件。以下是一個使用陣列儲存物件的範例程式。

宣告陣列和物件

首先,宣告一個陣列和一個物件。陣列的大小可以根據需要進行宣告。

int arraySize = 7;
InventoryItem[] items = new InventoryItem[arraySize];

使用迴圈取得物件值

接下來,使用迴圈呼叫一個方法來取得物件的值。這個方法可以根據需要進行修改。

for (int i = 0; i < arraySize; i++) {
    items[i] = getItemValues();
}

顯示物件資料

最後,呼叫一個方法來顯示所有物件的資料。

displayItems(items, arraySize);

getItemValues() 方法

這個方法用來取得一個物件的值。它會宣告一個物件,然後提示使用者輸入物件的值。

public InventoryItem getItemValues() {
    InventoryItem item = new InventoryItem();
    // 提示使用者輸入物件的值
    item.setInventoryNumber(input.nextInt());
    item.setDescription(input.next());
    item.setPrice(input.nextDouble());
    return item;
}

displayItems() 方法

這個方法用來顯示所有物件的資料。

public void displayItems(InventoryItem[] items, int size) {
    for (int i = 0; i < size; i++) {
        // 顯示物件的資料
        System.out.println("Item #" + items[i].getInventoryNumber());
        System.out.println(items[i].getDescription());
        System.out.println("Price: " + items[i].getPrice());
    }
}

程式設計技巧

在程式設計中,可以使用不同的技巧來完成同一件事。例如,可以使用迴圈呼叫一個方法來取得物件的值,也可以使用迴圈顯示所有物件的資料。

看圖說話:

  flowchart TD
    A[開始] --> B[宣告陣列和物件]
    B --> C[使用迴圈取得物件值]
    C --> D[顯示物件資料]
    D --> E[結束]

看圖說話:

這個流程圖顯示了程式的執行流程。首先,宣告陣列和物件。接下來,使用迴圈取得物件的值。最後,顯示所有物件的資料。

綜觀商品庫存管理系統的設計與程式碼實作,可以發現,物件導向的程式設計方法有效地提升了程式碼的可讀性、可維護性和可擴充套件性。透過封裝商品資訊於 InventoryItem 類別中,我們得以簡化資料管理的複雜度,並透過清晰的介面 (例如 setInventoryNumbergetDescription 等方法) 進行資料操作。

分析程式碼結構,可以看出,利用陣列儲存多個 InventoryItem 物件,更進一步提升了系統處理大量商品資料的效率。迴圈搭配 getItemValuesdisplayItems 等方法,展現了程式碼的模組化設計,降低了程式碼的冗餘,也方便日後功能的擴充與維護。然而,目前的程式碼範例中,錯誤處理機制和使用者輸入驗證尚未完善,這也是未來可以強化的地方,例如在 setPrice 方法中加入價格必須為正數的判斷,以確保資料的完整性和一致性。

展望未來,此庫存管理系統可以整合資料函式庫技術,實作資料的持久化儲存和更複雜的查詢功能。同時,可以匯入圖形化使用者介面 (GUI),提升使用者經驗。此外,考慮到電商蓬勃發展的趨勢,整合線上銷售平臺 API、匯入即時庫存更新機制等,都將是提升系統價值的關鍵方向。玄貓認為,持續精進系統架構、強化功能,並與時俱進地匯入新技術,才能確保系統在競爭激烈的市場中保持優勢。對於想要打造高效且具備未來擴充套件性的庫存管理系統的開發者而言,掌握物件導向程式設計原則,並持續關注產業發展趨勢,將是成功的關鍵。