摘 要: 介紹了基于B/S模式開發(fā)會員管理系統(tǒng)" title="會員管理系統(tǒng)">會員管理系統(tǒng)" title="會員管理系統(tǒng)">會員管理系統(tǒng)Web應(yīng)用軟件的實現(xiàn)原理和關(guān)鍵技術(shù),,提出了會員管理系統(tǒng)Web應(yīng)用軟件的設(shè)計方案,,闡述了開發(fā)軟件所采用的ASP.NET技術(shù)及數(shù)據(jù)庫觸發(fā)器技術(shù)在Web應(yīng)用程序中的應(yīng)用,重點論述了根據(jù)實際問題設(shè)計數(shù)據(jù)庫觸發(fā)器的實現(xiàn)方法以及在軟件功能中設(shè)計實現(xiàn)相關(guān)數(shù)據(jù)庫觸發(fā)器的點火條件,,實現(xiàn)觸發(fā)器的預(yù)定功能,。使用ASP.NET + MS SQL技術(shù)開發(fā)完成該系統(tǒng)的全部功能。
關(guān)鍵詞: B/S結(jié)構(gòu),;ASP.NET技術(shù),;觸發(fā)器技術(shù);管理系統(tǒng),;數(shù)據(jù)庫
健身房會員管理系統(tǒng)Web應(yīng)用軟件采用B/S體系結(jié)構(gòu),,使用ASP.NET服務(wù)器腳本技術(shù)和數(shù)據(jù)庫觸發(fā)器技術(shù),以MS SQL Server 2000為后臺數(shù)據(jù)庫,,結(jié)合HTML語言和JavaScript 腳本語言設(shè)計開發(fā)會員管理功能模塊,,實現(xiàn)會員卡管理、前臺刷卡等功能,。
1 系統(tǒng)的設(shè)計思想
1.1 會員管理系統(tǒng)的基本結(jié)構(gòu)
采用B/S體系結(jié)構(gòu),。B/S結(jié)構(gòu)是一種由瀏覽器、Web服務(wù)器和數(shù)據(jù)庫服務(wù)器組成的3層模式,,如圖1所示,,基于TCP/IP協(xié)議,只需開發(fā)和維護(hù)服務(wù)器端應(yīng)用程序,無需開發(fā)客戶端程序,。在這種模式下,,由于數(shù)據(jù)存放在數(shù)據(jù)庫服務(wù)器上,用戶只需通過瀏覽器進(jìn)行交互操作提交表單,,用Form表單的形式POST或GET的方法實現(xiàn)對數(shù)據(jù)庫的操作請求,。其工作過程為:當(dāng)用戶在瀏覽器上填好表單并提交HTTP請求時,Web服務(wù)器根據(jù)表單內(nèi)容分析解釋瀏覽器請求,,如果請求的內(nèi)容需要訪問數(shù)據(jù)庫服務(wù)器,,則調(diào)用ADO.NET由它來完成這個操作,然后將結(jié)果返回Web服務(wù)器,,Web服務(wù)器進(jìn)行格式處理后返回瀏覽器并顯示結(jié)果,。
會員管理系統(tǒng)的運行環(huán)境選擇Windows 2000 Server 為網(wǎng)絡(luò)服務(wù)器操作系統(tǒng)平臺,Web服務(wù)器采用Windows 2000 Server 組件IIS(Internet Information Server).NET框架開發(fā)工具包(.NET Framework SDK),、Microsoft 數(shù)據(jù)庫訪問組件2.7 (MDAC2.7),。
數(shù)據(jù)庫服務(wù)器采用MS SQL Server 2000數(shù)據(jù)庫服務(wù)器軟件,有非常靈活和安全的權(quán)限系統(tǒng),,數(shù)據(jù)類型豐富,,可以設(shè)計最理想的數(shù)據(jù)結(jié)構(gòu)。
客戶瀏覽器操作系統(tǒng)平臺采用Windows XP,,瀏覽器為IE 5.0或以上版本,。
1.2 采用的關(guān)鍵技術(shù)
1.2.1 ASP.NET技術(shù)
ASP.NET是一種編程框架,它在Web服務(wù)器上運行,,動態(tài)地生成和管理Web窗體頁,。ASP.NET服務(wù)器端動態(tài)網(wǎng)頁技術(shù)是.NET框架的一部分,是一種以.NET框架為基礎(chǔ)開發(fā)網(wǎng)上應(yīng)用程序的全新模式,,在這個新模式下采用VB.NET,、C#等程序設(shè)計語言開發(fā)應(yīng)用程序。ASP.NET文件一般由2部分組成,,第一部分是構(gòu)成頁面的HTML代碼,,在代碼的第一行添加引用Code-behind(隱藏代碼)的語句,該語句指明調(diào)用的服務(wù)器程序的文件名,,以文件擴(kuò)展名.aspx保存在IIS的發(fā)布目錄下,;第二部分由VB.NET或C#語言構(gòu)成的服務(wù)器程序代碼,它本身不能運行,,由相應(yīng)的.aspx文件調(diào)用,。若使用VB.NET編程,Code-behind文件擴(kuò)展名為.vb,;使用C#編程,,Code-behind文件擴(kuò)展名為.cs。使用Code-behind技術(shù)實現(xiàn)了服務(wù)器端程序和HTML代碼的徹底分離,,使得程序結(jié)構(gòu)清晰,。ASP.NET文件采用編譯后運行的方式,經(jīng)過編譯后的頁面再次訪問時就直接運行,,運行速度提高,。本軟件使用C#作為編程語言。
ASP.NET的數(shù)據(jù)訪問機制是采用ADO(Activex Data Object).NET訪問數(shù)據(jù)庫,,它既能在與數(shù)據(jù)源連接的環(huán)境下工作,,又能在斷開與數(shù)據(jù)庫連接的條件下工作。ADO.NET對象模型中有5個主要的組件,,分別是Connection,、Command、DataSet,、 DataAdapter以及DataReader,。其中DataSet數(shù)據(jù)集相當(dāng)于內(nèi)存中暫存的數(shù)據(jù)庫,從數(shù)據(jù)源中獲取數(shù)據(jù)后就斷開了與數(shù)據(jù)源之間的連接,。允許在DataSet中添加,、刪除、修改,、查詢,、統(tǒng)計數(shù)據(jù)。DataAdapter作為DataSet 和數(shù)據(jù)源之間的橋接器,,用于填充 DataSet和更新數(shù)據(jù)源,。DataAdapter經(jīng)常和DataSet一起配合使用。
1.2.2 數(shù)據(jù)庫觸發(fā)器技術(shù)
觸發(fā)器是一種實施復(fù)雜的完整性約束的特殊存儲過程,,當(dāng)對它所保護(hù)的數(shù)據(jù)進(jìn)行操作(包括插入,、刪除、更新)時自動激活,,防止對數(shù)據(jù)進(jìn)行不正確,、未授權(quán)或不一致的修改。SQL Server為每個觸發(fā)器創(chuàng)建2個專用表:inserted表和deleted表,,這是2張邏輯表,,由系統(tǒng)維護(hù),用戶不能直接對其進(jìn)行操作,,存放在內(nèi)存中,,邏輯表的數(shù)據(jù)結(jié)構(gòu)與被該觸發(fā)器作用的表的數(shù)據(jù)結(jié)構(gòu)相同。當(dāng)用戶對指定的表進(jìn)行操作(插入,、刪除,、更新)時,SQL Server將自動執(zhí)行在相應(yīng)觸發(fā)器中的SQL語句。觸發(fā)器工作完成后,,這2張邏輯表即被刪除,。本軟件創(chuàng)建3個觸發(fā)器。
1.3 會員管理系統(tǒng)的功能設(shè)計
會員的管理通過會員卡的方式進(jìn)行,,系統(tǒng)功能設(shè)計如圖2所示,。
1.4 數(shù)據(jù)庫的設(shè)計
1.4.1 數(shù)據(jù)表
根據(jù)系統(tǒng)管理的信息,建立用戶表,,包括用戶名,、權(quán)限、口令等字段,;建立會員信息表,,包含會員的基本信息及會員卡號、會員卡類型等信息,;建立會員卡表,,包含會員卡的基本信息且通過會員卡號與會員信息表建立一對一的關(guān)系;建立新會員卡表,,包含卡種類,、發(fā)行方式、發(fā)行量,、開始號碼,、價值等數(shù)據(jù)項;建立新會員卡號表,,定義各種類型會員卡的詳細(xì)卡號,;建立會員消費明細(xì)表,定義消費卡號,、消費開始及結(jié)束時間等字段,;建立卡名稱、卡類型,、國籍等字典數(shù)據(jù)表,。
1.4.2 視圖
定義會員刷卡信息列表數(shù)據(jù)視圖。在會員信息表和會員卡表中以會員卡號且卡類型相同為條件,,選擇導(dǎo)出必要的數(shù)據(jù),。
1.4.3 觸發(fā)器
(1)新卡號生成觸發(fā)器(Addno_trg):在新會員卡表(Me_NewCard_table)中建立新卡號生成觸發(fā)器,根據(jù)頁面表單中提供的卡初始卡號和數(shù)量點火觸發(fā)動態(tài)生成結(jié)束卡號,,并將設(shè)置好的新會員卡的相關(guān)信息和該卡的所有已生成的連續(xù)卡號插入到新會員卡號表(Me_ NewCard_No_table)中,。
(2)卡有效期生成觸發(fā)器(Getvalue_trg): 在會員卡表(MemberCard_Table)建立卡有效期生成觸發(fā)器,根據(jù)銷售的會員卡類型和銷售日期動態(tài)生成卡有效期,,并添入到會員卡表(MemberCard_Table)有效期字段(Me_Card _ValidDate)中,。在觸發(fā)器定義的SQL語句中,,使用DATEADD函數(shù),根據(jù)所銷售的會員卡類型生成卡有效期:若是年卡,,則在銷售時間上加一年,;若是半年卡,則在銷售時間上加六個月,;季卡,、月卡同理,。同時,,從新會員卡設(shè)置表(Me_NewCard_table)刪除所銷售的相關(guān)會員卡卡號,以保證卡號的一致性,。
(3)會員卡有效期驗證觸發(fā)器(CheckCard_trg):在會員刷卡明細(xì)表(Me_ConsumDetail_table)上建立會員卡有效期驗證觸發(fā)器,。該觸發(fā)器是一個插入操作觸發(fā)器,根據(jù)會員卡號查詢會員卡表,,讀取該會員卡的卡類型,、卡有效期、消費次數(shù)等信息,。將會員卡有效期驗證觸發(fā)器插入到會員刷卡明細(xì)表時,,執(zhí)行檢查會員卡有效期的SQL語句??ㄓ行隍炞C是利用SQL Server提供的事務(wù)管理功能實現(xiàn),,通過事務(wù)控制語句rollback transaction保證當(dāng)會員卡的有效期過期時,調(diào)用raiserror函數(shù)給出過期提示,。如果卡類型是次卡或是其他類型的卡,,累計消費次數(shù)大于卡的額定次數(shù)時,將根據(jù)消費刷卡時獲取的時間與卡有效時間比較,,大于有效期時將執(zhí)行卡有效期的SQL語句,,拋出已過期異常信息。
2 系統(tǒng)主要功能的實現(xiàn)方法
2.1 用戶登錄認(rèn)證功能
根據(jù)用戶的工作性質(zhì),,權(quán)限分為5級,,用戶名與相應(yīng)權(quán)限綁定。當(dāng)用戶使用用戶名和口令登錄系統(tǒng)時,,根據(jù)用戶輸入的登錄信息,,在數(shù)據(jù)庫的用戶表(PW_Table)中搜尋與此信息相匹配的記錄,驗證其合法性,。如果用戶合法,,則將其相應(yīng)權(quán)限存入Session變量;否則,,返回登錄頁面,,輸出“用戶名或密碼錯誤,!”。
2.2 會員卡管理功能
2.2.1 會員卡設(shè)置(Base_New_CT_In.aspx)
新會員卡設(shè)置功能用于設(shè)置各種預(yù)備銷售的會員卡,,表單提交信息包含會員卡個數(shù),、開始卡號、卡名稱和卡類型等信息,。系統(tǒng)從卡名稱和卡類型數(shù)據(jù)字典庫中查詢數(shù)據(jù)并將結(jié)果綁定在Web服務(wù)器DropList控件上供用戶選擇,,當(dāng)頁面進(jìn)行提交后,將表單數(shù)據(jù)插入數(shù)據(jù)庫新會員卡設(shè)置表(Me_NewCard_table)中,,形成新的會員卡,,同時新卡號生成觸發(fā)器(Addno_trg)點火,將生成的連續(xù)卡號添加到新會員卡號表(Me_NewCard_ No_table)中,,供會員卡銷售選號使用,。使用觸發(fā)器技術(shù),根據(jù)用戶提供的開始卡號和預(yù)制卡的數(shù)量動態(tài)生成連續(xù)的卡號,,便于管理,,當(dāng)卡的數(shù)量較大時,可有效地減少錯誤,。
2.2.2 會員卡銷售(Sell_Me_Input.aspx)
會員卡銷售功能可根據(jù)已設(shè)置好的各種新會員卡銷售給所需會員,,同時將會員卡信息和會員的個人信息添加到數(shù)據(jù)庫。軟件設(shè)計中采用級聯(lián)查詢調(diào)用的方法將查詢數(shù)據(jù)綁定在Web服務(wù)器DropList控件上,,根據(jù)銷售方式,、會員卡名稱和會員卡類型逐步確定會員需購置的會員卡當(dāng)前存在的卡號,當(dāng)頁面提交后,,將表單數(shù)據(jù)插入數(shù)據(jù)庫會員卡表(MemberCard_Table表)時,,卡有效期生成觸發(fā)器(Getvalue_trg)點火,完成相應(yīng)的功能,。使用級聯(lián)查詢控件綁定和觸發(fā)器技術(shù),,保證了會員卡信息的一致性和完整性。
2.3 前臺刷卡
前臺刷卡功能提供會員通過使用已購置的會員卡進(jìn)行消費,。會員使用會員卡在前臺辦理進(jìn)入手續(xù),,通過刷卡操作,軟件將檢查會員卡的合法性(一卡一人)和使用有效期,,檢查通過,,會員領(lǐng)取手牌和更衣柜號進(jìn)入健身房活動,消費結(jié)束時,,會員要辦理離開手續(xù),,否則,卡不能再次使用,。通過查詢數(shù)據(jù)視圖,,使用GridView控件在網(wǎng)頁上分頁并按照刷卡時間排序顯示已刷卡的會員卡號,、會員姓名、卡類型,、售卡日期,、卡有效期以及刷卡時間等信息。會員卡的合法性是查詢刷卡的會員卡號和會員卡類型在會員卡表中是否存在滿足條件的記錄,,如果沒有,,則使用JavaScript給出信息提示框,說明會員卡非法,。當(dāng)檢驗會員卡合法后,,軟件將該會員卡的卡號、刷卡時間等信息插入到會員刷卡明細(xì)表時,,會員卡有效期驗證觸發(fā)器點火,,完成有效期的驗證,;如果會員卡過期,,觸發(fā)器會拋出異常信息。為了能夠捕獲并處理這個異常信息,,在global.asax文件中的Application_Error 事件中編寫出錯時處理事件程序如下:
protected void Application_Error(Object sender, EventArgs e)
{ Exception LastError;
LastError = Server.GetLastError();
Response.Write(“