你一定去过超级市场吧。在那里你可以推着推车,将中意的商品放进推车,或者把推车里的商品取出来重新放到货架,最后你推着推车去结账。
那么,在网上超市,客户也应该可以在浏览商品目录时,将中意的商品放进"电子推车"。电子推车是超级市场推车的电子化。在网上商店里,这种电子推车又称为"购物推车",英文是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
%>
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]