您当前的位置: 首页 > 网站编程 > ASP教程 > 用ASP设计购物推车

用ASP设计购物推车

作者:guanchaofeng 来源:不详 发布时间: 2009-09-30 08:52 点击:
什么是购物推车? 你一定去过超级市场吧。在那里你可以推着推车,将中意的商品放进推车,或者把推车里的商品取出来重新放到货架,最后你推着推车去结账。 那么,在网上超市,客户也应该可以在浏览商品目录时,将中意的商品放进电子推车。电子推车是超级市场

用ASP设计购物推车

  什么是购物推车?
  
  你一定去过超级市场吧。在那里你可以推着推车,将中意的商品放进推车,或者把推车里的商品取出来重新放到货架,最后你推着推车去结账。
  
  那么,在网上超市,客户也应该可以在浏览商品目录时,将中意的商品放进"电子推车"。电子推车是超级市场推车的电子化。在网上商店里,这种电子推车又称为"购物推车",英文是ShoppingCart。
  
  购物推车的设计目标
  
  从程序员的观点来看,购物推车是维护购物者商品选购、允许察看、允许修改的一个对象。购物推车本身是一个非常简单的程序,但开发者要考虑它将连接到商品目录子系统、订单子系统、客户账号子系统、站点管理子系统等等,形成功能完整的网上商店。
  
  下面是购物推车的设计目标:
  
  1、持续性:购物推车应该从它的前一次会话中记住其内容。
  
  2、购物推车和客户相关,而不是和客户的电脑相关。客户可以从另外的电脑或浏览器来访问购物推车。
  
  3、当新的商品被加入推车或者从推车去掉时,推车的内容可以被显示给用户。
  
  4、推车可以容纳很多甚至无限的商品。
  
  系统设计/流程设计
  
  在编写我们的购物推车之前,我们看看它的系统架构和流程。
  
  如果客户从商品目录中选择了一件商品,这时我们传递客户的请求到proxy.asp,同时传递的是动作变量"增加商品"。Proxy.asp读取这个变量,并决定执行购物推车的哪个动作。这些动作包括:增加商品、更新商品数量、移除商品或者察看购物推车。
  
  有些动作被作为内部调用。如创建推车之前,我们需要检查推车是否已经存在(CheckCart)。在增加、删除或者更新商品及其数量时,我们要确认此商品是否已经存在于我们的购物推车之中(CheckItem)。下面我们将为购物推车设计8个方法,分别是:
  
  ViewItem察看推车
  
  CheckCart检查推车
  
  CreateCart创建推车
  
  AddItem(ID,Qty),增加商品
  
  RemoveItem(ID)删除商品
  
  UpdateItem(ID,Qty),更新数量
  
  RemoveAll全部清空
  
  CheckItem(ID)商品检查
  
  购物推车的设计
  
  购物推车需要三个要素:一个VBScript5的类classCartKit,一个多维数组mudCart,一个session变量Session("Cart")。
  
  这个VBScript类,我们称为CartKit,包含了8个方法,如上表所示。在本文我们只用了ID和Qty,分别表示商品编号和数量。
  
  这样我们就可以用一个二维数组来表达这个推车,象下面这样:
  
  商品编号商品数量
  
  ID-123
  
  ID-310
  
  ID-236
  
  ID-21
  
  然后我们把这个二维数组保存到session变量中就可以了。
  
  购物推车类CartKit的设计
  
  请下载:CartKit.asp
  
  CreateCart设计:
  
  请看程序代码:
  
  ClassCartKit
  
  REM开始类CartKit的定义
  
  SubCreateCart()
  
  IFIsArray(Session("Cart"))=falseTHEN
  
  DimmudCart(19,1)
  
  Session("Cart")=mudCart
  
  ENDIF
  
  EndSub
  
  其中:Session("Cart")保存的就是推车的内容。如果推车不存在,我们就定义一个二维数组mudCart来表达推车,并将它保存到session("Cart")中。
  
  CheckCart设计:
  
  本函数判断Cart是否已经创建。比较简单。
  
  FunctionCheckCart()
  
  IFIsArray(Session("Cart"))THEN
  
  CheckCart=True
  
  ELSE
  
  CheckCart=False
  
  ENDIF
  
  EndFunction
  
  CheckItem设计:
  
  请看代码:
  
  FunctionCheckItem(ID)
  
  IFCheckCart=TrueTHEN
  
  varMudCart=Session("Cart")
  
  FORi=LBound(varMudCart)TOUBound(varMudCart)
  
  IFvarMudCart(i,0)=IDTHEN
  
  CheckItem=TRUE
  
  ExitFunction
  
  ELSEIFvarMudCart(i,0)<>IDTHEN
  
  CheckItem=FALSE
  
  ENDIF
  
  NEXT
  
  ENDIF
  
  EndFunction
  
  首先判断推车是否存在。然后将商品的编号ID和购物推车中的商品编号逐一比较。如果有相等的,返回真。否则为假。
  
  AddItem(ID,Qty)设计:
  
  请参考本文的附件CartKit.asp,这里介绍的函数我们把它们封装到一个名为CartKit的class中。下面的代码段首先创建了一个CartKit对象,然后检查推车是否已经存在。如果不存在,就创建推车并新增商品;否则,检查商品编号是否已经存在于Cart中。如果是,就更新数量;否则,新增商品。
  
  FunctionAddItem(ID,Qty)
  
  SetCartObj=NewCartKit
  
  varCartStatus=CartObj.CheckCart
  
  IFvarCartStatus=falseTHEN
  
  CartObj.CreateCart
  
  mudCart=Session("Cart")
  
  mudCart(0,0)=ID
  
  mudCart(0,1)=Qty
  
  Session("Cart")=mudCart
  
  ExitFunction
  
  ELSEIFvarCartStatus=trueTHEN
  
  IFCartObj.CheckItem(ID)=trueTHEN
  
  CartObj.UpdateItemID,Qty
  
  ELSEIFcartObj.CheckItem(ID)=falseTHEN
  
  mudCart=Session("Cart")
  
  FORi=LBound(mudCart)TOUBound(mudCart)
  
  IFmudCart(i,0)=""THEN
  
  mudCart(i,0)=ID
  
  mudCart(i,1)=Qty
  
  Session("Cart")=mudCart
  
  ExitFunction
  
  ENDIF
  
  NEXT
  
  ENDIF
  
  ENDIF
  
  EndFunction
  
  UpdateItem设计:
  
  FunctionUpdateItem(ID,Qty)
  
  mudCart=Session("Cart")
  
  FORi=LBound(mudCart)TOUBound(mudCart)
  
  IFmudCart(i,0)=IDTHEN
  
  mudCart(i,1)=Qty
  
  Session("cart")=mudCart
  
  ExitFunction
  
  ENDIF
  
  NEXT
  
  EndFunction
  
  ViewItem设计:
  
  FunctionViewItem()
  
  mudCart=Session("Cart")
  
  IFisArray(mudCart)THEN
  
  %>
  
  ItemName
  
  ItemQuantity
  
  <%
  
  Response.Write"ItemID:"&mudCart(i,0)&"<--"
  
  Response.Write"
  
  "
  
  Response.Write"ItemQty:"&mudCart(i,1)&"<--"
  
  Response.Write"
  
  "
  
  ENDIF
  
  NEXT
  
  ELSEIFisArray(mudCart)=FalseTHEN
  
  Response.Write"Noiteminyourcart!"
  
  Response.Write"
  
  "
  
  Response.Write"Ydon’tyoudoshop!"
  
  ENDIF
  
  EndFunction
  
  RemoveItem(ID)设计:
  
  FunctionRemoveItem(ID)
  
  mudCart=Session("Cart")
  
  ’FindthePostion/IndexofgivenID.
  
  Fori=LBound(mudCart)TOUbound(mudCart)
  
  IFmudCart(i,0)=IDTHEN
  
  Pos=i
  
  ExitFor
  
  ENDIF
  
  Next
  
  ’DeleteProcess...
  
  FORi=PosTOUBound(mudCart)-1
  
  IFNotmudCart(i,0)=""THEN
  
  mudCart(i,0)=mudCart(i+1,0)
  
  ENDIF
  
  Next
  
  EndFunction
  
  EndClassREM结束类CartKit的定义
  
  CartKit.asp
  
  '------建立一辆购物车-----
  
  ClassCartKit
  
  SubCreateCart()
  
  IfIsArray(Session("Cart"))=falseThen
  
  DimmudCart(19,1)
  
  Session("Cart")=mudCart
  
  EndIf
  
  EndSub
  
  DimmyArray(3,1)
  
  ReDimPreservemyArray(3,2)
  
  DimmyArrayID(1),myArrayQty(1)
  
  FunctionAddItem(ID,Qty)
  
  SetCartObj=NewCartKit
  
  varCartStatus=CartObj.CheckCart
  
  IfvarCartStatus=falseThen
  
  CartObj.CreateCart
  
  mudCart=Session("Cart")
  
  mudCart(0,0)=ID
  
  mudCart(0,1)=Qty
  
  Session("Cart")=mudCart
  
  ExitFunction
  
  ElseIfvarCartStatus=trueThen
  
  IfCartObj.CheckItem(ID)=trueThen
  
  CartObj.UpdateItemID,Qty
  
  ElseifcartObj.CheckItem(ID)=falseThen
  
  mudCart=Session("Cart")
  
  Fori=LBound(mudCart)TOUBound(mudCart)
  
  IfmudCart(i,0)=""Then
  
  mudCart(i,0)=ID
  
  mudCart(i,1)=Qty
  
  Session("Cart")=mudCart
  
  ExitFunction
  
  EndIf
  
  Next
  
  EndIf
  
  EndIf
  
  EndFunction
  
  FunctionRemoveItem(ID)
  
  mudCart=Session("Cart")
  
  Fori=LBound(mudCart)TOUbound(mduCart)
  
  IfmyArray(i,0)=IDThen
  
  Pos=i
  
  ExitFor
  
  EndIf
  
  Next
  
  Fori=PosTOUBound(myArray)-1
  
  IfNotmyArray(i,0)=""Then
  
  myArray(i,0)=myArray(i+1,0)
  
  myArray(i,1)=myArray(i+1,1)
  
  EndIf
  
  Next
  
  EndFunction
  
  RoleofProxy.asp
  
  varAction=CStr(Request.QueryString("ac"))
  
  SetmudCartObj=NewCartKit
  
  varID=CStr(Request.Form("ID"))
  
  varQty=Request.QueryString("qty")
  
  IfvarAction="by"Then
  
  mudCartObj.AddItemvarID,varQty
  
  ElseIfvarAction="rm"Then
  
  mudCartObj.RemoveItemvarID
  
  ElseIfvarAction="up"Then
  
  mudCartObj.UpdateItemvarID,varQty
  
  ElseIfvarAction="ra"Then
  
  mudCartObj.RemoveAll
  
  ElseIfvarAction="co"Then
  
  MudcartObj.CheckOut
  
  ElseIfvarAction="cs"Then
  
  MudcartObj.ContinueShopping
  
  EndIf
  
  FunctionCartStatus()
  
  varTotalItems=0
  
  SetCartObj=NewCartKit
  
  IfCartObj.CheckCart=trueThen
  
  MudCart=Session("Cart")
  
  VarTotalItem=0
  
  Fori=Lbound(mudCart)TOUbound(mudCart)
  
  IfmudCart(i,0)<>""Then
  
  varTotalItem=varTotalItem+Cint(mudCart(i,1))
  
  EndIf
  
  Next
  
  ElseIfCartObj.CheckCart=FalseThen
  
  varTotalItem="0"
  
  EndIf
  
  CartStatus=varTotalItemEndFunction
  
  SetCartObj=Nothing
  
  EndFunction
  
  <%="Youhave"&Response.WriteCartObj.CartStatus&_
  
  "items(s)inyourcart"%>

分享到:
本文"用ASP设计购物推车"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4