java实现网上购物车程序

 更新时间:2018年01月15日 14:22:25   作者:ylyang12  
这篇文章主要介绍了java实现网上购物车程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

用java代码写一个简单的网上购物车程序,供大家参考,具体内容如下

需求:

1、写一个商品类,有商品编号、商品名称、商品分类、商品单价属性。

2、写一个商品条目信息类,有商品和数量两个属性,有商品总价格方法。

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;//商品数量 
  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()+",数量:"+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(){//商品总钱数 
    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()); 
 
  } 
 
} 

运行效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java拓展集合工具类CollectionUtils

    java拓展集合工具类CollectionUtils

    这篇文章主要为大家详细介绍了java拓展集合工具类CollectionUtils,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Springboot下载excel文件中文名乱码问题及解决

    Springboot下载excel文件中文名乱码问题及解决

    这篇文章主要介绍了Springboot下载excel文件中文名乱码问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java网络编程实现的简单端口扫描器示例

    Java网络编程实现的简单端口扫描器示例

    这篇文章主要介绍了Java网络编程实现的简单端口扫描器,涉及Java网络编程Socket组建、swing组建及多线程相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • 关于RocketMQ使用事务消息

    关于RocketMQ使用事务消息

    RocketMQ是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据。一般消息的体量不会很大,需要的朋友可以参考下
    2023-05-05
  • Spring使用注解更简单的读取和存储对象的方法

    Spring使用注解更简单的读取和存储对象的方法

    这篇文章主要介绍了Spring使用注解更简单的读取和存储对象的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-07-07
  • Java如何使用multipartFile对象解析Execl

    Java如何使用multipartFile对象解析Execl

    本文介绍了如何使用Spring的MultipartFile类解析Excel文件(.xls和.xlsx),包括文件上传、数据校验、输入流获取、文件解析、数据保存和异常处理的详细步骤
    2025-02-02
  • Maven项目引用第三方jar包找不到类ClassNotFoundException

    Maven项目引用第三方jar包找不到类ClassNotFoundException

    这篇文章主要为大家介绍了Maven项目引用第三方jar包找不到类ClassNotFoundException解决及原因分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • IDEA自动生成TestNG的testng.xml的插件方法

    IDEA自动生成TestNG的testng.xml的插件方法

    这篇文章主要介绍了IDEA自动生成TestNG的testng.xml的插件方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • java 数据结构与算法 (快速排序法)

    java 数据结构与算法 (快速排序法)

    这篇文章主要介绍了java 数据结构与算法(快速排序法),,快速排序法是实践中的一种快速的排序算法,在c++或对java基本类型的排序中特别有用,下面我们一起进入文章学习更详细的内容吧,需要的朋友可以参考下
    2022-02-02
  • mybatis查询结果返回至实体类的示例代码

    mybatis查询结果返回至实体类的示例代码

    这篇文章主要介绍了mybatis查询结果返回至实体类的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07

最新评论