用ASP設計購物推車程式

來源:互聯網
上載者:User
程式|設計   什麼是購物推車?
   你一定去過超級市場吧。在那裡你可以推著推車,將中意的商品放進推車,或者把推車裡的商品取出來重新放到貨架,最後你推著推車去結賬。
    那麼,在網上超市,客戶也應該可以在瀏覽商品目錄時,將中意的商品放進"電子推車"。電子推車是超級市場推車的電子化。在網上商店裡,這種電子推車又稱為"購物推車",英文是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的定義

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.