用ASP設(shè)計購物推車
發(fā)表時間:2024-06-09 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]什么是購物推車? 你一定去過超級市場吧。在那里你可以推著推車,將中意的商品放進(jìn)推車,或者把推車?yán)锏纳唐啡〕鰜碇匦路诺截浖埽詈竽阃浦栖嚾ソY(jié)賬。 那么,在網(wǎng)上超市,客戶也應(yīng)該可以在瀏覽商品目錄時,將中意的商品放進(jìn)"電子推車"。電子推車是超級市場推車的電子化。在網(wǎng)上商店里...
什么是購物推車?
你一定去過超級市場吧。在那里你可以推著推車,將中意的商品放進(jìn)推車,或者把推車?yán)锏纳唐啡〕鰜碇匦路诺截浖埽詈竽阃浦栖嚾ソY(jié)賬。
那么,在網(wǎng)上超市,客戶也應(yīng)該可以在瀏覽商品目錄時,將中意的商品放進(jìn)"電子推車"。電子推車是超級市場推車的電子化。在網(wǎng)上商店里,這種電子推車又稱為"購物推車",英文是Shopping Cart。
購物推車的設(shè)計目標(biāo)
從程序員的觀點來看,購物推車是維護(hù)購物者商品選購、允許察看、允許修改的一個對象。購物推車本身是一個非常簡單的程序,但開發(fā)者要考慮它將連接到商品目錄子系統(tǒng)、訂單子系統(tǒng)、客戶賬號子系統(tǒng)、站點管理子系統(tǒng)等等,形成功能完整的網(wǎng)上商店。
下面是購物推車的設(shè)計目標(biāo):
1、 持續(xù)性:購物推車應(yīng)該從它的前一次會話中記住其內(nèi)容。
2、 購物推車和客戶相關(guān),而不是和客戶的電腦相關(guān)。客戶可以從另外的電腦或瀏覽器來訪問購物推車。
3、 當(dāng)新的商品被加入推車或者從推車去掉時,推車的內(nèi)容可以被顯示給用戶。
4、 推車可以容納很多甚至無限的商品。
系統(tǒng)設(shè)計/流程設(shè)計
在編寫我們的購物推車之前,我們看看它的系統(tǒng)架構(gòu)和流程。請看下圖:
如果客戶從商品目錄中選擇了一件商品,這時我們傳遞客戶的請求到proxy.asp,同時傳遞的是動作變量"增加商品"。Proxy.asp讀取這個變量,并決定執(zhí)行購物推車的哪個動作。這些動作包括:增加商品、更新商品數(shù)量、移除商品或者察看購物推車。
有些動作被作為內(nèi)部調(diào)用。如創(chuàng)建推車之前,我們需要檢查推車是否已經(jīng)存在(CheckCart)。在增加、刪除或者更新商品及其數(shù)量時,我們要確認(rèn)此商品是否已經(jīng)存在于我們的購物推車之中(CheckItem)。下面我們將為購物推車設(shè)計8個方法,分別是:
ViewItem 察看推車
CheckCart 檢查推車
CreateCart 創(chuàng)建推車
AddItem(ID, Qty), 增加商品
RemoveItem(ID) 刪除商品
UpdateItem(ID, Qty), 更新數(shù)量
RemoveAll 全部清空
CheckItem(ID) 商品檢查
購物推車的設(shè)計
購物推車需要三個要素:一個VBScript 5的類class CartKit,一個多維數(shù)組mudCart,一個session變量Session("Cart")。
這個VBScript 類,我們稱為CartKit,包含了8個方法,如上表所示。在本文我們只用了ID和Qty,分別表示商品編號和數(shù)量。
這樣我們就可以用一個二維數(shù)組來表達(dá)這個推車,象下面這樣:
商品編號 商品數(shù)量
ID-1 23
ID-3 10
ID-23 6
ID-2 1
然后我們把這個二維數(shù)組保存到session變量中就可以了。
購物推車類CartKit的設(shè)計
請下載:CartKit.asp
CreateCart設(shè)計:
請看程序代碼:
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")保存的就是推車的內(nèi)容。如果推車不存在,我們就定義一個二維數(shù)組mudCart來表達(dá)推車,并將它保存到session("Cart")中。
CheckCart設(shè)計:
本函數(shù)判斷Cart是否已經(jīng)創(chuàng)建。比較簡單。
Function CheckCart()
IF IsArray(Session("Cart")) THEN
CheckCart=True
ELSE
CheckCart=False
END IF
End Function
CheckItem設(shè)計:
請看代碼:
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)設(shè)計:
請參考本文的附件CartKit.asp,這里介紹的函數(shù)我們把它們封裝到一個名為CartKit的class中。下面的代碼段首先創(chuàng)建了一個CartKit對象,然后檢查推車是否已經(jīng)存在。如果不存在,就創(chuàng)建推車并新增商品;否則,檢查商品編號是否已經(jīng)存在于Cart中。如果是,就更新數(shù)量;否則,新增商品。