馮 菁
(淮北職業(yè)技術(shù)學(xué)院 計算機科學(xué)技術(shù)系,安徽 淮北 235000)
?
基于Hashtable簡易購物車的實現(xiàn)
馮菁
(淮北職業(yè)技術(shù)學(xué)院 計算機科學(xué)技術(shù)系,安徽 淮北235000)
摘要:.NET FrameWork 提供了眾多類庫,其中Hashtable集合維護很多對Key-Value鍵值對,對于集合中任一元素的查找、定位,都是基于找到對應(yīng)的Key和Value值,應(yīng)用在處理動態(tài)添加、刪除數(shù)據(jù)時很方便。以電子商務(wù)購物車為例,使用ASP.NET技術(shù)、語言VB.NET和Hashtable類的方法、屬性、遍歷等來實現(xiàn)一簡易購物車。
關(guān)鍵詞:HashTable;ASP.NET;集合
購物車是電子商務(wù)網(wǎng)站的重要功能之一,功能大致有將商品添加進購物車,顯示購物車,刪除修改所選商品,修改數(shù)量,計算總價等.這些功能操作可以采用數(shù)據(jù)讀取、修改的案例。本例選擇.NET提供的解決方案,ASP.NET提供了WEB編程新技術(shù),并支持多種語言,配套有功能強大的集成開發(fā)環(huán)境Visual Studio.Net,本文案例用的是VB.NET語言。開發(fā)一個成功的購物車系統(tǒng),對于今后開發(fā)同類項目非常有益。
一、HashTable集合類型
ASP.NET是當(dāng)前流行的WEB程序開發(fā)技術(shù)之一,是建立在通用語言上的程序構(gòu)架,適用于多種開發(fā)語言,能被用于建立強大的WEB應(yīng)用程序.編程語言可支持Visual C#,VC++,Visual Basic.Net,Jscript.Net。
集合是把一群可變長的對象類型的元素組合在一起,它們的數(shù)據(jù)緊密相關(guān),能夠安全有效地處理這些緊密相關(guān)的數(shù)據(jù)。這些類在System.Collections命名空間。[1]
.NET work提供一種Hashtable集合類型。Hashtable也是System.Collections命名空間提供的一個容器。每個元素通過一個鍵(Key)和一個值(Value)來組織的。其中key區(qū)分大小寫,可用來快速查找;Value用于存儲對應(yīng)于Key的值。Hashtable中Key/Value鍵值對均為object類型,所以Hashtable可以支持任何類型的Key/Value鍵值對。[2]
定義哈希表Dim Hash as Hashtable
Hashtable的主要屬性有:
1.Hash.Count:獲取Hashtable中的鍵/值對的數(shù)目。
2.Hash.Item:獲取或設(shè)置與指定的鍵相關(guān)聯(lián)的值。
3.Hash.Keys:獲取Hashtable中的鍵。
4.Hash.Values:獲取Hashtable中的值。
Hashtable的主要方法有:
1.Add(Object key,Object value):將指定鍵/值添加到Hashtable中。
2.Clear():從Hashtable中移除所有元素。
3.Contains(Object key):確定Hashtable是否包含特定鍵。
4.Remove(Object key):從Hashtable中移除帶有指定鍵的元素。[1]
Hashtable集合類似于數(shù)組,又不像數(shù)組可以用索引訪問,即不可以用下標(biāo)訪問某一元素。Hashtable通過關(guān)鍵字來訪問元素,來刪除元素.它的遍歷使用foreach語句。
使用hashtable類必須引入該命名空間,C#語言:using system.collections;
VB.NET語言:Imports System.Collections
二、購物車功能演示
在開發(fā)Web應(yīng)用程序中, B2C電子商務(wù)網(wǎng)上購物車這一功能很普及,因此購物車程序的編寫就顯得非常重要。購物車的技術(shù)核心功能有添加商品、修改商品、刪除商品、檢查購物車、確認(rèn)定單等。本文只演示查看購物車商品,計算總價代碼。這是一個最簡易的購物車,完成的功能也簡單,大家可在此基礎(chǔ)上根據(jù)需要繼續(xù)擴充其它功能。
例如某企業(yè)網(wǎng)站中的在線定購模塊,一個B/S結(jié)構(gòu)的B-C電子商城系統(tǒng)購物車子系統(tǒng)的用例圖如圖1所示。

圖1 購物車子系統(tǒng)的用例圖
每個子用例對應(yīng)著添加商品,刪除商品,確認(rèn)下單等。
三、購物車HashTable代碼編寫
購物車的版本,一是目前流行的個性化服務(wù)界面(如淘寶購物),支持匿名用戶;二是使用數(shù)據(jù)庫,但是程序編寫量大,難支持匿名用戶;三是登錄結(jié)合ASP內(nèi)置對象sessin使用。我們只考慮最簡單實現(xiàn)購物功能。
在購物的時候會多次對各類商品進行挑選,增刪改的方式頻繁。每次購物都要進行數(shù)據(jù)庫操作,會增加服務(wù)器的負(fù)擔(dān),如果將選擇的物品信息存在客戶端,在最后下單的時候統(tǒng)一存儲數(shù)據(jù),建議使用HashTable來實現(xiàn)物品的增刪操作,利用Session或者Cookie保存已選的物品,這樣會減少與服務(wù)器的通信,節(jié)省數(shù)據(jù)庫的讀寫操作,提高了效率。
以下是部分代碼,其中數(shù)據(jù)庫連接對象Conn、數(shù)據(jù)庫中表的命名,字段命名等命名都是沿用多數(shù)人的習(xí)慣命名的。如shop指數(shù)據(jù)庫名稱,shopprice指商品單價, shopnum指商品數(shù)量等。
1.使用hashtable類引入命名空間。
Imports System.Collections
2.連接數(shù)據(jù)庫shop,使用數(shù)據(jù)庫中的表。
Dim Provider=”Provider=Microsoft.jet.OLEDB.4.0”
Dim Database=”Data Source=” & Server.MapPath(“shop.mdb”)
3.查看購物車商品,初始化購物車。
If Hash.Count=0 Then Msg.Text=”現(xiàn)在購物車是空的!”
……
Dim ArrKey(Hash.Count-1) As String
DimArrVal(Hash.Count-1) As Integer
Dim Products As String
Hash.Keys.CopyTo(ArrKey,0)
Hash.Values.CopyTo(ArrVal,0)
Products=”(‘” &Join(ArrKey,”’,’”)&”’)”
……
Conn=New OleDbConnection(Provider & “;”&Database)
……
4.讀出哈希表數(shù)據(jù),賦值DataSet實例,并添加新數(shù)據(jù)列。
Dim X As String
For Each X in Hash.Keys
Table1.Rows.Find(X).Item(“shopnum”)=Hash.Item(X)
Next
Table1.Columns.Add(“allprice”,GetType(Long),”shopprice*shopnum”))
……
遍歷一個哈希表Hashtable,只能用for each語句進行遍歷。統(tǒng)計商品數(shù)目并計算總價。Hashtable中的元素是一個鍵值對的集合,不能夠使用索引訪問。
四、總結(jié)
ASP.NET是Microsoft公司推出用于編寫動態(tài)網(wǎng)頁的強大新技術(shù),支持以可視化的方式建立企業(yè)級網(wǎng)站,可生成安全穩(wěn)定的應(yīng)用程序。.NET框架中提供了功能多而強大的類庫進行編程,如本文簡述的Hashtable類,并可使用VB.NET、C#、Jscript.NET等編程語言來開發(fā)。本文中代碼完全可以用C#或其它編程語言進行改寫。
電子商務(wù)網(wǎng)站普及到老百姓的日常生活、網(wǎng)上商店、書店、訂餐、售票,等等,這些都需要WEB站點開發(fā),并設(shè)有網(wǎng)上購物這一功能模塊,所以購物車程序的編寫就顯得非常重要。可在此購物車基礎(chǔ)上開發(fā)更安全,質(zhì)量更高,更有效,功能更完善的購物系統(tǒng)。
參考文獻:
[1]楊樹林,胡潔萍.ASP.NET程序設(shè)計案例教程[M].北京:人民郵電出版社,2012:62-64.
[2]朱印宏.Asp.NET2.0基礎(chǔ)與實例教程:基于VB.C#[M].北京:中國電力出版社,2007:421-422.
[3]王少鋒.面向?qū)ο蠹夹g(shù)UML教程[M].北京:清華大學(xué)出版社,2008.
[4]王有禮.ASP.NET2.0完全開發(fā)指南[M].北京:北京科海電子出版社,2008.
責(zé)任編輯:凈草
收稿日期:2016-05-26
基金項目:本文系安徽省自然科學(xué)基金項目“基于數(shù)據(jù)挖掘技術(shù)的商砼企業(yè)ERP的開發(fā)與成本控制應(yīng)用研究”(編號:KJ2013Z289) 階段性研究成果。
作者簡介:馮菁(1974-),女,上海人,高級工程師,碩士,研究方向為數(shù)據(jù)挖掘。
中圖分類號:TP311
文獻標(biāo)識碼:A
文章編號:1671-8275(2016)04-0129-02