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 }