胡必波 王素芳 .廣州工商職業(yè)技術(shù)學(xué)院 50850;.廣東白云學(xué)院 50450
基于.NET電子商務(wù)網(wǎng)站購物車功能設(shè)計與實現(xiàn)
胡必波1王素芳21.廣州工商職業(yè)技術(shù)學(xué)院 510850;2.廣東白云學(xué)院 510450
本文結(jié)合ASP.NET 2.0技術(shù)提供的個性化用戶配置功能,剖析了實現(xiàn)電子商務(wù)網(wǎng)站中購物車功能關(guān)鍵技術(shù),介紹實現(xiàn)該功能設(shè)計方法與技巧。
電子商務(wù);購物車;個性化用戶配置
電子商務(wù)是指整個事務(wù)活動和貿(mào)易活動的電子化,它通過先進(jìn)的信息網(wǎng)絡(luò),將事務(wù)活動和貿(mào)易活動中發(fā)生關(guān)系的各方有機(jī)地聯(lián)系起來。電子商務(wù)網(wǎng)站實際上就是銷售企業(yè)為消費者提供的網(wǎng)上購物商城,在該網(wǎng)站中用戶可以購買任何商品,而管理員可以對商品和訂單等信息進(jìn)行管理。購物車功能的實現(xiàn)是電子商務(wù)網(wǎng)站的關(guān)鍵,這里結(jié)合ASP.NET 2.0技術(shù)分析電子商務(wù)網(wǎng)站中購物車功能設(shè)計技巧。
電子商務(wù)網(wǎng)站最常見的是購物車功能。只要用戶按照提示輸入用戶名和密碼,就能夠登錄站點。當(dāng)用戶登錄站點之后,應(yīng)用程序?qū)@示待銷售商品列表和購物車信息。如圖1所示,左半部分顯示的是待銷售商品列表,右半部分顯示的購物車信息。用戶可以單擊待銷售商品列表中的“購買”按鈕,將商品添加到購物車中。同時,也可以單擊購物車信息列表中的“清除”按鈕來刪除其中的商品。購物車可以對商品總價進(jìn)行計算。當(dāng)關(guān)閉應(yīng)用程序并重新登錄站點時,頁面將顯示用戶上次訪問應(yīng)用程序時購物車操作的結(jié)果。
圖1 購物車功能演示
圖2 購物車類圖
實現(xiàn)購物車功能。由應(yīng)用程序需求可知,購物車主要具有添加和刪除商品信息、計算車內(nèi)商品總價等功能。這些功能只需要一些簡單的方法就能夠?qū)崿F(xiàn)。訪問、存儲和顯示購物車數(shù)據(jù)的機(jī)制。我們在web.config的<profile>配置節(jié)為應(yīng)用程序定義了一個用戶配置屬性,其名稱為ShoppingCart,數(shù)據(jù)類型為ShoppingCart。類型ShoppingCart是一個復(fù)雜數(shù)據(jù)類型,它的主體是購物車類。另外購物車是一個自定義數(shù)據(jù)類型,為了能夠?qū)崿F(xiàn)存儲,必須注意設(shè)置該類實例對象的序列化。這樣,購物車中的數(shù)據(jù)將通過Profile屬性得以訪問和存儲。例如,訪問ShoppingCart屬性數(shù)據(jù),可以調(diào)用Profile. ShoppingCart。待售商品列表數(shù)據(jù)來自SQL Serevr 2000示例數(shù)據(jù)庫Northwind的數(shù)據(jù)表Products??梢允褂煤唵蔚腟QL語句結(jié)合數(shù)據(jù)源控件SqlDataSource來獲取數(shù)據(jù)。然后,將這些數(shù)據(jù)集合綁定到GridView數(shù)據(jù)綁定控件上顯示出來。為了顯示購物車數(shù)據(jù),必須使其具備與數(shù)據(jù)綁定控件集成的能力,同時要考慮如何才能更容易地實現(xiàn)添加、刪除數(shù)據(jù)等功能。這里使用了哈希表(HashTable)來存儲購物車內(nèi)數(shù)據(jù)。哈希表是System.Collections名字空間提供的一個容器,用于處理類似key/value的鍵值對。該類提供了簡單的添加、刪除和檢索數(shù)據(jù)方法。使用哈希表的另一原因是使用Hashtable類的Values屬性可以返回ICollection類型的數(shù)據(jù)集合(也就是購物車中存儲的商品數(shù)據(jù))。該數(shù)據(jù)集合可以輕松與GridView控件綁定在一起,并將數(shù)據(jù)顯示出來。
ShoppingCart.cs的文件定義類的類圖如圖2所示。
CartItem類以面向?qū)ο蟮姆绞綐?gòu)建了購物車中的單條商品對象。該類包括4個屬性和一個構(gòu)造函數(shù)。這四個屬性分別是ID、Name、Price和Quantity。前三個屬性分別對應(yīng)Products數(shù)據(jù)表中的ProductID、Product Name和UnitPrice列,另外一個屬性Quantity表示用戶購買該商品的數(shù)量。利用CartItem類構(gòu)造函數(shù)能夠生成一個表示某商品的對象實例。
ShoppingCart類主要實現(xiàn)購物車中商品數(shù)據(jù)的添加和刪除功能。該類包括一個Hashtable類型的字段_ _CartItems,以哈希表方式存儲購物車內(nèi)所有商品數(shù)據(jù)。ShoppingCart類還包括兩個屬性,一個是表示返回購物車所有商品數(shù)據(jù)的ICollection類型的CartItems屬性,另一個是用于獲得商品總價的屬性Total。另外,該類還實現(xiàn)了兩個方法,一個是向購物車中添加商品數(shù)據(jù)的方法AddItem,另一個是從購物車中刪除指定商品的方法RemoveItem,分別使用了Hashtable類提供的Add和Remove方法。
當(dāng)匿名用戶訪問某電子商務(wù)網(wǎng)站時,應(yīng)用程序首先不是為用戶展示琳瑯滿目的商品,而是硬生生的顯示用戶注冊界面。那么某些用戶不會在選擇商品之前,花費寶貴的時間和經(jīng)歷來注冊。即使每個匿名用戶都注冊并登錄站點了,也并非所有注冊用戶都會購買商品。這種情況的發(fā)生,不僅需要應(yīng)用程序處理大量的用戶注冊任務(wù),而且必然在數(shù)據(jù)庫中產(chǎn)生大量無用數(shù)據(jù)。解決以上問題的理想方式是,首先,站點允許匿名用戶登錄,并使用購物車功能選擇商品,然后,用戶可以進(jìn)行注冊并使用注冊帳號登錄站點。這時候,購物車中顯示的是用戶在匿名方式下所選擇商品的列表。換句話說,匿名用戶購物車中的商品列表,在從匿名用戶轉(zhuǎn)向注冊用戶的過程中,平穩(wěn)的轉(zhuǎn)移到了注冊用戶的購物車中。如圖3所示。
圖3 匿名用戶購買商品
由于允許匿名用戶訪問,必須在在web.config配置文件中啟用應(yīng)用程序的匿名驗證功能,即將anonymousIdentification屬性設(shè)為true。然后在ShoppingCart用戶配置屬性中設(shè)置allowAnonymous="true"。這樣應(yīng)用程序就會存儲匿名用戶的ShoppingCart屬性數(shù)據(jù)。
在應(yīng)用程序中可以增加Global.asax文件,相關(guān)代碼如下。
//獲取匿名用戶的Profile對象
這里關(guān)鍵是實現(xiàn)ProfileModule類中的MigrateAnonymous事件。該事件在包含用戶配置屬性數(shù)據(jù)的匿名用戶登錄時發(fā)生,對應(yīng)的事件處理程序是Profile_ MigrateAnonymous。與其他事件處理程序不同的是,該事件處理程序必須在Global.asax文件中定義。這里該事件主要實現(xiàn)了3個任務(wù):一是從匿名用戶的Profile屬性中復(fù)制相關(guān)信息,并將其存儲到注冊用戶的Profile屬性中;二是為減少冗余數(shù)據(jù),刪除aspnetdb數(shù)據(jù)庫中存儲的匿名用戶的用戶配置;三是刪除匿名用戶標(biāo)識,以避免再次為已經(jīng)登錄的用戶激發(fā)MigrateAnonymous事件。
購物車技術(shù)是電子商務(wù)網(wǎng)站關(guān)鍵技術(shù)之一,其功能設(shè)計實質(zhì)上是使用ASP. NET 2.0提供的個性化用戶配置功能,將配置信息與單個用戶關(guān)聯(lián),并采用持久化方式存儲信息。配置信息可以是任何與用戶相關(guān)的信息,所存儲的配置信息可以是任何數(shù)據(jù)類型的對象,單個用戶可以是注冊用戶,也可以是匿名用戶,持久化存儲采用SQL Server數(shù)據(jù)庫方式,并且無需自行創(chuàng)建和維護(hù)該數(shù)據(jù)庫,由ASP.NET 2.0自動完成。
[1]包空軍,劉海燕.ASP.NET電子商務(wù)系統(tǒng)設(shè)計與實現(xiàn)[J]. 福建電腦,2007,02
[2]羅愛群,熊麗婷,張永紅. 基于Web的電子商務(wù)開發(fā)技術(shù)及系統(tǒng)設(shè)計[J].商場現(xiàn)代化,2008,10
[3]張應(yīng)征, 成新紅.電子商務(wù)網(wǎng)站中購物車及訂單管理功能設(shè)計研究[J]. 企業(yè)技術(shù)開發(fā),2010,11
10.3969/j.issn.1001-8972.2012.07.054