完整版客戶關(guān)系管理系統(tǒng)的設(shè)計_第1頁
完整版客戶關(guān)系管理系統(tǒng)的設(shè)計_第2頁
完整版客戶關(guān)系管理系統(tǒng)的設(shè)計_第3頁
完整版客戶關(guān)系管理系統(tǒng)的設(shè)計_第4頁
完整版客戶關(guān)系管理系統(tǒng)的設(shè)計_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第15 章客戶關(guān)系管理系統(tǒng)CRM的設(shè)計CRM的英文是 Customer Relationship Management,中文為客戶關(guān)系管理”。CRM軟件的主要目的就是通過對客戶詳細資料的深入分析,來提高客戶滿意程度,從而提高企業(yè)的競爭力的一種手段。網(wǎng)絡(luò)時代的客戶關(guān)系管理是利用現(xiàn)代信息手段,在企業(yè)與用戶之間建立15-1所示。一種實時的交互管理系統(tǒng)。本章主要講解客戶關(guān)系管理系統(tǒng)的設(shè)計,設(shè)計流程如圖客戶關(guān)系管理系統(tǒng)設(shè)計流程圖15.115-1客戶關(guān)系管理系統(tǒng)設(shè)計流程CRM的分類和價值體現(xiàn)15.1.1 CRM的分類CRM系統(tǒng)有三種類型:操作型、分析型和協(xié)同型。(1)操作型CRM :主要方便與客戶的交流,

2、簡化操作流程。利用業(yè)務(wù)系統(tǒng)以及渠道系 統(tǒng)收集的客戶信息,進行深層次的挖掘,提升系統(tǒng)的業(yè)務(wù)價值。(2)分析型CRM :了解客戶的需求,比如新業(yè)務(wù)有沒有客戶群、如何吸引他們、如何創(chuàng)造更高價值、潛在客戶群是什么類型等等。分析型CRM強調(diào)對各種數(shù)據(jù)的分析,并從中獲得有價值的信息。其主要包括的模塊類型應(yīng)為客戶分析、客戶分析、數(shù)據(jù)管理和市場定向,核心是分析已發(fā)生的事情,同時根據(jù)歷史數(shù)據(jù)和數(shù)據(jù)挖掘技術(shù),預(yù)測即將發(fā)生的事情。CRM其實可以(3)協(xié)同型CRM :整合各種職能,協(xié)調(diào)各個部門之間的聯(lián)系。協(xié)同型 算是輔助型軟件,主要實現(xiàn)的是數(shù)據(jù)共享和業(yè)務(wù)協(xié)同。CRM ;第二層分析型 CRM ;第CRM軟件系統(tǒng)主要表現(xiàn)

3、在這三個層面:第一層操作型 三層協(xié)同型CRM。15.1.2 CRM 的價值體現(xiàn)CRM 的價值主要體現(xiàn)在:(2)(3)(4) 化的指導(dǎo)。(5)(6)企業(yè)根據(jù) CRM 的分類和價值體現(xiàn)體現(xiàn),選擇合適的客戶關(guān)系管理軟件。(1)通過對用戶信息資源的整合,在企業(yè)內(nèi)部達到資源共享,從而為客戶提供更快速 周到的優(yōu)質(zhì)服務(wù),吸引和保持更多的客戶。通過對業(yè)務(wù)流程的重新設(shè)計,更有效地管理客戶關(guān)系,降低企業(yè)成本。 通過滿足客戶的個性需求,提高客戶的忠誠度和保有率。 根據(jù)對客戶特征、購買行為和價值取向的深入分析,為企業(yè)的決策提供科學(xué)、量客戶及其所有關(guān)聯(lián)信息,均得到合理的分類和管理。分析競爭對手,改善客戶關(guān)系,增加企業(yè)收

4、益。15.2 企業(yè)的 CRM 需求分析一個軟件的成功離不開一個好的需求分析, 其處于軟件開發(fā)的初期階段, 直接影響到后 期的模塊設(shè)計。本例的客戶關(guān)系管理系統(tǒng),是為中小型軟件公司定制的一款操作型 合自身業(yè)務(wù)特點,提出了下列需求:(1)詳細的客戶資料庫,并能實現(xiàn)按照不同信息進行查詢,允許添加、修改。(2)客戶按照不同地域劃分。地域主要分為5 大區(qū)域:華東、華北、東北、西北、華南,每個區(qū)域下面包含幾個主要的一級城市。客戶分為三種狀態(tài):已簽約、跟進、終止合同。 客戶分為不同的等級:有效客戶、潛在客戶、意向客戶。 公司內(nèi)部部門列表,并能列出部門內(nèi)部的人員。 公司競爭對手資料庫,允許實現(xiàn)查找、添加等功能。

5、 允許公司成員隨時都能查看公告。允許任何人發(fā)布公告信息。 公司成員根據(jù)每天的工作情況填寫工作日志。 銷售人員每天將聯(lián)系的用戶信息登記到聯(lián)系記錄表。CRM 。軟件公司結(jié)15.2.1 企業(yè)的需求列表(3)(4)(5)(6)(7)(8)(9)(10)實施人員每周提交自己的工作任務(wù)和計劃。(11)專門設(shè)立投訴功能,處理用戶的投訴信息,并有相應(yīng)的回訪記錄。( 12)專門設(shè)立用戶需求庫,處理用戶需要的功能列表。開發(fā)人員要每天查看,并由具體負責人給出處理意見。(13)實施人員每次實施完畢后,要登記實施記錄表,并填寫實施總結(jié)。( 14)客戶資料庫的聯(lián)系人和電話要求是客戶公司信息,可單獨建立聯(lián)系人資料庫, 記錄

6、所有與公司有關(guān)系的人的資料。項目經(jīng)理或者系統(tǒng)分析員以 Excel 表的形式,羅列出用戶的所有需求,上報給開發(fā)項目 組討論。15.2.2 分析企業(yè)的需求項目經(jīng)理根據(jù)呈報的用戶需求列表, 召集項目組成員, 安排項目的分工情況, 由項目小 組組長主持需求分析的會議。(1)(2)(3)(4)(5)(6)(7) 以上只是列出了需求分析的一些比較淺顯的內(nèi)容, 的斟酌,列出所有的疑問點,否則出現(xiàn)漏洞, 工作成本。仔細分析需求列表中的每一條, 不明白的地方,要提出來大家分析,并做會議記錄,由 分析人員去跟用戶確認。下面列表體現(xiàn)分析時的不確定因素: 詳細的客戶資料。詳細到什么程度,主要包括客戶的哪些信息?5 大

7、區(qū)域是固定在數(shù)據(jù)庫中的信息,還是允許用戶自定義。 發(fā)布公告信息的需求是否與當前 OA 系統(tǒng)沖突。 是否由專人處理客戶的投訴信息。權(quán)限的主要劃分依據(jù)是什么? 與其他現(xiàn)存系統(tǒng)是否掛鉤? 數(shù)據(jù)庫的選擇標準,是否根據(jù)已有硬件系統(tǒng)決定。引起用戶不滿或者程序返工, 都將提高軟件的在實際業(yè)務(wù)中, 每一條需求都要仔細15.2.3 體驗企業(yè)業(yè)務(wù)流程并確定最終需求根據(jù)需求分析會議討論的內(nèi)容和筆記, 分析人員親自到用戶處, 親身體驗企業(yè)的工作流 程,與企業(yè)負責人員詳細討論每一條需求,并最終確定需求,與企業(yè)簽定合同。CRM 系統(tǒng)需求的最終修改如下:(2)(3)(4)(5)(6)(7) 需求列表中的其他內(nèi)容不變。 確定

8、需求后,開始設(shè)計系統(tǒng)的模塊。(1)詳細的客戶資料,包括客戶名稱、使用的軟件版本、客戶地址、客戶的行業(yè)類型、 電話、主要聯(lián)系人和客戶所在區(qū)域。5 大區(qū)域由用戶自己添加,并可實現(xiàn)編輯。CRM 中不實現(xiàn)公告管理功能, OA 系統(tǒng)已經(jīng)實現(xiàn)。 投訴信息的處理,由投訴部人員決定 暫時不實現(xiàn)權(quán)限管理。與其他系統(tǒng)無任何聯(lián)系。 數(shù)據(jù)庫使用 SQL Server 系統(tǒng)。15.3 系統(tǒng)模塊設(shè)計需求分析之后, 項目小組討論需求的實現(xiàn)工具和方法, 詳細討論需求并確定最終模塊的 劃分。15.3.1 根據(jù)需求確定模塊內(nèi)容根據(jù)需求列表和功能相似的原則, 將整個系統(tǒng)分成 4個模塊: 基礎(chǔ)配置模塊、 客戶管理模塊、員工管理模塊和

9、客戶服務(wù)管理模塊。下面具體介紹這些模塊所包含的內(nèi)容。(1)基礎(chǔ)配置模塊:主要包括一些系統(tǒng)需要的基礎(chǔ)設(shè)置。有區(qū)域、客戶等級、客戶業(yè) 務(wù)類型、客戶狀態(tài)和部門設(shè)置 5部分。公司主要有 4個部門:開發(fā)部、銷售部、測試部和客 服部。模塊的結(jié)構(gòu)圖如 15-2所示。圖15-2 基礎(chǔ)配置模塊組成(2)客戶管理模塊:主要處理客戶的一些資料,以及與公司有關(guān)系的一些聯(lián)系人的信 息。該模塊的結(jié)構(gòu)如圖15-3所示。客戶管理模塊組成圖 15-3工作日志、(3)成員管理模塊:主要用于管理公司內(nèi)部的人員。包括人員的基本資料、 任務(wù)計劃等。該模塊的結(jié)構(gòu)如圖15-4所示。圖15-4 成員管理模塊組成(4)客戶服務(wù)管理模塊:主要處

10、理一些與客戶溝通的信息。包括客戶需求的處理、客 戶投訴的處理、客戶實施記錄、合同管理等,該模塊的結(jié)構(gòu)如圖15-5所示。圖15-5客戶服務(wù)管理模塊組成模塊劃分完畢后,根據(jù)模塊的內(nèi)容,進行類圖的設(shè)計。15.3.2分析功能模塊并設(shè)計類圖在實際流程中,要求每個功能都設(shè)計一個類,通常稱為面向?qū)ο笤O(shè)計。根據(jù)上一節(jié)中模塊功能的介紹,現(xiàn)在為功能設(shè)計類,并以圖形化的方式表示。(1)基礎(chǔ)配置模塊:基礎(chǔ)配置模塊完成一些必要的基本配置,功能相似,本實例設(shè)計 一個基礎(chǔ)配置類,來實現(xiàn)其功能?;A(chǔ)配置模塊的主要功能包括:添加區(qū)域、城市、獲取區(qū) 域ID,添加客戶等級、狀態(tài)和業(yè)務(wù)類型,添加部門。為模塊設(shè)計一個類,命名為Basi

11、cSet,圖15-6說明了類中的方法和方法的參數(shù),其中還包括參數(shù)的類型。In表示是輸入?yún)?shù),out表示輸出參數(shù)。BasicSet+AddArea(i n area name : stri ng) : bool +AddCity(i n cit yn ame : stri ng) : bool +GetArealD(i n area name : stri ng, out areaid : int) : int +AddGrade(i n grade name : stri ng) : bool +AddState(i n state name : stri ng) : bool+AddT yp

12、 e(i n typen ame : stri ng) : bool+AddDe part(i n departn ame : stri ng) : bool圖15-6基礎(chǔ)配置類靜態(tài)類圖(2)客戶管理模塊:主要包括兩大功能,客戶的管理和聯(lián)系人的管理??紤]到客戶和聯(lián)系人的屬性比較多, 采用實體設(shè)計的模式完成其設(shè)計。 兩大功能分別包含兩個類: 實體類 和實體方法類。客戶信息實體類,如圖15-7所示??蛻魧嶓w方法類,如圖 15-8所示。聯(lián)系人信息實體類,如圖15-9所示。聯(lián)系人實體方法類,如圖 15-10所示。Userl nfoEn tity-UserName +SoftVersi on : str

13、i ng +UserGrade : stri ng +UserState : stri ng +UserT ype : stri ng +City : stri ng +Address : stri ng +Lin kma n : stri ng +Phone : stri ng +Fax : stri ng +QQ : stri ng +Mail : stri ng +Peop leAmou nt : int圖15-7客戶信息實體類圖Userl nfoDA+ln sertUser(i n user : UserI nfoEn tity) : bool -GetCityID(i n cit y

14、n ame : stri ng, out cityid : int) : int -GetStateID(in state name : stri ng, out stateid : i nt) : int -GetT yp eID(i n typen ame : stri ng, out typ eid : int) : int -GetStateID(in state name : stri ng, out stateid : i nt) : int -Get Parameters。: sqlp arameter圖15-8客戶信息實體方法類圖Lin kma nEn tity+Name :

15、stri ng+Sex+Phone : stri ng +QQ : stri ng+Mail : stri ng+Birthday+Like : stri ng+Co mpany Name : stri ng +Note : stri ng圖15-9聯(lián)系人信息實體類圖Lin kma nDA+ln sertL in kma n(i n lin kma n : Lin kma nEn tity) : bool-Get Parameters。: sqlp arameter +GetBirthMa n() : datetime+GetCo mpany ID(i n companyn ame : str

16、i ng, out companyid : int) : int圖15-10聯(lián)系人信息實體方法類圖注意:實體方法類實現(xiàn)了對實體類的調(diào)用。(3) 成員管理模塊:管理內(nèi)部員工,主要包括員工的添加和員工所在部門的設(shè)置。使用實體設(shè)計模式實現(xiàn)其功能。成員信息實體類,參考類圖15-11。成員信息實體方法類圖,參考圖15-12Empio yeeE ntity+Name : stri ng +Phone : stri ng+Sex : stri ng +Mail : stri ng+De part : stri ng +Birthday : DateTime +Note : stri ng圖15-11員工信息

17、實體方法類圖EmpIo yeeDA+ln sertE mpio yee(i n empio yee : Empio yeeE ntity) : bool +GetDe partlD(i n departn ame : stri ng, out dep artid : int) : int +Get Parameters。: Sql Parameter圖15-12員工信息實體方法類圖(4) 客戶服務(wù)管理模塊:主要包括的方法有添加投訴、登記需求、簽訂合同和登記實施項目等,還有日志管理、任務(wù)管理和聯(lián)系記錄管理3個大的功能。為了減少代碼冗余,3個功能用實體類設(shè)計模式,而其他4個方法統(tǒng)一放在一個客戶服務(wù)

18、操作類中。受版面限制,本模塊的所有類圖設(shè)計,請參考隨書光盤。類圖設(shè)計完畢后,準備進行系統(tǒng)數(shù)據(jù)庫的設(shè)計。15.4數(shù)據(jù)庫設(shè)計而且數(shù)據(jù)表之間的關(guān)聯(lián)必須正數(shù)據(jù)庫設(shè)計主要考慮如何以最簡單的關(guān)系存儲數(shù)據(jù)信息, 確的體現(xiàn)。15.4.1數(shù)據(jù)庫的表信息根據(jù)需求列表和功能設(shè)計,將需要的信息分類,保存在不同的表中。 下面分別介紹這些表。(1)區(qū)域表:主要內(nèi)容是區(qū)域名稱。表結(jié)構(gòu)如表15-1所示。LinkRecordIDint(自增長列)I日志ID(2)城市表:包括城市名稱和所屬區(qū)域的 所示,其中PK表示主鍵,F(xiàn)K表示外鍵。ID。該表與區(qū)域表相關(guān)聯(lián),結(jié)構(gòu)如表15-2CityIDint(自增長列)城市IDAreaIDin

19、t區(qū)域IDCityNamenvarchar(20)城市名稱表15-2 城市表(City)信息(3)客戶等級表:主要是區(qū)別客戶是否與公司存在合同關(guān)系,或是否正準備與公司簽 訂合同等。目前主要有三個級別:潛在、意向、有效。結(jié)構(gòu)如表15-3所示。GradeIDint(自增長列)等級IDGradeNamenvarchar(20)等級名稱表15-3客戶等級表(UserGrade )信息(4)客戶業(yè)務(wù)類型表:主要是列出客戶的經(jīng)營范圍,所屬行業(yè)。結(jié)構(gòu)如表15-4所示。Typ eIDint(自增長列)類型IDTypeNamenvarchar(20)類型名稱表15-4客戶業(yè)務(wù)類型表(UserType )信息(5

20、)客戶狀態(tài)表:一般針對客戶等級為意向的用戶群。主要狀態(tài)有跟進和簽約。結(jié)構(gòu) 如表15-5所示。StateIDint(自增長列)狀態(tài)IDStateNamenvarchar(20)狀態(tài)名稱表15-5 客戶狀態(tài)表(UserState )信息(6)部門表:列出公司的主要組織結(jié)構(gòu)名稱,結(jié)構(gòu)如表15-6所示。Dep artIDint(自增長列)部門IDDep artNamenvarchar(20)部門名稱表15-6 部門表(Department )信息(7)客戶資料表:詳細描述用戶信息的表。該表與多個基礎(chǔ)設(shè)置表有關(guān)聯(lián),結(jié)構(gòu)如表15-7所示。表15-1 區(qū)域表(Area )信息AreaIDint(自增長列)區(qū)

21、域IDAreaNamenvarchar(20)區(qū)域名稱UserIDint(自增長列)客戶IDCityIDint城市IDGradeIDint客戶等級IDTyp eIDint客戶業(yè)務(wù)類型IDStateIDint客戶狀態(tài)IDUserNamenvarchar(20)客戶名稱UserAddressnvarchar(100)客戶聯(lián)系地址SoftVersionnvarchar(50)所用軟件版本UserLinkmannvarchar(20)客戶的主要聯(lián)系人UserP honenvarchar(20)客戶的聯(lián)系電話Emailnvarchar(20)郵箱QQnvarchar(20)QQ號Faxnvarchar(

22、20)傳真Peop leAmountint公司人員規(guī)模(8)聯(lián)系人表:與公司有關(guān)的人的詳細資料,結(jié)構(gòu)如表 15-8所示。聯(lián)系人通過 UserID 與用戶資料表進行關(guān)聯(lián),表示此聯(lián)系人屬于公司的客戶。 為了提高數(shù)據(jù)庫的訪問速度,此處 用bit類型表示性別,0表示男,1表示女。Bit類型有且只有這兩個值。表15-8 聯(lián)系人表(Linkman )信息LinkmanIDint(自增長列)聯(lián)系人IDUserIDint聯(lián)系人所屬公司LinkmanNamenvarchar(20)聯(lián)系人名稱Linkma nP honenvarchar(20)電話LinkmanEmailnvarchar(20)郵箱Linkman

23、QQnvarchar(20)QQ號LinkmanBirthdaydatetime聯(lián)系人的生日LinkmanLikenvarchar(50)聯(lián)系人的業(yè)務(wù)愛好LinkmanSexbit性別Notenvarchar(50)備注15-9所示。通過 DepartID 與(9)員工資料表:包括公司所有雇員的信息,結(jié)構(gòu)如表 部門表關(guān)聯(lián)。表15-9 員工資料表(Em pl oyeeinfo )信息Emp loyeelDint(自增長列)員工IDDep artIDint員工所屬部門Empio yeeNamenvarchar(20)聯(lián)系人名稱Empio yee Phonenvarchar(20)電話Empio y

24、eeEmailnvarchar(20)郵箱Empio yeeBirthdaydatetime聯(lián)系人的生日Empio yeeSexbit性別Notenvarchar(50)備注15-10所示。(10)工作日志表:包含所有員工登記的工作日志記錄。結(jié)構(gòu)如表表15-10 工作日志表(WorkLog )信息LogIDint(自增長列)日志IDEmp loyeelDint人員IDLogTitlenvarchar(20)日志主題LogContentnvarchar(100)日志內(nèi)容(11)聯(lián)系記錄表:登記銷售人員每天的工作情況,主要記錄聯(lián)系客戶的時間和內(nèi)容。 結(jié)構(gòu)如表15-11所示。表15-11 工作日志表

25、(LinkRecord )信息Emp loyeelDint人員IDUserIDint客戶IDLinkDatedatetime聯(lián)系時間LinkNotenvarchar(100)聯(lián)系內(nèi)容摘要15-12所示。(12)計劃任務(wù):針對實施人員制定的一個計劃安排表,結(jié)構(gòu)如表表15-12 計劃任務(wù)表(Task)信息TaskIDint(自增長列)任務(wù)IDEmp loyeelDint人員IDUserIDint客戶IDTaskTimenvarchar(20)任務(wù)主題TaskBiginDatedatetime任務(wù)開始日期TaskEndDatedatetime任務(wù)結(jié)束日期TaskNotenvarchar(100)任務(wù)

26、內(nèi)容摘要15-13所示。(13)投訴處理表:顯示所有的投訴信息和處理意見,結(jié)構(gòu)如表表15-13 投訴處理表(Notion )信息NotionIDint(自增長列)投訴IDEmp loyeelDint處理人員IDUserIDint投訴客戶IDNotionContentnvarchar(100)投訴內(nèi)容HandleContentnvarchar(100)處理意見NotionDatedatetime投訴日期HandleDatedatetime處理日期15-14 所(14)需求處理表:顯示用戶的新需求和開發(fā)人員給予的處理意見,結(jié)構(gòu)如表示。表15-14 需求處理表(Requirement )信息Requ

27、irementIDint(自增長列)需求IDEmp loyeelDint處理人員IDUserIDint需求客戶IDRequirementContentnvarchar(100)需求內(nèi)容HandleContentnvarchar(100)處理意見RequirementDatedatetime需求登記日期HandleDatedatetime處理日期15-15所示。(15)實施表:記錄實施人員每次的實施情況,結(jié)構(gòu)如表表15-15 實施表(Implement )信息Imp lementIDint(自增長列)實施IDEmp loyeelDint實施人員IDUserIDint被實施客戶IDSoftVers

28、ionnvarchar(20)實施軟件的版本Imp lementBiginDatedatetime實施開始日期ImpI ementEndDatedatetime實施結(jié)束日期Imp lementSumU pnvarchar(100)實施總結(jié)Notenvarchar(100)備注(16)合同表:管理與用戶之間的合同,主要用于合同到期時的提醒功能,結(jié)構(gòu)如表15-16所示。表15-13 合同表(Bargain )信息BargainlDint(自增長列)任務(wù)IDEmp loyeelDint簽合同人員IDUserIDint合同簽訂對象IDBargainBiginDatedatetime合同開始日期Barg

29、ainEndDatedatetime合同結(jié)束日期BargainNotenvarchar(100)合同內(nèi)容摘要說明:在數(shù)據(jù)庫的設(shè)計中,類似于區(qū)域設(shè)置、客戶狀態(tài)設(shè)置等這種表,被稱為字典表,表示預(yù)先設(shè)置好的各種選項。1542數(shù)據(jù)庫的表關(guān)系數(shù)據(jù)表之間的關(guān)系,通過ID來關(guān)聯(lián),因為每個表的ID都具有唯一性。主鍵表示本表內(nèi)部的唯一鍵值,外鍵表示本表與其他表之間的關(guān)聯(lián)ID。根據(jù)功能設(shè)計和表結(jié)構(gòu),現(xiàn)在分析這些表之間的關(guān)聯(lián)。(1)本實例是客戶關(guān)系管理系統(tǒng),所以客戶表幾乎與所有的表都有關(guān)系,都通過主鍵UserID與其他表關(guān)聯(lián)。圖15-13所示的是客戶表通過 一個名為UserID的字段,表示外鍵。UserID相關(guān)聯(lián)的

30、表。在其他表中都有rkTackI)nInnilo cflB-JCIe3VscrlafQWot i OUEIc tioB-lDI 阿 IymIDJsejIDTimUmfnt ID ImgleTcclSCTEtrll!JectIDCitTlSSta teTJTrBCiDCJscrlTaineJsCTid dfSonVrisUnJECTfbC 11( TlailF&iarca iulP生 IImploT eeU1n=ii)干ILi iLkficcordlEployQscrlDEe quire,ent15-13 通過UserID關(guān)聯(lián)的表(2)客戶表中的資料非常詳細,但并不是所有內(nèi)容都必須登記在其中的,

31、為了減少數(shù)據(jù)冗余,并且維護方便,列出來,并分別為其設(shè)計一個表,用于存儲信息。設(shè)計時將城市、客戶等級、客戶業(yè)務(wù)類型和客戶狀態(tài)4個類型單獨并將這4個表的主鍵保存在客戶表中,作為客戶表的外鍵。其關(guān)系如圖15-14所示。User 工 mfoUsM ElI Gt*.蛀Ii*ii丄mmIxca. JIC itylTanied誼CitTll Gride IPStitUDm crliincCseelddr essE4 ftV er=i4n6 tri ini mm n= e 匸ItlilQQFa.I e os 1 chmoiuit圖15-14客戶表的外鍵關(guān)聯(lián)圖15-15所示。所(3)在數(shù)據(jù)庫中還有一個很重要的表

32、:員工表,從功能模塊圖中可以發(fā)現(xiàn),每個操作功能都有員工的參與,根據(jù)模塊圖,設(shè)計員工表與其他表之間的關(guān)系,如圖有關(guān)聯(lián)表的外鍵都是EmployeelD 。Liiik&ecardBe(AKcKireFfH-rlt rrnoloMTD (TisrlDleKircFJn-tCQl EBpIoretlikfoIrrvIDCstrllEn Ifrje tISErnElojeflTifneEn 1 簪 eEnn 1 e fill L1 EiHclojetBiTtliriaEn 1 frj e f 9 f 1 Vo-teIrTQlTte.l業(yè)lorTitlerIrrwHe ex IDTot ioDContent

33、ffm Ti fl T F 廠 ri Ti p Ti 曾TafkllIlHplOTCCll) User IT 皿址Title 匸bs dLinTl圖15-15員工表的外鍵關(guān)聯(lián)圖除了這些主要的關(guān)系之外,數(shù)據(jù)庫中還有一些小關(guān)系,例如區(qū)域和城市之間的關(guān)聯(lián),門與員工之間的關(guān)聯(lián)等,在此不再詳細描述,讀者可參考隨書光盤。1543數(shù)據(jù)庫的操作類每一個軟件系統(tǒng),只要用到數(shù)據(jù)庫,都必須包括數(shù)據(jù)操作類,本例所有數(shù)據(jù)操作方法,都使用Microsoft提供的數(shù)據(jù)訪問助手SqlHelper。ExcuteN on Query、ExcuteScalar 禾口 此類共提供6個操作數(shù)據(jù)的方法。方便了程序的開發(fā)。此類的所有代碼S

34、qlHeIper是一個數(shù)據(jù)操作類,主要包括三類方法: ExcuteReader。雖然只有三類方法,但通過方法的重載, 通過這些方法,可以簡化邏輯層與數(shù)據(jù)層之間的交互, 請參考清單15-1。代碼清單15-1 數(shù)據(jù)操作類SqlHelper的代碼using System;using System.Data;using System.C on figurati on;using System.Web;using System.Web.Security;using System.Collect ions;using System.Data.SqlClient;/ / 數(shù)據(jù)庫的通用訪問代碼/ 此類為抽象類

35、,不允許實例化,在應(yīng)用時直接調(diào)用即可/ public abstract class SqlHelper/獲取數(shù)據(jù)庫連接字符串, 其屬于靜態(tài)變量且只讀, 項目中所有文檔可以直接使用, 但不能修改public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStringsSoftCRMConnectionString.ConnectionString;/ 哈希表用來存儲緩存的參數(shù)信息,哈希表可以存儲任意類型的參數(shù)。private static Hashtable par

36、mCache = Hashtable.Synchronized(new Hashtable();/ / 執(zhí)行一個不需要返回值的 SqlCommand 命令,通過指定專用的連接字符串。/ 使用參數(shù)數(shù)組形式提供參數(shù)列表/ / / 使用示例:/ int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, PublishOrders, new SqlParameter(prodid, 24);/ / 一個有效的數(shù)據(jù)庫連接字符串 / SqlCommand 命令類型 ( 存儲過程, T-SQL 語句, 等等。 )/ 存儲過程的

37、名字或者 T-SQL 語句 / 以數(shù)組形式提供 SqlCommand 命令中用到 的參數(shù)列表 / 返回一個數(shù)值表示此 SqlCommand 命令執(zhí)行后影響的行數(shù) public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter commandParameters)SqlCommand cmd = new SqlCommand();using (SqlConnection conn = new SqlConnection(conne

38、ctionString) /通過 PrePareCommand 方法將參數(shù)逐個加入到 SqlCommand 的參數(shù)集合PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery();/清空 SqlCommand 中的參數(shù)列表cmd.Parameters.Clear();return val;/ /執(zhí)行一條不返回結(jié)果的 SqlCommand ,通過一個已經(jīng)存在的數(shù)據(jù)庫連接/ 使用參數(shù)數(shù)組提供參數(shù)/ / / 使用示例:/ int result = Execut

39、eNonQuery(conn, CommandType.StoredProcedure, PublishOrders, new SqlParameter(prodid, 24);/ / 一個現(xiàn)有的數(shù)據(jù)庫連接 / SqlCommand 命令類型 ( 存儲過程, T-SQL 語句, 等等。 )/ 存儲過程的名字或者 T-SQL 語句 / 以數(shù)組形式提供 SqlCommand 命令中用到 的參數(shù)列表 / 返回一個數(shù)值表示此 SqlCommand 命令執(zhí)行后影響的行數(shù) public static int ExecuteNonQuery(SqlConnection connection, Command

40、Type cmdType, string cmdText, params SqlParameter commandParameters)SqlCommand cmd = new SqlCommand();null,cmdType,cmdText,PrepareCommand(cmd, connection, commandParameters);int val = cmd.ExecuteNonQuery();cmd.Parameters.Clear();return val;/ / 執(zhí)行一條不返回結(jié)果的 SqlCommand ,通過一個已經(jīng)存在的數(shù)據(jù)庫事物處理 / 使用參數(shù)數(shù)組提供參數(shù)/ /

41、/ 使用示例:ExecuteNonQuery(trans, CommandType.StoredProcedure, PublishOrders, new SqlParameter(prodid, 24);/ / 一個存在的 sql 事物處理 / SqlCommand 命令類型 ( 存儲過程, T-SQL 語句, 等等。 )/ 存儲過程的名字或者 T-SQL 語句 / 以數(shù)組形式提供 SqlCommand 命令中用到 的參數(shù)列表 / 返回一個數(shù)值表示此 SqlCommand 命令執(zhí)行后影響的行數(shù) public static int ExecuteNonQuery(SqlTransaction

42、trans, CommandType cmdType, string cmdText, params SqlParameter commandParameters)/ int resultSqlCommand cmd = new SqlCommand();PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);int val = cmd.ExecuteNonQuery();cmd.Parameters.Clear();return val;/ / 執(zhí)行一條返回結(jié)果集的 SqlComman

43、d 命令,通過專用的連接字符串。/ 使用參數(shù)數(shù)組提供參數(shù)/ / / 使用示例:/ SqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, PublishOrders, new SqlParameter(prodid, 24);/ / 一個有效的數(shù)據(jù)庫連接字符串 / SqlCommand 命令類型 ( 存儲過程, T-SQL 語句, 等等。 )/ 存儲過程的名字或者 T-SQL 語句 / 以數(shù)組形式提供 SqlCommand 命令中用到 的參數(shù)列表 / 返回一個包含結(jié)果的 SqlDataReaderpubl

44、ic static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter commandParameters)SqlCommand cmd = new SqlCommand();SqlConnection conn = new SqlConnection(connectionString);/ 在這里使用 try/catch 處理是因為,如果方法出現(xiàn)異常,則 SqlDataReader 就 不存在。 CommandBehavior

45、.CloseConnection 的語句就不會執(zhí)行,觸發(fā)的異常由 catch 捕獲。/ 關(guān)閉數(shù)據(jù)庫連接,并通過 throw 再次引發(fā)捕捉到的異常。tryPrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);cmd.Parameters.Clear();return rdr;catchconn.Close();throw;/ / 執(zhí)行一條返回第一條記錄第一列的 SqlCo

46、mmand 命令,通過專用的連接字符串。/ 使用參數(shù)數(shù)組提供參數(shù)/ / / 使用示例:/ Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, PublishOrders, new SqlParameter(prodid, 24);/ / 一個有效的數(shù)據(jù)庫連接字符串 / SqlCommand 命令類型 ( 存儲過程, T-SQL 語句, 等等。 )/ 存儲過程的名字或者 T-SQL 語句 / 以數(shù)組形式提供 SqlCommand 命令中用到 的參數(shù)列表 / 返回一個 object 類型的數(shù)據(jù), 可以通過 Conv

47、ert.ToType 方法轉(zhuǎn)換類型 public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter commandParameters)SqlCommand cmd = new SqlCommand();using (SqlConnection connection = new SqlConnection(connectionString) PrepareCommand(cmd, connection, null, cmdTy

48、pe, cmdText, commandParameters);object val = cmd.ExecuteScalar(); cmd.Parameters.Clear();return val;/ / 執(zhí)行返回第一條記錄第一列的 SqlCommand 命令,通過已經(jīng)存在的數(shù)據(jù)庫連接。/ 使用參數(shù)數(shù)組提供參數(shù)/ / / 使用示例:/ Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, PublishOrders, new SqlParameter(prodid, 24);/ / 一個已經(jīng)存在的數(shù)據(jù)庫連接 / SqlCommand 命令類型 ( 存儲過程, T-SQL 語句, 等等。 )/ 存儲過程的名字或者 T-SQL 語句 / 以數(shù)組形式提供 SqlCommand 命令中用到 的參數(shù)列表 / 返回一個 object 類型的數(shù)據(jù), 可以通過 Convert.ToType 方法轉(zhuǎn)換類型 public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論