王朝网络
分享
 
 
 

用ASP设计购物推车

王朝asp·作者佚名  2006-12-16
宽屏版  字体: |||超大  

什么是购物推车?

你一定去过超级市场吧。在那里你可以推着推车,将中意的商品放进推车,或者把推车里的商品取出来重新放到货架,最后你推着推车去结账。

那么,在网上超市,客户也应该可以在浏览商品目录时,将中意的商品放进"电子推车"。电子推车是超级市场推车的电子化。在网上商店里,这种电子推车又称为"购物推车",英文是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

%>

<table>

<tr>

<td>Item Name</td>

<td>Item Quantity</td>

<td></td>

</tr>

<%

FOR i = LBound(mudCart) TO UBound(mudCart)

IF mudCart(i,0) <> "" THEN

%>

<tr>

<td><%=%></td>

<%

Response.Write "Item ID: " & mudCart(i,0) & "<--"

Response.Write "<BR>"

Response.Write "Item Qty: " & mudCart(i,1) & "<--"

Response.Write "<BR>"

END IF

NEXT

ELSEIF isArray(mudCart) = False THEN

Response.Write "No item in your cart!"

Response.Write "<BR>"

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的定义

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有