黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java購物車的實(shí)現(xiàn)

Java購物車的實(shí)現(xiàn)

更新時(shí)間:2022-09-26 10:15:42 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1302次

項(xiàng)目結(jié)構(gòu)

使用您喜歡的任何名稱創(chuàng)建一個(gè)新的 Java 項(xiàng)目。

在您的 src 文件夾下創(chuàng)建以下包,

收藏品.shoppingcart

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

使用的類

產(chǎn)品.java

Products.java

購物車.java

UI.java

主.java

對于這個(gè)示例項(xiàng)目,確保所有上述類都位于同一個(gè)包下,即collections.shoppingcart。

將class一一解釋它的意義。

產(chǎn)品.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;
    }   
}

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

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

hashCode()是在創(chuàng)建對象時(shí)附加到每個(gè)對象的唯一哈希/數(shù)字。

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

因此,重寫對象的 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]));
        }
    }
}

此類在您的購物車應(yīng)用程序中的作用是為您提供商店產(chǎn)品。

換句話說,這個(gè)類用于在應(yīng)用程序啟動(dòng)后立即初始化您的商店。在實(shí)際應(yīng)用中,項(xiàng)目將從用戶會(huì)話或數(shù)據(jù)庫中檢索。為簡單起見,使用 Products 類來初始化對象。

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

你已經(jīng)成功了一半。

購物車.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());
        }
    }    
}

這是一個(gè)具體的類,它充當(dāng)虛擬購物車來臨時(shí)存儲(chǔ)物品。

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

添加到購物車()

removeFromCart()

getProduct(), 等等……

它還維護(hù)一個(gè)具有 Product 類型的cartItems 列表,類似于 products 類中的產(chǎn)品列表。

list的唯一目的cartItems是將購買的商品存儲(chǔ)在購物車中或從購物車中刪除商品。它只是維護(hù)用戶添加到購物車的項(xiàng)目列表。

UI.java

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

在控制臺(tái)應(yīng)用程序中(比如這個(gè)),UI 部分變得有點(diǎn)棘手。但是,有一個(gè)很酷的方法可以讓它變得簡單。

看:

在控制臺(tái)中,用戶一次只能輸入一個(gè)輸入。這是關(guān)鍵概念,可用于簡化 UI。

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

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

在這個(gè)應(yīng)用程序中,使用了一個(gè)類變量來獲取用戶輸入。并根據(jù)輸入值執(zhí)行相應(yīng)的過程。

瀏覽下面的代碼并理解這個(gè)概念。

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);
    }
}

這是用戶和應(yīng)用程序之間發(fā)生主要交互的類。

它是應(yīng)用程序的控制點(diǎn)。

您在控制臺(tái)中看到的所有內(nèi)容都是此頁面的結(jié)果。

它接受用戶輸入并從您之前創(chuàng)建的類中調(diào)用相應(yīng)的方法來執(zhí)行所需的任務(wù)。

主.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();
    }
}

 

提交申請后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 欧美日韩大片 | 婷婷国产天堂久久综合五月 | 日本免费一二区视频 | 欧美中日韩在线 | 成人免费视频网站 | 热re91久久精品国产91热 | 麻豆导航 | 午夜看片网 | 九九精品视频在线播放 | 欧美精品一区二区三区四区 | 免费看黄无遮挡滚床单视频 | 成年视频xxxxx免费播放软件 | a级黄色毛片免费播放视频 a级黄色毛片 | 小处雏一区二区三区精 | 色美女影院 | 亚洲天堂色 | 亚洲日本在线看片 | 最近2019视频免费观看8 | 欧美人成片免费看视频不卡 | 色视频在线观看免费 | 欧洲在线| 九九伦理影院手机观看 | 国产精品黄在线观看免费网站 | 操干视频| 日本欧美大码aⅴ在线播放 日本欧美成人免费观看 | 国产免费一区二区三区 | 91亚洲国产系列精品第56页 | 中国女与老外在线精品 | a成人毛片免费观看 | 国产伦精品一区二区三区免 | 三级网址在线 | 一色屋免费视频 | 亚洲免费影院 | 黄色影片观看 | 黄视频网站在线观看 | 成年网站免费入口在线观看 | 18黄无遮挡免费视频 | 毛片免费在线播放 | 免费国产成人高清在线看软件 | 亚洲国产片在线观看 | 国产国语videosex护士 |