zoukankan      html  css  js  c++  java
  • 用ASP设计购物推车 PENGHAO

      什么是购物推车? 
      你一定去过超级市场吧。在那里你可以推着推车,将中意的商品放进推车,或者把推车里的商品取出来重新放到货架,最后你推着推车去结账。 
      那么,在网上超市,客户也应该可以在浏览商品目录时,将中意的商品放进
    "电子推车"。电子推车是超级市场推车的电子化。在网上商店里,这种电子推车又称为"购物推车",英文是Shopping Cart。 
    购物推车的设计目标 
      从程序员的观点来看,购物推车是维护购物者商品选购、允许察看、允许修改的一个对象。购物推车本身是一个非常简单的程序,但开发者要考虑它将连接到商品目录子系统、订单子系统、客户账号子系统、站点管理子系统等等,形成功能完整的网上商店。 

    下面是购物推车的设计目标: 
    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) 商品检查 

    购物推车的设计 
      购物推车需要三个要素:一个VBScript 5的类class CartKit,一个多维数组mudCart,一个session变量Session(
    "Cart")。 
      这个VBScript 类,我们称为CartKit,包含了8个方法,如上表所示。在本文我们只用了ID和Qty,分别表示商品编号和数量。 
      这样我们就可以用一个二维数组来表达这个推车,象下面这样: 
    商品编号 商品数量 
    ID
    -1 23 
    ID
    -3 10 
    ID
    -23 6 
    ID
    -2 1 
    然后我们把这个二维数组保存到session变量中就可以了。 
    购物推车类CartKit的设计 
    请下载:CartKit.asp 
    CreateCart设计: 
    请看程序代码: 
    Class CartKit 
    REM 开始类CartKit的定义 
    Sub CreateCart() 
     
    IF IsArray(Session("Cart")) = false THEN 
      
    Dim mudCart(19,1
      Session(
    "Cart"= mudCart 
     
    END IF 
    End Sub 
    其中:Session(
    "Cart")保存的就是推车的内容。如果推车不存在,我们就定义一个二维数组mudCart来表达推车,并将它保存到session("Cart")中。 
    CheckCart设计: 
    本函数判断Cart是否已经创建。比较简单。 
    Function CheckCart() 
    IF IsArray(Session("Cart")) THEN 
      CheckCart
    =True 
     
    ELSE 
      CheckCart
    =False 
     
    END IF 
    End Function 
    CheckItem设计: 
    请看代码: 
    Function CheckItem(ID) 
    IF CheckCart=True THEN 
      varMudCart 
    = Session("Cart"
      
    FOR i = LBound(varMudCart)TO UBound(varMudCart) 
     
    IF varMudCart(i,0= ID THEN 
      CheckItem
    =TRUE 
     
    Exit Function 
     
    ELSEIF varMudCart(i,0<> ID THEN 
      CheckItem
    =FALSE 
     
    END IF 
      
    NEXT 
     
    END IF 
    End Function 
    首先判断推车是否存在。然后将商品的编号ID和购物推车中的商品编号逐一比较。如果有相等的,返回真。否则为假。 
    AddItem(ID,Qty)设计: 
    请参考本文的附件CartKit.asp,这里介绍的函数我们把它们封装到一个名为CartKit的class中。下面的代码段首先创建了一个CartKit对象,然后检查推车是否已经存在。如果不存在,就创建推车并新增商品;否则,检查商品编号是否已经存在于Cart中。如果是,就更新数量;否则,新增商品。 
    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 
    UpdateItem设计: 
    Function UpdateItem(ID, Qty) 
    mudCart 
    = Session("Cart"

     
    FOR i = LBound(mudCart) TO UBound(mudCart) 
      
    IF mudCart(i,0= ID THEN 
       mudCart(i,
    1= Qty 
       Session(
    "cart")=mudCart 
       
    Exit Function 
      
    END IF 
     
    NEXT 
    End Function 
    ViewItem设计: 
    Function ViewItem() 
    mudCart
    =Session("Cart"
    IF isArray(mudCart) THEN 
    %
    > 

     
     Item Name 
     Item Quantity 
      
     


     
      
    <
    Response.Write 
    "Item ID: " & mudCart(i,0& "<--" 
    Response.Write 
    "
    " 
    Response.Write 
    "Item Qty: " & mudCart(i,1& "<--" 
    Response.Write 
    "
    " 
    END IF 
    NEXT 
    ELSEIF isArray(mudCart) = False THEN 
    Response.Write 
    "No item in your cart!" 
    Response.Write 
    "
    " 
    Response.Write 
    "Y don’t you do shop!" 
    END IF 
    End Function 
    RemoveItem(ID)设计: 
    Function RemoveItem(ID) 
    mudCart
    =Session("Cart"
    ’Find the Postion 
    / Index of given ID. 
    For i = LBound(mudCart) TO Ubound(mudCart) 
     
    IF mudCart(i,0= ID THEN 
      Pos
    =
     
    Exit For 
    END IF 
    Next 
    ’Delete Process 
     
    FOR i = Pos TO UBound(mudCart) - 1 
      
    IF Not mudCart(i,0= "" THEN 
      mudCart(i,
    0= mudCart(i+1,0
     
    END IF 
     
    Next 
     
    End Function 
    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"%>

  • 相关阅读:
    javaScript -- touch事件详解(touchstart、touchmove和touchend)
    PHP 报错--Array to string conversion,请用print_r() 来输出数组
    PHP微信商户支付
    解决问题:CA_ERROR证书出错,请登录微信支付商户平台下载证书-企业付款到零钱接口(原创)
    写毕业设计论文或写书关于参考文献的一些原则
    分享腾讯云的Linux服务器连接速度很慢的解决心得(原创)
    Linux 实时性能测试工具——Cyclictest【转】
    Linux Kernel中获取当前目录方法(undone)【转】
    Linux kernel 绝对路径之d_path篇【转】
    linux内核获取进程的全路径3种方法【转】
  • 原文地址:https://www.cnblogs.com/Dove/p/187954.html
Copyright © 2011-2022 走看看