资源描述
摘 要在对目前市面上的客户管理系统(CRM)的广泛调查和研究之后,发现很多市面上的客户管理系统大多都是以产品为中心,忽略了客户管理中最重要的部分客户关系。随着市场经济的不断发展,客户管理的重要性体现的越发明显。企业要想生存发展,就必须与与之息息相关的客户建立起良好的关系,不断发展新客户,以企业高质量的产品、优质的服务、良好的资信吸引新客户;经常维系与老客户的关系,以规范的客户管理方式、温馨的客户关怀、高效的客户服务来提升老客户的忠诚度。由此,客户管理系统应运而生。关键词 CRM,客户关系管理系统,VB,数据库目 录摘 要4目 录5前 言61 系统分析71.1 需求分析71.2 可行性分析72 总体设计82.1 项目规划82.2系统功能结构图93 系统设计103.1 设计目标103.2 开发及运行环境103.3 数据库设计113.3.1数据库概要说明113.3.2 数据表结构114 主要功能模块设计124.1公共模块设计(Mdl_Link模块)124.2 主窗体设计134.2.1窗体设计134.2.2代码设计164.3 客户呼叫中心184.3.1 窗体设计184.3.2 代码设计204.4 客户投诉214.4.1窗体设计224.4.2代码设计224.5 客户投诉满意程度分析244.5.1窗体设计244.5.2代码设计254.6 客户信息查询264.6.1窗体设计265 总 结28致 谢29参考文献30附录1 数据表31附录236前 言在全球一体化、企业互动和以INTERNET为核心的时代,企业面临着如何发展潜在客户,如何将社会关系资源变为企业的销售和发展资源的一系列难办棘手的问题。在上述背景下,客户管理系统应运而生。本系统本着把握客户多样化和个性化的特点;以最快的速度响应客户需求;吸引新客户,留住老客户为原则。即从过去的以产品(Product-Centric)为中心的管理策略转向以客户为中心的(Customer-Centric)管理理念。系统旨在改善企业与客户之间的关系,建立新型的运营机制。本系统以企业级的整体客户管理为解决方案,帮助企业建立统一的客户资源、拓展销售渠道、寻求最佳市场方式、规范企业销售流程、提供科学分析方法,建立持久的客户体系。其大容量客户数据处理能力,让您的企业从多渠道收集信息,快速发现核心客户和潜在伙伴,进而给企业带来无限的利润。以客户为中心的理念在国外兴起于20世纪50年代,当时很多企业寄希望于通过改进技术、压缩生产周期、改善内部资源管理来提高生产增长率和利润,但事实上见效甚微。这样企业开始从强调降低经营成本的供应方发展策略转向了需求方策略。所谓需求方策略就是指与客户联系更加紧密,从客户关系方面挖掘新能源的策略,CRM应运而生。所不同的是,现在计算机可以帮助人们实现这些看似并不复杂而实际操作起来非常繁琐的工作。试想一下,当我们需要查找一个客户的电话号码时,只需敲几下键盘,就可以看到客户的详细资料(包括姓名、公司名称、电话、E-mail等),所有这些都是一个完善的客户管理系统所能完成的。 1 系统分析1.1 需求分析根据市场的需求,要求系统具有以下功能:q 由于该系统的使用对象较多,要求有严密的权限管理。q 具有数据备份及数据恢复的功能,确保系统的安全性。q 方便的全方位的数据查询。q 强大的报表打印功能。q 在相应的权限下,可以删除或修改数据。1.2 可行性分析随着科技的发展,竞争也越发激烈、残酷,企业传统的管理方式对于现今社会的竞争已明显感觉到力不从心。客户作为市场的最大资源,已成为市场营销核心,谁争取到了最多的客户,谁就取的了最大的成功,对客户的把握将最终决定企业的命运。客户关系管理系统正是在这种需求下经过深入的市场调研和专家系统化的指导应运而生。系统具有完善的基础信息维护和客户信息维护,强大的数据查询及图表分析功能,基本能够满足中小型企业的需要。2 总体设计2.1 项目规划客户管理系统是一个非常有特点的管理软件,系统由基础信息维护、客户信息维护、客户服务、信息查询、数据管理、辅助工具、系统管理和帮助信息等几个功能模块组成,规划系统功能模块如下:q 基础信息维护模块基础信息维护模块主要包括区域信息设置、企业性质设置、企业类型设置、企业资信设置、客户级别设置和客户满意程度设置6部分。q 客户信息维护模块客户信息维护模块主要包括客户信息、联系人信息、业务往来、客户呼叫中心和发送邮件5个部分。q 客户服务模块客户服务模块主要包括客户反馈、客户投诉、客户反馈满意程度分析和客户投诉满意程度分析4个部分。q 信息查询模块信息查询模块主要包括客户信息查询、联系人信息查询、客户反馈满意程度查询、客户投诉满意程度查询、客户反馈查询、客户投诉查询和国内城市区号邮编查询7个部分。q 数据管理模块数据管理模块主要包括客户信封打印、客户信息列表、联系人信息列表和省份邮编信息打印4个部分。q 辅助工具模块辅助工具模块包括调用Word、调用Excel、计算器、登录Internet和工作业务备忘5个部分。q 系统管理模块系统管理模块主要包括操作员设置、密码修改、权限设置、系统数据清理、数据备份与恢复5个部分。q 帮助信息模块帮助信息模块主要包括本单位信息、关于、帮助等3个部分。2.2系统功能结构图图1 客户管理系统功能结构图3 系统设计3.1 设计目标本系统是根据中小企业的实际需求而开发的,完全能够实现企业对客户的自动化管理,通过本系统可以达到以下目标:q 系统运行稳定,安全可靠。q 界面设计美观,人机交互界面友好。q 信息查询灵活、方便、快捷、准确,数据存储安全可靠。q 满足键盘和鼠标的双重操作,完全支持回车键。q 采用多种方式查询数据。q 操作员可以随时修改自己的口令。q 对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。q 数据保密性强,为每个用户设置相应的权限级别。q 强大的图表分析功能。q 收录了全国各省市县的邮政编码及区号信息等二千多条记录。q 不仅采用了传统的数据报表打印方式,还可以向Word中打印输出。3.2 开发及运行环境系统开发平台:Visual Basic 6.0数据库管理系统软件:SQL Server 2000运行平台:Windows xp/Windows 2000/Windows 98分辨率:最佳效果 800*6003.3 数据库设计本系统采用SQL Server 2000 数据库,系统数据库名为db_Client,数据库db_Client中包括18个数据表。下面分别给出数据库概要说明和数据表的结构。3.3.1数据库概要说明如图2所示的即为本系统中数据库中的数据表的树形结构图,该数据表树型结构图包含系统所有数据表。可以清晰地反应数据库信息。图2 数据库概要说明3.3.2 数据表结构由于篇幅所限,关于数据库中的数据表请参见附录二4 主要功能模块设计4.1公共模块设计(Mdl_Link模块)通过使用模块可以减少程序的代码量。在本系统中,将通用的代码(如:数据库连接、Toolbar控件的按钮设置代码以及公共的全局变量等)都集中放置在一个数据模块Mdl_Link中,节省了代码量,提高了编程效率。数据模块Mdl_Link中定义的公共变量如下所示:Public PublicStr As String 定义公共变量用于ADODC控件的数据连接,使程序模块化Public sql As String 定义字符变量存储SQL语句Public Tb As String 存储数据表名称Public Province As String 存储省份名称Public Myflag As Boolean 标识数据模块Mdl_Link中提供连接数据库的程序代码如下所示:数据连接模块Public Function cnn() As ADODB.Connection 定义函数 Set cnn = New ADODB.Connection 打开数据连接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_ClientEnd Function 数据模块Mdl_Link中关于Toolbar控件设置按钮状态的通用代码如下所示:定义设置Toolbar控件上按钮状态的函数 Public Function tlbState(tlb As Toolbar, state As Boolean) With tlb If state = True Then 如果状态变量为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 如果状态变量为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 主窗体设计主窗体是显示系统主要操作功能的面板,在系统主窗体的状态栏中,可以显示网址、当前的操作员、当前系统的日期、时间等信息,还可以通过菜单或单击窗体左侧的树状列表以及右侧的功能列表来控制其他功能子窗体,并且根据不同的操作员赋予相应的操作权限。系统主窗体的运行结果如图3所示。图3 系统主窗体的运行结果4.2.1窗体设计(1)在“工程”中新建一个窗体,将窗体的“名称”设置为frm_Main,MaxButton属性设置为False,Caption属性设置为“客户管理系统”,StartUpPosition属性设置为2-屏幕中心。(2)利用VB提供的菜单编辑器设计菜单。从“工具”菜单上,选取“菜单编辑器”命令即可打开菜单编辑器,也可以在“工具栏”上单击【菜单编辑器】按钮。用菜单编辑器可以创建应用程序的菜单,在已有的菜单上可以增加新的菜单项,或者修改和删除已有的菜单和菜单项。通过菜单编辑器建立的菜单如图3所示,在菜单编辑器对话框中设计菜单时的界面如图4所示。| 图4 菜单编辑器本系统的菜单设置如图5所示。图5 客户管理系统菜单设置(3)向窗体上添加1个控件,设置其Align属性设置为1-vbAlignTop(默认设置)。1个ImageList控件,并将其与Toolbar控件相连,同时添加按钮和图片。(4)将Toolbar控件与ImageList控件相连。(5)向窗体上添加1个TreeView控件并将其与ImageList控件连接。(6)向窗体中添加1个StatusBar控件,在StatusBar控件上单击鼠标右键选择“属性”,在弹出的属性页对话框中选择“窗格”选项卡,如图6所示,在图中单击【插入窗格】按钮,可以在StatusBar控件中添加窗格,同时可以设置添加后窗格的文本内容、工具栏提示文本信息和宽度等信息,如果想删除窗格,则通过“索引”旁边的箭头,选中要删除的窗格,然后单击【删除窗格】按钮即可删除。图6 设置StatusBar控件中的窗格(7)向窗体上添加ListView控件。4.2.2代码设计通过主窗体当中的菜单项,可以控制系统中各个子窗体,现以“辅助工具”菜单为例,介绍调用系统子窗体的代码。Private Sub Menu6_Click(Index As Integer)Select Case Index 辅助工具Case 0 调用Word ShellExecute Me.hWnd, open, winword.exe, , 1, 5Case 1 调用Excel ShellExecute Me.hWnd, open, excel.exe, , 1, 5Case 2 调用计算器 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)中是否有要提醒的信息,如果有,则提示相应的信息,否则直接加载窗体。其实现的关键代码下:Dim rs1 As New ADODB.Recordset 定义数据集对象打开数据连接 rs1.Open select * from tb_Client_gzbw where gzbw_txrq= + Str(Date) + , cnn, adOpenKeysetIf rs1.RecordCount 0 Then 如果记录数大于零 If MsgBox(今日重要工作: & Trim(rs1.Fields(gzbw_bt) & ,是否查看详细信息?, 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 关闭数据对象在程序运行时,可通过单击Toolbar控件上的按钮,来调用相应的子功能窗体,实现增加、删除、修改和查找功能。其实现的代码如下:Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.IndexCase 1 Load Frm_Khxxwh_kh 调用客户信息窗体 Frm_Khxxwh_kh.Show 1Case 2 Load Frm_Khxxwh_Lxr 调用联系人信息窗体 Frm_Khxxwh_Lxr.Show 1Case 3 Load Frm_Khxxwh_Yjfs 调用发送邮件窗体 Frm_Khxxwh_Yjfs.Show 1Case 4 Load Frm_Xxcx_Khxxcx 调用客户信息查询窗体 Frm_Xxcx_Khxxcx.Show 1Case 7 End 关闭退出End SelectEnd Sub在程序运行时,当用鼠标单击TreeView控件中的节点时,在右边的ListView控件中就可以显示该节点下的相应的子功能图标。该功能的实现是通过在TreeView1控件的NodeClick事件实现的。下面以“基础信息维护”菜单为例介绍其主要实现的方法。 If TreeView1.SelectedItem.key = 基础信息维护 Then ListView1.ListItems.Clear 清除ListView中的项目 向ListView控件中添加项目并设置图片 Set itmX = ListView1.ListItems.Add(, , 区域信息设置, 3) Set itmX = ListView1.ListItems.Add(, , 企业性质设置, 4) Set itmX = ListView1.ListItems.Add(, , 企业类型设置, 6) Set itmX = ListView1.ListItems.Add(, , 企业资信设置, 5) Set itmX = ListView1.ListItems.Add(, , 客户级别设置, 7) Set itmX = ListView1.ListItems.Add(, , 客户满意程度设置, 8) Exit Sub 退出本事件 End If在程序运行时,StatusBar控件中的时间显示的是当前系统的时间,并跟随系统时间发生变化。其实现方式是:向窗体中添加时钟控件,并将其Enabled属性设置为True,Interval属性设置为60。并添加如下的代码:Private Sub Timer1_Timer() 显示系统时间 Frm_Main.StatusBar1.Panels(3).Text = Format(Date, long date) + Format(Now, hh点mm分ss秒)End Sub4.3 客户呼叫中心客户呼叫中心是客户管理系统中比较重要的部分,是企业利用现代通信手段集中处理与客户交互过程的机构。在客户呼叫中心中能够根据客户的电话号码可以显示该客户简单的信息,同时可以呼叫该客户,并可查询该号码客户的详细信息,以及联系人的相关信息。在程序运行时,单击“客户信息维护”主菜单下的“客户呼叫中心”子菜单,系统将调用“客户呼叫中心”窗体。“客户呼叫中心”窗体的运行结果如图7所示。图7 客户呼叫中心窗体的运行结果4.3.1 窗体设计(1)在“工程”中新建一个窗体,将窗体的“名称”设置为Frm_Khxxwh_Hjzx,MaxButton属性设置为False。Caption属性设置为“客户呼叫中心”。(2)向窗体上添加1个Frame控件,设置其Caption属性为空,在窗体中用于标识分组,使窗体显得规整。并向其中添加1个Label控件,将该标签控件的Caption属性设置为“请输入或选择客户公司电话”。(3)向窗体上添加1个ComboBox控件,设置其“名称”属性为Cbx_Khdh,Text属性为Cbx_Khdh,Style属性为0Dropdown Combo。该控件用于显示客户的公司电话。(4)向窗体上添加2个Frame控件,分别设置其Caption属性值为“客户简单信息”和空,并向其中添加若干Label控件。(5)向窗体上添加若干TextBox控件,并将其设置为控件数组。(6)向窗体中添加1个MSComm控件,由于该控件属于ActiveX控件,在使用之前必须从“部件”对话框中添加到工具箱。添加方法如下:在“工程”/“部件”对话框中勾选“Microsoft Comm Control 6.0”列表项,如图8所示。单击【确定】按钮之后即可将MSComm控件添加到工具箱当中。图8 添加MSComm控件(7)在窗体上添加4个CommandButton控件,分别将其“名称”属性和Caption属性设置为Cmd_Hj和“开始呼叫”、Cmd_Kh和“客户详细信息”、Cmd_Lxr和“联系人信息”、Cmd_Exit和“退出”。其摆放位置如图9所示。图9 客户呼叫中心窗体的设计界面4.3.2 代码设计在窗体加载时,向Cbx_khdh组合框中添加客户电话,当用户在该文本框中选择相应的项目时,在下面的“客户简单信息”框架中就可以显示出相应的信息,其实现的代码如下:Private Sub Form_Load()Dim rs1 As New ADODB.Recordset 定义数据集对象rs1.Open select * from tb_khxx , cnn, adOpenKeyset 打开数据连接If rs1.RecordCount 0 Then 如果记录数大于零 For i = 0 To rs1.RecordCount - 1 从零开始到记录总数减1作循环 Cbx_Khdh.AddItem Trim(rs1.Fields(khxx_gsdh) 向Cbx_Khdb组合框中添加数据项目 rs1.MoveNext 数据对象向下移动一条记录 Next i 循环加一 If Cbx_Khdh.ListCount 0 Then 如果Cbx_Khdh中的数据项目数不为零 Cbx_Khdh.ListIndex = 0 在Cbx_Khdh中显示第一条数据项 Else 否则 Cbx_Khdh.Text = 请选择 显示“请选择”信息 End IfEnd Ifrs1.Close 关闭数据集对象End Sub根据公司的电话号码,单击【开始呼叫】按钮,可以呼叫该用户。如下面的代码所示:Private Sub Cmd_Hj_Click() 开始呼叫If Cbx_Khdh.Text = Then 如果组合框为空MsgBox 请您输入电话号码!, vbInformation, 客户管理系统Cbx_Khdh.SetFocus 将焦点设置在组合框上Else 否则MSComm1.CommPort = 1 设置通信端口号MSComm1.Settings = 4800,N,8,1 设置波特率、奇偶校验位、数据位和停止位参数MSComm1.PortOpen = TrueMSComm1.Output = ATDT & Cbx_Khdh.Text & vbCrMsgBox 请听电话!, vbpuestion, 客户管理系统MSComm1.PortOpen = FalseEnd IfEnd Sub单击【客户详细信息】按钮,可以调用“客户信息”窗体。通过定义的公共字符变量sql,可以在调用“客户信息”窗体时,直接显示该客户的信息。其实现的关键代码如下:Private Sub Cmd_Kh_Click() 调用客户详细信息Dim rs3 As New ADODB.Recordset 定义数据集变量打开数据对象rs3.Open select * from tb_khxx where khxx_gsdh= + Cbx_Khdh.Text + , cnn, adOpenKeysetIf rs3.RecordCount 0 Then 如果数据记录大于零 sql = select * from tb_khxx where khxx_gsdh= + Cbx_Khdh.Text + 将SQL语句赋给sql字符变量 Load Frm_Khxxwh_kh 调用客户信息窗体 Frm_Khxxwh_kh.Show 1End IfEnd Sub在本窗体关闭前,将sql变量清空,避免对其他窗体造成影响。其实现代码如下:Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)sql = 清空sql变量End Sub4.4 客户投诉客户投诉是企业了解客户意见的重要手段之一。在本系统中用户可以通过点击客户服务菜单下的客户投诉子菜单,进入到客户投诉窗体中。该窗体具有对客户投诉信息进行增加、删除、修改和查找的功能,并可以通过单击DataGrid控件来浏览客户投诉信息。客户投诉窗体的运行结果如图13所示。图13 客户投诉窗体的运行结果4.4.1窗体设计(1)在“工程”中新建一个窗体,将窗体的“名称”设置为Frm_Khfw_Khts,Caption属性设置为“客户投诉”,MaxButton属性设置为False。(2)向窗体上添加1个Toolbar控件,1个ImageList控件,并将两个控件相连。(3)向窗体上添加2个ComboBox控件,将控件的Style属性设置为0Dropdown Combo。“名称”属性分别设置为Cbx_Khmc和Cbx_Myd,分别用于存储客户名称和客户满意度信息。(4)向窗体上添加1个DTPicker控件,“名称”属性设置为Dtp_Tsrq,用于显示客户投诉日期。(5)向窗体上添加1个ADO控件和1个DataGrid控件,设置DataGrid控件的“名称”为Dgr_Khts,DataSource属性设置为Adodc1,AllowUpdate属性设置为False。Adodc1控件的RecordSource属性设置为tb_Client_khts,CommandType属性设置为2adCmdTable,Visible属性设置为False。其中ADO控件用于连接客户投诉表,DataGrid控件用于显示客户投诉表中的数据信息。(6)向窗体上添加若干个Label控件和TextBox控件,并设置TextBox控件为控件名为Text1的控件数组。4.4.2代码设计在“客户投诉”窗体加载的时候,首先建立数据连接,然后调用自定义过程来设置数据表的表头。并将客户名称和客户满意度信息添加到ComboBox控件中,并设置其显示第一条记录。其实现的关键代码如下:Private Sub Form_Load() Adodc1.ConnectionString = PublicStr 连接数据库 Call Dgr_Title 调用本模块中的过程 tlbState Toolbar1, False 调用公共模块中的自定义过程 Dim rs2 As New ADODB.Recordset 定义数据集对象 rs2.Open select * from tb_khxx , cnn, adOpenKeyset 建立数据连接 If rs2.RecordCount 0 Then 如果记录数大于零 For i = 0 To rs2.RecordCount - 1 从零到记录数减1作循环 Cbx_Khmc.AddItem Trim(rs2.Fields(khxx_mc) 向添加Cbx_Khmc中添加数据项 rs2.MoveNext 数据记录移至下一条 Next i 循环加一 End If If Cbx_Khmc.ListCount = 0 Then 如果Cbx_Khmc中的数据项为0 Cbx_Khmc.Text = 显示空 Else 否则 Cbx_Khmc.ListIndex = 0 显示第一条记录 End If rs2.Close 关闭记录集 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中添加数据项 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 调用本模块中的子定义过程显示数据信息 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本系统中的数据库采用的是英文字段,因此在数据表显示的时候,将会显示英文字段,所以,在程序运行时,当遇到用于显示数据信息的时候,先调用自定义过程,设置DataGrid控件中的表头为中文,自定义过程的代码如下:Sub Dgr_Title() 设置DataGrid控件的标题Dgr_Khts.Columns(0).Caption = 客户投诉编号 : Dgr_Khts.Columns(1).Caption = 企业名称Dgr_Khts.Columns(2).Caption = 投诉人 : Dgr_Khts.Columns(3).Caption = 投诉主题Dgr_Khts.Columns(4).Caption = 投诉内容 : 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在本窗体中将数据信息显示定义为自定义过程,在显示数据信息时,调用自定义过程,这样可避免同样的代码重复编写,提高程序代码的可重用性。数据信息显示自定义过程的关键代码如下: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 客户投诉满意程度分析“客户投诉满意程度分析”窗体可以根据客户投诉的满意程度,以不同的形式(条形、线形、三维、列表)显示客户对投诉处理的满意程度。在程序运行时,单击“客户服务”主菜单下的“客户投诉满意程度分析”子菜单,即可进入到“客户投诉满意程度分析”窗体中。该窗体的运行结果如图14所示。图14 客户满意程度分析运行结果4.5.1窗体设计(1)在“工程”中新建一个窗体,将窗体的“名称”设置为Frm_Khfw_Tsmydfx,Caption属性设置为“客户投诉满意程度分析”,MaxButton属性设置为False。(2)向窗体中添加1个MSChart控件,由于该控件属于ActiveX控件,在使用之前必须从“部件”对话框中添加到工具箱。添加方法如下:在“工程”/“部件”对话框中勾选“Microsoft Chart Control 6.0 (SP4)”列表项,单击【确定】按钮之后即可将MSChart控件添加到工具箱当中。MSChart控件用于图形显示分析结果。(3)向窗体中添加1个DataGrid控件和1个ADO控件,设置DataGrid控件的“名称”属性为Dgr_Mydfx,设置Caption属性为“客户满意程度分析表”,DataSource属性为Adodc1。CommandType属性设置为2adCmdTable,Adodc1的RecordSorce属性设置为tb_Client_mydtj, Visible属性设置为False。其中ADO控件用于连接满意度统计表,DataGrid控件用于显示满意度统计信息。(4)向窗体上添加5个CommandButton控件。4.5.2代码设计在窗体加载时,统计客户投诉表中的数据信息,并根据客户满意度设置表中的满意度级别,将相应的满意度级别和该级别的数量统计并添加到满意度统计表中,根据该表中的数据信息在MSChart控件或DataGrid控件中显示相应的信息。Private Sub Form_Load()Adodc1.ConnectionString = PublicStr 数据连接清空满意度统计数据表中的数据信息cnn.Execute delete tb_Client_mydtj select * from tb_Client_mydtjrs1.Open select * from tb_Client_khmyd, cnn, adOpenKeyset 打开数据连接If rs1.RecordCount 0 Then 如果记录数大于零 S1 = rs1.RecordCount 将记录数赋给变量S1 For i = 0 To rs1.RecordCount - 1 从零到记录总数减一作循环 Mystr = rs1.Fields(khmyd_myd) 将字段khmyd_myd中的记录赋给Mystr变量 打开数据集对象,查看满意程度为Mystr变量中存储的字符串的记录数量rs2.Open select * from tb_Client_khts where khts_khmyd= + Mystr + , cnn, adOpenKeyset If rs2.RecordCount = 0 Then 如果记录数大于等于零 rs3.Open select * from tb_Client_mydtj, cnn, adOpenKeyset, adLockOptimistic 打开数据集对象 向tb_Client_mydtj表中添加数据记录 rs3.AddNew 添加一条新记录 rs3.Fields(mydtj_myd) = Mystr 将Mystr赋给mydtj_myd字段 rs3.Fields(mydtj_sl) = rs2.RecordCount 将该满意程度的记录数赋给mydtj_sl字段 rs3.Update 刷新 rs3.Close 关闭数据集对象 End If rs2.Close 关闭数据集对象 rs1.MoveNext 记录加一 Next i 循环加一End Ifrs1.Close 关闭数据集对象打开tb_Client_mydtj表的数据集对象rs4.Open select * from tb_Client_mydtj order by mydtj_sl desc, cnn, adOpenKeysetIf rs4.RecordCount 0 Then 如果记录数大于零 ReDim arrValues(1 To S1, 1 To 2) 定义动态数组 For i = 1 To S1 给数组赋值 arrValues(i, 1) = & rs4!mydtj_myd arrValues(i, 2) = rs4!mydtj_sl rs4.MoveNext Next i MSChart1.ChartData = arrValues 图表显示数据 MSChart1.Title = 客户满意度分析图 设置图表名称 MSChart1.Title.VtFont.Size = 15 rs4.Close 关闭数据集对象 End IfAdodc1.Refresh 刷新ADODC控件Set Dgr_Mydfx.DataSource = Adodc1 设置DataGrid的DataSource属性 Call Dgr_Title 调用自定义程序设置DataGrid控件中的数据表表头Dgr_Mydfx.Visible = False DataGrid控件不可见Cmd_Tx_Click 执行条形显示事件End Sub4.6 客户信息查询在“客户信息查询”窗体中,用户可以根据客户信息(tb_khxx)表中的任何关键字及查询条件,查询客户的相关信息。单击“信息查询”菜单下的“客户信息查询”子菜单,即可进入到客户信息查询窗体中,该窗体的运行结果如图15所示。图15 客户信息查询窗体运行结果4.6.1窗体设计(1)在“工程”中新建一个窗体,将窗体的“名称”设置为Frm_Xxcx_Khxxcx,Caption属性设置为“客户信息查询”,MaxButton属性设置为False。(2)向窗体上添加2个ComboBox控件,设置其“名称”分别为Cbx_Field和Cbx_Oper,分别用于存储查询的字段名和查询方式。(3)向窗体中添加1个DataGrid控件和1个ADO控件,设置DataGrid控件的“名称”为Dgr_Kh,DataSource属性为Adodc1。Adodc1的RecordSource属性设置为select * from tb_khxx order by khxx_id,Visible属性设置为False。其中DataGrid控件用于显示客户表中的数据信息,ADO控件用于连接客户信息表。5 总 结此次毕业设计,经过了经过了几个月时间的VB程序开发,在指导老师的帮助下,完成了此次毕业设计。它是我从学校走向社会开始从事软件设计开发,科学实验和科学研究的初步尝试。在这短短的一段时间中,我对SQL语言、SQL server2000 和VB语言有了更深入的了解,我不仅巩固了以前在课堂上学到的基础专业知识,比如VB的图形界面设计。也更进一步学到了较为具体的专业知识,比如,软件的设计流程,C/S模式的程序开发等。也让我明白到要实现一个好的系统,团队的合作和协作是十分重要的。这些知识对于我来说是一笔宝贵的财富。通过此次毕业设计也让我感受到先进的科学技术给我们的生活带来的方便、效率和财富。这次毕业设计我完成了,所有程序编写,完成率数据库的设计。由于以前没能真正使用过数据库进行大型的设计,本次设计难免会有不足之处,比如数据库的不完善,安全机制不完善等。致 谢 毕业论文设计即将结束之际,我要感谢在这一学期在毕业设计阶段所有帮助过我的人。 首先,我要最衷心地感谢的是我的各位老师,本文是在各位老师悉心指导下完成的,老师们严谨的治学作风、求实的工作态度使我受益匪浅,更重要的是从各位老师身上学到了对待任何事情的那种精益求精和一丝不苟的精神和态度。 在这个学期的毕业设计中,各位老师给与了我许多关心和指导,各位老师认真工作的精神、敏锐的洞察力、科学的工作方法、真诚的性格永远是我学习的榜样。 其次,我要感谢课题组的各位同学在我的论文完成过程中给与我的指导和帮助,他们在软件的操作和研究的各个方面都给了我巨大的启发。同时,我还要感谢有一批在毕设期间在学业和生活上都给予我莫大帮助的朋友们,是你们给了我巨大的鼓舞和动力 再次,我还要感谢大学三年来所有的任课老师,是他们把科学的方法和知识传授给了我。 最后,感谢所有在毕业设计期间给与我帮助的老师,同学和朋友们,衷心的谢谢大家!参考文献1Visual Basic精彩编程200例 机械工业出版社赛奎春、高春艳等 2003年1月2Visual Basic数据库开发实例解析 机械工业出版社刘志铭、高春艳等 2003年8月3ASP数据库开发实例解析 机械工业出版社 李严、于亚芳、王国辉2004年12月4Visual Basic工程应用与项目实践 机械工业出版社高春艳、李俊民等 2005年1月5Visual C工程应用与项目实践 机械工业出版社张雨、阮伟良等 2005年1月6JSP工程应用与项目实践 机械工业出版社 陈威、白伟明、李楠2005年2月7ASP工程应用与项目实践 机械工业出版社 王国辉、牛强、李南南 2005年4月8Visual Basic 信息系统开发实例精选 机械工业出版社 高春艳、李俊民等 2005年7月9ASP 信息系统开发实例精选 机械工业出版社 王国辉、牛强、李南南等 2005年7月10Visual basic数据库开发关键技术与实例应用 人民邮电出版社 高春艳 2004年5月11Visual C+ 管理信息系统完整项目实例剖析 人民邮电出版社 明日科技 2005年7月12Visual Basic 管理信息系统完整项目实例剖析 人民邮电出版社 明日科技 2005年7月13SQL Server数据库开发实例解析 机械工业出版社 宋昆、李严等 2006年1月14Access数据库开发实例解析 机械工业出版社 李俊民、高春燕等 2006年1月附录1 数据表(1)tb_Client_mydtj(满意度统计表)满意度统计表主要用于在客户满意度分析窗体中统计客户对企业满意程度的信息。该表结构表B.1 满意度统计表字段名数据类型长度描述mydtj_mydvarchar30满意度名称mydtj_slnumeric9满意度数量(2)tb_Client_lxrxx(联系人信息表)联系人信息表主要保存联系人的详细信息。该数据表的结构如表B.2所示。表B.2 联系人信息表字段名数据类型长度描述lxrxx_idvarchar20联系人编号lxrxx_qymcvarchar20企业名称lxrxx_xmvarchar30联系人姓名lxrxx_xbvarchar5联系人性别lxrxx_csnydatetime8出生年月lxrxx_nlvarchar5联系人年龄lxrxx_zwvarchar30联系人职位lxrxx_bgdhvarchar30联系人办公电话lxrxx_Emailvarchar50联系人电子邮件lxrxx_sjvarchar20联系人手机lxrxx_grjjtext16个人简介lxrxx_djrqdatetime8登记日期lxrxx_xxdjrvarchar30信息登记人lxrxx_bzvarchar50备注(3)tb_khxx(客户信息表)客户信息表主要用于保存客户的详细信息。该数据表的结构如表B.3所示表B.3 客户信息表字段名数据类型长度描述khxx_idvarchar30客户编号khxx_mcvarchar50企业名称khxx_qyxzvarchar30企业性质khxx_qylxv
展开阅读全文