首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【经典示例分享】— 商城购物车设计(VS+Access)附源码

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

作者头像
跟着阿笨一起玩NET
发布2018-09-19 15:50:54
1.2K0
发布2018-09-19 15:50:54
举报

弹指一挥间,从事开发工作两年多了,工作记录文件夹不知不觉好几G了。今天分享下之前项目中用到的一个购物车示例,虽然用的技术比较老(拖放控件DataGview),我觉得里面包含了很多可以细细咀嚼的面向对象思想,尤其是商品和购物车各个对象的从属关系。购物车老生常谈的东西,希望能起到抛砖引玉的效果。下面就简单介绍下吧!(via:女孩礼物网)

此款短小精悍的购物车主要有三大功能:1.折扣方案调整 2.商品列表 3.购物车

  1. 折扣方案调整
  1. 商品列表
  1. 购物车
  1. 购物车核心思想代码如下

复制代码
 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 }
复制代码

复制代码
 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     /// <summary>
22     /// 单项总折后价。
23     /// </summary>
24     public decimal Price {
25         get {
26             decimal price = (decimal)0;
27             List<IDiscountable> discountsUsing = (List<IDiscountable>)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     /// <summary>
37     /// 单项总原价
38     /// </summary>
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 }
复制代码

复制代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 
 6 [Serializable]
 7 public class ShopCartSet : IEnumerable<ShopCartItem> {
 8 
 9     private Dictionary<int, ShopCartItem> items;
10 
11     public ShopCartSet() {
12         this.items = new Dictionary<int, ShopCartItem>();
13     }
14 
15     /// <summary>
16     /// 各项总原价
17     /// </summary>
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     /// <summary>
29     /// 各项总折后价
30     /// </summary>
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<ShopCartItem> 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 }
 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 }

源码下载

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-11-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档