弹指一挥间,从事开发工作两年多了,工作记录文件夹不知不觉好几G了。今天分享下之前项目中用到的一个购物车示例,虽然用的技术比较老(拖放控件DataGview),我觉得里面包含了很多可以细细咀嚼的 面向对象思想 ,尤其是商品和购物车各个对象的从属关系。购
弹指一挥间,从事开发工作两年多了,工作记录文件夹不知不觉好几G了。今天分享下之前项目中用到的一个购物车示例,虽然用的技术比较老(拖放控件DataGview),我觉得里面包含了很多可以细细咀嚼的 面向对象思想 ,尤其是商品和购物车各个对象的从属关系。购物车老生常谈的东西,希望能起到 抛砖引玉 的效果。下面就简单介绍下吧!(via:女孩礼物网)
此款短小精悍的购物车主要有三大功能:1.折扣方案调整 2.商品列表 3.购物车
折扣方案调整
商品列表
购物车
购物车核心思想代码如下
Product.cs
1 using System; 2 using System.Collections.Generic; 3 4 [Serializable] 5 public class Product { 6 7 int id; 8 9 public int Id { 10 get { return id; } 11 set { id = value; } 12 } 13 14 string name; 15 16 public string Name { 17 get { return name; } 18 set { name = value; } 19 } 20 21 decimal price; 22 23 public decimal Price { 24 get { return price; } 25 set { price = value; } 26 } 27 28 string unit; 29 30 public string Unit { 31 get { return unit; } 32 set { unit = value; } 33 } 34 35 public Product( int id, string name, decimal price, string unit) { 36 this .id = id; 37 this .name = name; 38 this .price = price; 39 this .unit = unit; 40 } 41 }
ShopCartItem.cs
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 6 [Serializable] 7 public class ShopCartItem { 8 9 private Product product; 10 private int count; 11 12 public Product Product { 13 get { return product; } 14 set { product = value; } 15 } 16 public int Count { 17 get { return count; } 18 set { count = value; } 19 } 20 21 /// 22 /// 单项总折后价。 23 /// 24 public decimal Price { 25 get { 26 decimal price = ( decimal ) 0 ; 27 List discountsUsing = (List )HttpContext.Current.Application[ " DiscountsUsing " ]; 28 price = this .TotalPrice; 29 foreach (IDiscountable discount in discountsUsing) { 30 price = price * ( decimal )discount.GetDiscount( this .product.Price, this .count); 31 } 32 return price; 33 } 34 } 35 36 /// 37 /// 单项总原价 38 /// 39 public decimal TotalPrice { 40 get { 41 return this .product.Price * this .count; 42 } 43 } 44 45 public ShopCartItem(Product product, int count) { 46 this .product = product; 47 this .count = count; 48 } 49 }
ShopCartSet.cs
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 6 [Serializable] 7 public class ShopCartSet : IEnumerable { 8 9 private Dictionary int , ShopCartItem> items; 10 11 public ShopCartSet() { 12 this .items = new Dictionary int , ShopCartItem> (); 13 } 14 15 /// 16 /// 各项总原价 17 /// 18 public decimal TotalPrice { 19 get { 20 decimal price = ( decimal ) 0 ; 21 foreach (ShopCartItem item in this ) { 22 price = price + item.TotalPrice; 23 } 24 return price; 25 } 26 } 27 28 /// 29 /// 各项总折后价 30 /// 31 public decimal Price { 32 get { 33 decimal price = ( decimal ) 0 ; 34 foreach (ShopCartItem item in this ) { 35 price = price + item.Price; 36 } 37 return price; 38 } 39 } 40 41 public ShopCartItem this [ int id] { 42 get { 43 return this .items[id]; 44 } 45 set { 46 this .items[id] = value; 47 } 48 } 49 50 public void Add(Product product, int count) { 51 this .Add( new ShopCartItem(product, count)); 52 } 53 54 public void Add(ShopCartItem item) { 55 if (! this .items.ContainsKey(item.Product.Id)) { 56 this .items.Add(item.Product.Id, item); 57 } 58 else { 59 this .items[item.Product.Id].Count++ ; 60 } 61 } 62 63 public void Remove( int key) { 64 this .items.Remove(key); 65 } 66 67 public void Remove(Product product) { 68 this .items.Remove(product.Id); 69 } 70 71 public void Remove(ShopCartItem shopCartItem) { 72 this .items.Remove(shopCartItem.Product.Id); 73 } 74 75 #region 接口实现 76 public IEnumerator GetEnumerator() { 77 return this .items.Values.GetEnumerator(); 78 } 79 80 System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { 81 return this .items.Values.GetEnumerator(); 82 } 83 #endregion 84 }
源码下载
查看更多关于【经典示例分享】—商城购物车设计(VS+Access)附源码的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did97457