您的位置:首页 > 其它

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

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

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

ShopCartSet.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

[Serializable]
public class ShopCartSet : IEnumerable<ShopCartItem> {

private Dictionary<int, ShopCartItem> items;

public ShopCartSet() {
this.items = new Dictionary<int, ShopCartItem>();
}

/// <summary>
/// 各项总原价
/// </summary>
public decimal TotalPrice {
get {
decimal price = (decimal)0;
foreach (ShopCartItem item in this) {
price = price + item.TotalPrice;
}
return price;
}
}

/// <summary>
/// 各项总折后价
/// </summary>
public decimal Price {
get {
decimal price = (decimal)0;
foreach (ShopCartItem item in this) {
price = price + item.Price;
}
return price;
}
}

public ShopCartItem this[int id] {
get {
return this.items[id];
}
set {
this.items[id] = value;
}
}

public void Add(Product product, int count) {
this.Add(new ShopCartItem(product, count));
}

public void Add(ShopCartItem item) {
if (!this.items.ContainsKey(item.Product.Id)) {
this.items.Add(item.Product.Id, item);
}
else {
this.items[item.Product.Id].Count++;
}
}

public void Remove(int key) {
this.items.Remove(key);
}

public void Remove(Product product) {
this.items.Remove(product.Id);
}

public void Remove(ShopCartItem shopCartItem) {
this.items.Remove(shopCartItem.Product.Id);
}

#region 接口实现
public IEnumerator<ShopCartItem> GetEnumerator() {
return this.items.Values.GetEnumerator();
}

System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
return this.items.Values.GetEnumerator();
}
#endregion
}




源码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: