《客户管理系统_毕业设计论文(30页).doc》由会员分享,可在线阅读,更多相关《客户管理系统_毕业设计论文(30页).doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-客户管理系统_毕业设计论文-第 30 页毕业论文(设计) 题 目 客户管理系统 学生姓名 学 号 院 系 滨 江 学 院专 业 电子工程系指导教师 二一二 年 五 月 十四 日摘 要【摘要】在对目前市面上的客户管理系统(CRM)的广泛调查和研究之后,发现很多市面上的客户管理系统大多都是以产品为中心,忽略了客户管理中最重要的部分客户关系。随着市场经济的不断发展,客户管理的重要性体现的越发明显。企业要想生存发展,就必须与与之息息相关的客户建立起良好的关系,不断发展新客户,以企业高质量的产品、优质的服务、良好的资信吸引新客户;经常维系与老客户的关系,以规范的客户管理方式、温馨的客户关怀、高效的客户
2、服务来提升老客户的忠诚度。由此,客户管理系统应运而生。【关键词】 CRM 客户关系 客户管理系统目 录摘要2目录30 引言51 系统分析61.1 需求分析61.2 可行性分析62 总体设计62.1 项目规划62.2 系统功能架构图73 系统设计73.1 设计目标73.2 开发及运行环境83.3 数据库设计84 主要功能模块设计94.1 主窗体设计94.2 数据库连接164.3登录模块设计184.4客户资料管理204.5基本信息管理294.6用户管理364.7数据清理414.8关于43附录A 参考文献44附录B 数据表450 引言在全球一体化、企业互动和以INTERNET为核心的时代,企业面临着
3、如何发展潜在客户,如何将社会关系资源变为企业的销售和发展资源的一系列难办棘手的问题。在上述背景下,客户管理系统应运而生。本系统本着把握客户多样化和个性化的特点;以最快的速度响应客户需求;吸引新客户,留住老客户为原则。即从过去的以产品(Product-Centric)为中心的管理策略转向以客户为中心的(Customer-Centric)管理理念。系统旨在改善企业与客户之间的关系,建立新型的运营机制。本系统以企业级的整体客户管理为解决方案,帮助企业建立统一的客户资源、拓展销售渠道、寻求最佳市场方式、规范企业销售流程、提供科学分析方法,建立持久的客户体系。其大容量客户数据处理能力,让您的企业从多渠道
4、收集信息,快速发现核心客户和潜在伙伴,进而给企业带来无限的利润。以客户为中心的理念在国外兴起于20世纪50年代,当时很多企业寄希望于通过改进技术、压缩生产周期、改善内部资源管理来提高生产增长率和利润,但事实上见效甚微。这样企业开始从强调降低经营成本的供应方发展策略转向了需求方策略。所谓需求方策略就是指与客户联系更加紧密,从客户关系方面挖掘新能源的策略,CRM应运而生。所不同的是,现在计算机可以帮助人们实现这些看似并不复杂而实际操作起来非常繁琐的工作。试想一下,当我们需要查找一个客户的电话号码时,只需敲几下键盘,就可以看到客户的详细资料(包括姓名、公司名称、电话、E-mail等),所有这些都是一
5、个完善的客户管理系统所能完成的。1 系统分析1.1 需求分析根据市场的需求,要求系统具有以下功能:q 完全人性化设计,无需专业人士指导,即可使用该系统。q 由于该系统的使用对象多,要求有较好的权限管理。q 系统具有数据备份及数据还原功能。能够保证系统数据的安全性。q 方便的全方位的数据查询。q 在相应的权限下,删除数据方便简单,数据稳定性好。q 退出系统。1.2 可行性分析本系统开发环境为visual stdio2005,数据库为SQL Server 2000数据库。Visual stdio是用来快速开发Windows应用程序的应用程序开发工具,可以直观地使用图形化工具来创建Windows的应
6、用程序。SQLServer2000是Microsoft公司推出的基于客户/服务器(C/S)模式的数据库系统,它提供了强大的企业数据库管理功能,是目前世界上的几个主流数据库管理系统之一。2 总体设计2.1 项目规划客户管理系统是一个典型的数据库开发应用程序,由资料管理、我方信息管理、统计分析、用户管理、系统维护、帮助模块组成,规划系统功能模块如下:q 资料管理该模块主要负责区域信息管理、客户资料管理、竞争对手管理。q 我方信息管理该模块主要负责基本信息管理、员工资料管理、货物资料管理、重大历史进程。q 统计分析该模块主要负责客户级别分析、客户来源分析。q 用户管理该模块主要负责用户管理、更改密码
7、、设置权限。q 系统维护该模块主要负责数据备份、数据还原、数据清理。q 帮助该模块主要负责调用记事本、word、excel、水平平铺、垂直平铺、关于、重新登录、和退出系统。2.2 系统功能架构图图1 系统功能架构图3 系统设计3.1 设计目标本系统属于小型的数据库系统,为了对中小型企业客户的管理,实现一些初步的计算机化的管理。通过本系统可以达到以下目标:q 灵活的运用表格批量输入数据,使信息传递更快捷。q 系统采用人机对话方式,界面美观友好、信息查询灵活、方便、快捷、准确、数据存储安全可靠。q 实现各种记录查询。q 操作员可以随时修改自己的口令。q 管理员可以设置操作员的权限q 对用户输入的数
8、据,系统进行严格的数据检验,尽可能排除人为的错误。q 数据保密性强,为每个用户设置权限级别。q 系统最大限度地实现了易安装性、易维护性和易操作性。3.2 开发及运行环境系统开发平台:visual stdio。数据库管理系统软件:SQL Server 2000。运行平台:Windows xp。分辨率:最佳效果1024*768。3.3 数据库设计本系统数据库采用SQL Server 2000数据库,系统数据库名称为“db_Crm”。数据库db_Crm中包含8张表。下面分别给出数据表概要说明及数据表的结构。1数据表概要说明如图2所示的即为本系统中数据库中的数据表的树形结构图,该数据表树型结构图包含系
9、统所有数据表。可以清晰地反应数据库信息。图2 数据表树型结构图2数据表的结构由于篇幅所限,关于数据库中的数据表请参见附录B 4 主要功能模块设计4.1 主窗体设计主窗体主要是对客户管理系统的各模块进行调用,在主窗体中显示操作员的姓名及日期。客户管理系统主窗体运行结果如图3所示。 图3 主窗体运行结果1窗体设计步骤(1)运行visual stdio后,创建一个新项目windows应用程序,作为主窗体。命名窗体为“frmMain”,设置text属性为“客户管理管理系统”。(2)在工具箱中的菜单和工具栏选项卡中点选“menu strip”组件,直接拖拽到窗体上,双击该组件打开菜单编辑器,如图4所示。
10、图4 显示菜单编辑器(3) 在属性窗口中,设置text属性,如图5所示。图5 添加下拉菜单按钮 (4)在组件选项卡中选择“Nav Bar Control”组件,直接拖到窗体中。在属性窗口设置Dock属性,这里设置为left,在group中进行成员的添加。如图6、图7所示。 图6 group编辑器 图7 nbcMenu 效果图 (5)在菜单和工具栏选项卡中点选“StatusStrip”组件,添加到窗体上,如图8所示。 图8 任务栏2程序相关代码在窗体显示时,先调用登录窗体,如果登录成功则在主界面的任务栏上显示操作员名称及日期。窗体的显示事件代码如下:private void frmMain_Lo
11、ad(object sender, EventArgs e) toolStripStatusLabel1.Text = |操作用户: + Form1.M_str_name; toolStripStatusLabel2.Text = |登录时间: + DateTime.Now.ToLongDateString() + + DateTime.Now.ToLongTimeString(); if (Form1.M_str_right.ToString().Trim() = 普通用户) 客户资料管理ToolStripMenuItem.Visible = false; 竞争对手管理ToolStripMe
12、nuItem.Visible = false; 我方信息管理ToolStripMenuItem.Visible = false; 货物资料管理ToolStripMenuItem.Visible = false; 员工资料管理ToolStripMenuItem.Visible = false; 重大历史进程ToolStripMenuItem.Visible = false; 基本信息管理ToolStripMenuItem.Visible = false; 用户管理ToolStripMenuItem.Visible = false; 设置权限RToolStripMenuItem.Visible =
13、 false; nbiClientManage.Visible = false; nbiOppManage.Visible = false; nbiBInfoManage.Visible = false; nbcCInfoManage.Visible = false; nbiEInfoManage.Visible = false; nbiImportantEvent.Visible = false; nbiUserManage.Visible = false; nbiEditRight.Visible = false;在Frm main窗口中各个onclick事件处理过程中,调用各窗体菜单按钮
14、单击事件的处理过程。下面给出部分代码: private void 区域信息管理ToolStripMenuItem_Click(object sender, EventArgs e) DataManage.frmAreaManage dmFAM = new WindowsApplication1.DataManage.frmAreaManage(); dmFAM.MdiParent = this; dmFAM.Show(); private void 客户资料管理ToolStripMenuItem_Click(object sender, EventArgs e) DataManage.frmC
15、lientManage dmFCM = new WindowsApplication1.DataManage.frmClientManage(); dmFCM.MdiParent = this; dmFCM.Show(); private void 竞争对手管理ToolStripMenuItem_Click(object sender, EventArgs e) DataManage.frmOppManage dmFOM = new WindowsApplication1.DataManage.frmOppManage(); dmFOM.MdiParent = this; dmFOM.Show
16、(); private void 基本信息管理ToolStripMenuItem_Click(object sender, EventArgs e) PInfoMange.frmBInfoManage pmFBM = new WindowsApplication1.PInfoMange.frmBInfoManage(); pmFBM.MdiParent = this; pmFBM.Show(); private void 员工资料管理ToolStripMenuItem_Click(object sender, EventArgs e) PInfoMange.frmEInfoManage pmF
17、EM = new WindowsApplication1.PInfoMange.frmEInfoManage(); pmFEM.MdiParent = this; pmFEM.Show(); private void 货物资料管理ToolStripMenuItem_Click(object sender, EventArgs e) PInfoMange.frmGInfoManage pmFGM = new WindowsApplication1.PInfoMange.frmGInfoManage(); pmFGM.MdiParent = this; pmFGM.Show(); private
18、void 重大历史进程ToolStripMenuItem_Click(object sender, EventArgs e) PInfoMange.frmImportantEvent pmFIE = new WindowsApplication1.PInfoMange.frmImportantEvent(); pmFIE.MdiParent = this; pmFIE.Show(); private void 客户级别分析ToolStripMenuItem_Click(object sender, EventArgs e) SumManage.frmCLAnalyse smFCL = new
19、WindowsApplication1.SumManage.frmCLAnalyse(); smFCL.MdiParent = this; smFCL.Show(); private void 客户来源分析ToolStripMenuItem_Click(object sender, EventArgs e) SumManage.frmCRAnalyse smFCR = new WindowsApplication1.SumManage.frmCRAnalyse(); smFCR.MdiParent = this; smFCR.Show(); private void 用户管理ToolStrip
20、MenuItem1_Click(object sender, EventArgs e) UserManage.frmUserManage umFUM = new WindowsApplication1.UserManage.frmUserManage(); umFUM.MdiParent = this; umFUM.Show(); private void 更改密码ToolStripMenuItem_Click(object sender, EventArgs e) UserManage.frmEditPwd umFEP = new WindowsApplication1.UserManage
21、.frmEditPwd(); umFEP.MdiParent = this; umFEP.Show(); private void 设置权限RToolStripMenuItem_Click(object sender, EventArgs e) UserManage.frmEditRight umFER = new WindowsApplication1.UserManage.frmEditRight(); umFER.MdiParent = this; umFER.Show(); private void 数据备份ToolStripMenuItem_Click(object sender,
22、EventArgs e) SysManage.frmDataStore smFDS = new WindowsApplication1.SysManage.frmDataStore(); smFDS.MdiParent = this; smFDS.Show(); private void 数据还原ToolStripMenuItem_Click(object sender, EventArgs e) SysManage.frmDataRevert smFDR = new WindowsApplication1.SysManage.frmDataRevert(); smFDR.MdiParent
23、= this; smFDR.Show(); private void 数据清理CToolStripMenuItem_Click(object sender, EventArgs e) SysManage.frmDataClear smFDC = new WindowsApplication1.SysManage.frmDataClear(); smFDC.MdiParent = this; smFDC.Show(); private void 启用记事本ToolStripMenuItem_Click(object sender, EventArgs e) System.Diagnostics.
24、Process.Start(notepad.exe); private void 启用ToolStripMenuItem_Click(object sender, EventArgs e) System.Diagnostics.Process.Start(winword.exe); private void 启用ToolStripMenuItem1_Click(object sender, EventArgs e) System.Diagnostics.Process.Start(excel.exe); private void 水平平铺ToolStripMenuItem_Click(obje
25、ct sender, EventArgs e) this.LayoutMdi(MdiLayout.TileHorizontal); private void 垂直平铺ToolStripMenuItem_Click(object sender, EventArgs e) LayoutMdi(MdiLayout.TileVertical); private void 关于ToolStripMenuItem_Click(object sender, EventArgs e) Help.frmAbout hpFAU = new WindowsApplication1.Help.frmAbout();
26、hpFAU.MdiParent = this; hpFAU.Show(); private void 重新登录ToolStripMenuItem_Click(object sender, EventArgs e) Form1 flogin = new Form1(); flogin.Show(); this.Dispose(); private void 退去系统ToolStripMenuItem_Click(object sender, EventArgs e) this.Close();在窗体的On Close事件处理过程中关闭所有窗体或重新登录程序,其代码如下: private void
27、 frmMain_FormClosed(object sender, FormClosedEventArgs e) if (MessageBox.Show(确定要退去本系统吗?, 提示, MessageBoxButtons.OKCancel, MessageBoxIcon.Information) = DialogResult.OK) Application.Exit(); else frmMain fmain = new frmMain(); fmain.Show();4.2 数据库连接 客户关系管理软件离开数据库就由如无根之浮萍,所以数据库是重中之重。在工具菜单栏中点击连接到数据库,做如下
28、图9修改: 图9 连接数据库可以在服务器资源管理中查看连接情况和各表单、视图等的数据内容。如图10: 图10 服务器资源管理4.3登录模块设计登录模块主要是通过输入正确的用户名称、用户密码,并显示用户权限进入主窗体,如图11所示。 图11 登录模块运行结果1窗体设计步骤(1)选择“文件”/“新建项目”/“windows应用程序”菜单项,新建一个窗体,命名窗体为“Frm_login”,设置Text属性为“用户登录”;如图12所示。 图12 属性修改(2)在“所有windows窗体”组件页中点选“Label”组件,在窗体上添加4个Label组件,分别命名为“Label1”、“Label2”、“La
29、bel3”、“LabURight”,分别设置Text属性为“用户名称:”、“用户密码:”、“您所选择的用户权限为”、“ ”。将所有Label组件的AutoSize属性设为“True”。(3)在“所有windows窗体”组件页中点选“TextBox”组件,在窗体上添加1个TextBox组件,命名为“TxtPwd”,设置组件的PassWordChar属性为“*”。(4)在“所有windows窗体”组件页中点选“ConboBox”组件,添加到窗体上,命名为“CboxUName”,(5)在“所有windows窗体”组件页中点选“Button”组件,在窗体上添加2个Button组件,分别命名为“Butt
30、on1”、“Button2”。分别设置Text属性为“确定”、“取消”。2程序相关代码public partial class Form1 : Form public Form1() InitializeComponent(); public static string M_str_name;/记录登录用户名字 public static string M_str_pwd;/记录登录用户密码 public static string M_str_right;/记录登录用户的权限 BaseClass.BaseOperate boperate = new WindowsApplication1.B
31、aseClass.BaseOperate(); BaseClass.OperateAndValidate opAndvalidate = new BaseClass.OperateAndValidate(); private void Form1_Load(object sender, EventArgs e) opAndvalidate.cboxBind(select UserName from tb_User, tb_User, UserName, cboxUName); private void cboxUName_SelectedIndexChanged(object sender,
32、EventArgs e) SqlDataReader sqlread = boperate.getread(select UserName,UserRight from tb_User where UserName= + cboxUName.Text + ); if (sqlread.Read() labURight.Text = sqlreadUserRight.ToString(); M_str_right = labURight.Text; sqlread.Close(); private void btnLogin_Click(object sender, EventArgs e) S
33、qlDataReader sqlread = boperate.getread(select UserName,UserPwd from tb_User where UserName= + cboxUName.Text.Trim() + and UserPwd= + txtPwd.Text.Trim() + ); sqlread.Read(); if (sqlread.HasRows) M_str_name = cboxUName.Text; M_str_pwd = txtPwd.Text.Trim(); frmMain fmain = new frmMain(); this.Hide();
34、fmain.Show(); else MessageBox.Show(用户名或密码错误!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); txtPwd.Text = ; cboxUName.Focus(); sqlread.Close(); private void btnExit_Click(object sender, EventArgs e) Application.Exit();4.4客户资料管理 该模块主要是对客户资料的一些管理,客户基本信息收集,客户来源。可以对客户信息进行修改、查询、删除,亦可对客户通过邮件进行沟通。
35、客户界面友好,功能简洁明了,实用。如图13所示。 图13 客户资料管理模块运行结果代码如下: public partial class frmClientManage : Form public frmClientManage() InitializeComponent(); BaseClass.BaseOperate boperate = new WindowsApplication1.BaseClass.BaseOperate(); BaseClass.OperateAndValidate opAndvalidate = new WindowsApplication1.BaseClass.
36、OperateAndValidate(); protected string M_str_sql = select ClientID as 客户编号,CName as 客户名称,CStep as 客户等级, + CRoot as 客户来源,CTrade as 所属行业,CType as 客户类别,CArea as 所在区域,CPhone as 联系电话, + CFax as 传真号码,CPostCode as 邮政编码,CAddress as 联系地址,CEmail as Email地址,CRemark as 备注 from tb_ClientInfo; protected string M_
37、str_table = tb_ClientInfo; protected int M_int_judge; private void frmClientManage_Load(object sender, EventArgs e) opAndvalidate.cboxBind(select AreaName from tb_Area, tb_Area, AreaName, cboxCArea); DataSet myds = boperate.getds(M_str_sql, M_str_table); dgvClientInfo.DataSource = myds.Tables0; if (
38、myds.Tables0.Rows.Count 0) tsbtnDel.Enabled = true; else tsbtnDel.Enabled = false; private void tsbtnAdd_Click(object sender, EventArgs e) opAndvalidate.autoNum(select ClientID from tb_ClientInfo, tb_ClientInfo, ClientID, KH, 1000001, txtClientCode); tsbtnSave.Enabled = true; M_int_judge = 0; ClearT
39、ext(); private void tsbtnEdit_Click(object sender, EventArgs e) tsbtnSave.Enabled = true; M_int_judge = 1; private void tsbtnSave_Click(object sender, EventArgs e) if (M_int_judge = 0) if (txtCName.Text = ) MessageBox.Show(客户名称不能为空!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); else if (!opAndvalidate.validatePhone(txtCPhone.Text.Trim() errorCFax.Clear(); errorCPostCode.Clear(); errorCEmail.Clear(); errorCPhone.SetError(txtCPhone, 电话号码格式不正确);