gitee地址:https://gitee.com/wangyanyuvc/shopping-cart/tree/master/
1.前期调查

通过观察京东购物车的界面可以大致了解到购物车需要实现的功能
2.系统功能结构图

系统描述:进入购物车系统,根据界面提示来进行一系列商品操作,商城用以添加销售商品及商品的信息修改。并将所需商品添加进购物车中,也可在购物车中进行所需商品的添加,删除并结算商品。
3.UML图

4.关键代码
ShoppingCart:
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
public class ShoppingCart {
private Map<Integer, ProductItem> map = new LinkedHashMap<Integer, ProductItem>();
public void addProduct(Product p) {// 添加商品
int productId = p.getId();
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.getId() + ",名称:" + product.getName() + ",单价:" + 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();
System.out.println("购物车已清空!");
}
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 void Displaycart(ShoppingCart cart) {
if(map.isEmpty()) {
System.out.println("购物车为空!");
}
else{
cart.showAll();
System.out.println("总价为:" + cart.totalAllMoney());
}
}
}
Inventory:
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
public class Inventory {
private Map<Integer,ProductItem> map=new LinkedHashMap<Integer,ProductItem>();
public void addProduct(Product p){//添加商品
int productId=p.getId();
if(map.containsKey(productId)){ //判断商品编号是否存在
System.out.println("该商品已存在");
}else{
map.put(productId, new ProductItem(p));//新增商品
}
}
public boolean Productexist(int productId) {
if(!map.containsKey(productId)) {
return false;
}
return true;
}
public Product getProduct(int productId) {
return map.get(productId).getProduct();
}
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.getId()+",名称:"
+product.getName()+",单价:"+product.getPrice());
}
}
public void deleteProduct(int productId){//删除商品
if(map.containsKey(productId)){
map.remove(productId);
System.out.println("编号为:" + productId + "的商品删除成功!");
}
else {
System.out.println("删除失败!市场中无此商品!");
}
}
}