大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java購物車的實現

Java購物車的實現

更新時間:2022-09-26 10:15:42 來源:動力節點 瀏覽1298次

項目結構

使用您喜歡的任何名稱創建一個新的 Java 項目。

在您的 src 文件夾下創建以下包,

收藏品.shoppingcart

為簡單起見,所有代碼都將駐留在此包中。

使用的類

產品.java

Products.java

購物車.java

UI.java

主.java

對于這個示例項目,確保所有上述類都位于同一個包下,即collections.shoppingcart。

將class一一解釋它的意義。

產品.java

通過下面的代碼,

package collections.shoppingcart;
import java.util.Objects;

/**
 *
 * @author Varun Shrivastava (vslala)
 */
class Product {
    private Integer pid;
    private String name;
    private Double price;
    private Integer stock;    
    public Product () {       
    }    
    public Product (Integer pid, String name, Double price, Integer stock) {
        this.pid = pid;
        this.name = name;
        this.price = price;
        this.stock = stock;
    }
    /**
     * @return the name
     */
    public String getName() {
        return name;
    }
    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * @return the price
     */
    public Double getPrice() {
        return price;
    }
    /**
     * @param price the price to set
     */
    public void setPrice(Double price) {
        this.price = price;
    }
    /**
     * @return the stock
     */
    public Integer getStock() {
        return stock;
    }
    /**
     * @param stock the stock to set
     */
    public void setStock(Integer stock) {
        this.stock = stock;
    }
    /**
     * @return the pid
     */
    public Integer getPid() {
        return pid;
    }
    @Override
    public int hashCode() {
        int hash = 7;
        hash = 29 * hash + Objects.hashCode(this.pid);
        hash = 29 * hash + Objects.hashCode(this.name);
        hash = 29 * hash + Objects.hashCode(this.price);
        hash = 29 * hash + Objects.hashCode(this.stock);
        return hash;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Product other = (Product) obj;
        if (!Objects.equals(this.name, other.name)) {
            return false;
        }
        if (!Objects.equals(this.pid, other.pid)) {
            return false;
        }
        if (!Objects.equals(this.price, other.price)) {
            return false;
        }
        if (!Objects.equals(this.stock, other.stock)) {
            return false;
        }
        return true;
    }

    /**
     * @param pid the pid to set
     */
    public void setPid(Integer pid) {
        this.pid = pid;
    }   
}

這是一個包含Product屬性并為其提供 setter 和 getter 的具體類。還覆蓋了 Hash 和 Equals 方法。

equals()方法用于根據屬性比較兩個對象。

hashCode()是在創建對象時附加到每個對象的唯一哈希/數字。

因此,每當比較兩個對象時。比較它們的哈希碼和屬性。如果兩者(哈希碼和屬性值)相同,則認為對象相等,否則不相等。

因此,重寫對象的 hascode() 和 equals() 方法非常重要。

Products.java

通過下面的代碼,

package collections.shoppingcart;
import java.util.ArrayList;
import java.util.List;
/**
 *
 * @author Varun Shrivastava (vslala)
 */
public class Products {
    private final List<Product> products = new ArrayList<Product>();

    public Products () {
        this.initStoreItems();
    }    
    public List<Product> getProducts() {
        return products;
    }    
    public void initStoreItems() {
        String [] productNames = {"Lux Soap", "Fair n Lovely", "MTR"};
        Double [] productPrice = {40.00d, 60.00d, 30.00d};
        Integer [] stock = {10, 6, 10};        
        for (int i=0; i < productNames.length; i++) {
            this.products.add(new Product(i+1, productNames[i], productPrice[i], stock[i]));
        }
    }
}

此類在您的購物車應用程序中的作用是為您提供商店產品。

換句話說,這個類用于在應用程序啟動后立即初始化您的商店。在實際應用中,項目將從用戶會話或數據庫中檢索。為簡單起見,使用 Products 類來初始化對象。

如您所見,該initStoreItems()方法用于將產品添加到Product類型的新ArrayList 中 。

你已經成功了一半。

購物車.java

package collections.shoppingcart;
import java.util.ArrayList;
import java.util.List;
/**
 *
 * @author Varun Shrivastava
 */
class Cart {
    List<Product> cartItems = new ArrayList<Product>();    
    public void addProductToCartByPID(int pid) {
        Product product = getProductByProductID(pid);
        addToCart(product);
    }
    private Product getProductByProductID(int pid) {
        Product product = null;
        List<Product> products = new Products().getProducts();
        for (Product prod: products) {
            if (prod.getPid() == pid) {
                product = prod;
                break;
            }
        }
        return product;
    }
    private void addToCart(Product product) {
        cartItems.add(product);
    }
    public void removeProductByPID(int pid) {
        Product prod = getProductByProductID(pid);
        cartItems.remove(prod);
    }
    void printCartItems() {
        for (Product prod: cartItems) {
            System.out.println(prod.getName());
        }
    }    
}

這是一個具體的類,它充當虛擬購物車來臨時存儲物品。

它提供了購物車應具有的所有必需操作,例如:

添加到購物車()

removeFromCart()

getProduct(), 等等……

它還維護一個具有 Product 類型的cartItems 列表,類似于 products 類中的產品列表。

list的唯一目的cartItems是將購買的商品存儲在購物車中或從購物車中刪除商品。它只是維護用戶添加到購物車的項目列表。

UI.java

在 Web 應用程序中,您將擁有一個漂亮的 HTML 頁面,并支持 Javascript。因此,用戶只需查找產品并單擊“添加到購物車” 按鈕即可。

在控制臺應用程序中(比如這個),UI 部分變得有點棘手。但是,有一個很酷的方法可以讓它變得簡單。

看:

在控制臺中,用戶一次只能輸入一個輸入。這是關鍵概念,可用于簡化 UI。

人們經常為不同的輸入取不同的輸入變量。如果要處理大量輸入,這可能會令人頭疼。

這就是為什么最簡單的方法是使用單個輸入變量并在填充后立即處理它。

在這個應用程序中,使用了一個類變量來獲取用戶輸入。并根據輸入值執行相應的過程。

瀏覽下面的代碼并理解這個概念。

package collections.shoppingcart;
import java.util.List;
import java.util.Scanner;
/**
 *
 * @author Varun Shrivastava (vslala)
 */
public class UI {
    Cart cart = new Cart();
    private int ch = 0;
        public UI () {
        menu();
    }    
    public void startScreen () {
        System.out.println("1. Display Store Products");
        System.out.println("2. Display Cart");
        System.out.println("0. Exit");
    }    
    public void storeProductsMenu() {
        System.out.println("1. Add to Cart");
        System.out.println("2. Remove From Cart");
        System.out.println("0. Exit");
    }    
    public void menu () {
        do {
            startScreen();
            getUserInput();            
            switch (ch) {
                case 1: 
                    displayStoreProducts();
                    storeProductsMenu();
                    getUserInput();
                    innerChoice1();
                    break;
                case 2:
                    showCart();
                    break;
                case 0:
                    System.exit(0);
                    break;
                default:                   
                    break;
            }
        } while (ch != 0);
    }
    private void innerChoice1() {
        switch (ch) {
            case 1:
                addProductToCart();
                showCart();
                break;
            case 2:
                removeProductFromCart();
                break;
            default:               
                break;
        }
    }
    private int getUserInput() throws NumberFormatException {
        Scanner in = new Scanner (System.in);
        ch = Integer.parseInt(in.nextLine());
        return ch;
    }
    private void displayStoreProducts() {
        List<Product> products = new Products().getProducts();
        for (Product prod: products) {
            System.out.println(
                    prod.getPid() + "- " +
                            prod.getName() + " " +
                            prod.getPrice() + " " +
                            prod.getStock()
            );
        }
    }
    private void addProductToCart() {
        int pid = getUserInput();
        cart.addProductToCartByPID(pid);      
    }
    private void showCart() {
        cart.printCartItems();
    }
    private void removeProductFromCart() {
        int pid = getUserInput();
        cart.removeProductByPID(pid);
    }
}

這是用戶和應用程序之間發生主要交互的類。

它是應用程序的控制點。

您在控制臺中看到的所有內容都是此頁面的結果。

它接受用戶輸入并從您之前創建的類中調用相應的方法來執行所需的任務。

主.java

/*
 * Create a fully functional program to store and delete objects from the cart
 */
package collections.shoppingcart;
/**
 *
 * @author Varun Shrivastava 
 */
public class Main {
    public static void main (String [] args) {
        new UI();
    }
}

 

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 99久久久精品 | 国产亚洲精品在天天在线麻豆 | 日韩成人国产精品视频 | 欧美福利精品福利视频在线观看 | 国产一区二区三区四区 | 欧美精品观看 | 成人久久18网站 | 亚洲三级天堂 | 日韩精品亚洲人成在线播放 | 欧美性理论片在线观看片免费 | 一区二区不卡在线观看 | 日韩国产一区二区 | 日日爽| 成人国产片免费 | 日韩中文字幕免费在线观看 | 91精品一区二区三区久久久久 | 二级片毛片 | 亚洲伊人久久综合影院2021 | 亚洲伊人精品综合在合线 | 亚洲精品国产一区二区三 | 91尤物在线| 美女被羞羞视频网站在线 | 日本在线精品视频 | 国产全黄a一级毛片 | 欧美福利视频在线观看 | 久久精品只有这里有 | 天天干天天色天天射 | 成年男女免费视频观看性 | 久久99精品久久久久久首页 | 欧美性xxxxxx性| 91精品在线免费 | 久青草资源福利视频 | 久热这里只有精品视频6 | 国产成人免费a在线视频色戒 | 久久99久久精品国产99热 | 国产成人一区在线播放 | 四虎影视网| 国产成人亚洲精品91专区高清 | 免费a大片 | 中文一区在线观看 | 国产一区二区三区在线观看视频 |