用ASP设计购物推车

 

None.gif   什么是购物推车? 
None.gif  你一定去过超级市场吧。在那里你可以推着推车,将中意的商品放进推车,或者把推车里的商品取出来重新放到货架,最后你推着推车去结账。 
None.gif  那么,在网上超市,客户也应该可以在浏览商品目录时,将中意的商品放进
" 电子推车 " 。电子推车是超级市场推车的电子化。在网上商店里,这种电子推车又称为 " 购物推车 " ,英文是Shopping Cart。 
None.gif购物推车的设计目标 
None.gif  从程序员的观点来看,购物推车是维护购物者商品选购、允许察看、允许修改的一个对象。购物推车本身是一个非常简单的程序,但开发者要考虑它将连接到商品目录子系统、订单子系统、客户账号子系统、站点管理子系统等等,形成功能完整的网上商店。 
None.gif
None.gif下面是购物推车的设计目标: 
None.gif
1 、 持续性:购物推车应该从它的前一次会话中记住其内容。 
None.gif
2 、 购物推车和客户相关,而不是和客户的电脑相关。客户可以从另外的电脑或浏览器来访问购物推车。 
None.gif
3 、 当新的商品被加入推车或者从推车去掉时,推车的内容可以被显示给用户。 
None.gif
4 、 推车可以容纳很多甚至无限的商品。 
None.gif系统设计
/ 流程设计 
None.gif  在编写我们的购物推车之前,我们看看它的系统架构和流程。请看下图: 
None.gif
None.gif  如果客户从商品目录中选择了一件商品,这时我们传递客户的请求到proxy.asp,同时传递的是动作变量
" 增加商品 " 。Proxy.asp读取这个变量,并决定执行购物推车的哪个动作。这些动作包括:增加商品、更新商品数量、移除商品或者察看购物推车。 
None.gif  有些动作被作为内部调用。如创建推车之前,我们需要检查推车是否已经存在(CheckCart)。在增加、删除或者更新商品及其数量时,我们要确认此商品是否已经存在于我们的购物推车之中(CheckItem)。下面我们将为购物推车设计8个方法,分别是: 
None.gifViewItem 察看推车 
None.gifCheckCart 检查推车 
None.gifCreateCart 创建推车 
None.gifAddItem(ID, Qty), 增加商品 
None.gifRemoveItem(ID) 删除商品 
None.gifUpdateItem(ID, Qty), 更新数量 
None.gifRemoveAll 全部清空 
None.gifCheckItem(ID) 商品检查 
None.gif
None.gif购物推车的设计 
None.gif  购物推车需要三个要素:一个VBScript 5的类class CartKit,一个多维数组mudCart,一个session变量Session(
" Cart " )。 
None.gif  这个VBScript 类,我们称为CartKit,包含了8个方法,如上表所示。在本文我们只用了ID和Qty,分别表示商品编号和数量。 
None.gif  这样我们就可以用一个二维数组来表达这个推车,象下面这样: 
None.gif商品编号 商品数量 
None.gifID
- 1   23  
None.gifID
- 3   10  
None.gifID
- 23   6  
None.gifID
- 2   1  
None.gif然后我们把这个二维数组保存到session变量中就可以了。 
None.gif购物推车类CartKit的设计 
None.gif请下载:CartKit.asp 
None.gifCreateCart设计: 
None.gif请看程序代码: 
None.gifClass CartKit 
REM  开始类CartKit的定义 
None.gif
Sub  CreateCart() 
None.gif 
IF   IsArray (Session( " Cart " ))  =   false   THEN  
None.gif  
Dim  mudCart( 19 , 1
None.gif  Session(
" Cart " =  mudCart 
None.gif 
END   IF  
None.gif
End Sub  
None.gif其中:Session(
" Cart " )保存的就是推车的内容。如果推车不存在,我们就定义一个二维数组mudCart来表达推车,并将它保存到session( " Cart " )中。 
None.gifCheckCart设计: 
None.gif本函数判断Cart是否已经创建。比较简单。 
None.gif
Function  CheckCart() 
None.gif
IF   IsArray (Session( " Cart " ))  THEN  
None.gif  CheckCart
= True  
None.gif 
ELSE  
None.gif  CheckCart
= False  
None.gif 
END   IF  
None.gif
End Function  
None.gifCheckItem设计: 
None.gif请看代码: 
None.gif
Function  CheckItem(ID) 
None.gif
IF  CheckCart = True   THEN  
None.gif  varMudCart 
=  Session( " Cart "
None.gif  
FOR  i  =   LBound (varMudCart) TO   UBound (varMudCart) 
None.gif 
IF  varMudCart(i, 0 =  ID  THEN  
None.gif  CheckItem
= TRUE  
None.gif 
Exit   Function  
None.gif 
ELSEIF  varMudCart(i, 0 <>  ID  THEN  
None.gif  CheckItem
= FALSE  
None.gif 
END   IF  
None.gif  
NEXT  
None.gif 
END   IF  
None.gif
End Function  
None.gif首先判断推车是否存在。然后将商品的编号ID和购物推车中的商品编号逐一比较。如果有相等的,返回真。否则为假。 
None.gifAddItem(ID,Qty)设计: 
None.gif请参考本文的附件CartKit.asp,这里介绍的函数我们把它们封装到一个名为CartKit的class中。下面的代码段首先创建了一个CartKit对象,然后检查推车是否已经存在。如果不存在,就创建推车并新增商品;否则,检查商品编号是否已经存在于Cart中。如果是,就更新数量;否则,新增商品。 
None.gif
Function  AddItem(ID, Qty) 
None.gif
Set  CartObj  =   New  CartKit 
None.gifvarCartStatus 
=  CartObj.CheckCart 
None.gif 
IF  varCartStatus = false   THEN  
None.gif  CartObj.CreateCart 
None.gif  mudCart
= Session( " Cart "
None.gif  mudCart(
0 , 0 ) = ID 
None.gif  mudCart(
0 , 1 ) = Qty 
None.gif  Session(
" Cart " ) = mudCart 
None.gif   
Exit   Function  
None.gif 
ELSEIF  varCartStatus = true   THEN  
None.gif 
IF  CartObj.CheckItem(ID)  =   true   THEN  
None.gif  CartObj.UpdateItem ID,Qty 
None.gif 
ELSEIF  cartObj.CheckItem(ID)  =   false   THEN  
None.gif  mudCart 
=  Session( " Cart "
None.gif 
FOR  i  =   LBound (mudCart)  TO   UBound (mudCart) 
None.gif 
IF  mudCart(i, 0 =   ""   THEN  
None.gif  mudCart(i,
0 =  ID 
None.gif  mudCart(i,
1 =  Qty 
None.gif  Session(
" Cart " =  mudCart 
None.gif 
Exit   Function  
None.gif 
END   IF  
None.gif 
NEXT  
None.gif 
END   IF  
None.gif 
END   IF  
None.gif
End Function  
None.gifUpdateItem设计: 
None.gif
Function  UpdateItem(ID, Qty) 
None.gifmudCart 
=  Session( " Cart "
None.gif
None.gif 
FOR  i  =   LBound (mudCart)  TO   UBound (mudCart) 
None.gif  
IF  mudCart(i, 0 =  ID  THEN  
None.gif   mudCart(i,
1 =  Qty 
None.gif   Session(
" cart " ) = mudCart 
None.gif   
Exit   Function  
None.gif  
END   IF  
None.gif 
NEXT  
None.gif
End Function  
None.gifViewItem设计: 
None.gif
Function  ViewItem() 
None.gifmudCart
= Session( " Cart "
None.gif
IF   isArray (mudCart)  THEN  
None.gif%
>  
None.gif
None.gif 
None.gif Item Name 
None.gif Item Quantity 
None.gif  
None.gif 
None.gif
None.gif
None.gif 
None.gif  
None.gif
<
None.gifResponse.Write 
" Item ID:  "   &  mudCart(i, 0 &   " <-- "  
None.gifResponse.Write 
"
None.gif
"  
None.gifResponse.Write 
" Item Qty:  "   &  mudCart(i, 1 &   " <-- "  
None.gifResponse.Write 
"
None.gif
"  
None.gif
END   IF  
None.gif
NEXT  
None.gif
ELSEIF   isArray (mudCart)  =   False   THEN  
None.gifResponse.Write 
" No item in your cart! "  
None.gifResponse.Write 
"
None.gif
"  
None.gifResponse.Write 
" Y don’t you do shop! "  
None.gif
END   IF  
None.gif
End Function  
None.gifRemoveItem(ID)设计: 
None.gif
Function  RemoveItem(ID) 
None.gifmudCart
= Session( " Cart "
None.gif’Find the Postion 
/  Index of given ID. 
None.gif
For  i  =   LBound (mudCart)  TO   Ubound (mudCart) 
None.gif 
IF  mudCart(i, 0 =  ID  THEN  
None.gif  Pos
=
None.gif 
Exit   For  
None.gif
END   IF  
None.gif
Next  
None.gif’Delete Processdot.gif 
None.gif 
FOR  i  =  Pos  TO   UBound (mudCart)  -   1  
None.gif  
IF   Not  mudCart(i, 0 =   ""   THEN  
None.gif  mudCart(i,
0 =  mudCart(i + 1 , 0
None.gif 
END   IF  
None.gif 
Next  
None.gif 
End Function  
None.gif
End  Class  REM  结束类CartKit的定义 

'

CartKit.asp
'------建立一辆购物车-----
Class CartKit

Sub CreateCart()
 If IsArray(Session("Cart")) = false Then
   Dim mudCart(19,1)
   Session("Cart") = mudCart
 End If
End Sub

Dim myArray(3,1)
ReDim Preserve myArray(3,2)
Dim myArrayID(1), myArrayQty(1)
Function AddItem(ID, Qty)
 Set CartObj = New CartKit
 varCartStatus = CartObj.CheckCart
 If varCartStatus=false Then
   CartObj.CreateCart
   mudCart=Session("Cart")
   mudCart(0,0)=ID
   mudCart(0,1)=Qty
   Session("Cart")=mudCart
   Exit Function
 ElseIf varCartStatus=true Then
   If CartObj.CheckItem(ID) = true Then
    CartObj.UpdateItem ID,Qty
   Elseif cartObj.CheckItem(ID) = false Then
    mudCart = Session("Cart")
    For i = LBound(mudCart) TO UBound(mudCart)
    If mudCart(i,0) = "" Then
      mudCart(i,0) = ID
      mudCart(i,1) = Qty
      Session("Cart") = mudCart
      Exit Function
    End If
   Next
   End If
 End If
End Function

Function RemoveItem(ID)
 mudCart=Session("Cart")
 For i = LBound(mudCart) TO Ubound(mduCart)
   If myArray(i,0) = ID Then
    Pos=i
    Exit For
   End If
 Next

 For i = Pos TO UBound(myArray) - 1
   If Not myArray(i, 0) = "" Then
    myArray(i,0) = myArray(i+1,0)
    myArray(i,1) = myArray(i+1,1)

   End If
 Next
End Function


Role of Proxy.asp
varAction=CStr(Request.QueryString("ac"))
Set mudCartObj = New CartKit
varID = CStr(Request.Form("ID"))
varQty = Request.QueryString("qty")

If varAction="by" Then
 mudCartObj.AddItem varID, varQty
 ElseIf varAction="rm" Then
 mudCartObj.RemoveItem varID
 ElseIf varAction="up" Then
 mudCartObj.UpdateItem varID, varQty
 ElseIf varAction="ra" Then
 mudCartObj.RemoveAll
 ElseIf varAction="co" Then
 MudcartObj.CheckOut
 ElseIf varAction="cs" Then
 MudcartObj.ContinueShopping
End If


Function CartStatus()
 varTotalItems = 0
 Set CartObj = New CartKit
 If CartObj.CheckCart = true Then
   MudCart = Session("Cart")
   VarTotalItem = 0
   For i = Lbound(mudCart) TO Ubound(mudCart)
   If mudCart(i,0) <> "" Then
    varTotalItem = varTotalItem + Cint(mudCart(i,1))
   End If
   Next
   ElseIf CartObj.CheckCart= False Then
   varTotalItem="0"
 End If
 CartStatus=varTotalItem End Function
 Set CartObj = Nothing
End Function

<%="You have " & Response.Write CartObj.CartStatus & _
 " items(s) in your cart"%>

转载于:https://www.cnblogs.com/Dove/archive/2005/07/07/187954.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值