好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

【经典示例分享】—商城购物车设计(VS+Access)附源码

弹指一挥间,从事开发工作两年多了,工作记录文件夹不知不觉好几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)附源码的详细内容...

  阅读:48次