用ASP设计购物推车

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

(0)

相关推荐

  • 用ASP设计购物推车

    什么是购物推车? 你一定去过超级市场吧.在那里你可以推着推车,将中意的商品放进推车,或者把推车里的商品取出来重新放到货架,最后你推着推车去结账. 那么,在网上超市,客户也应该可以在浏览商品目录时,将中意的商品放进"电子推车".电子推车是超级市场推车的电子化.在网上商店里,这种电子推车又称为"购物推车",英文是shopping cart. 购物推车的设计目标 从程序员的观点来看,购物推车是维护购物者商品选购.允许察看.允许修改的一个对象.购物推车本身是一个非常简单的程

  • 后台管理登录篇-asp设计与数据库

    实现功能不难,想要完善,甚至完美,那才叫难.所以,小弟将功能实现帖出来,和各位初学者讨论讨论.至于完善,就看各位自己的想法了 一.建立数据库 在就开始了,我建了一个名为windsn.mdb的数据库,包含4张表admin表(用于管理员信息):id, name(用户名), pwd(密码), ...concent表(用于存放文档数据):con_id, title, author, part, con, time, numcon_id 自动编号title 文章标题author 作者或出处part 文章分

  • 改进性能和样式的 24个 ASP 技巧第1/2页

    祥细内容: 简介 技巧 1:在 Web 服务器上缓存常用数据 技巧 2:在 Application 或 Session 对象中缓存常用数据 技巧 3:在 Web 服务器磁盘上缓存数据和 HTML 技巧 4:避免在 Application 或 Session 对象中缓存非灵活组件 技巧 5:不要在 Application 或 Session 对象中缓存数据库连接 技巧 6:妙用 Session 对象 技巧 7:在 COM 对象中封装代码 技巧 8:晚点获取资源,早点释放资源 技巧 9:进程外的执行

  • 改进性能和样式的24个ASP 技巧

    简介 技巧 1:在 Web 服务器上缓存常用数据 技巧 2:在 Application 或 Session 对象中缓存常用数据 技巧 3:在 Web 服务器磁盘上缓存数据和 HTML 技巧 4:避免在 Application 或 Session 对象中缓存非灵活组件 技巧 5:不要在 Application 或 Session 对象中缓存数据库连接 技巧 6:妙用 Session 对象 技巧 7:在 COM 对象中封装代码 技巧 8:晚点获取资源,早点释放资源 技巧 9:进程外的执行将牺牲可靠性

  • 改进 ASP 的字符串处理性能

    大多数 Active Server Pages (ASP) 应用程序都要通过字符串连接来创建呈现给用户的 HTML 格式的数据.本文对几种创建此 HTML 数据流的方法进行了比较,在特定情况下,某些方法在性能方面要优于其他方法.本文假定您已经具备一定的 ASP 和 Visual Basic 编程方面的知识. 目录 简介 ASP 设计 字符串连接 快捷的解决方案 StringBuilder 内置方法 测试 结果 小结 简介 编写 ASP 页面时,开发人员实际上是创建一个格式化的文本流,通过 ASP

  • ASP中Web页面间的数据传递方式

    摘要:基于web的动态网页设计必会涉及到页面间的数据传递,文章探讨了asp设计中常用的web页面间的数据传递方式,分析各种数据传递方式的使用方法.使用场合及优缺点,其都是设计阶段选择数据传递方式考虑的关键. 关键词 数据传递变量浏览器端网页 往往使用动态网页技术制作asp应用程序时一般至少拥有二个或二个以上的web页面,这时就得考虑在多个web页面间传递数据的处理工作.而asp应用程序的各个页面类似于windows应用程序的form窗体,windows应用程序各form间数据传递可以通过定义全局

  • ASP.NET设计FTP文件上传的解决方案

    如果要用ASP来作一个FTP文件上传的页面,我想很多人立刻就会想到要用第三方开发的组件,利用第三方的组件,虽然开发起来相对比较容易.但一般来说,免费下载的第三方的组件都有某些方面的功能限制,若要购买正版的第三方组件,对于国内的用户,花销也是一个不小的数字,就是能够承担的起,烦杂的手续也使很多人望而却步.虽然微软公司在本身的视窗系统里面也提供了一个可以用来上传文件的组件--Posting Acceptor.但用过这个组件的朋友们都有一种普遍的感觉,就是实在不好用. 现在好了,自从微软公司推出了.N

  • ASP.NET设计网络硬盘之查看文件夹实现代码

    就像操作本地的计算机一样,需要为每个网络用户提供各自的一块硬盘空间,用户登录后便可以对自己的空间进行管理.管理是多方面的,首先用户应该能看到自己文件夹下的所有内容,另外需要提供多级文件夹目录的支持. 下面要介绍的实例包括"网上硬盘"的许多功能,将一步步为大家进行介绍.首先创建工程实例,然后进行主界面的设计,最后对各个功能的实现分别进行介绍. 新工程创建 新工程创建的步骤如下: (1) 打开MicroSoft Visual Studio.NET应用程序. (2) 选择"文件&q

  • 四步完成asp网页设计流量统计

    按照以下步骤,逐步操作,你很快就会拥有精美的图形化计数器.  步骤1:在网站的某个目录如count下建立文本文件,如counter.dat    ,用于存放访问量.文件内容仅有一行数字,表示网站初始访问量,一般为0. 步骤2:在相同目录下建立计数器的ASP程序,可命名为mycount.asp,内容如下: <% '自编ASP图形化计数器 V1.1 '用于网页浏览统计,免费使用,自由拷贝! dim vistors '获取计数文件counter.dat的地址 countfile=server.mapp

  • 遭遇ASP类的事件设计

    作者的blog: http://blog.csdn.net/oyiboy/ 我之所以还是要宣扬用MVC来开发ASP,只是想让面向过程的思考方式变成面向对象的思考方式,这个对于任何一种语言的开发员来说都是有好处的. MVC是个标准模型,ASP要实现似乎真的是很困难,但是标准是标准,运用是运用,既然ASP要实现这个模型很难,那可以尝试着将MVC模型变形成适合自己的模型. "不管白猫黑猫能逮到耗子的就是好猫."而对于我们开发者来说,不管是什么模型,能正确的指引我们的思路,完美完成项目的模型就

随机推荐