• 715.02 KB
  • 2022-05-14 15:45:21 发布

客户管理系统_毕业设计论文

  • 48页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
毕业论文(设计)题目客户管理系统学生姓名学号院系滨江学院专业电子工程系指导教师二O一二年五月十四日48 摘要【摘要】在对目前市面上的客户管理系统(CRM)的广泛调查和研究之后,发现很多市面上的客户管理系统大多都是以产品为中心,忽略了客户管理中最重要的部分—客户关系。随着市场经济的不断发展,客户管理的重要性体现的越发明显。企业要想生存发展,就必须与与之息息相关的客户建立起良好的关系,不断发展新客户,以企业高质量的产品、优质的服务、良好的资信吸引新客户;经常维系与老客户的关系,以规范的客户管理方式、温馨的客户关怀、高效的客户服务来提升老客户的忠诚度。由此,客户管理系统应运而生。【关键词】CRM客户关系客户管理系统48 目录摘要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数据清理4148 4.8关于43附录A参考文献44附录B数据表4548 0引言在全球一体化、企业互动和以INTERNET为核心的时代,企业面临着如何发展潜在客户,如何将社会关系资源变为企业的销售和发展资源的一系列难办棘手的问题。在上述背景下,客户管理系统应运而生。本系统本着把握客户多样化和个性化的特点;以最快的速度响应客户需求;吸引新客户,留住老客户为原则。即从过去的以产品(Product-Centric)为中心的管理策略转向以客户为中心的(Customer-Centric)管理理念。系统旨在改善企业与客户之间的关系,建立新型的运营机制。本系统以企业级的整体客户管理为解决方案,帮助企业建立统一的客户资源、拓展销售渠道、寻求最佳市场方式、规范企业销售流程、提供科学分析方法,建立持久的客户体系。其大容量客户数据处理能力,让您的企业从多渠道收集信息,快速发现核心客户和潜在伙伴,进而给企业带来无限的利润。以客户为中心的理念在国外兴起于20世纪50年代,当时很多企业寄希望于通过改进技术、压缩生产周期、改善内部资源管理来提高生产增长率和利润,但事实上见效甚微。这样企业开始从强调降低经营成本的供应方发展策略转向了需求方策略。所谓需求方策略就是指与客户联系更加紧密,从客户关系方面挖掘新能源的策略,CRM应运而生。所不同的是,现在计算机可以帮助人们实现这些看似并不复杂而实际操作起来非常繁琐的工作。试想一下,当我们需要查找一个客户的电话号码时,只需敲几下键盘,就可以看到客户的详细资料(包括姓名、公司名称、电话、E-mail等),所有这些都是一个完善的客户管理系统所能完成的。48 1系统分析1.1需求分析根据市场的需求,要求系统具有以下功能:q完全人性化设计,无需专业人士指导,即可使用该系统。q由于该系统的使用对象多,要求有较好的权限管理。q系统具有数据备份及数据还原功能。能够保证系统数据的安全性。q方便的全方位的数据查询。q在相应的权限下,删除数据方便简单,数据稳定性好。q退出系统。1.2可行性分析本系统开发环境为visualstdio2005,数据库为SQLServer2000数据库。Visualstdio是用来快速开发Windows应用程序的应用程序开发工具,可以直观地使用图形化工具来创建Windows的应用程序。SQLServer2000是Microsoft公司推出的基于客户/服务器(C/S)模式的数据库系统,它提供了强大的企业数据库管理功能,是目前世界上的几个主流数据库管理系统之一。2总体设计2.1项目规划客户管理系统是一个典型的数据库开发应用程序,由资料管理、我方信息管理、统计分析、用户管理、系统维护、帮助模块组成,规划系统功能模块如下:q资料管理该模块主要负责区域信息管理、客户资料管理、竞争对手管理。q我方信息管理该模块主要负责基本信息管理、员工资料管理、货物资料管理、重大历史进程。q统计分析该模块主要负责客户级别分析、客户来源分析。q用户管理该模块主要负责用户管理、更改密码、设置权限。q系统维护该模块主要负责数据备份、数据还原、数据清理。q帮助48 该模块主要负责调用记事本、word、excel、水平平铺、垂直平铺、关于、重新登录、和退出系统。2.2系统功能架构图图1系统功能架构图3系统设计3.1设计目标本系统属于小型的数据库系统,为了对中小型企业客户的管理,实现一些初步的计算机化的管理。通过本系统可以达到以下目标:q灵活的运用表格批量输入数据,使信息传递更快捷。q系统采用人机对话方式,界面美观友好、信息查询灵活、方便、快捷、准确、数据存储安全可靠。q实现各种记录查询。q操作员可以随时修改自己的口令。48 q管理员可以设置操作员的权限q对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。q数据保密性强,为每个用户设置权限级别。q系统最大限度地实现了易安装性、易维护性和易操作性。3.2开发及运行环境系统开发平台:visualstdio。数据库管理系统软件:SQLServer2000。运行平台:Windowsxp。分辨率:最佳效果1024*768。3.3数据库设计本系统数据库采用SQLServer2000数据库,系统数据库名称为“db_Crm”。数据库db_Crm中包含8张表。下面分别给出数据表概要说明及数据表的结构。1.数据表概要说明如图2所示的即为本系统中数据库中的数据表的树形结构图,该数据表树型结构图包含系统所有数据表。可以清晰地反应数据库信息。图2数据表树型结构图2.数据表的结构由于篇幅所限,关于数据库中的数据表请参见附录B48 4主要功能模块设计4.1主窗体设计主窗体主要是对客户管理系统的各模块进行调用,在主窗体中显示操作员的姓名及日期。客户管理系统主窗体运行结果如图3所示。图3主窗体运行结果1.窗体设计步骤(1)运行visualstdio后,创建一个新项目windows应用程序,作为主窗体。命名窗体为“frmMain”,设置text属性为“客户管理管理系统”。(2)在工具箱中的菜单和工具栏选项卡中点选“menustrip”组件,直接拖拽到窗体上,双击该组件打开菜单编辑器,如图4所示。48 图4显示菜单编辑器(3)在属性窗口中,设置text属性,如图5所示。图5添加下拉菜单按钮(4)在组件选项卡中选择“NavBarControl”组件,直接拖到窗体中。在属性窗口设置Dock属性,这里设置为left,在group中进行成员的添加。如图6、图7所示。48 图6group编辑器图7nbcMenu效果图(5)在菜单和工具栏选项卡中点选“StatusStrip”组件,添加到窗体上,如图8所示。图8任务栏2.程序相关代码在窗体显示时,先调用登录窗体,如果登录成功则在主界面的任务栏上显示操作员名称及日期。窗体的显示事件代码如下:privatevoidfrmMain_Load(objectsender,EventArgse){toolStripStatusLabel1.Text="||操作用户:"+Form1.M_str_name;toolStripStatusLabel2.Text="||登录时间:"+DateTime.Now.ToLongDateString()+""+DateTime.Now.ToLongTimeString();if(Form1.M_str_right.ToString().Trim()=="普通用户"){客户资料管理ToolStripMenuItem.Visible=false;竞争对手管理ToolStripMenuItem.Visible=false;我方信息管理ToolStripMenuItem.Visible=false;48 货物资料管理ToolStripMenuItem.Visible=false;员工资料管理ToolStripMenuItem.Visible=false;重大历史进程ToolStripMenuItem.Visible=false;基本信息管理ToolStripMenuItem.Visible=false;用户管理ToolStripMenuItem.Visible=false;设置权限RToolStripMenuItem.Visible=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;}}在Frmmain窗口中各个onclick事件处理过程中,调用各窗体菜单按钮单击事件的处理过程。下面给出部分代码:privatevoid区域信息管理ToolStripMenuItem_Click(objectsender,EventArgse){DataManage.frmAreaManagedmFAM=newWindowsApplication1.DataManage.frmAreaManage();dmFAM.MdiParent=this;dmFAM.Show();}privatevoid客户资料管理ToolStripMenuItem_Click(objectsender,EventArgse){DataManage.frmClientManagedmFCM=newWindowsApplication1.DataManage.frmClientManage();dmFCM.MdiParent=this;dmFCM.Show();}privatevoid竞争对手管理ToolStripMenuItem_Click(objectsender,EventArgse){48 DataManage.frmOppManagedmFOM=newWindowsApplication1.DataManage.frmOppManage();dmFOM.MdiParent=this;dmFOM.Show();}privatevoid基本信息管理ToolStripMenuItem_Click(objectsender,EventArgse){PInfoMange.frmBInfoManagepmFBM=newWindowsApplication1.PInfoMange.frmBInfoManage();pmFBM.MdiParent=this;pmFBM.Show();}privatevoid员工资料管理ToolStripMenuItem_Click(objectsender,EventArgse){PInfoMange.frmEInfoManagepmFEM=newWindowsApplication1.PInfoMange.frmEInfoManage();pmFEM.MdiParent=this;pmFEM.Show();}privatevoid货物资料管理ToolStripMenuItem_Click(objectsender,EventArgse){PInfoMange.frmGInfoManagepmFGM=newWindowsApplication1.PInfoMange.frmGInfoManage();pmFGM.MdiParent=this;pmFGM.Show();}privatevoid重大历史进程ToolStripMenuItem_Click(objectsender,EventArgse){PInfoMange.frmImportantEventpmFIE=newWindowsApplication1.PInfoMange.frmImportantEvent();pmFIE.MdiParent=this;pmFIE.Show();}privatevoid客户级别分析ToolStripMenuItem_Click(objectsender,EventArgse){SumManage.frmCLAnalysesmFCL=newWindowsApplication1.SumManage.frmCLAnalyse();48 smFCL.MdiParent=this;smFCL.Show();}privatevoid客户来源分析ToolStripMenuItem_Click(objectsender,EventArgse){SumManage.frmCRAnalysesmFCR=newWindowsApplication1.SumManage.frmCRAnalyse();smFCR.MdiParent=this;smFCR.Show();}privatevoid用户管理ToolStripMenuItem1_Click(objectsender,EventArgse){UserManage.frmUserManageumFUM=newWindowsApplication1.UserManage.frmUserManage();umFUM.MdiParent=this;umFUM.Show();}privatevoid更改密码ToolStripMenuItem_Click(objectsender,EventArgse){UserManage.frmEditPwdumFEP=newWindowsApplication1.UserManage.frmEditPwd();umFEP.MdiParent=this;umFEP.Show();}privatevoid设置权限RToolStripMenuItem_Click(objectsender,EventArgse){UserManage.frmEditRightumFER=newWindowsApplication1.UserManage.frmEditRight();umFER.MdiParent=this;umFER.Show();}privatevoid数据备份ToolStripMenuItem_Click(objectsender,EventArgse){SysManage.frmDataStoresmFDS=newWindowsApplication1.SysManage.frmDataStore();smFDS.MdiParent=this;smFDS.Show();}privatevoid数据还原ToolStripMenuItem_Click(objectsender,EventArgse){48 SysManage.frmDataRevertsmFDR=newWindowsApplication1.SysManage.frmDataRevert();smFDR.MdiParent=this;smFDR.Show();}privatevoid数据清理CToolStripMenuItem_Click(objectsender,EventArgse){SysManage.frmDataClearsmFDC=newWindowsApplication1.SysManage.frmDataClear();smFDC.MdiParent=this;smFDC.Show();}privatevoid启用记事本ToolStripMenuItem_Click(objectsender,EventArgse){System.Diagnostics.Process.Start("notepad.exe");}privatevoid启用ToolStripMenuItem_Click(objectsender,EventArgse){System.Diagnostics.Process.Start("winword.exe");}privatevoid启用ToolStripMenuItem1_Click(objectsender,EventArgse){System.Diagnostics.Process.Start("excel.exe");}privatevoid水平平铺ToolStripMenuItem_Click(objectsender,EventArgse){this.LayoutMdi(MdiLayout.TileHorizontal);}privatevoid垂直平铺ToolStripMenuItem_Click(objectsender,EventArgse){LayoutMdi(MdiLayout.TileVertical);}privatevoid关于ToolStripMenuItem_Click(objectsender,EventArgse){Help.frmAbouthpFAU=newWindowsApplication1.Help.frmAbout();hpFAU.MdiParent=this;hpFAU.Show();}48 privatevoid重新登录ToolStripMenuItem_Click(objectsender,EventArgse){Form1flogin=newForm1();flogin.Show();this.Dispose();}privatevoid退去系统ToolStripMenuItem_Click(objectsender,EventArgse){this.Close();}在窗体的OnClose事件处理过程中关闭所有窗体或重新登录程序,其代码如下:privatevoidfrmMain_FormClosed(objectsender,FormClosedEventArgse){if(MessageBox.Show("确定要退去本系统吗?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information)==DialogResult.OK){Application.Exit();}else{frmMainfmain=newfrmMain();fmain.Show();}}4.2数据库连接客户关系管理软件离开数据库就由如无根之浮萍,所以数据库是重中之重。在工具菜单栏中点击连接到数据库,做如下图9修改:48 图9连接数据库可以在服务器资源管理中查看连接情况和各表单、视图等的数据内容。如图10:48 图10服务器资源管理4.3登录模块设计登录模块主要是通过输入正确的用户名称、用户密码,并显示用户权限进入主窗体,如图11所示。图11登录模块运行结果1.窗体设计步骤(1)选择“文件”/“新建项目”/“windows应用程序”菜单项,新建一个窗体,命名窗体为“Frm_login”,设置Text属性为“用户登录”;如图12所示。图12属性修改(2)在“所有windows窗体”组件页中点选“Label”组件,在窗体上添加4个Label组件,分别命名为“Label1”、“Label2”、“Label3”、“LabURight”,分别设置Text属性为“用户名称:”、“用户密码:”、“您所选择的用户权限为”、“”。将所有Label组件的AutoSize属性设为“True”。(3)在“所有windows窗体”组件页中点选“TextBox”组件,在窗体上添加1个TextBox组件,命名为“TxtPwd”,设置组件的PassWordChar属性为“*”。(4)在“所有windows窗体”组件页中点选“ConboBox”组件,添加到窗体上,命名为“CboxUName”,48 (5)在“所有windows窗体”组件页中点选“Button”组件,在窗体上添加2个Button组件,分别命名为“Button1”、“Button2”。分别设置Text属性为“确定”、“取消”。2.程序相关代码publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}publicstaticstringM_str_name;//记录登录用户名字publicstaticstringM_str_pwd;//记录登录用户密码publicstaticstringM_str_right;//记录登录用户的权限BaseClass.BaseOperateboperate=newWindowsApplication1.BaseClass.BaseOperate();BaseClass.OperateAndValidateopAndvalidate=newBaseClass.OperateAndValidate();privatevoidForm1_Load(objectsender,EventArgse){opAndvalidate.cboxBind("selectUserNamefromtb_User","tb_User","UserName",cboxUName);}privatevoidcboxUName_SelectedIndexChanged(objectsender,EventArgse){SqlDataReadersqlread=boperate.getread("selectUserName,UserRightfromtb_UserwhereUserName=""+cboxUName.Text+""");if(sqlread.Read()){labURight.Text=sqlread["UserRight"].ToString();M_str_right=labURight.Text;}sqlread.Close();}privatevoidbtnLogin_Click(objectsender,EventArgse)48 {SqlDataReadersqlread=boperate.getread("selectUserName,UserPwdfromtb_UserwhereUserName=""+cboxUName.Text.Trim()+""andUserPwd=""+txtPwd.Text.Trim()+""");sqlread.Read();if(sqlread.HasRows){M_str_name=cboxUName.Text;M_str_pwd=txtPwd.Text.Trim();frmMainfmain=newfrmMain();this.Hide();fmain.Show();}else{MessageBox.Show("用户名或密码错误!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);txtPwd.Text="";cboxUName.Focus();}sqlread.Close();}privatevoidbtnExit_Click(objectsender,EventArgse){Application.Exit();}}4.4客户资料管理该模块主要是对客户资料的一些管理,客户基本信息收集,客户来源。可以对客户信息进行修改、查询、删除,亦可对客户通过邮件进行沟通。客户界面友好,功能简洁明了,实用。如图13所示。48 图13客户资料管理模块运行结果代码如下:publicpartialclassfrmClientManage:Form{publicfrmClientManage(){InitializeComponent();}BaseClass.BaseOperateboperate=newWindowsApplication1.BaseClass.BaseOperate();BaseClass.OperateAndValidateopAndvalidate=newWindowsApplication1.BaseClass.OperateAndValidate();protectedstringM_str_sql="selectClientIDas客户编号,CNameas客户名称,CStepas客户等级,"+"CRootas客户来源,CTradeas所属行业,CTypeas客户类别,CAreaas所在区域,CPhoneas联系电话,"+"CFaxas传真号码,CPostCodeas邮政编码,CAddressas联系地址,CEmailasEmail地址,CRemarkas备注fromtb_ClientInfo";protectedstringM_str_table="tb_ClientInfo";48 protectedintM_int_judge;privatevoidfrmClientManage_Load(objectsender,EventArgse){opAndvalidate.cboxBind("selectAreaNamefromtb_Area","tb_Area","AreaName",cboxCArea);DataSetmyds=boperate.getds(M_str_sql,M_str_table);dgvClientInfo.DataSource=myds.Tables[0];if(myds.Tables[0].Rows.Count>0)tsbtnDel.Enabled=true;elsetsbtnDel.Enabled=false;}privatevoidtsbtnAdd_Click(objectsender,EventArgse){opAndvalidate.autoNum("selectClientIDfromtb_ClientInfo","tb_ClientInfo","ClientID","KH","1000001",txtClientCode);tsbtnSave.Enabled=true;M_int_judge=0;ClearText();}privatevoidtsbtnEdit_Click(objectsender,EventArgse){tsbtnSave.Enabled=true;M_int_judge=1;}privatevoidtsbtnSave_Click(objectsender,EventArgse){if(M_int_judge==0){if(txtCName.Text==""){MessageBox.Show("客户名称不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);48 }else{if(!opAndvalidate.validatePhone(txtCPhone.Text.Trim())){errorCFax.Clear();errorCPostCode.Clear();errorCEmail.Clear();errorCPhone.SetError(txtCPhone,"电话号码格式不正确");}elseif(!opAndvalidate.validateFax(txtCFax.Text.Trim())){errorCPhone.Clear();errorCPostCode.Clear();errorCEmail.Clear();errorCFax.SetError(txtCFax,"传真号码输入格式不正确");}elseif(!opAndvalidate.validatePostCode(txtCPostCode.Text.Trim())){errorCFax.Clear();errorCPhone.Clear();errorCEmail.Clear();errorCPostCode.SetError(txtCPostCode,"邮编输入格式不正确");}elseif(!opAndvalidate.validateEmail(txtCEmail.Text.Trim())){errorCFax.Clear();errorCPhone.Clear();errorCPostCode.Clear();errorCEmail.SetError(txtCEmail,"E-mail地址输入格式不正确");}else{errorCFax.Clear();errorCPhone.Clear();errorCPostCode.Clear();48 errorCEmail.Clear();boperate.getcom("insertintotb_ClientInfo(ClientID,CName,CStep,CRoot,CTrade,CType,"+"CArea,CPhone,CFax,CPostCode,CAddress,CEmail,CRemark)values(""+txtClientCode.Text.Trim()+"",""+txtCName.Text.Trim()+"",""+cboxCStep.Text.Trim()+"",""+cboxCRoot.Text.Trim()+"",""+cboxCTrade.Text.Trim()+"",""+cboxCType.Text.Trim()+"",""+cboxCArea.Text.Trim()+"",""+txtCPhone.Text.Trim()+"",""+txtCFax.Text.Trim()+"",""+txtCPostCode.Text.Trim()+"",""+txtCAddress.Text.Trim()+"",""+txtCEmail.Text.Trim()+"",""+txtCRemark.Text.Trim()+"")");frmClientManage_Load(sender,e);MessageBox.Show("客户信息添加成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);tsbtnSave.Enabled=false;}}}if(M_int_judge==1){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,"电话号码格式不正确");}48 elseif(!opAndvalidate.validateFax(txtCFax.Text.Trim())){errorCPhone.Clear();errorCPostCode.Clear();errorCEmail.Clear();errorCFax.SetError(txtCFax,"传真号码输入格式不正确");}elseif(!opAndvalidate.validatePostCode(txtCPostCode.Text.Trim())){errorCFax.Clear();errorCPhone.Clear();errorCEmail.Clear();errorCPostCode.SetError(txtCPostCode,"邮编输入格式不正确");}elseif(!opAndvalidate.validateEmail(txtCEmail.Text.Trim())){errorCFax.Clear();errorCPhone.Clear();errorCPostCode.Clear();errorCEmail.SetError(txtCEmail,"E-mail地址输入格式不正确");}else{errorCFax.Clear();errorCPhone.Clear();errorCPostCode.Clear();errorCEmail.Clear();boperate.getcom("updatetb_ClientInfosetCName=""+txtCName.Text.Trim()+"",CStep=""+cboxCStep.Text.Trim()+"",CRoot=""+cboxCRoot.Text.Trim()+"",CTrade=""+cboxCTrade.Text.Trim()+"",CType=""+cboxCType.Text.Trim()+"",CArea=""+cboxCArea.Text.Trim()+"",CPhone=""+txtCPhone.Text.Trim()+"",CFax=""+txtCFax.Text.Trim()+"",CPostCode=""+txtCPostCode.Text.Trim()+"",CAddress=""+txtCAddress.Text.Trim()48 +"",CEmail=""+txtCEmail.Text.Trim()+"",CRemark=""+txtCRemark.Text.Trim()+""whereClientID=""+txtClientCode.Text.Trim()+""");frmClientManage_Load(sender,e);MessageBox.Show("客户信息修改成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);tsbtnSave.Enabled=false;}}}}privatevoidtsbtnDel_Click(objectsender,EventArgse){if(MessageBox.Show("确定要删除该客户吗?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK){boperate.getcom("deletefromtb_ClientInfowhereClientID=""+Convert.ToString(dgvClientInfo[0,dgvClientInfo.CurrentCell.RowIndex].Value).Trim()+""");frmClientManage_Load(sender,e);MessageBox.Show("删除数据成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}}privatevoidtsbtnLook_Click(objectsender,EventArgse){if(tstxtKeyWord.Text==""){frmClientManage_Load(sender,e);}if(tscboxCondition.Text.Trim()=="客户编号"){DataSetmyds=boperate.getds(M_str_sql+"whereClientIDlike"%"+tstxtKeyWord.Text.Trim()+"%"",M_str_table);if(myds.Tables[0].Rows.Count>0)dgvClientInfo.DataSource=myds.Tables[0];48 elseMessageBox.Show("没有要查找的相关记录!");}if(tscboxCondition.Text.Trim()=="客户名称"){DataSetmyds=boperate.getds(M_str_sql+"whereCNamelike"%"+tstxtKeyWord.Text.Trim()+"%"",M_str_table);if(myds.Tables[0].Rows.Count>0)dgvClientInfo.DataSource=myds.Tables[0];elseMessageBox.Show("没有要查找的相关记录!");}if(tscboxCondition.Text.Trim()=="客户来源"){DataSetmyds=boperate.getds(M_str_sql+"whereCRootlike"%"+tstxtKeyWord.Text.Trim()+"%"",M_str_table);if(myds.Tables[0].Rows.Count>0)dgvClientInfo.DataSource=myds.Tables[0];elseMessageBox.Show("没有要查找的相关记录!");}if(tscboxCondition.Text.Trim()=="所属行业"){DataSetmyds=boperate.getds(M_str_sql+"whereCTradelike"%"+tstxtKeyWord.Text.Trim()+"%"",M_str_table);if(myds.Tables[0].Rows.Count>0)dgvClientInfo.DataSource=myds.Tables[0];elseMessageBox.Show("没有要查找的相关记录!");}}privatevoidtsbtnRClient_Click(objectsender,EventArgse){DataManage.frmRClientdmFRC=newfrmRClient();dmFRC.ShowDialog();48 }privatevoidtsbtnExit_Click(objectsender,EventArgse){Close();}publicvoidClearText(){txtCName.Text="";txtCPhone.Text="";txtCFax.Text="";txtCPostCode.Text="";txtCAddress.Text="";txtCEmail.Text="";txtCRemark.Text="";}privatevoiddgvClientInfo_CellClick(objectsender,DataGridViewCellEventArgse){txtClientCode.Text=Convert.ToString(dgvClientInfo[0,dgvClientInfo.CurrentCell.RowIndex].Value).Trim();txtCName.Text=Convert.ToString(dgvClientInfo[1,dgvClientInfo.CurrentCell.RowIndex].Value).Trim();cboxCStep.Text=Convert.ToString(dgvClientInfo[2,dgvClientInfo.CurrentCell.RowIndex].Value).Trim();cboxCRoot.Text=Convert.ToString(dgvClientInfo[3,dgvClientInfo.CurrentCell.RowIndex].Value).Trim();cboxCTrade.Text=Convert.ToString(dgvClientInfo[4,dgvClientInfo.CurrentCell.RowIndex].Value).Trim();cboxCType.Text=Convert.ToString(dgvClientInfo[5,dgvClientInfo.CurrentCell.RowIndex].Value).Trim();cboxCArea.Text=Convert.ToString(dgvClientInfo[6,48 dgvClientInfo.CurrentCell.RowIndex].Value).Trim();txtCPhone.Text=Convert.ToString(dgvClientInfo[7,dgvClientInfo.CurrentCell.RowIndex].Value).Trim();txtCFax.Text=Convert.ToString(dgvClientInfo[8,dgvClientInfo.CurrentCell.RowIndex].Value).Trim();txtCPostCode.Text=Convert.ToString(dgvClientInfo[9,dgvClientInfo.CurrentCell.RowIndex].Value).Trim();txtCAddress.Text=Convert.ToString(dgvClientInfo[10,dgvClientInfo.CurrentCell.RowIndex].Value).Trim();txtCEmail.Text=Convert.ToString(dgvClientInfo[11,dgvClientInfo.CurrentCell.RowIndex].Value).Trim();txtCRemark.Text=Convert.ToString(dgvClientInfo[12,dgvClientInfo.CurrentCell.RowIndex].Value).Trim();}}4.5基本信息管理该模块主要是对企业的基本信息进行采集和管理,增添、修改、删除。如图14所示。图14基本信息管理模块运行结果48 代码如下:publicpartialclassfrmBInfoManage:Form{publicfrmBInfoManage(){InitializeComponent();}BaseClass.BaseOperateboperate=newWindowsApplication1.BaseClass.BaseOperate();BaseClass.OperateAndValidateopAndvalidate=newWindowsApplication1.BaseClass.OperateAndValidate();protectedstringM_str_sql="selectCName企业名称,CManager法人代表,CPhone联系电话,CPostCode邮政编码,"+"CFax传真号码,CEmailEmail地址,CNAddress企业网址,CAddress联系地址,CRemark备注fromtb_CInfo";protectedstringM_str_table="tb_CInfo";protectedintM_int_judge;privatevoidfrmBInfoManage_Load(objectsender,EventArgse){DataSetmyds=boperate.getds(M_str_sql,M_str_table);dgvCInfo.DataSource=myds.Tables[0];if(myds.Tables[0].Rows.Count>0){tsbtnAdd.Visible=false;tsbtnDel.Enabled=true;}else{tsbtnAdd.Visible=true;tsbtnDel.Enabled=false;}}privatevoidtsbtnAdd_Click(objectsender,EventArgse){tsbtnSave.Enabled=true;M_int_judge=0;48 ClearText();}publicvoidClearText(){txtCName.Text="";txtCManager.Text="";txtCPhone.Text="";txtCFax.Text="";txtCPostCode.Text="";txtCAddress.Text="";txtCEmail.Text="";txtCNAddress.Text="";txtCRemark.Text="";}privatevoidtsbtnExit_Click(objectsender,EventArgse){Close();}privatevoidtsbtnSave_Click(objectsender,EventArgse){if(M_int_judge==0)//添加操作{if(txtCName.Text==""){MessageBox.Show("该企业名称不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}else{if(!opAndvalidate.validatePhone(txtCPhone.Text.Trim())){errorBCFax.Clear();errorBCEmail.Clear();errorBCPostCode.Clear();errorBCNAddress.Clear();48 errorBCPhone.SetError(txtCPhone,"电话号码格式不正确");}elseif(!opAndvalidate.validateFax(txtCFax.Text.Trim())){errorBCPhone.Clear();errorBCEmail.Clear();errorBCPostCode.Clear();errorBCNAddress.Clear();errorBCFax.SetError(txtCPhone,"传真号码格式不正确");}elseif(!opAndvalidate.validatePostCode(txtCPostCode.Text.Trim())){errorBCPhone.Clear();errorBCFax.Clear();errorBCEmail.Clear();errorBCNAddress.Clear();errorBCPostCode.SetError(txtCPostCode,"邮政编码输入有误");}elseif(!opAndvalidate.validateEmail(txtCEmail.Text.Trim())){errorBCPostCode.Clear();errorBCPhone.Clear();errorBCNAddress.Clear();errorBCFax.Clear();errorBCEmail.SetError(txtCEmail,"E-mail地址输入有误");}elseif(!opAndvalidate.validateNAddress(txtCNAddress.Text.Trim())){errorBCEmail.Clear();errorBCFax.Clear();errorBCPhone.Clear();errorBCPostCode.Clear();errorBCNAddress.SetError(txtCNAddress,"企业网址输入不正确");}48 else{errorBCEmail.Clear();errorBCFax.Clear();errorBCPhone.Clear();errorBCPostCode.Clear();errorBCNAddress.Clear();boperate.getcom("insertintotb_CInfo(CName,CManager,CPhone,CPostCode,CFax,CEmail,CNAddress,CAddress,CRemark)"+"values(""+txtCName.Text.Trim()+"",""+txtCPhone.Text.Trim()+"",""+txtCPostCode.Text.Trim()+"",""+txtCFax.Text.Trim()+"",""+txtCEmail.Text.Trim()+"",""+txtCNAddress.Text.Trim()+"",""+txtCAddress.Text.Trim()+"",""+txtCRemark.Text.Trim()+"")");frmBInfoManage_Load(sender,e);MessageBox.Show("企业信息添加成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);tsbtnSave.Enabled=false;}}}if(M_int_judge==1){if(txtCName.Text==""){MessageBox.Show("企业名称不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}else{if(!opAndvalidate.validatePhone(txtCPhone.Text.Trim())){errorBCFax.Clear();errorBCPostCode.Clear();errorBCEmail.Clear();errorBCNAddress.Clear();48 errorBCPhone.SetError(txtCPhone,"电话号码格式不正确");}elseif(!opAndvalidate.validateFax(txtCFax.Text.Trim())){errorBCPhone.Clear();errorBCPostCode.Clear();errorBCEmail.Clear();errorBCNAddress.Clear();errorBCFax.SetError(txtCFax,"传真号码输入格式不正确");}elseif(!opAndvalidate.validatePostCode(txtCPostCode.Text.Trim())){errorBCFax.Clear();errorBCPhone.Clear();errorBCEmail.Clear();errorBCNAddress.Clear();errorBCPostCode.SetError(txtCPostCode,"邮编输入格式不正确");}elseif(!opAndvalidate.validateEmail(txtCEmail.Text.Trim())){errorBCFax.Clear();errorBCPhone.Clear();errorBCPostCode.Clear();errorBCNAddress.Clear();errorBCEmail.SetError(txtCEmail,"E-mail地址输入格式不正确");}elseif(!opAndvalidate.validateNAddress(txtCNAddress.Text.Trim())){errorBCFax.Clear();errorBCPhone.Clear();errorBCPostCode.Clear();errorBCEmail.Clear();errorBCNAddress.SetError(txtCNAddress,"企业网址输入格式不正确");}else{48 errorBCFax.Clear();errorBCPhone.Clear();errorBCPostCode.Clear();errorBCEmail.Clear();errorBCNAddress.Clear();boperate.getcom("updatetb_CInfosetCName=""+txtCName.Text.Trim()+"",CManager=""+txtCManager.Text.Trim()+"",CPhone=""+txtCPhone.Text.Trim()+"",CPostCode=""+txtCPostCode.Text.Trim()+"",CFax=""+txtCFax.Text.Trim()+"",CEmail=""+txtCEmail.Text.Trim()+"",CNAddress=""+txtCNAddress.Text.Trim()+"",CAddress=""+txtCAddress.Text.Trim()+"",CRemark=""+txtCRemark.Text.Trim()+""whereCName=""+txtCName.Text.Trim()+""");frmBInfoManage_Load(sender,e);MessageBox.Show("企业信息修改成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);tsbtnSave.Enabled=false;}}}}privatevoidtsbtnEdit_Click(objectsender,EventArgse){tsbtnSave.Enabled=true;M_int_judge=1;}privatevoidtsbtnDel_Click(objectsender,EventArgse){if(MessageBox.Show("确实要删除该企业信息吗?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK){boperate.getcom("deletefromtb_CInfowhere48 CName=""+Convert.ToString(dgvCInfo[0,dgvCInfo.CurrentCell.RowIndex].Value).ToString()+""");frmBInfoManage_Load(sender,e);MessageBox.Show("删除数据成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}}privatevoiddgvCInfo_CellClick(objectsender,DataGridViewCellEventArgse){txtCName.Text=Convert.ToString(dgvCInfo[0,dgvCInfo.CurrentCell.RowIndex].Value).Trim();txtCManager.Text=Convert.ToString(dgvCInfo[1,dgvCInfo.CurrentCell.RowIndex].Value).Trim();txtCPhone.Text=Convert.ToString(dgvCInfo[2,dgvCInfo.CurrentCell.RowIndex].Value).Trim();txtCPostCode.Text=Convert.ToString(dgvCInfo[3,dgvCInfo.CurrentCell.RowIndex].Value).Trim();txtCFax.Text=Convert.ToString(dgvCInfo[4,dgvCInfo.CurrentCell.RowIndex].Value).Trim();txtCEmail.Text=Convert.ToString(dgvCInfo[5,dgvCInfo.CurrentCell.RowIndex].Value).Trim();txtCNAddress.Text=Convert.ToString(dgvCInfo[6,dgvCInfo.CurrentCell.RowIndex].Value).Trim();txtCAddress.Text=Convert.ToString(dgvCInfo[7,dgvCInfo.CurrentCell.RowIndex].Value).Trim();txtCRemark.Text=Convert.ToString(dgvCInfo[8,dgvCInfo.CurrentCell.RowIndex].Value).Trim();}}4.6用户管理该模块是对用户信息的管理,可以增减用户数量,修改用户的登录权限,查询用户亦可。管理员级别的用户可以登录内网,可对一切进行修改。普通用户的权限则相对减少,只能进行常规操作,不能进行系统性操作。如图15所示。48 图15用户管理模块运行结果代码如下:publicpartialclassfrmUserManage:Form{publicfrmUserManage(){InitializeComponent();}BaseClass.BaseOperateboperate=newWindowsApplication1.BaseClass.BaseOperate();BaseClass.OperateAndValidateopAndvalidate=newWindowsApplication1.BaseClass.OperateAndValidate();protectedstringM_str_sql="selectUserIDas用户编号,UserNameas用户名称,UserPwdas用户密码,"+"UserRightas用户权限fromtb_User";protectedstringM_str_table="tb_User";protectedintM_int_judge;privatevoidfrmUserManage_Load(objectsender,EventArgse){DataSetmyds=boperate.getds(M_str_sql,M_str_table);dgvUInfo.DataSource=myds.Tables[0];if(myds.Tables[0].Rows.Count>0)tsbtnDel.Enabled=true;48 elsetsbtnDel.Enabled=false;}privatevoidtsbtnAdd_Click(objectsender,EventArgse){opAndvalidate.autoNum("selectUserIDfromtb_User","tb_User","UserID","YH","1000001",txtUserID);tsbtnSave.Enabled=true;M_int_judge=0;txtUserName.Text="";txtUserPwd.Text="";}privatevoidtsbtnEdit_Click(objectsender,EventArgse){tsbtnSave.Enabled=true;M_int_judge=1;}privatevoidtsbtnSave_Click(objectsender,EventArgse){if(M_int_judge==0){if(txtUserName.Text==""){MessageBox.Show("用户名称不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}else{boperate.getcom("insertintotb_User(UserID,UserName,UserPwd,UserRight)"+"values(""+txtUserID.Text.Trim()+"",""+txtUserName.Text.Trim()+"",""+txtUserPwd.Text.Trim()+"",""+cboxURight.Text.Trim()+"")");48 frmUserManage_Load(sender,e);MessageBox.Show("用户信息添加成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);tsbtnSave.Enabled=false;}}if(M_int_judge==1){if(txtUserName.Text==""){MessageBox.Show("用户名称不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}else{boperate.getcom("updatetb_UsersetUserName=""+txtUserName.Text.Trim()+"",UserPwd=""+txtUserPwd.Text.Trim()+"",UserRight=""+cboxURight.Text.Trim()+""whereUserID=""+txtUserID.Text.Trim()+""");frmUserManage_Load(sender,e);MessageBox.Show("用户信息修改成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);tsbtnSave.Enabled=false;}}}privatevoidtsbtnDel_Click(objectsender,EventArgse){if(MessageBox.Show("确定要删除该用户吗?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK){boperate.getcom("deletefromtb_UserwhereUserID=""+Convert.ToString(dgvUInfo[0,dgvUInfo.CurrentCell.RowIndex].Value).Trim()+""");frmUserManage_Load(sender,e);48 MessageBox.Show("删除数据成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}}privatevoidtsbtnLook_Click(objectsender,EventArgse){if(tstxtKeyWord.Text==""){frmUserManage_Load(sender,e);}if(tscboxCondition.Text.Trim()=="用户编号"){DataSetmyds=boperate.getds(M_str_sql+"whereUserIDlike"%"+tstxtKeyWord.Text.Trim()+"%"",M_str_table);if(myds.Tables[0].Rows.Count>0)dgvUInfo.DataSource=myds.Tables[0];elseMessageBox.Show("没有要查找的相关记录!");}if(tscboxCondition.Text.Trim()=="用户名称"){DataSetmyds=boperate.getds(M_str_sql+"whereUserNamelike"%"+tstxtKeyWord.Text.Trim()+"%"",M_str_table);if(myds.Tables[0].Rows.Count>0)dgvUInfo.DataSource=myds.Tables[0];elseMessageBox.Show("没有要查找的相关记录!");}}privatevoidtsbtnExit_Click(objectsender,EventArgse){Close();}48 privatevoiddgvUInfo_CellClick(objectsender,DataGridViewCellEventArgse){txtUserID.Text=Convert.ToString(dgvUInfo[0,dgvUInfo.CurrentCell.RowIndex].Value).Trim();txtUserName.Text=Convert.ToString(dgvUInfo[1,dgvUInfo.CurrentCell.RowIndex].Value).Trim();txtUserPwd.Text=Convert.ToString(dgvUInfo[2,dgvUInfo.CurrentCell.RowIndex].Value).Trim();cboxURight.Text=Convert.ToString(dgvUInfo[3,dgvUInfo.CurrentCell.RowIndex].Value).Trim();}privatevoidbindingNavigator1_RefreshItems(objectsender,EventArgse){}privatevoiddgvUInfo_CellContentClick(objectsender,DataGridViewCellEventArgse){}}4.7数据清理该模块是对数据库表单的清理,由于长期存储,考虑到信息量会很大,所以提供了这一模块,可以清理以前的数据信息,另还提供了数据的备份。如图15所示。图15数据清理运行结果代码如下:48 publicpartialclassfrmDataClear:Form{publicfrmDataClear(){InitializeComponent();}BaseClass.BaseOperateboperate=newWindowsApplication1.BaseClass.BaseOperate();privatevoidfrmDataClear_Load(objectsender,EventArgse){}privatevoidbtnExit_Click(objectsender,EventArgse){Close();}privatevoidbtnClear_Click(objectsender,EventArgse){if(chkCInfo.Checked)boperate.getcom("deletefromtb_CInfo");if(chkClientInfo.Checked)boperate.getcom("deletefromtb_ClientInfo");if(chkOppInfo.Checked)boperate.getcom("deletefromtb_Opponent");if(chkEmployeeInfo.Checked)boperate.getcom("deletefromtb_Employee");if(chkGoodsInfo.Checked)boperate.getcom("deletefromtb_GoodsInfo");if(chkEventInfo.Checked)boperate.getcom("deletefromtb_Event");if(chkAreaInfo.Checked)boperate.getcom("deletefromtb_Area");MessageBox.Show("数据清理成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);48 }}4.8关于关于模块是软件信息的描述,这里简单设计,如图16所示。图16关于模块运行结果代码如下:publicpartialclassfrmAbout:Form{publicfrmAbout(){InitializeComponent();}privatevoidfrmAbout_Load(objectsender,EventArgse){stringpath=Application.StartupPath+"\About.txt";System.IO.StreamReaderreader=newSystem.IO.StreamReader(path);reader.Close();}privatevoidbtnExit_Click(objectsender,EventArgse){Close();}48 }附录A参考文献1.VisualBasic数据库系统开发完全手册人民邮电出版社王春才、高春艳、李俊民2006年3月2.VisualBasic信息系统开发实例精选机械工业出版社宋坤、赵智勇、刘强等2005年7月3.SQLServer数据库开发实例解析机械工业出版社宋昆、李严等2006年1月4.VisualBasic精彩编程200例机械工业出版社赛奎春、高春艳等2003年1月5.VisualBasic工程应用与项目实践机械工业出版社高春艳、李俊民等2005年1月6.VisualBasic信息系统开发实例精选机械工业出版社高春艳、李俊民、张耀庭等2005年7月7.Visualbasic数据库开发关键技术与实例应用人民邮电出版社高春艳、李艳2004年5月8.Delphi数据库开发实例解析机械工业出版社赛奎春、郑骁鹏等2004年2月9.Delphi数据库系统开发完全手册人民邮电出版社2006年3月10.VisualBasic数据库开发实例解析机械工业出版社刘志铭、高春艳等2003年8月11.Delphi数据库开发实例解析机械工业出版社赛奎春、郑骁鹏等2004年2月48 附录B数据表(1)tb_Area(区域信息表)表B.1区域信息表字段名数据类型长度主键否功能描述AreaidVarchar20是区域编号AreanameVarchar50区域名称AreatypeVarchar50区域类型(2)tb_Cinfo(企业信息管理表)表B.2企业信息管理表字段名数据类型长度主键否功能描述CnameVarchar50企业名称CmanageVarchar20法人代表CphoneVarchar20联系电话CpostcodeBigint8传真号码CfaxVarchar20邮政编码CemailVarchar50E-mailCnaddressVarchar50企业网址CaddressVarchar100联系地址CremarkVarchar1000备注(3)tb_clientinfo(客户资料管理)48 表B.3客户资料管理字段名数据类型长度主键否功能描述ClientidVarchar20是客户编号CnameVarchar20客户名称CstepVarchar20客户等级CrootVarchar20客户来源CtypeVarchar20客户类型CtradeVarchar20所属行业CareaVarchar20所在区域CphoneVarchar20联系电话CfaxVarchar20传真号码CpostcodeBigint8邮政编码CaddressVarchar50联系地址CemailVarchar50E-mailCremarkVarchar1000备注(3)tb_Employee(员工信息表)表B.4员工信息表字段名数据类型长度主键否功能描述eeidvarchar50是员工编号enamevarchar20员工姓名esexchar4员工性别ebirthdayvarchar20员工生日ewdatevarchar20工作日期ediplomachar10学历edepartmentvarchar50所在部门epositionvarchar20当前职务48 etypevarchar20员工类别(3)tb_Event(事件信息表)表B.5事件信息表字段名数据类型长度主键否功能描述eventidvarchar20是事件编号etitlevarchar20事件标题edatevarchar20发生时间econtentvarchar1000事件内容(4)tb_Goodsinfo(货物资料管理表)表B.6货物资料管理表字段名数据类型长度主键否功能描述gidvarchar20是货物编号gnamevarchar20货物名称gtypevarchar20销售规格gspecvarchar20所属类别Gipricemoney8进货价格gopricemoney8销售价格gunitchar10计量单位gremarkvarchar1000备注(5)tb_Opponent(竞争对手管理表)表B.7竞争对手管理表字段名数据类型长度主键否功能描述oidchar10是对手编号onamevarchar20对手名称48 omanagevarchar20法人代表otradevarchar20所属行业oareavarchar20所在区域osizevarchar20企业规模ophonevarchar20联系电话ofaxvarchar20传真号码0postcodebigint8邮政编码oaddressvarchar50联系地址oemailvarchar50E-mailoremarkvarchar1000备注(3)tb_User表B.8区域信息表字段名数据类型长度主键否功能描述useridvarchar20是用户编号usernamevarchar20用户名称userpwdvarchar20用户密码userrightchar10用户权限48