zoukankan      html  css  js  c++  java
  • 【精华】asp购物车原理及其源代码

    <%
    '==========================
    '购物车类 类名:UserCart
    '作者:Cosiray
    '基本原理:此类用服务器Session变量保存商品数据,商品用一个数组表示.此类里面保存了三中商品价格.
    '==========================
    Class UserCart
        '建立购物车
        Sub CreateCart()
            dim CFlag,i
            dim mCart(6,0)
            CFlag=CheckCart()
            if CFlag=false then
                For i=LBound(mCart,2) to UBound(mCart,2)
                    mCart(0,i)=""
                next
                Session("User_Cart")=mCart
            end if
        End Sub
        '检查购物车
        Public Function CheckCart()
            IF IsArray(Session("User_Cart")) Then
                CheckCart=true
            Else
                CheckCart=false
            End If
        End Function
        '检查购物车是否为空
        Function CheckEmtpy()
            dim mCart,i
            mCart=Session("User_Cart")
            For i=LBound(mCart,2) to UBound(mCart,2)
                if mCart(0,i)<>"" then
                    CheckEmtpy=false
                    Exit Function
                end if
            next
            CheckEmtpy=True
        End Function
        '添加商品
        Function AddItem(aID,aName,aPrice1,aPrice2,aPrice3,aCount,aImage)
            dim mCart,i
            AddItem=false
            if CheckItem(aID)=false then
                '无此商品
                mCart=Session("User_Cart")
                For i=LBound(mCart,2) to UBound(mCart,2)
                    if mCart(0,i)="" then
                        mCart(0,i)=aID
                        mCart(1,i)=aName
                        mCart(2,i)=aPrice1
                        mCart(3,i)=aPrice2
                        mCart(4,i)=aPrice3
                        mCart(5,i)=aCount
                        mCart(6,i)=aImage
                        Session("User_Cart")=mCart
                        AddItem=true
                        exit Function
                    end if
                next
                i=i+1
                Redim preserve mCart(6,i)
                mCart(0,i)=aID
                mCart(1,i)=aName
                mCart(2,i)=aPrice1
                mCart(3,i)=aPrice2
                mCart(4,i)=aPrice3
                mCart(5,i)=aCount
                mCart(6,i)=aImage
                Session("User_Cart")=mCart
                AddItem=True
            Else
                '有此商品,则商品数量+1
                ModifItem aID,aCount,0
                AddItem=True
            End if
        End Function
        '删除商品数量
        Sub DelItem(mID)  '改进2008-12-25by tommy 增加删除商品过程
            dim mCart,i,j,mount
            response.Write(mID)
            mCart=Session("User_Cart")
            mount=UBound(mCart,2)
            If mID=mount Then
                mount=mount-1
                mCart(0,mount+1)=""
                ReDim Preserve mCart(6,mount)
            Else
                mount=mount-1
                For i=mID To mount
                    For j=0 To 6
                        mCart(j,i)=mCart(j,i+1)
                    Next
                Next
                mCart(0,mount+1)=""
                ReDim Preserve mCart(6,mount)
            End If
            Session("User_Cart")=mCart
        End Sub
        '修改商品数量
        Sub ModifItem(mID,mCount,mFlag)
            'mFlag-标志 0-添加 1-删除,2-修改 3-清空
            'mID-商品ID
            'mCount-修改商品的数量
            dim mCart,i
            mCart=Session("User_Cart")
            For i=LBound(mCart,2) to UBound(mCart,2)
                if mCart(0,i)=mID then
                    select case mFlag
                    case 1
                        mCart(5,i)=mCart(5,i)-mCount
                    case 0
                        mCart(5,i)=mCart(5,i)+mCount
                    case 2
                        if mCount=0 then
                            mCart(5,i)=0
                            mCart(0,i)=""
                        else
                            mCart(5,i)=mCount
                        end if
                    case 3
                        mCart(5,i)=0
                        mCart(0,i)=""
                    end select
                    Session("User_Cart")=mCart
                    exit Sub
                end if
            next
        End Sub
        '查看推车
        Function ViewCart()
            dim mCart
            mCart=Session("User_Cart")
            ViewCart=mCart
        End Function
        '检查商品
        Function CheckItem(cID)
            dim mCart,i
            mCart=Session("User_Cart")
            For i=LBound(mCart,2) to UBound(mCart,2)
                if mCart(0,i)=cID then
                    CheckItem=True
                    exit Function
                end if
            next
            CheckItem=false
        End Function
        '清空购物车
        Sub RemoveAll()
            dim mCart,i
            mCart=Session("User_Cart")
            For i=LBound(mCart,2) to UBound(mCart,2)
                mCart(0,i)=""
            next
            Session("User_Cart")=mCart
        End Sub
        '商品总价值
        Function TPrice()
            dim mCart,i
            dim OutPrice(3)
            mCart=Session("User_Cart")
            for i=LBound(mCart,2) to UBound(mCart,2)
                if mCart(0,i)<>"" then
                    Outprice(0)=Outprice(0) + mCart(2,i)*mCart(5,i)
                    Outprice(1)=Outprice(1) + mCart(3,i)*mCart(5,i)
                    Outprice(2)=Outprice(2) + mCart(4,i)*mCart(5,i)
                    Outprice(3)=OutPrice(3) + mCart(5,i)
                end if
            next
            TPrice=OutPrice
        End Function
    End Class
    '=================================================
    '建立购物车对象,该对象用于直接在程序中调用
    '=================================================
    dim uCart
    set uCart= new UserCart
    %>

    使用:
    第1
    '=================================================
    '建立购物车对象,该对象用于直接在程序中调用
    '=================================================
    dim uCart
    set uCart= new UserCart

    第二
    建立一个购物车
    uCart.CreateCart       (可以重复建立,因为里面有IsArray判断。所以建议这句在建立购物车对象后必写)

    第三
    增加购物车里的商品,在客户端点了某产品后,服务器端处理的ASP文件中接受传过来的产品标志,并访问数据库。分别把AddItem(aID产品标

    志如ID,aName产品名称,aPrice1产品价格一,如单价,aPrice2产品价格二如会员价,aPrice3产品价格三如金牌会员价,如果没这么多可以置空

    或置0,aCount购买数量,一般是一个,多个的话后面可以用修改函数修改,aImage产品图片地址)
    使用方法:aa=uCart.AddItem(aID产品标志如ID,aName产品名称,aPrice1产品价格一,如单价,aPrice2产品价格二如会员价,aPrice3产品价格

    三如金牌会员价,如果没这么多可以置空或置0,aCount购买数量,一般是一个,多个的话后面可以用修改函数修改,aImage产品图片地址),返回

    true表示成功,false表示失败

    第四
    增加了以后进如显示页面,就要用到查看购物车
    mycart=uCart.ViewCart()
    For i =LBound(myCart,2) to UBound(myCart,2)
     if myCart(0,i)<>"" then
      myCart(0,i) '获取标号
      myCart(1,i)  '获取单价
      。。。以此类推
     end if
    next

    第五
    查看了,可以修改购物车,如更改数量等,或是删除其中的
    call uCart.ModifItem(mID唯一标志号,mCount产品数量,mFlag-标志 0-添加 1-删除,2-修改 3-清空)    '先用给后面参数赋值


    修改其中的商品
    可以用第四个显示,先接受session的值,然后循环修改

    或清空购物车
    uCart.RemoveAll()

    然后结帐,很简单
    myprice=uCart.TPrice()
    然后myprice(0)是产品单价的总价格,myprice(1)是产品会员价的总价格,myprice(2)是高级会员的总价格,myprice(3)是产品总数量

     将商品装入购物车,这时需要用cookie或session来做一个不同页面间传递的全局变量,也就是说关了浏览器(针对session)或清楚了cookie等原因,本次购物车会消失,就象你今天在商场买了一车的东西,最后没结帐,明天肯定没了,又归位了,当然要有特殊需要保存,可以写数据库!所以这里记录的只需要是该商品的相关信息就可以了,这里我们记录他的 物品ID, 物品单价, 物品名称, 物品数量

    <!--#include file="../inc/Conn.asp"-->
    <!--#include file="../Inc/Cls.Common.asp"-->
    <!--#include file="../Inc/Cls.Templates.asp"-->
    <!--#include file="Cls.UserCart.asp"-->
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
        <title>无标题文档</title>
    </head>
    <body>
        <form name="form1" action="AddToCart.asp?action=save" method="post">
        产品Id:<input type="text" name="produceId" />
        产品名称:<input type="text" name="produceName" />
        产品单价:<input type="text" name="producePrice" />
        产品数量:<input type="text" name="buynum" />
        <input type="submit" />
        </form>
        <br>
        <%
        dim action
        action=request("action")   
        If action="save" Then
            Dim aId,aName,aPrice,aCount
            aId=request.Form("produceId")
            aName=request.Form("produceName")
            aPrice=request.Form("producePrice")
            aCount=request.Form("buynum")       
            uCart.CreateCart      
            if uCart.AddItem(aId,aName,aPrice,0,0,aCount,0) then
                CALL COSIRAY.ErrView("","","<li>添加成功!<script>function Close(){parent.closeWithIframe();}setTimeout(""location.href='AddToCart.asp';Close();"",1000)</script>",1)
            else
                CALL COSIRAY.ErrView("","","<li>操作错误<li>此界面 3 秒钟后自动关闭<script>function Close(){parent.closeWithIframe();}setTimeout(""history.go(-1);Close();"",1000)</script>",0)
            end if
        ElseIf action="del" Then
            aId=request("produceId")
            aa=uCart.DelItem(aId)
            response.Redirect("AddToCart.asp")
        End If
       
       
        if true then
        dim i,MyPrice,myCart
        myCart = uCart.ViewCart
        %>
        <table border="1">
            <tr>
                <th>
                    产品编号
                </th>
                <th>
                    产品名称
                </th>
                <th>
                    产品价格
                </th>
                <th>
                    产品数量
                </th>
                <th>
                    操作
                </th>
            </tr>
            <%
            For i = LBound(myCart,2) To UBound(myCart,2)
            If myCart(0,i)<>"" Then '以前的判断语句
            %>
            <tr>
                <td>
                    <%=MyCart(0,i)%></td>
                <td>
                    <%=MyCart(1,i)%></td>
                <td>
                    <%=MyCart(2,i)%></td>
                <td>
                    <%=MyCart(5,i)%></td>
                <td>
                    <a href="AddToCart.asp?action=del&produceId=<%=MyCart(0,i)%>" onclick="return confirm('你确定要删除吗?');">
                        删除</a>
                </td>
            </tr>
            <%
            End If
            Next
            MyPrice=uCart.TPrice()
            %>
            <tr>
                <td>总价格:<%=MyPrice(0)%></td>
                <td colspan="3">产品总数量:<%=MyPrice(3)%></td>
            </tr>
        </table>
        <%end if%>
    </body>
    </html>


     

  • 相关阅读:
    multimap-rebgin
    multiset-lower_bound
    multiset-lower_bound
    multimap-max_size
    multimap-max_size
    multimap-find
    最小生成树之prim算法
    最小生成树的邻接矩阵实现
    最短路径:(Dijkstra & Floyd)
    邻接表实现图的储存,遍历
  • 原文地址:https://www.cnblogs.com/cosiray/p/1630858.html
Copyright © 2011-2022 走看看