客戶關(guān)系管理系統(tǒng)畢業(yè)論文
摘 要在對目前市面上的客戶管理系統(tǒng)(CRM)的廣泛調(diào)查和研究之后,發(fā)現(xiàn)很多市面上的客戶管理系統(tǒng)大多都是以產(chǎn)品為中心,忽略了客戶管理中最重要的部分客戶關(guān)系。隨著市場經(jīng)濟(jì)的不斷發(fā)展,客戶管理的重要性體現(xiàn)的越發(fā)明顯。企業(yè)要想生存發(fā)展,就必須與與之息息相關(guān)的客戶建立起良好的關(guān)系,不斷發(fā)展新客戶,以企業(yè)高質(zhì)量的產(chǎn)品、優(yōu)質(zhì)的服務(wù)、良好的資信吸引新客戶;經(jīng)常維系與老客戶的關(guān)系,以規(guī)范的客戶管理方式、溫馨的客戶關(guān)懷、高效的客戶服務(wù)來提升老客戶的忠誠度。由此,客戶管理系統(tǒng)應(yīng)運(yùn)而生。關(guān)鍵詞 CRM,客戶關(guān)系管理系統(tǒng),VB,數(shù)據(jù)庫目 錄摘 要4目 錄5前 言61 系統(tǒng)分析71.1 需求分析71.2 可行性分析72 總體設(shè)計82.1 項目規(guī)劃82.2系統(tǒng)功能結(jié)構(gòu)圖93 系統(tǒng)設(shè)計103.1 設(shè)計目標(biāo)103.2 開發(fā)及運(yùn)行環(huán)境103.3 數(shù)據(jù)庫設(shè)計113.3.1數(shù)據(jù)庫概要說明113.3.2 數(shù)據(jù)表結(jié)構(gòu)114 主要功能模塊設(shè)計124.1公共模塊設(shè)計(Mdl_Link模塊)124.2 主窗體設(shè)計134.2.1窗體設(shè)計134.2.2代碼設(shè)計164.3 客戶呼叫中心184.3.1 窗體設(shè)計184.3.2 代碼設(shè)計204.4 客戶投訴214.4.1窗體設(shè)計224.4.2代碼設(shè)計224.5 客戶投訴滿意程度分析244.5.1窗體設(shè)計244.5.2代碼設(shè)計254.6 客戶信息查詢264.6.1窗體設(shè)計265 總 結(jié)28致 謝29參考文獻(xiàn)30附錄1 數(shù)據(jù)表31附錄236前 言在全球一體化、企業(yè)互動和以INTERNET為核心的時代,企業(yè)面臨著如何發(fā)展?jié)撛诳蛻?,如何將社會關(guān)系資源變?yōu)槠髽I(yè)的銷售和發(fā)展資源的一系列難辦棘手的問題。在上述背景下,客戶管理系統(tǒng)應(yīng)運(yùn)而生。本系統(tǒng)本著把握客戶多樣化和個性化的特點(diǎn);以最快的速度響應(yīng)客戶需求;吸引新客戶,留住老客戶為原則。即從過去的以產(chǎn)品(Product-Centric)為中心的管理策略轉(zhuǎn)向以客戶為中心的(Customer-Centric)管理理念。系統(tǒng)旨在改善企業(yè)與客戶之間的關(guān)系,建立新型的運(yùn)營機(jī)制。本系統(tǒng)以企業(yè)級的整體客戶管理為解決方案,幫助企業(yè)建立統(tǒng)一的客戶資源、拓展銷售渠道、尋求最佳市場方式、規(guī)范企業(yè)銷售流程、提供科學(xué)分析方法,建立持久的客戶體系。其大容量客戶數(shù)據(jù)處理能力,讓您的企業(yè)從多渠道收集信息,快速發(fā)現(xiàn)核心客戶和潛在伙伴,進(jìn)而給企業(yè)帶來無限的利潤。以客戶為中心的理念在國外興起于20世紀(jì)50年代,當(dāng)時很多企業(yè)寄希望于通過改進(jìn)技術(shù)、壓縮生產(chǎn)周期、改善內(nèi)部資源管理來提高生產(chǎn)增長率和利潤,但事實(shí)上見效甚微。這樣企業(yè)開始從強(qiáng)調(diào)降低經(jīng)營成本的供應(yīng)方發(fā)展策略轉(zhuǎn)向了需求方策略。所謂需求方策略就是指與客戶聯(lián)系更加緊密,從客戶關(guān)系方面挖掘新能源的策略,CRM應(yīng)運(yùn)而生。所不同的是,現(xiàn)在計算機(jī)可以幫助人們實(shí)現(xiàn)這些看似并不復(fù)雜而實(shí)際操作起來非常繁瑣的工作。試想一下,當(dāng)我們需要查找一個客戶的電話號碼時,只需敲幾下鍵盤,就可以看到客戶的詳細(xì)資料(包括姓名、公司名稱、電話、E-mail等),所有這些都是一個完善的客戶管理系統(tǒng)所能完成的。 1 系統(tǒng)分析1.1 需求分析根據(jù)市場的需求,要求系統(tǒng)具有以下功能:q 由于該系統(tǒng)的使用對象較多,要求有嚴(yán)密的權(quán)限管理。q 具有數(shù)據(jù)備份及數(shù)據(jù)恢復(fù)的功能,確保系統(tǒng)的安全性。q 方便的全方位的數(shù)據(jù)查詢。q 強(qiáng)大的報表打印功能。q 在相應(yīng)的權(quán)限下,可以刪除或修改數(shù)據(jù)。1.2 可行性分析隨著科技的發(fā)展,競爭也越發(fā)激烈、殘酷,企業(yè)傳統(tǒng)的管理方式對于現(xiàn)今社會的競爭已明顯感覺到力不從心。客戶作為市場的最大資源,已成為市場營銷核心,誰爭取到了最多的客戶,誰就取的了最大的成功,對客戶的把握將最終決定企業(yè)的命運(yùn)。客戶關(guān)系管理系統(tǒng)正是在這種需求下經(jīng)過深入的市場調(diào)研和專家系統(tǒng)化的指導(dǎo)應(yīng)運(yùn)而生。系統(tǒng)具有完善的基礎(chǔ)信息維護(hù)和客戶信息維護(hù),強(qiáng)大的數(shù)據(jù)查詢及圖表分析功能,基本能夠滿足中小型企業(yè)的需要。2 總體設(shè)計2.1 項目規(guī)劃客戶管理系統(tǒng)是一個非常有特點(diǎn)的管理軟件,系統(tǒng)由基礎(chǔ)信息維護(hù)、客戶信息維護(hù)、客戶服務(wù)、信息查詢、數(shù)據(jù)管理、輔助工具、系統(tǒng)管理和幫助信息等幾個功能模塊組成,規(guī)劃系統(tǒng)功能模塊如下:q 基礎(chǔ)信息維護(hù)模塊基礎(chǔ)信息維護(hù)模塊主要包括區(qū)域信息設(shè)置、企業(yè)性質(zhì)設(shè)置、企業(yè)類型設(shè)置、企業(yè)資信設(shè)置、客戶級別設(shè)置和客戶滿意程度設(shè)置6部分。q 客戶信息維護(hù)模塊客戶信息維護(hù)模塊主要包括客戶信息、聯(lián)系人信息、業(yè)務(wù)往來、客戶呼叫中心和發(fā)送郵件5個部分。q 客戶服務(wù)模塊客戶服務(wù)模塊主要包括客戶反饋、客戶投訴、客戶反饋滿意程度分析和客戶投訴滿意程度分析4個部分。q 信息查詢模塊信息查詢模塊主要包括客戶信息查詢、聯(lián)系人信息查詢、客戶反饋滿意程度查詢、客戶投訴滿意程度查詢、客戶反饋查詢、客戶投訴查詢和國內(nèi)城市區(qū)號郵編查詢7個部分。q 數(shù)據(jù)管理模塊數(shù)據(jù)管理模塊主要包括客戶信封打印、客戶信息列表、聯(lián)系人信息列表和省份郵編信息打印4個部分。q 輔助工具模塊輔助工具模塊包括調(diào)用Word、調(diào)用Excel、計算器、登錄Internet和工作業(yè)務(wù)備忘5個部分。q 系統(tǒng)管理模塊系統(tǒng)管理模塊主要包括操作員設(shè)置、密碼修改、權(quán)限設(shè)置、系統(tǒng)數(shù)據(jù)清理、數(shù)據(jù)備份與恢復(fù)5個部分。q 幫助信息模塊幫助信息模塊主要包括本單位信息、關(guān)于、幫助等3個部分。2.2系統(tǒng)功能結(jié)構(gòu)圖圖1 客戶管理系統(tǒng)功能結(jié)構(gòu)圖3 系統(tǒng)設(shè)計3.1 設(shè)計目標(biāo)本系統(tǒng)是根據(jù)中小企業(yè)的實(shí)際需求而開發(fā)的,完全能夠?qū)崿F(xiàn)企業(yè)對客戶的自動化管理,通過本系統(tǒng)可以達(dá)到以下目標(biāo):q 系統(tǒng)運(yùn)行穩(wěn)定,安全可靠。q 界面設(shè)計美觀,人機(jī)交互界面友好。q 信息查詢靈活、方便、快捷、準(zhǔn)確,數(shù)據(jù)存儲安全可靠。q 滿足鍵盤和鼠標(biāo)的雙重操作,完全支持回車鍵。q 采用多種方式查詢數(shù)據(jù)。q 操作員可以隨時修改自己的口令。q 對用戶輸入的數(shù)據(jù),系統(tǒng)進(jìn)行嚴(yán)格的數(shù)據(jù)檢驗,盡可能排除人為的錯誤。q 數(shù)據(jù)保密性強(qiáng),為每個用戶設(shè)置相應(yīng)的權(quán)限級別。q 強(qiáng)大的圖表分析功能。q 收錄了全國各省市縣的郵政編碼及區(qū)號信息等二千多條記錄。q 不僅采用了傳統(tǒng)的數(shù)據(jù)報表打印方式,還可以向Word中打印輸出。3.2 開發(fā)及運(yùn)行環(huán)境系統(tǒng)開發(fā)平臺:Visual Basic 6.0數(shù)據(jù)庫管理系統(tǒng)軟件:SQL Server 2000運(yùn)行平臺:Windows xp/Windows 2000/Windows 98分辨率:最佳效果 800*6003.3 數(shù)據(jù)庫設(shè)計本系統(tǒng)采用SQL Server 2000 數(shù)據(jù)庫,系統(tǒng)數(shù)據(jù)庫名為db_Client,數(shù)據(jù)庫db_Client中包括18個數(shù)據(jù)表。下面分別給出數(shù)據(jù)庫概要說明和數(shù)據(jù)表的結(jié)構(gòu)。3.3.1數(shù)據(jù)庫概要說明如圖2所示的即為本系統(tǒng)中數(shù)據(jù)庫中的數(shù)據(jù)表的樹形結(jié)構(gòu)圖,該數(shù)據(jù)表樹型結(jié)構(gòu)圖包含系統(tǒng)所有數(shù)據(jù)表??梢郧逦胤磻?yīng)數(shù)據(jù)庫信息。圖2 數(shù)據(jù)庫概要說明3.3.2 數(shù)據(jù)表結(jié)構(gòu)由于篇幅所限,關(guān)于數(shù)據(jù)庫中的數(shù)據(jù)表請參見附錄二4 主要功能模塊設(shè)計4.1公共模塊設(shè)計(Mdl_Link模塊)通過使用模塊可以減少程序的代碼量。在本系統(tǒng)中,將通用的代碼(如:數(shù)據(jù)庫連接、Toolbar控件的按鈕設(shè)置代碼以及公共的全局變量等)都集中放置在一個數(shù)據(jù)模塊Mdl_Link中,節(jié)省了代碼量,提高了編程效率。數(shù)據(jù)模塊Mdl_Link中定義的公共變量如下所示:Public PublicStr As String 定義公共變量用于ADODC控件的數(shù)據(jù)連接,使程序模塊化Public sql As String 定義字符變量存儲SQL語句Public Tb As String 存儲數(shù)據(jù)表名稱Public Province As String 存儲省份名稱Public Myflag As Boolean 標(biāo)識數(shù)據(jù)模塊Mdl_Link中提供連接數(shù)據(jù)庫的程序代碼如下所示:數(shù)據(jù)連接模塊Public Function cnn() As ADODB.Connection 定義函數(shù) Set cnn = New ADODB.Connection 打開數(shù)據(jù)連接cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=db_Client" PublicStr = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=db_Client"End Function 數(shù)據(jù)模塊Mdl_Link中關(guān)于Toolbar控件設(shè)置按鈕狀態(tài)的通用代碼如下所示:定義設(shè)置Toolbar控件上按鈕狀態(tài)的函數(shù) Public Function tlbState(tlb As Toolbar, state As Boolean) With tlb If state = True Then 如果狀態(tài)變量為True .Buttons(1).Enabled = False : .Buttons(2).Enabled = False .Buttons(3).Enabled = False .Buttons(6).Enabled = False .Buttons(4).Enabled = True .Buttons(5).Enabled = True Else 如果狀態(tài)變量為False .Buttons(1).Enabled = True .Buttons(2).Enabled = True .Buttons(3).Enabled = True .Buttons(6).Enabled = True .Buttons(4).Enabled = False .Buttons(5).Enabled = False End If End WithEnd Function4.2 主窗體設(shè)計主窗體是顯示系統(tǒng)主要操作功能的面板,在系統(tǒng)主窗體的狀態(tài)欄中,可以顯示網(wǎng)址、當(dāng)前的操作員、當(dāng)前系統(tǒng)的日期、時間等信息,還可以通過菜單或單擊窗體左側(cè)的樹狀列表以及右側(cè)的功能列表來控制其他功能子窗體,并且根據(jù)不同的操作員賦予相應(yīng)的操作權(quán)限。系統(tǒng)主窗體的運(yùn)行結(jié)果如圖3所示。圖3 系統(tǒng)主窗體的運(yùn)行結(jié)果4.2.1窗體設(shè)計(1)在“工程”中新建一個窗體,將窗體的“名稱”設(shè)置為frm_Main,MaxButton屬性設(shè)置為False,Caption屬性設(shè)置為“客戶管理系統(tǒng)”,StartUpPosition屬性設(shè)置為2-屏幕中心。(2)利用VB提供的菜單編輯器設(shè)計菜單。從“工具”菜單上,選取“菜單編輯器”命令即可打開菜單編輯器,也可以在“工具欄”上單擊【菜單編輯器】按鈕。用菜單編輯器可以創(chuàng)建應(yīng)用程序的菜單,在已有的菜單上可以增加新的菜單項,或者修改和刪除已有的菜單和菜單項。通過菜單編輯器建立的菜單如圖3所示,在菜單編輯器對話框中設(shè)計菜單時的界面如圖4所示。| 圖4 菜單編輯器本系統(tǒng)的菜單設(shè)置如圖5所示。圖5 客戶管理系統(tǒng)菜單設(shè)置(3)向窗體上添加1個控件,設(shè)置其Align屬性設(shè)置為1-vbAlignTop(默認(rèn)設(shè)置)。1個ImageList控件,并將其與Toolbar控件相連,同時添加按鈕和圖片。(4)將Toolbar控件與ImageList控件相連。(5)向窗體上添加1個TreeView控件并將其與ImageList控件連接。(6)向窗體中添加1個StatusBar控件,在StatusBar控件上單擊鼠標(biāo)右鍵選擇“屬性”,在彈出的屬性頁對話框中選擇“窗格”選項卡,如圖6所示,在圖中單擊【插入窗格】按鈕,可以在StatusBar控件中添加窗格,同時可以設(shè)置添加后窗格的文本內(nèi)容、工具欄提示文本信息和寬度等信息,如果想刪除窗格,則通過“索引”旁邊的箭頭,選中要刪除的窗格,然后單擊【刪除窗格】按鈕即可刪除。圖6 設(shè)置StatusBar控件中的窗格(7)向窗體上添加ListView控件。4.2.2代碼設(shè)計通過主窗體當(dāng)中的菜單項,可以控制系統(tǒng)中各個子窗體,現(xiàn)以“輔助工具”菜單為例,介紹調(diào)用系統(tǒng)子窗體的代碼。Private Sub Menu6_Click(Index As Integer)Select Case Index 輔助工具Case 0 調(diào)用Word ShellExecute Me.hWnd, "open", "winword.exe", "", 1, 5Case 1 調(diào)用Excel ShellExecute Me.hWnd, "open", "excel.exe", "", 1, 5Case 2 調(diào)用計算器 ShellExecute Me.hWnd, "open", "CALC.EXE", "", 1, 5Case 3 登錄Internet ShellExecute Me.hWnd, "open", "", 1, 1, 5Case 5 工作備忘 Load Frm_Fzgj_Gzbw Frm_Fzgj_Gzbw.Show 1End SelectEnd Sub在窗體啟動的時候,首先查看工作備忘表(tb_Client_gzbw)中是否有要提醒的信息,如果有,則提示相應(yīng)的信息,否則直接加載窗體。其實(shí)現(xiàn)的關(guān)鍵代碼下:Dim rs1 As New ADODB.Recordset 定義數(shù)據(jù)集對象打開數(shù)據(jù)連接 rs1.Open "select * from tb_Client_gzbw where gzbw_txrq=" + Str(Date) + "", cnn, adOpenKeysetIf rs1.RecordCount > 0 Then 如果記錄數(shù)大于零 If MsgBox("今日重要工作:" & Trim(rs1.Fields("gzbw_bt") & ",是否查看詳細(xì)信息?", 4, "信息提示") = vbYes Then 將SQL語句賦給sql變量 sql = "select * from tb_Client_gzbw where gzbw_txrq=" + Str(Date) + "" 顯示工作備忘窗體 Load Frm_Fzgj_Gzbw Frm_Fzgj_Gzbw.Show 1 End IfEnd Ifrs1.Close 關(guān)閉數(shù)據(jù)對象在程序運(yùn)行時,可通過單擊Toolbar控件上的按鈕,來調(diào)用相應(yīng)的子功能窗體,實(shí)現(xiàn)增加、刪除、修改和查找功能。其實(shí)現(xiàn)的代碼如下:Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.IndexCase 1 Load Frm_Khxxwh_kh 調(diào)用客戶信息窗體 Frm_Khxxwh_kh.Show 1Case 2 Load Frm_Khxxwh_Lxr 調(diào)用聯(lián)系人信息窗體 Frm_Khxxwh_Lxr.Show 1Case 3 Load Frm_Khxxwh_Yjfs 調(diào)用發(fā)送郵件窗體 Frm_Khxxwh_Yjfs.Show 1Case 4 Load Frm_Xxcx_Khxxcx 調(diào)用客戶信息查詢窗體 Frm_Xxcx_Khxxcx.Show 1Case 7 End 關(guān)閉退出End SelectEnd Sub在程序運(yùn)行時,當(dāng)用鼠標(biāo)單擊TreeView控件中的節(jié)點(diǎn)時,在右邊的ListView控件中就可以顯示該節(jié)點(diǎn)下的相應(yīng)的子功能圖標(biāo)。該功能的實(shí)現(xiàn)是通過在TreeView1控件的NodeClick事件實(shí)現(xiàn)的。下面以“基礎(chǔ)信息維護(hù)”菜單為例介紹其主要實(shí)現(xiàn)的方法。 If TreeView1.SelectedItem.key = "基礎(chǔ)信息維護(hù)" Then ListView1.ListItems.Clear 清除ListView中的項目 向ListView控件中添加項目并設(shè)置圖片 Set itmX = ListView1.ListItems.Add(, , "區(qū)域信息設(shè)置", 3) Set itmX = ListView1.ListItems.Add(, , "企業(yè)性質(zhì)設(shè)置", 4) Set itmX = ListView1.ListItems.Add(, , "企業(yè)類型設(shè)置", 6) Set itmX = ListView1.ListItems.Add(, , "企業(yè)資信設(shè)置", 5) Set itmX = ListView1.ListItems.Add(, , "客戶級別設(shè)置", 7) Set itmX = ListView1.ListItems.Add(, , "客戶滿意程度設(shè)置", 8) Exit Sub 退出本事件 End If在程序運(yùn)行時,StatusBar控件中的時間顯示的是當(dāng)前系統(tǒng)的時間,并跟隨系統(tǒng)時間發(fā)生變化。其實(shí)現(xiàn)方式是:向窗體中添加時鐘控件,并將其Enabled屬性設(shè)置為True,Interval屬性設(shè)置為60。并添加如下的代碼:Private Sub Timer1_Timer() 顯示系統(tǒng)時間 Frm_Main.StatusBar1.Panels(3).Text = Format(Date, "long date") + Format(Now, " hh點(diǎn)mm分ss秒")End Sub4.3 客戶呼叫中心客戶呼叫中心是客戶管理系統(tǒng)中比較重要的部分,是企業(yè)利用現(xiàn)代通信手段集中處理與客戶交互過程的機(jī)構(gòu)。在客戶呼叫中心中能夠根據(jù)客戶的電話號碼可以顯示該客戶簡單的信息,同時可以呼叫該客戶,并可查詢該號碼客戶的詳細(xì)信息,以及聯(lián)系人的相關(guān)信息。在程序運(yùn)行時,單擊“客戶信息維護(hù)”主菜單下的“客戶呼叫中心”子菜單,系統(tǒng)將調(diào)用“客戶呼叫中心”窗體?!翱蛻艉艚兄行摹贝绑w的運(yùn)行結(jié)果如圖7所示。圖7 客戶呼叫中心窗體的運(yùn)行結(jié)果4.3.1 窗體設(shè)計(1)在“工程”中新建一個窗體,將窗體的“名稱”設(shè)置為Frm_Khxxwh_Hjzx,MaxButton屬性設(shè)置為False。Caption屬性設(shè)置為“客戶呼叫中心”。(2)向窗體上添加1個Frame控件,設(shè)置其Caption屬性為空,在窗體中用于標(biāo)識分組,使窗體顯得規(guī)整。并向其中添加1個Label控件,將該標(biāo)簽控件的Caption屬性設(shè)置為“請輸入或選擇客戶公司電話”。(3)向窗體上添加1個ComboBox控件,設(shè)置其“名稱”屬性為Cbx_Khdh,Text屬性為Cbx_Khdh,Style屬性為0Dropdown Combo。該控件用于顯示客戶的公司電話。(4)向窗體上添加2個Frame控件,分別設(shè)置其Caption屬性值為“客戶簡單信息”和空,并向其中添加若干Label控件。(5)向窗體上添加若干TextBox控件,并將其設(shè)置為控件數(shù)組。(6)向窗體中添加1個MSComm控件,由于該控件屬于ActiveX控件,在使用之前必須從“部件”對話框中添加到工具箱。添加方法如下:在“工程”/“部件”對話框中勾選“Microsoft Comm Control 6.0”列表項,如圖8所示。單擊【確定】按鈕之后即可將MSComm控件添加到工具箱當(dāng)中。圖8 添加MSComm控件(7)在窗體上添加4個CommandButton控件,分別將其“名稱”屬性和Caption屬性設(shè)置為Cmd_Hj和“開始呼叫”、Cmd_Kh和“客戶詳細(xì)信息”、Cmd_Lxr和“聯(lián)系人信息”、Cmd_Exit和“退出”。其擺放位置如圖9所示。圖9 客戶呼叫中心窗體的設(shè)計界面4.3.2 代碼設(shè)計在窗體加載時,向Cbx_khdh組合框中添加客戶電話,當(dāng)用戶在該文本框中選擇相應(yīng)的項目時,在下面的“客戶簡單信息”框架中就可以顯示出相應(yīng)的信息,其實(shí)現(xiàn)的代碼如下:Private Sub Form_Load()Dim rs1 As New ADODB.Recordset 定義數(shù)據(jù)集對象rs1.Open "select * from tb_khxx ", cnn, adOpenKeyset 打開數(shù)據(jù)連接If rs1.RecordCount > 0 Then 如果記錄數(shù)大于零 For i = 0 To rs1.RecordCount - 1 從零開始到記錄總數(shù)減1作循環(huán) Cbx_Khdh.AddItem Trim(rs1.Fields("khxx_gsdh") 向Cbx_Khdb組合框中添加數(shù)據(jù)項目 rs1.MoveNext 數(shù)據(jù)對象向下移動一條記錄 Next i 循環(huán)加一 If Cbx_Khdh.ListCount > 0 Then 如果Cbx_Khdh中的數(shù)據(jù)項目數(shù)不為零 Cbx_Khdh.ListIndex = 0 在Cbx_Khdh中顯示第一條數(shù)據(jù)項 Else 否則 Cbx_Khdh.Text = "請選擇" 顯示“請選擇”信息 End IfEnd Ifrs1.Close 關(guān)閉數(shù)據(jù)集對象End Sub根據(jù)公司的電話號碼,單擊【開始呼叫】按鈕,可以呼叫該用戶。如下面的代碼所示:Private Sub Cmd_Hj_Click() 開始呼叫If Cbx_Khdh.Text = "" Then 如果組合框為空MsgBox "請您輸入電話號碼!", vbInformation, "客戶管理系統(tǒng)"Cbx_Khdh.SetFocus 將焦點(diǎn)設(shè)置在組合框上Else 否則MSComm1.CommPort = 1 設(shè)置通信端口號MSComm1.Settings = "4800,N,8,1" 設(shè)置波特率、奇偶校驗位、數(shù)據(jù)位和停止位參數(shù)MSComm1.PortOpen = TrueMSComm1.Output = "ATDT" & Cbx_Khdh.Text & vbCrMsgBox "請聽電話!", vbpuestion, "客戶管理系統(tǒng)"MSComm1.PortOpen = FalseEnd IfEnd Sub單擊【客戶詳細(xì)信息】按鈕,可以調(diào)用“客戶信息”窗體。通過定義的公共字符變量sql,可以在調(diào)用“客戶信息”窗體時,直接顯示該客戶的信息。其實(shí)現(xiàn)的關(guān)鍵代碼如下:Private Sub Cmd_Kh_Click() 調(diào)用客戶詳細(xì)信息Dim rs3 As New ADODB.Recordset 定義數(shù)據(jù)集變量打開數(shù)據(jù)對象rs3.Open "select * from tb_khxx where khxx_gsdh=" + Cbx_Khdh.Text + "", cnn, adOpenKeysetIf rs3.RecordCount > 0 Then 如果數(shù)據(jù)記錄大于零 sql = "select * from tb_khxx where khxx_gsdh=" + Cbx_Khdh.Text + "" 將SQL語句賦給sql字符變量 Load Frm_Khxxwh_kh 調(diào)用客戶信息窗體 Frm_Khxxwh_kh.Show 1End IfEnd Sub在本窗體關(guān)閉前,將sql變量清空,避免對其他窗體造成影響。其實(shí)現(xiàn)代碼如下:Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)sql = "" 清空sql變量End Sub4.4 客戶投訴客戶投訴是企業(yè)了解客戶意見的重要手段之一。在本系統(tǒng)中用戶可以通過點(diǎn)擊客戶服務(wù)菜單下的客戶投訴子菜單,進(jìn)入到客戶投訴窗體中。該窗體具有對客戶投訴信息進(jìn)行增加、刪除、修改和查找的功能,并可以通過單擊DataGrid控件來瀏覽客戶投訴信息??蛻敉对V窗體的運(yùn)行結(jié)果如圖13所示。圖13 客戶投訴窗體的運(yùn)行結(jié)果4.4.1窗體設(shè)計(1)在“工程”中新建一個窗體,將窗體的“名稱”設(shè)置為Frm_Khfw_Khts,Caption屬性設(shè)置為“客戶投訴”,MaxButton屬性設(shè)置為False。(2)向窗體上添加1個Toolbar控件,1個ImageList控件,并將兩個控件相連。(3)向窗體上添加2個ComboBox控件,將控件的Style屬性設(shè)置為0Dropdown Combo?!懊Q”屬性分別設(shè)置為Cbx_Khmc和Cbx_Myd,分別用于存儲客戶名稱和客戶滿意度信息。(4)向窗體上添加1個DTPicker控件,“名稱”屬性設(shè)置為Dtp_Tsrq,用于顯示客戶投訴日期。(5)向窗體上添加1個ADO控件和1個DataGrid控件,設(shè)置DataGrid控件的“名稱”為Dgr_Khts,DataSource屬性設(shè)置為Adodc1,AllowUpdate屬性設(shè)置為False。Adodc1控件的RecordSource屬性設(shè)置為tb_Client_khts,CommandType屬性設(shè)置為2adCmdTable,Visible屬性設(shè)置為False。其中ADO控件用于連接客戶投訴表,DataGrid控件用于顯示客戶投訴表中的數(shù)據(jù)信息。(6)向窗體上添加若干個Label控件和TextBox控件,并設(shè)置TextBox控件為控件名為Text1的控件數(shù)組。4.4.2代碼設(shè)計在“客戶投訴”窗體加載的時候,首先建立數(shù)據(jù)連接,然后調(diào)用自定義過程來設(shè)置數(shù)據(jù)表的表頭。并將客戶名稱和客戶滿意度信息添加到ComboBox控件中,并設(shè)置其顯示第一條記錄。其實(shí)現(xiàn)的關(guān)鍵代碼如下:Private Sub Form_Load() Adodc1.ConnectionString = PublicStr 連接數(shù)據(jù)庫 Call Dgr_Title 調(diào)用本模塊中的過程 tlbState Toolbar1, False 調(diào)用公共模塊中的自定義過程 Dim rs2 As New ADODB.Recordset 定義數(shù)據(jù)集對象 rs2.Open "select * from tb_khxx ", cnn, adOpenKeyset 建立數(shù)據(jù)連接 If rs2.RecordCount > 0 Then 如果記錄數(shù)大于零 For i = 0 To rs2.RecordCount - 1 從零到記錄數(shù)減1作循環(huán) Cbx_Khmc.AddItem Trim(rs2.Fields("khxx_mc") 向添加Cbx_Khmc中添加數(shù)據(jù)項 rs2.MoveNext 數(shù)據(jù)記錄移至下一條 Next i 循環(huán)加一 End If If Cbx_Khmc.ListCount = 0 Then 如果Cbx_Khmc中的數(shù)據(jù)項為0 Cbx_Khmc.Text = "" 顯示空 Else 否則 Cbx_Khmc.ListIndex = 0 顯示第一條記錄 End If rs2.Close 關(guān)閉記錄集 Dim rs3 As New ADODB.Recordset rs3.Open "select * from tb_Client_khmyd ", cnn, adOpenKeyset If rs3.RecordCount > 0 Then For i = 0 To rs3.RecordCount - 1 Cbx_Myd.AddItem Trim(rs3.Fields("khmyd_myd") 向Cbx_Myd中添加數(shù)據(jù)項 rs3.MoveNext Next i End If If Cbx_Myd.ListCount = 0 Then Cbx_Myd.Text = "" Else Cbx_Myd.ListIndex = 0 End If rs3.Close Call view_data 調(diào)用本模塊中的子定義過程顯示數(shù)據(jù)信息 For i = 0 To Text1.UBound Text1(i).Enabled = False Next i Dtp_Tsrq.Value = Date: Cbx_Khmc.Enabled = False : Cbx_Myd.Enabled = False : Dtp_Tsrq.Enabled = FalseEnd Sub本系統(tǒng)中的數(shù)據(jù)庫采用的是英文字段,因此在數(shù)據(jù)表顯示的時候,將會顯示英文字段,所以,在程序運(yùn)行時,當(dāng)遇到用于顯示數(shù)據(jù)信息的時候,先調(diào)用自定義過程,設(shè)置DataGrid控件中的表頭為中文,自定義過程的代碼如下:Sub Dgr_Title() 設(shè)置DataGrid控件的標(biāo)題Dgr_Khts.Columns(0).Caption = "客戶投訴編號" : Dgr_Khts.Columns(1).Caption = "企業(yè)名稱"Dgr_Khts.Columns(2).Caption = "投訴人" : Dgr_Khts.Columns(3).Caption = "投訴主題"Dgr_Khts.Columns(4).Caption = "投訴內(nèi)容" : Dgr_Khts.Columns(5).Caption = "投訴日期"Dgr_Khts.Columns(6).Caption = "處理辦法" : Dgr_Khts.Columns(7).Caption = "客戶滿意度"Dgr_Khts.Columns(8).Caption = "投訴受理人" : Dgr_Khts.Columns(9).Caption = "備注信息"End Sub在本窗體中將數(shù)據(jù)信息顯示定義為自定義過程,在顯示數(shù)據(jù)信息時,調(diào)用自定義過程,這樣可避免同樣的代碼重復(fù)編寫,提高程序代碼的可重用性。數(shù)據(jù)信息顯示自定義過程的關(guān)鍵代碼如下:Sub view_data() If Adodc1.Recordset.RecordCount > 0 Then Text1(0).Text = Dgr_Khts.Columns(0) : Cbx_Khmc.Text = Dgr_Khts.Columns(1) Text1(1).Text = Dgr_Khts.Columns(2) : Text1(2).Text = Dgr_Khts.Columns(3) Text1(3).Text = Dgr_Khts.Columns(4) : Dtp_Tsrq.Value = Dgr_Khts.Columns(5) Text1(4).Text = Dgr_Khts.Columns(6) : Cbx_Myd.Text = Dgr_Khts.Columns(7) Text1(5).Text = Dgr_Khts.Columns(8) : Text1(6).Text = Dgr_Khts.Columns(9) End IfEnd Sub4.5 客戶投訴滿意程度分析“客戶投訴滿意程度分析”窗體可以根據(jù)客戶投訴的滿意程度,以不同的形式(條形、線形、三維、列表)顯示客戶對投訴處理的滿意程度。在程序運(yùn)行時,單擊“客戶服務(wù)”主菜單下的“客戶投訴滿意程度分析”子菜單,即可進(jìn)入到“客戶投訴滿意程度分析”窗體中。該窗體的運(yùn)行結(jié)果如圖14所示。圖14 客戶滿意程度分析運(yùn)行結(jié)果4.5.1窗體設(shè)計(1)在“工程”中新建一個窗體,將窗體的“名稱”設(shè)置為Frm_Khfw_Tsmydfx,Caption屬性設(shè)置為“客戶投訴滿意程度分析”,MaxButton屬性設(shè)置為False。(2)向窗體中添加1個MSChart控件,由于該控件屬于ActiveX控件,在使用之前必須從“部件”對話框中添加到工具箱。添加方法如下:在“工程”/“部件”對話框中勾選“Microsoft Chart Control 6.0 (SP4)”列表項,單擊【確定】按鈕之后即可將MSChart控件添加到工具箱當(dāng)中。MSChart控件用于圖形顯示分析結(jié)果。(3)向窗體中添加1個DataGrid控件和1個ADO控件,設(shè)置DataGrid控件的“名稱”屬性為Dgr_Mydfx,設(shè)置Caption屬性為“客戶滿意程度分析表”,DataSource屬性為Adodc1。CommandType屬性設(shè)置為2adCmdTable,Adodc1的RecordSorce屬性設(shè)置為tb_Client_mydtj, Visible屬性設(shè)置為False。其中ADO控件用于連接滿意度統(tǒng)計表,DataGrid控件用于顯示滿意度統(tǒng)計信息。(4)向窗體上添加5個CommandButton控件。4.5.2代碼設(shè)計在窗體加載時,統(tǒng)計客戶投訴表中的數(shù)據(jù)信息,并根據(jù)客戶滿意度設(shè)置表中的滿意度級別,將相應(yīng)的滿意度級別和該級別的數(shù)量統(tǒng)計并添加到滿意度統(tǒng)計表中,根據(jù)該表中的數(shù)據(jù)信息在MSChart控件或DataGrid控件中顯示相應(yīng)的信息。Private Sub Form_Load()Adodc1.ConnectionString = PublicStr 數(shù)據(jù)連接清空滿意度統(tǒng)計數(shù)據(jù)表中的數(shù)據(jù)信息cnn.Execute "delete tb_Client_mydtj select * from tb_Client_mydtj"rs1.Open "select * from tb_Client_khmyd", cnn, adOpenKeyset 打開數(shù)據(jù)連接If rs1.RecordCount > 0 Then 如果記錄數(shù)大于零 S1 = rs1.RecordCount 將記錄數(shù)賦給變量S1 For i = 0 To rs1.RecordCount - 1 從零到記錄總數(shù)減一作循環(huán) Mystr = rs1.Fields("khmyd_myd") 將字段khmyd_myd中的記錄賦給Mystr變量 打開數(shù)據(jù)集對象,查看滿意程度為Mystr變量中存儲的字符串的記錄數(shù)量rs2.Open "select * from tb_Client_khts where khts_khmyd=" + Mystr + "", cnn, adOpenKeyset If rs2.RecordCount >= 0 Then 如果記錄數(shù)大于等于零 rs3.Open "select * from tb_Client_mydtj", cnn, adOpenKeyset, adLockOptimistic 打開數(shù)據(jù)集對象 向tb_Client_mydtj表中添加數(shù)據(jù)記錄 rs3.AddNew 添加一條新記錄 rs3.Fields("mydtj_myd") = Mystr 將Mystr賦給mydtj_myd字段 rs3.Fields("mydtj_sl") = rs2.RecordCount 將該滿意程度的記錄數(shù)賦給mydtj_sl字段 rs3.Update 刷新 rs3.Close 關(guān)閉數(shù)據(jù)集對象 End If rs2.Close 關(guān)閉數(shù)據(jù)集對象 rs1.MoveNext 記錄加一 Next i 循環(huán)加一End Ifrs1.Close 關(guān)閉數(shù)據(jù)集對象打開tb_Client_mydtj表的數(shù)據(jù)集對象rs4.Open "select * from tb_Client_mydtj order by mydtj_sl desc", cnn, adOpenKeysetIf rs4.RecordCount > 0 Then 如果記錄數(shù)大于零 ReDim arrValues(1 To S1, 1 To 2) 定義動態(tài)數(shù)組 For i = 1 To S1 給數(shù)組賦值 arrValues(i, 1) = " " & rs4!mydtj_myd arrValues(i, 2) = rs4!mydtj_sl rs4.MoveNext Next i MSChart1.ChartData = arrValues 圖表顯示數(shù)據(jù) MSChart1.Title = " 客戶滿意度分析圖 " 設(shè)置圖表名稱 MSChart1.Title.VtFont.Size = 15 rs4.Close 關(guān)閉數(shù)據(jù)集對象 End IfAdodc1.Refresh 刷新ADODC控件Set Dgr_Mydfx.DataSource = Adodc1 設(shè)置DataGrid的DataSource屬性 Call Dgr_Title 調(diào)用自定義程序設(shè)置DataGrid控件中的數(shù)據(jù)表表頭Dgr_Mydfx.Visible = False DataGrid控件不可見Cmd_Tx_Click 執(zhí)行條形顯示事件End Sub4.6 客戶信息查詢在“客戶信息查詢”窗體中,用戶可以根據(jù)客戶信息(tb_khxx)表中的任何關(guān)鍵字及查詢條件,查詢客戶的相關(guān)信息。單擊“信息查詢”菜單下的“客戶信息查詢”子菜單,即可進(jìn)入到客戶信息查詢窗體中,該窗體的運(yùn)行結(jié)果如圖15所示。圖15 客戶信息查詢窗體運(yùn)行結(jié)果4.6.1窗體設(shè)計(1)在“工程”中新建一個窗體,將窗體的“名稱”設(shè)置為Frm_Xxcx_Khxxcx,Caption屬性設(shè)置為“客戶信息查詢”,MaxButton屬性設(shè)置為False。(2)向窗體上添加2個ComboBox控件,設(shè)置其“名稱”分別為Cbx_Field和Cbx_Oper,分別用于存儲查詢的字段名和查詢方式。(3)向窗體中添加1個DataGrid控件和1個ADO控件,設(shè)置DataGrid控件的“名稱”為Dgr_Kh,DataSource屬性為Adodc1。Adodc1的RecordSource屬性設(shè)置為select * from tb_khxx order by khxx_id,Visible屬性設(shè)置為False。其中DataGrid控件用于顯示客戶表中的數(shù)據(jù)信息,ADO控件用于連接客戶信息表。5 總 結(jié)此次畢業(yè)設(shè)計,經(jīng)過了經(jīng)過了幾個月時間的VB程序開發(fā),在指導(dǎo)老師的幫助下,完成了此次畢業(yè)設(shè)計。它是我從學(xué)校走向社會開始從事軟件設(shè)計開發(fā),科學(xué)實(shí)驗和科學(xué)研究的初步嘗試。在這短短的一段時間中,我對SQL語言、SQL server2000 和VB語言有了更深入的了解,我不僅鞏固了以前在課堂上學(xué)到的基礎(chǔ)專業(yè)知識,比如VB的圖形界面設(shè)計。也更進(jìn)一步學(xué)到了較為具體的專業(yè)知識,比如,軟件的設(shè)計流程,C/S模式的程序開發(fā)等。也讓我明白到要實(shí)現(xiàn)一個好的系統(tǒng),團(tuán)隊的合作和協(xié)作是十分重要的。這些知識對于我來說是一筆寶貴的財富。通過此次畢業(yè)設(shè)計也讓我感受到先進(jìn)的科學(xué)技術(shù)給我們的生活帶來的方便、效率和財富。這次畢業(yè)設(shè)計我完成了,所有程序編寫,完成率數(shù)據(jù)庫的設(shè)計。由于以前沒能真正使用過數(shù)據(jù)庫進(jìn)行大型的設(shè)計,本次設(shè)計難免會有不足之處,比如數(shù)據(jù)庫的不完善,安全機(jī)制不完善等。致 謝 畢業(yè)論文設(shè)計即將結(jié)束之際,我要感謝在這一學(xué)期在畢業(yè)設(shè)計階段所有幫助過我的人。 首先,我要最衷心地感謝的是我的各位老師,本文是在各位老師悉心指導(dǎo)下完成的,老師們嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng)、求實(shí)的工作態(tài)度使我受益匪淺,更重要的是從各位老師身上學(xué)到了對待任何事情的那種精益求精和一絲不茍的精神和態(tài)度。 在這個學(xué)期的畢業(yè)設(shè)計中,各位老師給與了我許多關(guān)心和指導(dǎo),各位老師認(rèn)真工作的精神、敏銳的洞察力、科學(xué)的工作方法、真誠的性格永遠(yuǎn)是我學(xué)習(xí)的榜樣。 其次,我要感謝課題組的各位同學(xué)在我的論文完成過程中給與我的指導(dǎo)和幫助,他們在軟件的操作和研究的各個方面都給了我巨大的啟發(fā)。同時,我還要感謝有一批在畢設(shè)期間在學(xué)業(yè)和生活上都給予我莫大幫助的朋友們,是你們給了我巨大的鼓舞和動力 再次,我還要感謝大學(xué)三年來所有的任課老師,是他們把科學(xué)的方法和知識傳授給了我。 最后,感謝所有在畢業(yè)設(shè)計期間給與我?guī)椭睦蠋?,同學(xué)和朋友們,衷心的謝謝大家!參考文獻(xiàn)1Visual Basic精彩編程200例 機(jī)械工業(yè)出版社賽奎春、高春艷等 2003年1月2Visual Basic數(shù)據(jù)庫開發(fā)實(shí)例解析 機(jī)械工業(yè)出版社劉志銘、高春艷等 2003年8月3ASP數(shù)據(jù)庫開發(fā)實(shí)例解析 機(jī)械工業(yè)出版社 李嚴(yán)、于亞芳、王國輝2004年12月4Visual Basic工程應(yīng)用與項目實(shí)踐 機(jī)械工業(yè)出版社高春艷、李俊民等 2005年1月5Visual C工程應(yīng)用與項目實(shí)踐 機(jī)械工業(yè)出版社張雨、阮偉良等 2005年1月6JSP工程應(yīng)用與項目實(shí)踐 機(jī)械工業(yè)出版社 陳威、白偉明、李楠2005年2月7ASP工程應(yīng)用與項目實(shí)踐 機(jī)械工業(yè)出版社 王國輝、牛強(qiáng)、李南南 2005年4月8Visual Basic 信息系統(tǒng)開發(fā)實(shí)例精選 機(jī)械工業(yè)出版社 高春艷、李俊民等 2005年7月9ASP 信息系統(tǒng)開發(fā)實(shí)例精選 機(jī)械工業(yè)出版社 王國輝、牛強(qiáng)、李南南等 2005年7月10Visual basic數(shù)據(jù)庫開發(fā)關(guān)鍵技術(shù)與實(shí)例應(yīng)用 人民郵電出版社 高春艷 2004年5月11Visual C+ 管理信息系統(tǒng)完整項目實(shí)例剖析 人民郵電出版社 明日科技 2005年7月12Visual Basic 管理信息系統(tǒng)完整項目實(shí)例剖析 人民郵電出版社 明日科技 2005年7月13SQL Server數(shù)據(jù)庫開發(fā)實(shí)例解析 機(jī)械工業(yè)出版社 宋昆、李嚴(yán)等 2006年1月14Access數(shù)據(jù)庫開發(fā)實(shí)例解析 機(jī)械工業(yè)出版社 李俊民、高春燕等 2006年1月附錄1 數(shù)據(jù)表(1)tb_Client_mydtj(滿意度統(tǒng)計表)滿意度統(tǒng)計表主要用于在客戶滿意度分析窗體中統(tǒng)計客戶對企業(yè)滿意程度的信息。該表結(jié)構(gòu)表B.1 滿意度統(tǒng)計表字段名數(shù)據(jù)類型長度描述mydtj_mydvarchar30滿意度名稱mydtj_slnumeric9滿意度數(shù)量(2)tb_Client_lxrxx(聯(lián)系人信息表)聯(lián)系人信息表主要保存聯(lián)系人的詳細(xì)信息。該數(shù)據(jù)表的結(jié)構(gòu)如表B.2所示。表B.2 聯(lián)系人信息表字段名數(shù)據(jù)類型長度描述lxrxx_idvarchar20聯(lián)系人編號lxrxx_qymcvarchar20企業(yè)名稱lxrxx_xmvarchar30聯(lián)系人姓名lxrxx_xbvarchar5聯(lián)系人性別lxrxx_csnydatetime8出生年月lxrxx_nlvarchar5聯(lián)系人年齡lxrxx_zwvarchar30聯(lián)系人職位lxrxx_bgdhvarchar30聯(lián)系人辦公電話lxrxx_Emailvarchar50聯(lián)系人電子郵件lxrxx_sjvarchar20聯(lián)系人手機(jī)lxrxx_grjjtext16個人簡介lxrxx_djrqdatetime8登記日期lxrxx_xxdjrvarchar30信息登記人lxrxx_bzvarchar50備注(3)tb_khxx(客戶信息表)客戶信息表主要用于保存客戶的詳細(xì)信息。該數(shù)據(jù)表的結(jié)構(gòu)如表B.3所示表B.3 客戶信息表字段名數(shù)據(jù)類型長度描述khxx_idvarchar30客戶編號khxx_mcvarchar50企業(yè)名稱khxx_qyxzvarchar30企業(yè)性質(zhì)khxx_qylxv