用java代码写一个简单的网上购物车程序

  1 需求:1、写一个商品类,有商品编号、商品名称、商品分类、商品单价属性。2、写一个商品条目信息类,有商品和数量两个属性,有商品总价格方法。
  2
  3 3、写一个购物车类,有添加商品方法、查看订单信息,删除商品,修改商品,清空购物车,求购物车中所有商品总金额方法。4、写一个测试类,测试上述方法。
  4
  5 商品类:
  6 [java] view plain copy
  7
  8     public class Product {
  9         private int productId;// 商品编号
 10         private String productName;// 商品名称
 11         private String category;// 商品分类
 12         private double price;// 单价
 13
 14         public Product() {// 无参构造
 15             super();
 16         }
 17
 18         public Product(int productId, String productName, String category,
 19                 double price) {
 20             super();
 21             this.productId = productId;
 22             this.productName = productName;
 23             this.category = category;
 24             this.price = price;
 25         }
 26
 27         public String toString() {
 28             return "Product [productId=" + productId + ", productName="
 29                     + productName + ", category=" + category + ", price=" + price
 30                     + "]";
 31         }
 32
 33         public int getProductId() {
 34             return productId;
 35         }
 36
 37         public void setProductId(int productId) {
 38             this.productId = productId;
 39         }
 40
 41         public String getProductName() {
 42             return productName;
 43         }
 44
 45         public void setProductName(String productName) {
 46             this.productName = productName;
 47         }
 48
 49         public String getCategory() {
 50             return category;
 51         }
 52
 53         public void setCategory(String category) {
 54             this.category = category;
 55         }
 56
 57         public double getPrice() {
 58             return price;
 59         }
 60
 61         public void setPrice(double price) {
 62             this.price = price;
 63         }
 64
 65     }
 66
 67 商品条目信息类:
 68 [java] view plain copy
 69
 70     public class ProductItem {
 71         private Product product;//购买的商品
 72         private int count;//商品数量
 73         public double totalMoney(){//小计
 74             double price=product.getPrice();//获取商品单价
 75             return price*count;
 76         }
 77
 78         public ProductItem() {
 79             super();
 80         }
 81
 82         public ProductItem(Product product, int count) {
 83             super();
 84             this.product = product;
 85             this.count = count;
 86         }
 87
 88         public Product getProduct() {
 89             return product;
 90         }
 91         public void setProduct(Product product) {
 92             this.product = product;
 93         }
 94         public int getCount() {
 95             return count;
 96         }
 97         public void setCount(int count) {
 98             this.count = count;
 99         }
100
101     }
102
103
104 购物车类:
105 [java] view plain copy
106
107     import java.util.Collection;
108     import java.util.Iterator;
109     import java.util.LinkedHashMap;
110     import java.util.Map;
111     public class ShoppingCart {//购物车
112         //key:商品编号 value:商品条目
113         private Map<Integer,ProductItem> map=new LinkedHashMap<Integer,ProductItem>();
114
115         public void addProduct(Product p){//添加商品
116             int productId=p.getProductId();
117             if(map.containsKey(productId)){
118                 ProductItem productItem=map.get(productId);
119                 productItem.setCount(productItem.getCount()+1);
120             }else{
121                 map.put(productId, new ProductItem(p,1));
122             }
123         }
124         public void showAll(){//查看订单信息
125             Collection<ProductItem> productItems = map.values();
126             Iterator<ProductItem> iterator = productItems.iterator();
127             while(iterator.hasNext()){
128                 ProductItem productItem = iterator.next();
129                 Product product = productItem.getProduct();
130                 System.out.println("商品编号:"+product.getProductId()+",商品名称:"
131                 +product.getProductName()+",单价:"+product.getPrice()+",数量:"+productItem.getCount()
132                 +",小计:"+productItem.totalMoney());
133             }
134         }
135         public boolean deleteProduct(int productId){//删除商品
136             if(map.containsKey(productId)){
137                 map.remove(productId);
138                 return true;
139             }
140             return false;
141         }
142         public boolean modifyProduct(int productId,int count){//修改
143             if(map.containsKey(productId)){
144                 if(count>=1){
145                     ProductItem productItem = map.get(productId);
146                     productItem.setCount(count);
147                     return true;
148                 }else if(count==0){//删除该商品
149                     deleteProduct(productId);
150                     return true;
151                 }
152             }
153             return false;
154         }
155
156         public void clearCart(){//清空购物车
157             map.clear();
158         }
159
160         public double totalAllMoney(){//商品总钱数
161             double total=0;
162             Collection<ProductItem> productItems = map.values();
163             Iterator<ProductItem> iterator = productItems.iterator();
164             while(iterator.hasNext()){
165                 ProductItem productItem = iterator.next();
166                 double money=productItem.totalMoney();
167                 total+=money;
168             }
169             return total;
170         }
171     }
172
173
174 测试类:
175 [java] view plain copy
176
177         public class ShoppingCartTest {
178
179             public static void main(String[] args) {
180                 ShoppingCart cart=new ShoppingCart();
181                 Product p1=new Product(101,"华硕笔记本","笔记本",4599);
182                 Product p2=new Product(102,"苹果","水果",5.9);
183                 Product p3=new Product(103,"彩电","家电",2799);
184                 Product p4=new Product(104,"秋裤","服装",128);
185                 Product p5=new Product(105,"华为手机","手机",2998);
186                 Product p6=new Product(101,"华硕笔记本","笔记本",4599);//测试买两件商品的情况
187                 cart.addProduct(p1);
188                 cart.addProduct(p2);
189                 cart.addProduct(p3);
190                 cart.addProduct(p4);
191                 cart.addProduct(p5);
192                 cart.addProduct(p6);
193                 cart.showAll();
194                 System.out.println("############");
195                 boolean flag=cart.deleteProduct(p2.getProductId());
196                 if(flag){
197                     System.out.println("商品编号为:"+p2.getProductId()+"的商品删除成功!");
198                 }else{
199                     System.out.println("删除失败");
200                 }
201                 cart.showAll();
202                 System.out.println("############");
203                 boolean flag2=cart.modifyProduct(p3.getProductId(), 2);
204                 if(flag2){
205                     System.out.println("商品编号为:"+p3.getProductId()+"的商品修改成功!");
206                 }else{
207                     System.out.println("修改失败");
208                 }
209                 cart.showAll();
210
211                 //cart.clearCart();
212                 //cart.showAll();
213                 System.out.println("商品总价钱为:"+cart.totalAllMoney());
214
215             }
216
217         } 
时间: 2024-08-02 19:19:27

用java代码写一个简单的网上购物车程序的相关文章

只用120行Java代码写一个自己的区块链

区块链是目前最热门的话题,广大读者都听说过比特币,或许还有智能合约,相信大家都非常想了解这一切是如何工作的.这篇文章就是帮助你使用 Java 语言来实现一个简单的区块链,用不到 120 行代码来揭示区块链的原理! “用不到120行 Java 代码就能实现一个自己的区块链!” 听起来不可思议吧?有什么能比开发一个自己的区块链更好的学习实践方法呢?那我们就一起来实践下! 因为我们是一家从事互联网金融的科技公司,所以我们采用虚拟资产金额作为这篇文章中的示例数据.大家可以先为自己想一个数字,后面我们会用

用java写一个简单的文件拷贝程序吧

代码: public static void copyFile(String srcPath, String destPath) throws IOException { //建立File对象的来源与目的 File src = new File(srcPath); File dest = new File(destPath); //由于只能拷贝文件,所以判定输入流是否为文件 if(!src.isFile()) { System.out.println("只能拷贝文件!"); throw

Java写一个简单学生管理系统

其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来做一个有界面的学生管理系统.其实都并不会太难. 今天我就先写一个简单的用List来实现学生管理系统: 首先,管理系统是针对学生对象的,所以我们先把学生对象就写出来: package bean; public class Student { String name; String studentId;

(2)自己写一个简单的servle容器

自己写一个简单的servlet,能够跑一个简单的servlet,说明一下逻辑. 首先是写一个简单的servlet,这就关联到javax.servlet和javax.servlet.http这两个包的类,其中一个比较重要的接口就是:javax.servlet.Servlet,所有的servlet必须实现实现或者继承实现该接口的类. Servlet接口有五个方法: public void init(ServletConfig config) throws ServletException publi

利用servlet和html写一个简单的登录

写一个简单的html登录页面,然后利用servlet来进行验证账号密码. html代码: <!DOCTYPE html> <html> <title>登陆页面</title> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action = &

写一个简单的servlet

昨天写完hibernate的小demo后,想写一个简单structs2,但是发现好像自己连servlet都忘了怎么写了,所以一切从头开始,先写一个简单servlet把 第一步 肯定是建立项目了,打开自己eclipse(myeclipse,sts,idea).然后file->new->java project.这里肯定会有疑问,为啥不建立一个web project呢.呃,原因很简单,因为要从头来,一切都从头来呗,web project里 web方面的属性都给配置好了,就起不到学习的作用了. 名字

利用SpringBoot+Logback手写一个简单的链路追踪

目录 一.实现原理 二.代码实战 三.测试 最近线上排查问题时候,发现请求太多导致日志错综复杂,没办法把用户在一次或多次请求的日志关联在一起,所以就利用SpringBoot+Logback手写了一个简单的链路追踪,下面详细介绍下. 一.实现原理 Spring Boot默认使用LogBack日志系统,并且已经引入了相关的jar包,所以我们无需任何配置便可以使用LogBack打印日志. MDC(Mapped Diagnostic Context,映射调试上下文)是log4j和logback提供的一种

利用java的Socket实现一个简单hello/hi聊天程序

利用java的Socket实现一个简单hello/hi聊天程序 首先,我们来用java实现一个简单的hello/hi聊天程序.在这个程序里,我学习到了怎么用socket套接套接字来进行编程.简单理解了一些关于socket套接字和底层调用的关系.关于java的封装思想,我学会了一些东西,java里真的是万物皆对象.还学到了一点多线程的知识. TCP 在这里,不得不先介绍以下TCP.TCP是传输层面向连接的协议.提供了端到端的进程之间的通信方式.TCP在通信之前要先建立连接.这里我们称这个建立连接的

用C写一个简单的推箱子游戏(一)

我现在在读大二,我们有一门课程叫<操作系统>,课程考查要求我们可以写一段程序或者写Windows.iOS.Mac的发展历程.后面我结合网上的资料参考,就想用自己之前简单学过的C写一关的推箱子小程序. 这一程序主要用到了C语言中的二维数组,头文件#include<conio.h>(因为要调用getch()函数以记录输入内容),switch函数等. 一.     功能概述 a)   游戏规则概述 玩家通过键盘输入W.S.A.D四键或者“↑”.“↓”.“←”.“→”四个方向键推动箱子,而