《電子技術應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 設計應用 > 健身房會員管理系統(tǒng)Web應用軟件的設計與實現(xiàn)
健身房會員管理系統(tǒng)Web應用軟件的設計與實現(xiàn)
李麗萍,魏權利
摘要: 介紹了基于B/S模式開發(fā)會員管理系統(tǒng)Web應用軟件的實現(xiàn)原理和關鍵技術,提出了會員管理系統(tǒng)Web應用軟件的設計方案,闡述了開發(fā)軟件所采用的ASP.NET技術及數(shù)據(jù)庫觸發(fā)器技術在Web應用程序中的應用,重點論述了根據(jù)實際問題設計數(shù)據(jù)庫觸發(fā)器的實現(xiàn)方法以及在軟件功能中設計實現(xiàn)相關數(shù)據(jù)庫觸發(fā)器的點火條件,實現(xiàn)觸發(fā)器的預定功能。使用ASP.NET + MS SQL技術開發(fā)完成該系統(tǒng)的全部功能。
Abstract:
Key words :
</a>

  摘 要: 介紹了基于B/S模式開發(fā)會員管理系統(tǒng)" title="會員管理系統(tǒng)">會員管理系統(tǒng)" title="會員管理系統(tǒng)">會員管理系統(tǒng)Web應用軟件的實現(xiàn)原理和關鍵技術,提出了會員管理系統(tǒng)Web應用軟件的設計方案,闡述了開發(fā)軟件所采用的ASP.NET技術及數(shù)據(jù)庫觸發(fā)器技術在Web應用程序中的應用,重點論述了根據(jù)實際問題設計數(shù)據(jù)庫觸發(fā)器的實現(xiàn)方法以及在軟件功能中設計實現(xiàn)相關數(shù)據(jù)庫觸發(fā)器的點火條件,實現(xiàn)觸發(fā)器的預定功能。使用ASP.NET + MS SQL技術開發(fā)完成該系統(tǒng)的全部功能。
   關鍵詞: B/S結構;ASP.NET技術;觸發(fā)器技術;管理系統(tǒng);數(shù)據(jù)庫

      健身房會員管理系統(tǒng)Web應用軟件采用B/S體系結構,使用ASP.NET服務器腳本技術和數(shù)據(jù)庫觸發(fā)器技術,以MS SQL Server 2000為后臺數(shù)據(jù)庫,結合HTML語言和JavaScript 腳本語言設計開發(fā)會員管理功能模塊,實現(xiàn)會員卡管理、前臺刷卡等功能。
1 系統(tǒng)的設計思想
1.1  會員管理系統(tǒng)的基本結構
  采用B/S體系結構。B/S結構是一種由瀏覽器、Web服務器和數(shù)據(jù)庫服務器組成的3層模式,如圖1所示,基于TCP/IP協(xié)議,只需開發(fā)和維護服務器端應用程序,無需開發(fā)客戶端程序。在這種模式下,由于數(shù)據(jù)存放在數(shù)據(jù)庫服務器上,用戶只需通過瀏覽器進行交互操作提交表單,用Form表單的形式POST或GET的方法實現(xiàn)對數(shù)據(jù)庫的操作請求。其工作過程為:當用戶在瀏覽器上填好表單并提交HTTP請求時,Web服務器根據(jù)表單內(nèi)容分析解釋瀏覽器請求,如果請求的內(nèi)容需要訪問數(shù)據(jù)庫服務器,則調(diào)用ADO.NET由它來完成這個操作,然后將結果返回Web服務器,Web服務器進行格式處理后返回瀏覽器并顯示結果。

 

 

 

    會員管理系統(tǒng)的運行環(huán)境選擇Windows 2000 Server 為網(wǎng)絡服務器操作系統(tǒng)平臺,Web服務器采用Windows 2000 Server 組件IIS(Internet Information Server).NET框架開發(fā)工具包(.NET Framework SDK)、Microsoft 數(shù)據(jù)庫訪問組件2.7 (MDAC2.7)。
數(shù)據(jù)庫服務器采用MS SQL Server 2000數(shù)據(jù)庫服務器軟件,有非常靈活和安全的權限系統(tǒng),數(shù)據(jù)類型豐富,可以設計最理想的數(shù)據(jù)結構。
客戶瀏覽器操作系統(tǒng)平臺采用Windows XP,瀏覽器為IE 5.0或以上版本。
1.2  采用的關鍵技術
1.2.1  ASP.NET技術
  ASP.NET是一種編程框架,它在Web服務器上運行,動態(tài)地生成和管理Web窗體頁。ASP.NET服務器端動態(tài)網(wǎng)頁技術是.NET框架的一部分,是一種以.NET框架為基礎開發(fā)網(wǎng)上應用程序的全新模式,在這個新模式下采用VB.NET、C#等程序設計語言開發(fā)應用程序。ASP.NET文件一般由2部分組成,第一部分是構成頁面的HTML代碼,在代碼的第一行添加引用Code-behind(隱藏代碼)的語句,該語句指明調(diào)用的服務器程序的文件名,以文件擴展名.aspx保存在IIS的發(fā)布目錄下;第二部分由VB.NET或C#語言構成的服務器程序代碼,它本身不能運行,由相應的.aspx文件調(diào)用。若使用VB.NET編程,Code-behind文件擴展名為.vb;使用C#編程,Code-behind文件擴展名為.cs。使用Code-behind技術實現(xiàn)了服務器端程序和HTML代碼的徹底分離,使得程序結構清晰。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ù)集相當于內(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ā)器技術
觸發(fā)器是一種實施復雜的完整性約束的特殊存儲過程,當對它所保護的數(shù)據(jù)進行操作(包括插入、刪除、更新)時自動激活,防止對數(shù)據(jù)進行不正確、未授權或不一致的修改。SQL Server為每個觸發(fā)器創(chuàng)建2個專用表:inserted表和deleted表,這是2張邏輯表,由系統(tǒng)維護,用戶不能直接對其進行操作,存放在內(nèi)存中,邏輯表的數(shù)據(jù)結構與被該觸發(fā)器作用的表的數(shù)據(jù)結構相同。當用戶對指定的表進行操作(插入、刪除、更新)時,SQL Server將自動執(zhí)行在相應觸發(fā)器中的SQL語句。觸發(fā)器工作完成后,這2張邏輯表即被刪除。本軟件創(chuàng)建3個觸發(fā)器。
1.3  會員管理系統(tǒng)的功能設計
會員的管理通過會員卡的方式進行,系統(tǒng)功能設計如圖2所示。

 

1.4  數(shù)據(jù)庫的設計
1.4.1  數(shù)據(jù)表

根據(jù)系統(tǒng)管理的信息,建立用戶表,包括用戶名、權限、口令等字段;建立會員信息表,包含會員的基本信息及會員卡號、會員卡類型等信息;建立會員卡表,包含會員卡的基本信息且通過會員卡號與會員信息表建立一對一的關系;建立新會員卡表,包含卡種類、發(fā)行方式、發(fā)行量、開始號碼、價值等數(shù)據(jù)項;建立新會員卡號表,定義各種類型會員卡的詳細卡號;建立會員消費明細表,定義消費卡號、消費開始及結束時間等字段;建立卡名稱、卡類型、國籍等字典數(shù)據(jù)表。
1.4.2  視圖
定義會員刷卡信息列表數(shù)據(jù)視圖。在會員信息表和會員卡表中以會員卡號且卡類型相同為條件,選擇導出必要的數(shù)據(jù)。
1.4.3  觸發(fā)器
(1)新卡號生成觸發(fā)器(Addno_trg):在新會員卡表(Me_NewCard_table)中建立新卡號生成觸發(fā)器,根據(jù)頁面表單中提供的卡初始卡號和數(shù)量點火觸發(fā)動態(tài)生成結束卡號,并將設置好的新會員卡的相關信息和該卡的所有已生成的連續(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ù)所銷售的會員卡類型生成卡有效期:若是年卡,則在銷售時間上加一年;若是半年卡,則在銷售時間上加六個月;季卡、月卡同理。同時,從新會員卡設置表(Me_NewCard_table)刪除所銷售的相關會員卡卡號,以保證卡號的一致性。
(3)會員卡有效期驗證觸發(fā)器(CheckCard_trg):在會員刷卡明細表(Me_ConsumDetail_table)上建立會員卡有效期驗證觸發(fā)器。該觸發(fā)器是一個插入操作觸發(fā)器,根據(jù)會員卡號查詢會員卡表,讀取該會員卡的卡類型、卡有效期、消費次數(shù)等信息。將會員卡有效期驗證觸發(fā)器插入到會員刷卡明細表時,執(zhí)行檢查會員卡有效期的SQL語句??ㄓ行隍炞C是利用SQL Server提供的事務管理功能實現(xiàn),通過事務控制語句rollback transaction保證當會員卡的有效期過期時,調(diào)用raiserror函數(shù)給出過期提示。如果卡類型是次卡或是其他類型的卡,累計消費次數(shù)大于卡的額定次數(shù)時,將根據(jù)消費刷卡時獲取的時間與卡有效時間比較,大于有效期時將執(zhí)行卡有效期的SQL語句,拋出已過期異常信息。
2 系統(tǒng)主要功能的實現(xiàn)方法
2.1  用戶登錄認證功能
  根據(jù)用戶的工作性質(zhì),權限分為5級,用戶名與相應權限綁定。當用戶使用用戶名和口令登錄系統(tǒng)時,根據(jù)用戶輸入的登錄信息,在數(shù)據(jù)庫的用戶表(PW_Table)中搜尋與此信息相匹配的記錄,驗證其合法性。如果用戶合法,則將其相應權限存入Session變量;否則,返回登錄頁面,輸出“用戶名或密碼錯誤!”。
2.2  會員卡管理功能
2.2.1  會員卡設置(Base_New_CT_In.aspx)

新會員卡設置功能用于設置各種預備銷售的會員卡,表單提交信息包含會員卡個數(shù)、開始卡號、卡名稱和卡類型等信息。系統(tǒng)從卡名稱和卡類型數(shù)據(jù)字典庫中查詢數(shù)據(jù)并將結果綁定在Web服務器DropList控件上供用戶選擇,當頁面進行提交后,將表單數(shù)據(jù)插入數(shù)據(jù)庫新會員卡設置表(Me_NewCard_table)中,形成新的會員卡,同時新卡號生成觸發(fā)器(Addno_trg)點火,將生成的連續(xù)卡號添加到新會員卡號表(Me_NewCard_ No_table)中,供會員卡銷售選號使用。使用觸發(fā)器技術,根據(jù)用戶提供的開始卡號和預制卡的數(shù)量動態(tài)生成連續(xù)的卡號,便于管理,當卡的數(shù)量較大時,可有效地減少錯誤。
2.2.2  會員卡銷售(Sell_Me_Input.aspx)
會員卡銷售功能可根據(jù)已設置好的各種新會員卡銷售給所需會員,同時將會員卡信息和會員的個人信息添加到數(shù)據(jù)庫。軟件設計中采用級聯(lián)查詢調(diào)用的方法將查詢數(shù)據(jù)綁定在Web服務器DropList控件上,根據(jù)銷售方式、會員卡名稱和會員卡類型逐步確定會員需購置的會員卡當前存在的卡號,當頁面提交后,將表單數(shù)據(jù)插入數(shù)據(jù)庫會員卡表(MemberCard_Table表)時,卡有效期生成觸發(fā)器(Getvalue_trg)點火,完成相應的功能。使用級聯(lián)查詢控件綁定和觸發(fā)器技術,保證了會員卡信息的一致性和完整性。
2.3  前臺刷卡
前臺刷卡功能提供會員通過使用已購置的會員卡進行消費。會員使用會員卡在前臺辦理進入手續(xù),通過刷卡操作,軟件將檢查會員卡的合法性(一卡一人)和使用有效期,檢查通過,會員領取手牌和更衣柜號進入健身房活動,消費結束時,會員要辦理離開手續(xù),否則,卡不能再次使用。通過查詢數(shù)據(jù)視圖,使用GridView控件在網(wǎng)頁上分頁并按照刷卡時間排序顯示已刷卡的會員卡號、會員姓名、卡類型、售卡日期、卡有效期以及刷卡時間等信息。會員卡的合法性是查詢刷卡的會員卡號和會員卡類型在會員卡表中是否存在滿足條件的記錄,如果沒有,則使用JavaScript給出信息提示框,說明會員卡非法。當檢驗會員卡合法后,軟件將該會員卡的卡號、刷卡時間等信息插入到會員刷卡明細表時,會員卡有效期驗證觸發(fā)器點火,完成有效期的驗證;如果會員卡過期,觸發(fā)器會拋出異常信息。為了能夠捕獲并處理這個異常信息,在global.asax文件中的Application_Error 事件中編寫出錯時處理事件程序如下:
protected void Application_Error(Object sender, EventArgs e)
{   Exception LastError;
      LastError = Server.GetLastError();
      Response.Write(“

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。