弹指一挥间,从事开发工作两年多了,工作记录文件夹不知不觉好几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://www.haodehen.cn/did97457