一 购物车类(Cart)的设计
二 代码
1、Cart类
package entity;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
//购物车类
public class Cart {
//购买商品的集合
private HashMap<Items,Integer> goods;
//购物车的总金额
private double totalPrice;
//构造方法
public Cart()
{
goods = new HashMap<Items,Integer>();
totalPrice = 0.0;
}
public HashMap<Items, Integer> getGoods() {
return goods;
}
public void setGoods(HashMap<Items, Integer> goods) {
this.goods = goods;
}
public double getTotalPrice() {
return totalPrice;
}
public void setTotalPrice(double totalPrice) {
this.totalPrice = totalPrice;
}
//添加商品进购物车的方法
public boolean addGoodsInCart(Items item ,int number)
{
if(goods.containsKey(item))
{
goods.put(item, goods.get(item)+number);
}
else
{
goods.put(item, number);
}
calTotalPrice(); //重新计算购物车的总金额
return true;
}
//删除商品的方法
public boolean removeGoodsFromCart(Items item)
{
goods.remove(item);
calTotalPrice(); //重新计算购物车的总金额
return true;
}
//统计购物车的总金额
public double calTotalPrice()
{
double sum = 0.0;
Set<Items> keys = goods.keySet(); //获得键的集合
Iterator<Items> it = keys.iterator(); //获得迭代器对象
while(it.hasNext())
{
Items i = it.next();
sum += i.getPrice()* goods.get(i);
}
this.setTotalPrice(sum); //设置购物车的总金额
return this.getTotalPrice();
}
public static void main(String[] args) {
//先创建两个商品对象
Items i1 = new Items(1,"沃特篮球鞋","温州",200,500,"001.jpg");
Items i2 = new Items(2,"李宁运动鞋","广州",300,500,"002.jpg");
Items i3 = new Items(1,"沃特篮球鞋","温州",200,500,"001.jpg");
Cart c = new Cart();
c.addGoodsInCart(i1, 1);
c.addGoodsInCart(i2, 2);
//再次购买沃特篮球鞋,购买3双
c.addGoodsInCart(i3, 3);
//变量购物商品的集合
Set<Map.Entry<Items, Integer>> items= c.getGoods().entrySet();
for(Map.Entry<Items, Integer> obj:items)
{
System.out.println(obj);
}
System.out.println("购物车的总金额:"+c.getTotalPrice());
}
}
2、Items类
package
entity;
//商品类
public
class
Items {
private
int
id
;
// 商品编号
private
String
name
;
// 商品名称
private
String
city
;
// 产地
private
int
price
;
// 价格
private
int
number
;
// 库存
private
String
picture
;
// 商品图片
//保留此不带参数的构造方法
public
Items()
{
}
public
Items(
int
id,String name,String city,
int
price,
int
number,String picture)
{
this
.
id
= id;
this
.
name
= name;
this
.
city
= city;
this
.
picture
= picture;
this
.
price
= price;
this
.
number
= number;
}
public
int
getId() {
return
id
;
}
public
void
setId(
int
id) {
this
.
id
= id;
}
public
String getName() {
return
name
;
}
public
void
setName(String name) {
this
.
name
= name;
}
public
String getCity() {
return
city
;
}
public
void
setCity(String city) {
this
.
city
= city;
}
public
int
getPrice() {
return
price
;
}
public
void
setPrice(
int
price) {
this
.
price
= price;
}
public
int
getNumber() {
return
number
;
}
public
void
setNumber(
int
number) {
this
.
number
= number;
}
public
String getPicture() {
return
picture
;
}
public
void
setPicture(String picture) {
this
.
picture
= picture;
}
@Override
public
int
hashCode() {
//
TODO
Auto-generated method stub
return
this
.getId()+
this
.getName().hashCode();
}
@Override
public
boolean
equals(Object obj) {
//
TODO
Auto-generated method stub
if
(
this
==obj)
{
return
true
;
}
if
(obj
instanceof
Items)
{
Items i = (Items)obj;
if
(
this
.getId()==i.getId()&&
this
.getName().equals(i.getName()))
{
return
true
;
}
else
{
return
false
;
}
}
else
{
return
false
;
}
}
public
String toString()
{
return
"商品编号:"
+
this
.getId()+
",商品名称:"
+
this
.getName();
}
}
三 测试结果
商品编号:1,商品名称:沃特篮球鞋=4
商品编号:2,商品名称:李宁运动鞋=2
购物车的总金额:1400.0