package com.lovo.cq.shopping10_1.vo;
import com.lovo.cq.shopping10_1.po.Book;
/**
* 购物车中的购物项,它包括商品和商品数量
*/
public class CartItem {
private Book book;
private int count;//书的数量
public CartItem(Book book){
this.book=book;
count++;
}
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
//计算某一购物项的总价
public float getItemPrice(){
float price = book.getNowPrice()*count;
return price;
}
}
===========================购物车========================
package com.lovo.cq.shopping10_1.vo;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import com.lovo.cq.shopping10_1.po.Book;
public class Cart {
private HashMap<Integer, CartItem> items = null;
private int itemsCount = 0;//购物项的数量
public Cart() {
items = new HashMap<Integer, CartItem>();
}
/**
* 在购物车中添加一个购物项,如果该购物项已存在购物车中,则什么都不做
* @param bookId 书籍的Id号
* @param book 书
*/
public synchronized void addItem(Integer bookId,Book book) {
if(!items.containsKey(bookId)) {//购物车中没有该商品,可以添加该商品到购物车中
CartItem item = new CartItem(book);
items.put(bookId, item);
itemsCount++;
}
}
/**
* 修改已经购买好的书籍数量
* @param bookId 书籍的Id号
* @param count 修改后的数量
*/
public synchronized void updateBookCount(Integer bookId,int count){
if(count >= 1){
if(items.containsKey(bookId)){
CartItem item = items.get(bookId);//根据书的Id号,来得到此书
item.setCount(count);//修改书的数量
}
}
}
/**
* 从购物车中删除一个购物项
* @param bookId 书籍的Id号
*/
public synchronized void deleteItem(Integer bookId){
if(items.containsKey(bookId)){
items.remove(bookId);
itemsCount--;
}
}
/**
* 删除购物车中的所有购物项
*/
public synchronized void clear(){
items.clear();
itemsCount = 0;
}
/**
* 得到购物车中的所有购物项的数目
*/
public synchronized int getItemCount(){
return itemsCount;
}
/**
* 得到购物车中的所有购物项的总价格
*/
public synchronized float getTotalPrice(){
float amount = 0.0f;
//得到迭代器
Iterator<CartItem> it = items.values().iterator();
while(it.hasNext()){
CartItem item = it.next();
amount+=item.getItemPrice();
}
return amount;
}
/**
* 得到购物车中的所有商品
*/
public synchronized Collection<CartItem> getItems(){
return items.values();
}
/**
* 判断商品是否在购物车中
*/
public synchronized boolean isExist(Integer bookId){
if(items.containsKey(bookId)){
return true;
}
return false;
}
}