购物车类

该博客主要展示了ASP购物车类的实现代码。定义了货物表、订单表等常量,包含私有和公共函数,如初始化、添加商品、删除商品、显示购物车、提交订单等功能函数,每个函数都有明确的返回值和操作逻辑,用于实现购物车的各项功能。

<!--#include FILE="../db/LDB.asp"-->
<%
'---------------------------
' ASP 购物车类 
'-------------常量定义----------------------------------
' 定义货物表。关键字为ID
ProductionTable="Production"

' 定义订单表,订单明细表,订单号字段名称
OrderTable="OrderTable"
OrderID="OrderID"
OrderDetailTable="OrderDetail"
'-------------常量定义结束------------------------------


'-------------类定义------------------------------------
' 购物车类
' 引用了LDB类
Class LDCart

  '-----------------------------------
  '私有函数部分
  '-----------------------------------
  Private CPList(50,2) '商品列表,采用二维数组,每个记录第一个表示商品代号,第二个表示购物数量
  Private CPCount  '当前购买商品的商品数
  Private MyQuery  '查询类
  Private MyDB   '数据操作类
  Private CurrUserID '当前用户代号

  Private Function GetInfoByID(ID)
    '根据货物编号得到货物信息 返回类型为记录集
 Set GetInfoByID= MyDB.DoSelect("select * from "&ProductionTable&" where ID = "&ID)
  End Function

  Private Function GetUserInfoByID(UserID)
    '得到用户信息  返回类型为记录集
 MyQuery.Cols="ID"
 MyQuery.Types="1"
 MyQuery.Values="=##"&UserID
 Set MyDB.LDQuery=MyQuery
 MyDB.TableName="User"
 MyDB.Cols=""
 MyDB.NeedNumber=1
 
 Set GetInfoByID= MyDB.GetRecordSet

  End Function
 
  '-----------------------------------
  '公共函数部分
  '-----------------------------------

  Public Function Initial
    '初始化购物车
 CPCount=0
 CurrUserID=Session("UserID")
    Set MyQuery = New LDQuery
    Set MyDB = New LDB
 Set MyDB.LDQuery=MyQuery
  End Function

  Public Function AddItem(ID)
    '根据货物ID增加货物数量为1
 '返回值=0:成功
 '返回值=-1:货物已在购物车中
 '返回值=-2:购物车已满
 If CPCount = 50 then
   AddItem=-2
   Exit Function
 End If

 Dim i,res
 For i=0 To CPCount-1
   If ID = CPList(i,0) then
  AddItem=-1
  Exit Function
   End If
 Next

    CPList(CPCount,0)=ID
    CPList(CPCount,1)=1
    CPCount=CPCount+1
 AddItem=0
  End Function
 
  Public Function RemoveItem(ID)
    '根据货物ID删除货物
 '返回值=0:成功
 '返回值=-1:货物不在购物车中
 j=-1
 For i=0 To CPCount-1
   If CPList(i,0)=ID then
     j=i
   End If
 Next
 If j=-1 then
   RemoveItem=-1
   Exit function
 End If

 For i=j To CPCount-1
   CPList(i,0)=CPList(i+1,0)
   CPList(i,1)=CPList(i+1,1)
 Next
 CPList(CPCount,0)=""
 CPList(CPCount,1)=0

 CPCount=CPCount-1
 RemoveItem=0
  End Function

  Public Function DisplayCart
    '显示购物车
 Response.write"<br>--------------------------------------------------------<Br>"
 Response.write"当前用户:"&CurrUserID&"--------------------------------------------------------<Br>"
 If CPCount=0 then
   Response.write "购物为空!"
 else
 For i = 1 To CPCount
   Set CurrInfo=GetInfoByID(CPList(i-1,0))
   Response.write "货物代号是:"&CPList(i-1,0)&"    名称是:"&CurrInfo("mc")&"    价格是:"&CurrInfo("jg")&"    数量是:"&CPList(i-1,1)
   Response.write "<br>"
 Next
 Response.write"--------------------------------------------------------<Br>"
 Response.write "当前货物总数是:"&CPCount&"  ||  ""当前货物总价格是:"&CountTotalPay
 End If
  End Function

  Public Function UpdateCount(ID,Count)
    '改变某商品的数量
 '返回值=0:成功
 '返回值=-1:货物不在购物车中
 '返回值=-2:改变的数量小于等于0
 If Count<1 then
   UpdateCount=-2
   Exit function
 End If'判断,要改变的数量是不是大于等于0 如果不是,则返回错误信息-整数-2

 j=-1
 For i=0 To CPCount-1
   If CPList(i,0)=ID then
     j=i
   End If
 Next
  If j=-1 then
   UpdateCount=-1
   Exit function
 End If'判断要删除的货物是否已经在购物车中,如果不是,则返回错误信息-整数-1

 CPList(j,1)=Count 
 UpdateCount=0
  End Function

  Public Function CountTotalPay
    '计算合计价格
 '返回值:合计价格
 TempTotal=0
 For i=0 To CPCount-1
   TempTotal=TempTotal+GetInfoByID(CPList(i,0))("jg")*CPList(i,1)
 Next
 CountTotalPay=TempTotal
  End Function

  Public Function ApplyOrder    '提交订单
 '返回值=0:成功
 ZK=1 '折扣
 OrderID=Replace(LDFormatDateTime(now)&CurrUserID,"-","")
 OrderID=Replace(OrderID," ","")
 OrderID=Replace(OrderID,":","")
 MyDB.TableName=OrderTable
 MyDB.Cols="UserID|HJ|SJ|IP|YB|DZ|SJR|Tel|OrderID"
 MyDB.Types="1|1|0|0|0|0|0|0|0"
 MyDB.Values=CurrUserID&"|"&CountTotalPay&"|"&LDFormatDateTime(now)&"|"&GetUserIP()&"|"&YB&"|"&DZ&"|"&SJR&"|"&Tel&"|"&OrderID
 MyDB.Add

 MyDB.TableName=OrderDetailTable
 MyDb.Cols="OrderID|CPID|Count|ZK"
 MyDB.Types="0|0|1|1"

 For i=0 To CPCount-1
   MyDB.Values=OrderID&"|"&CPList(i,0)&"|"&CPList(i,1)&"|"&ZK
   MyDB.Add
 Next
 ApplyOrder=0
  End Function

  Public Function Clear    '清空购物车
 '返回值=0:成功
 For i=1 To CPCount
   CPList(i-1,0)=""
   CPList(i-1,1)=0
 Next
 CPCount=0
  End Function

  Public Function DeleteOrder(OrderID)
 '返回值=0:成功
    MyQuery.Cols="OrderID"
 MyQuery.Types="0"
 MyQuery.Values="<##"&OrderID
    MyDB.TableName=OrderTable
 MyDB.Delete
 MyDB.TableName=OrderDetailTable
 MyDB.Delete
    DeleteOrder=0
  End Function
End Class
'-------------类定义结束--------------------------------

%>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值