什么是购物推车? 
  你一定去过超级市场吧。在那里你可以推着推车,将中意的商品放进推车,或者把推车里的商品取出来重新放到货架,最后你推着推车去结账。 
  那么,在网上超市,客户也应该可以在浏览商品目录时,将中意的商品放进"电子推车"。电子推车是超级市场推车的电子化。在网上商店里,这种电子推车又称为"购物推车",英文是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=i 
 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"%>

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

用ASP设计购物推车相关推荐

  1. Java web课程设计-购物系统

    题目:网上购物系统 网上购物商店的分析与实现 一.实验目的 Java web课程设计是为了是计算机学院的学子深入学习java web应用开发设置的一门实验性的动手性的实践课程.是计算机科学与技术. 网 ...

  2. C#课程设计(购物平台)

    C#课程设计 1.开发环境 ​ VS2019,SQL2012,winform窗体设计 2.项目主题 ​刚好完成了C#的课程设计,觉得该好好纪念一下((✪ω✪)),这是一个超市线上购物平台,虽然明明知道 ...

  3. 用计算机设计购物小票,商友星云系统软件票据和条码标签设计和打印

    1.下载云打印服务器 1)下载 在第一次安装商务星云系统软件,打开"系统"-"小票设计"的模块,软件会自动弹出"云打印服务器"下载的模块: ...

  4. oracle中datepart函数,Asp DatePart 函数的语法详解(用于计算日期并返回指定的时间间隔)...

    Asp DatePart 函数的语法详解(用于计算日期并返回指定的时间间隔) 更新时间:2012年07月31日 21:32:58   作者: ASP(VBScript) 参考手册中,已经对 DateP ...

  5. 基于asp.net的音乐分享网站的设计与实现(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 音乐分享网站的设计与实现 摘  要 随着社会的发展时代的前进,IT行业的发展也是日新月异,对人类 ...

  6. asp毕业设计——基于asp+access的中学网站设计与实现(毕业论文+程序源码)——中学网站

    基于asp+access的中学网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的中学网站设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. 文章目录: 基于 ...

  7. 基于asp.net在线音乐播放网站设计

    获取项目源文件,学习交流联系Q:1415736481,可指导毕设,课设 摘  要 随着社会的发展时代的前进,IT行业的发展也是日新月异,对人类的生产和生活方式产生了很大影响.网络传播以其特有的快速.高 ...

  8. asp毕业设计——基于asp+access的网上图书销售系统设计与实现设计与实现(毕业论文+程序源码)——网上图书销售系统

    基于asp+access的网上图书销售系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的网上图书销售系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. ...

  9. asp毕业设计——基于asp+access的在线人才招聘网设计与实现(毕业论文+程序源码)——人才招聘网

    基于asp+access的在线人才招聘网设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的在线人才招聘网设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下 ...

  10. asp毕业设计——基于asp+access的精品课程教学网站设计与实现(毕业论文+程序源码)——精品课程教学网站

    基于asp+access的精品课程教学网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的精品课程教学网站设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需 ...

最新文章

  1. “懒”的妙用——浅析图片懒加载技术
  2. python界面不同按钮实现不同功能-三、PyQt5不同方法创建菜单栏、工具栏和状态栏...
  3. JavaScriptjQuery.stopPropogation()
  4. CollaDec 之前的三个SharePoint工具开源发布
  5. python不退出运行页面_如何在不完全退出Tkinter窗口的情况下停止正在运行的函数?...
  6. 8.7 使用索引-notes
  7. 交换机网络嗅探方法之欺骗交换机缓存
  8. java调用android打包_Android Gradle打包基础
  9. Map接口与学习系列(二)---LinkedHashMap
  10. shiro 同时实现url和按钮的拦截_Shiro是如何拦截未登录请求的(一)
  11. TermuxArch安装java_高级终端Termux安装并使用
  12. js数字格式化千分位格式
  13. Axure element 2.4.6元件库
  14. CCF推荐国际学术会议和期刊目录2019年
  15. JDK1.8 使用 ODBC 连接数据库的方法
  16. C# 创建基于TCP、HTTP协议的JsonRpc 2.0(可跨平台、跨语言)
  17. dvr服务器系统,DVR监控软件 V1.0
  18. matlab节点连通率,利用MATLAB仿真节点个数和节点通信半径与网络连通率的关系
  19. 权值衰减和 L2 正则化傻傻分不清楚?
  20. Matlab一句话画三维应力云图

热门文章

  1. 如何使用Spring Bean Configuration File调用构造方法并给参数赋值
  2. 区块链 不可能三角是什么
  3. 什么是运行时Runtime、运行时库Runtime Library、运行时环境Runtime environment
  4. 基于SSM的培训机构管理系统
  5. android游戏boss坐标,混沌与秩序2已知boss刷新点分布图详解(已更新到20号boss)...
  6. # 检测中英输入法_奇怪的知识点增加了 手机输入法还能做更多
  7. C++%f和%lf的区别
  8. Leetcode122. 买卖股票的最佳时机 II(贪心)
  9. 对null值的小知识
  10. mysql面试题 真的很不错