Java店铺开单据系统

概述

在许多商业场景中,开具和管理单据是一项重要的任务。无论是销售单据、采购单据还是库存单据,都需要一个高效、可靠的系统来管理。Java店铺开单据系统就是为了解决这个问题而开发的一个应用程序。本文将介绍如何使用Java编写一个简单的店铺开单据系统,并提供相应的代码示例。

功能要求

Java店铺开单据系统的主要功能包括:

  1. 创建和管理不同类型的单据,如销售单、采购单、库存单等。
  2. 提供对单据的增、删、改、查等操作。
  3. 实现单据的打印功能,将单据信息输出到控制台或文本文件中。
  4. 实现单据的汇总功能,即将多个单据按照一定的规则进行合并和计算。
  5. 提供简单的用户界面,以便用户能够方便地操作系统。

类设计

基于以上功能要求,我们可以设计如下的类结构:

classDiagram
    class Document {
        -id: int
        -date: Date
        +getId(): int
        +getDate(): Date
        +print(): void
    }
    class SalesDocument {
        +addSalesItem(item: SalesItem): void
        +removeSalesItem(item: SalesItem): void
    }
    class PurchaseDocument {
        +addPurchaseItem(item: PurchaseItem): void
        +removePurchaseItem(item: PurchaseItem): void
    }
    class InventoryDocument {
        +addInventoryItem(item: InventoryItem): void
        +removeInventoryItem(item: InventoryItem): void
    }
    class SalesItem {
        -productId: int
        -quantity: int
        -price: double
        +getProductId(): int
        +getQuantity(): int
        +getPrice(): double
    }
    class PurchaseItem {
        -productId: int
        -quantity: int
        -price: double
        +getProductId(): int
        +getQuantity(): int
        +getPrice(): double
    }
    class InventoryItem {
        -productId: int
        -quantity: int
        +getProductId(): int
        +getQuantity(): int
    }

上述类图中,Document是所有单据的基类,包含单据的共同属性和方法,如编号、日期和打印等。SalesDocumentPurchaseDocumentInventoryDocument分别表示销售单、采购单和库存单,它们都继承自Document,并且分别包含了对应类型的单据项。SalesItemPurchaseItemInventoryItem分别表示销售单据项、采购单据项和库存单据项,它们包含了商品编号、数量和价格等信息。

代码实现

下面是一个简单的Java代码示例,演示了如何创建和管理销售单据:

import java.util.Date;
import java.util.List;
import java.util.ArrayList;

class Document {
    private int id;
    private Date date;

    public Document(int id, Date date) {
        this.id = id;
        this.date = date;
    }

    public int getId() {
        return id;
    }

    public Date getDate() {
        return date;
    }

    public void print() {
        System.out.println("Document ID: " + id);
        System.out.println("Date: " + date);
    }
}

class SalesDocument extends Document {
    private List<SalesItem> items;

    public SalesDocument(int id, Date date) {
        super(id, date);
        items = new ArrayList<>();
    }

    public void addSalesItem(SalesItem item) {
        items.add(item);
    }

    public void removeSalesItem(SalesItem item) {
        items.remove(item);
    }
}

class SalesItem {
    private int productId;
    private int quantity;
    private double price;

    public SalesItem(int productId, int quantity, double price) {
        this.productId = productId;
        this.quantity = quantity;
        this.price = price;
    }

    public int getProductId() {
        return productId;
    }

    public int getQuantity() {
        return quantity;
    }

    public double getPrice() {
        return price;
    }
}

public class Main {
    public static void main(String[] args) {
        Date date = new Date();
        SalesDocument salesDoc = new SalesDocument(1, date);
        SalesItem item1 = new SalesItem(1001, 5, 9.99);
        SalesItem item2 =