购物车是网站的咽喉之地,订单是白花花的银子,所有银子都必然流经购物车,购物车不能有失。
优秀的购物车设计至少需要完成两项使命:一是方便用户多买货多掏银子;二是帮用户保管好待购的货品,方便下次接着掏银子。

一般来说,可以使用session,cookie和数据库来记录购物车数据
1,不过不提倡使用session,这货占用服务器资源,还有过期时间,客户关掉浏览器时session即消失,下次再上来,又得重新选产品。
2,cookie这东西不错,放在客户端的,给个一年的过期时间,只要客户不清掉,每次来都能记得上次的购物车信息。大家可以看看京东,
在购物车cookie中存了不少东西,有产品编码和购买的数量等信息,如京东:yCartOrderLogic={&TheSkus&:[{&Id&:437741$&Num&:2}]},
原来凡客的cookie中也以JSON的形式存了很多信息。
所以,我以学习的心态,将产品编码,价格,名称,类型和数量等购物信息做成一个对象,然后对象序列化成JSON,存在客户端的COOKIE中,
在读取cookie时,在刚开始的时候很好用,反序列化cookie值成购物车条目对象就可以了,但是当产品类型多起来之后,而且有套装那种多件产品时,
甚至产品不是来自同一个数据表时,比如普通首饰和钻石,表的结构都不一样了,还得到不同的表格中去取,当然首先你得判断产品类型
这时候一个购物条目对象已经有多条子对象,往往一个查询中嵌套着两重以上的循环加上多个switch case,当购物车中有十个复杂的条目时,读取速度
将超过十秒,不管怎么优化,速度就摆在那里,不快不慢。。。而且你不能保证客户不下100个或更多的复杂购物车记录,最重要的是cookie是有
存储大小限制的,这种做法有产品很复杂时是不利的,果断放弃!
3,数据库这东西好啊,不会像cookie那种容易丢失,也没有客户端的限制,你想怎么存,存多少都行。

购物车数据存数据库好处有很多,可以分析购买行为,可以为客户保存购买信息(不会因为浏览器关闭而丢失)等。
还需要考虑的一个问题是用户是否登录,淘宝使用的就是cookie记录,你可以试试,未登录时可以加20个商品,登录后可以加50个,这就是因为
cookie客户端的限制。
我这里因为产品线的复杂性,所有购物车条目都保存在数据库中。

购物车数据库设计成两个关联表
1,Basket,购物车主表
基本字段有:BasketId,AddTime,UserId,AddressId,Payment,Status等,不解释了,看英文意思就行
2,BasketDetail,购物车条目表
基本字段有:BasketDetailId,BasketId,Type,Code,Qty,ParentId等,ParentId用作子行标识,其它不解释
两个表之间使用BasketId做为关联
当用户登录状态时,添加产品到购物时,查看Basket中是否有Status为True的购物车,没有则添加一条新的Basket记录,并将产品信息相关数据添加至BasketDetail表中
当用户未登录时,使用cookie记录一个BasketId值,不往Basket表中插入数据,只往BasketDetail插入数据,其中的BasketId值使用cookie中的BasketId值,当用户登录
后,查看Basket中是否有Status为True的购物车记录,有则合并(更新cookie和BasketDetail中的BasketId为查询出来的Basket表中的BasketId值),无则添加一条新的
Basket记录,并将BasketId值置为Cookie中记录的basketid值

购物车C#对象也设计两个(主要用于获取数据)
1,BasketModel,大体如下:
public class BasketModel:Basket
{
public decimal TotalPrice{get;set;}
public int TotalMP{get;set;}
public List<BasketDetailModel> BasketDetailModels{get;set;}
}
2,BasketDetailModel,大体如下:(这里的ViewBasketDetail是一个视图,上面BasketDetail设计中没有产品价格,用视图关联到相关的表,获取价格,为什么不设计价格字段,不解释。。。)
public class BasketDetailModel
{
public ViewBasketDetail Detail{get;set;}
public List<ViewBasketDetail> SubDetails{get;set;}
}

至此,基本上购物车的设计就完成了,剩下的就是编码了
个人觉得这样的设计还是比较健壮的,很好的完成了购物车的两项使命,大家如果有更好的设计可以拿出来分享一下

用以上设计思想,完成了以下两个网站的购物车设计
www.520.cn (mvc2.0,spark,entity)
www.tojik.cn (mvc3.0,razor,entity)
最后说一句,还是razor好用啊,有智能提示!~

电子商务B2C网站购物车设计相关推荐

  1. 十大B2C网站购物车的流程设计对比分析

    购物车对整站的转化率和用户体验的提升有很大的帮助,所以一个设计非常合理的购物车对任何B2C都非常重要.在这里看看京东.亚马逊.易迅.1号店.库巴.国美.当当.凡客.苏宁.新蛋十家B2C的购物车设计. ...

  2. 轻开商贸企业入门级电子商务 B2C网站公共版

    1      背景 1.1  企业初涉电子商务面临的困扰 1.1.1   不知从何入手 一般企业的IT水平大多处于基本应用阶段,如打字(Word).统计(Excel).交流(发邮件.QQ等).上网(浏 ...

  3. 电子商务网站购物车设计

    2012-04-10 20:05 19262人阅读 评论(5) 收藏 举报  分类: 电子商务 目录(?)[+] 购物车的实现原理 购物车相当于现实中超市的购物车,不同的是一个是实体车,一个是虚拟车而 ...

  4. 常见b2c网站购物车的设计

    对于大部分B2C网站来说,购物车是网站的咽喉之地,订单是白花花的银子,所有银子都必然流经购物车,购物车不能有失.优秀的购物车设计至少需要完成两项使命:一是方便用户多买货多掏银子:二是帮用户保管好待购的 ...

  5. 电子商务购物网站的设计与实现(论文+源码)_kaic

    摘 要:本论文实现了一个BC模式的购物网站系统,随着时代不断发展,越来越多的消费者在网络上进行购物,我国的网络电子商务也逐步发展.商家通过网络销售商品可以更好地节约开店成本且能更好展示商品的卖点,并帮 ...

  6. 电子商务B2C网站运营策略路线图

    网络穿越了传统行业,降低了草根创业的现金成本,但这门槛看似不高的行业其实水也很深.可以成功的运营一个在线的商城就更加困难,营销和运营的陈本都不低. 怎样才能系统的搭建一套B2C的网站,下图将给出一个全 ...

  7. B2C网站设计中微交互研究

    摘要:微交互作为引导电子商务网站设计发展的新的理论原则,受到国外交互设计师的广泛推崇,但在国内却并未被熟知.本文通过分析国内电子商务发展现状,详细阐释了微交互的理论方法与设计原则.深入探讨微交互理论在 ...

  8. 如何设计出留住买家的B2C网站

    "请举手!如果你的用户转化率每天达到了5%."如果这样问中国所有的B2C网站. 结果是,一个举手的人都没有. 目前,绝大多数B2C的转化率都在1%以下,做的最好的也只能到3.5%左 ...

  9. 电子商务网站的设计与实现(一):当前的一些购物体验和开发期望

    正如2015年度规划中提到的那样,2015年,我想尝试开发一款电子商务网站.主要目的了,就是练练手,提高下能力,在实践中构建和优化自己的开发基础库.如果可以卖钱,自然更好.即使不能,也要不断优化,为若 ...

最新文章

  1. 程序员编程时戴耳机是在听什么?
  2. Python 索引for循环
  3. 【数据结构-图】1.图的构造和遍历(基本理论+代码)
  4. 服务器最小化安装后的优化脚本
  5. ring0和ring3的区别
  6. imageview获取宽高
  7. ssm开放式教学管理系统答辩PPT模板
  8. RecyclerView异步加载图片
  9. java 多次正则匹配_Java正则多次匹配和多次组匹配
  10. 计算机mid函数column,excel中的函数意思=MID($C3,COLUMN(D2)-3,1)
  11. unity材质球发光_Unity3D中使物体自发光
  12. 电驴维持友情链接地址、更新服务器列表
  13. 英语思维导图大全 介词(七)
  14. 【0基础入门课程】实战入门柿饼UI,带你实现动感汽车仪表盘、APP Store等
  15. 二十八. 智能驾驶笔记之基于PointNet++的三维点云分类和语义分割
  16. [收藏]一些电平转换方法
  17. 你拥有的最宝贵的财富是什么?
  18. [含lw+开题报告+源码等]SSM酒店管理系统|旅店管理[包运行成功]
  19. Maven的settings.xml配置详解
  20. 工作总结PPT怎么写?60套工作总结PPT模板:年度汇报、项目汇报,晋升述职

热门文章

  1. Python才是人工智能AI的首选编程语言,你值得拥有……
  2. 像蚂蚁一样的工作,像蝴蝶一样的生活
  3. 密码加密之bcrypt
  4. 微信公开课(北京站)速记 微信、微信支付、O2O的定义与关联
  5. 【报告分享】2021年中国植物肉行业洞察白皮书-商业周刊星期零(附下载)
  6. CSS 实现鼠标触碰完成渐变切换
  7. 为 UOS 浏览器增加屏蔽广告功能
  8. 音响店VCD零售/出租系统(软件定义)
  9. python编写递归函数、求斐波那契数列第n项的值_用递归函数求斐波那契数列的第n项的值...
  10. 全球汽车色彩流行报告:白黑银灰最受欢迎,中国车主最爱白色车