欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實現(xiàn)網上購物車程序

 更新時間:2018年01月15日 14:22:25   作者:ylyang12  
這篇文章主要介紹了java實現(xiàn)網上購物車程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下

用java代碼寫一個簡單的網上購物車程序,供大家參考,具體內容如下

需求:

1、寫一個商品類,有商品編號、商品名稱、商品分類、商品單價屬性。

2、寫一個商品條目信息類,有商品和數(shù)量兩個屬性,有商品總價格方法。

3、寫一個購物車類,有添加商品方法、查看訂單信息,刪除商品,修改商品,清空購物車,求購物車中所有商品總金額方法。4、寫一個測試類,測試上述方法。

商品類:

public class Product { 
  private int productId;// 商品編號 
  private String productName;// 商品名稱 
  private String category;// 商品分類 
  private double price;// 單價 
 
  public Product() {// 無參構造 
    super(); 
  } 
 
  public Product(int productId, String productName, String category, 
      double price) { 
    super(); 
    this.productId = productId; 
    this.productName = productName; 
    this.category = category; 
    this.price = price; 
  } 
 
  public String toString() { 
    return "Product [productId=" + productId + ", productName=" 
        + productName + ", category=" + category + ", price=" + price 
        + "]"; 
  } 
 
  public int getProductId() { 
    return productId; 
  } 
 
  public void setProductId(int productId) { 
    this.productId = productId; 
  } 
 
  public String getProductName() { 
    return productName; 
  } 
 
  public void setProductName(String productName) { 
    this.productName = productName; 
  } 
 
  public String getCategory() { 
    return category; 
  } 
 
  public void setCategory(String category) { 
    this.category = category; 
  } 
 
  public double getPrice() { 
    return price; 
  } 
 
  public void setPrice(double price) { 
    this.price = price; 
  } 
 
} 

商品條目信息類:

public class ProductItem { 
  private Product product;//購買的商品 
  private int count;//商品數(shù)量 
  public double totalMoney(){//小計 
    double price=product.getPrice();//獲取商品單價 
    return price*count; 
  } 
   
  public ProductItem() { 
    super(); 
  } 
 
  public ProductItem(Product product, int count) { 
    super(); 
    this.product = product; 
    this.count = count; 
  } 
 
  public Product getProduct() { 
    return product; 
  } 
  public void setProduct(Product product) { 
    this.product = product; 
  } 
  public int getCount() { 
    return count; 
  } 
  public void setCount(int count) { 
    this.count = count; 
  } 
   
} 

購物車類:

import java.util.Collection; 
import java.util.Iterator; 
import java.util.LinkedHashMap; 
import java.util.Map; 
public class ShoppingCart {//購物車 
  //key:商品編號 value:商品條目 
  private Map<Integer,ProductItem> map=new LinkedHashMap<Integer,ProductItem>(); 
   
  public void addProduct(Product p){//添加商品 
    int productId=p.getProductId(); 
    if(map.containsKey(productId)){ 
      ProductItem productItem=map.get(productId); 
      productItem.setCount(productItem.getCount()+1); 
    }else{ 
      map.put(productId, new ProductItem(p,1)); 
    } 
  } 
  public void showAll(){//查看訂單信息 
    Collection<ProductItem> productItems = map.values(); 
    Iterator<ProductItem> iterator = productItems.iterator(); 
    while(iterator.hasNext()){ 
      ProductItem productItem = iterator.next(); 
      Product product = productItem.getProduct(); 
      System.out.println("商品編號:"+product.getProductId()+",商品名稱:" 
      +product.getProductName()+",單價:"+product.getPrice()+",數(shù)量:"+productItem.getCount() 
      +",小計:"+productItem.totalMoney()); 
    } 
  } 
  public boolean deleteProduct(int productId){//刪除商品 
    if(map.containsKey(productId)){ 
      map.remove(productId); 
      return true; 
    } 
    return false; 
  } 
  public boolean modifyProduct(int productId,int count){//修改 
    if(map.containsKey(productId)){ 
      if(count>=1){ 
        ProductItem productItem = map.get(productId); 
        productItem.setCount(count); 
        return true; 
      }else if(count==0){//刪除該商品 
        deleteProduct(productId); 
        return true; 
      }   
    } 
    return false; 
  } 
   
  public void clearCart(){//清空購物車 
    map.clear(); 
  } 
   
  public double totalAllMoney(){//商品總錢數(shù) 
    double total=0; 
    Collection<ProductItem> productItems = map.values(); 
    Iterator<ProductItem> iterator = productItems.iterator(); 
    while(iterator.hasNext()){ 
      ProductItem productItem = iterator.next(); 
      double money=productItem.totalMoney(); 
      total+=money; 
    } 
    return total; 
  } 
} 

測試類:

public class ShoppingCartTest { 
 
  public static void main(String[] args) { 
    ShoppingCart cart=new ShoppingCart(); 
    Product p1=new Product(101,"華碩筆記本","筆記本",4599); 
    Product p2=new Product(102,"蘋果","水果",5.9); 
    Product p3=new Product(103,"彩電","家電",2799); 
    Product p4=new Product(104,"秋褲","服裝",128); 
    Product p5=new Product(105,"華為手機","手機",2998); 
    Product p6=new Product(101,"華碩筆記本","筆記本",4599);//測試買兩件商品的情況 
    cart.addProduct(p1); 
    cart.addProduct(p2); 
    cart.addProduct(p3); 
    cart.addProduct(p4); 
    cart.addProduct(p5); 
    cart.addProduct(p6); 
    cart.showAll(); 
    System.out.println("############"); 
    boolean flag=cart.deleteProduct(p2.getProductId()); 
    if(flag){ 
      System.out.println("商品編號為:"+p2.getProductId()+"的商品刪除成功!"); 
    }else{ 
      System.out.println("刪除失敗"); 
    } 
    cart.showAll(); 
    System.out.println("############"); 
    boolean flag2=cart.modifyProduct(p3.getProductId(), 2); 
    if(flag2){ 
      System.out.println("商品編號為:"+p3.getProductId()+"的商品修改成功!"); 
    }else{ 
      System.out.println("修改失敗"); 
    } 
    cart.showAll(); 
     
    //cart.clearCart(); 
    //cart.showAll(); 
    System.out.println("商品總價錢為:"+cart.totalAllMoney()); 
 
  } 
 
} 

運行效果圖:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • SpringBoot應用啟動流程源碼解析

    SpringBoot應用啟動流程源碼解析

    這篇文章主要介紹了SpringBoot應用啟動流程源碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Java中管理資源的引用隊列相關原理解析

    Java中管理資源的引用隊列相關原理解析

    這篇文章主要介紹了Java中管理資源的引用隊列相關原理解析,涉及到Java的垃圾回收機制方面的知識,需要的朋友可以參考下
    2015-12-12
  • Spring容器注入bean的幾種方式詳解

    Spring容器注入bean的幾種方式詳解

    這篇文章主要介紹了Spring容器注入bean的幾種方式詳解,@Configuration用來聲明一個配置類,然后使用 @Bean 注解,用于聲明一個bean,將其加入到Spring容器中,這種方式是我們最常用的一種,需要的朋友可以參考下
    2024-01-01
  • Spring?MVC和springboot靜態(tài)資源處理問題

    Spring?MVC和springboot靜態(tài)資源處理問題

    這篇文章主要介紹了Spring?MVC和springboot靜態(tài)資源處理問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 深入了解Java數(shù)據(jù)結構和算法之堆

    深入了解Java數(shù)據(jù)結構和算法之堆

    這篇文章主要為大家介紹了Java數(shù)據(jù)結構和算法之堆 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • SpringBoot實現(xiàn)優(yōu)雅停機的正確方法

    SpringBoot實現(xiàn)優(yōu)雅停機的正確方法

    什么叫優(yōu)雅停機?就是向應用進程發(fā)出停止指令之后,能保證正在執(zhí)行的業(yè)務操作不受影響,直到操作運行完畢之后再停止服務。本文就來和大家聊聊SpringBoot實現(xiàn)優(yōu)雅停機的正確姿勢,希望對大家有所幫助
    2023-01-01
  • Spring?Bean自動裝配入門到精通

    Spring?Bean自動裝配入門到精通

    自動裝配是使用spring滿足bean依賴的一種方法,spring會在應用上下文中為某個bean尋找其依賴的bean,Spring中bean有三種裝配機制,分別是:在xml中顯式配置、在java中顯式配置、隱式的bean發(fā)現(xiàn)機制和自動裝配
    2022-08-08
  • Java中的注解機制Annotation詳解

    Java中的注解機制Annotation詳解

    這篇文章主要介紹了Java中的注解機制Annotation詳解,  Java Annotation 是 Java 語言中的一種 元數(shù)據(jù)機制,它可以在代碼中添加額外的信息,以便于程序的理解和處理,Annotation 可以用來描述類、方法、屬性等各種程序的特性,需要的朋友可以參考下
    2023-10-10
  • spring異步service中處理線程數(shù)限制詳解

    spring異步service中處理線程數(shù)限制詳解

    這篇文章主要給大家介紹了關于spring異步service中處理線程數(shù)限制的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用spring具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • Java 讀取類路徑下的資源文件實現(xiàn)代碼

    Java 讀取類路徑下的資源文件實現(xiàn)代碼

    這篇文章主要介紹了Java 讀取類路徑下的資源文件實現(xiàn)代碼的相關資料,主要實現(xiàn)工具類代碼ResourceLoadUtil.java的實例需要的朋友可以參考下
    2017-07-07

最新評論