• 1.36 MB
  • 2022-05-14 15:45:01 发布

企业客户管理系统毕业论文.doc

  • 33页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
企业客户管理系统毕业论文目录引论1(一)项目背景1(二)项目技术简介4一、企业客户管理系统系统分析7(一)需求分析7(二)系统总体流程图分析7(三)系统功能结构8(四)系统模块功能分析9二、企业客户管理系统系统设计10(一)设计目标10(二)开发运行环境10(三)编码规范11(四)数据库设计12(五)对象模型的建立17(六)界面设计19(七)关键性代码解析23三、系统的测试与纠错29后记30主要参考文献31 引论(一)项目背景随着Internet技术的蓬勃发展,全世界范围内,所有企业都在经历着一场变革。企业在扩大市场、提高效率和保持客户的原始商业驱动力不变的情况下,如何从浩如烟海的信息中,获取最有效的市场情况和客户信息,并及时作出反应,方能提高企业的竞争力。与此同时,客户的期望也在发生着变化,客户完全可以决定选择哪位供应商。随着网络、通讯技术的发展,客户选择可摆脱传统地域的限制。因此如何最大程度的留住客户,积极发展新客户,成为了企业竞争的一个重要方面。1、关于ERPERP(EnterpriseResourcePlanning,企业资源计划)是上个世纪90年代美国一家IT公司根据当时计算机信息、IT技术发展及企业对供应链管理的需求,预测在今后信息时代企业管理信息系统的发展趋势和即将发生变革,而提出的概念。ERP是针对物资资源管理(物流)、人力资源管理(人流)、财务资源管理(财流)、信息资源管理(信息流)集成一体化的企业管理软件。一个由GartnerGroup开发的概念,描述下一代制造商业系统和制造资源计划(MRPII)软件。它将包含客户/服务架构,使用图形用户接口,应用开放系统制作。除了已有的标准功能,它还包括其它特性,如品质、过程运作管理、以及调整报告等。特别是,ERP采用的基础技术将同时给用户软件和硬件两方面的独立性从而更加容易升级。ERP的关键在于所有用户能够裁剪其应用,因而具有天然的易用性。ERP不仅仅是一个单一的系统,而是许多复杂系统的集合体(如图1所示),本文所述的客户资源管理只是其中的极小一部分。 图11、关于CRM一、CRM的含义CRM(CustomerRelationshiopManagement,客户关系管理)是一种以客户为中心的经营策略。它以信息技术为手段,并对工作流程进行重组,赋予企业更完善的客户交流能力,最大化客户的收益。客户关系管理是旨在改善企业与客户之间关系的新型管理机制,它主要实施于企业的市场营销、销售、服务与技术支持等与客户相关的领域。通过向企业的销售、市场和客户服务的专业人员提供全面、个性化的客户资料,并强化跟踪服务、信息分析的能力,使他们能够协同建立和维护一系列与客户和生意伙伴之间卓有成效的“一对一关系”,从而使企业得以提供更快捷和周到的优质服务、提高客户满意度、吸引和保持更多的客户,从而增加营业额;另一方面则通过信息共享和优化商业流程来有效地降低企业经营成本。客户关系管理也是一种管理软件和技术。它将最佳的商业实践与数据挖掘、数据仓库、一对一营销、销售自动化以及其它信息技术紧密结合在一起,为企业的销售、客户服务和决策支持等领域提供一个业务自动化的解决方案,使企业有了一个基于电子商务的面对客户的前沿。它主要包含以下几个主要方面(简称7P):客户概况分析(Profiling)包括客户的层次、风险、爱好、习惯等; 客户忠诚度分析(Persistency)指客户对某个产品或商业机构的忠实程度、持久性、变动情况等;客户利润分析(Profitability)指不同客户所消费的产品的边缘利润、总利润额、净利润等;客户性能分析(Performance)指不同客户所消费的产品按种类、渠道、销售地点等指标划分的销售额;客户未来分析(Prospecting)包括客户数量、类别等情况的未来发展趋势、争取客户的手段等;客户产品分析(Product)包括产品设计、关联性、供应链等;客户促销分析(Promotion)包括广告、宣传等促销活动的管理。图2二、CRM的目标客户关系管理的目标就是提高效率、拓展市场和保留客户。利用信息技术,结合企业现有的管理系统如MIS系统、ERP系统,将分散在企业各部门的信息加以统计、分析,为企业的市场开拓提供支持。 客户服务是客户关系管理中的核心内容之一。企业提供的客户服务是能否保留满意的客户,提升客户忠诚度的关键。据统计,93%的CEO认为,客户关系管理是企业成功和更有竞争能力的重要因素,2/3的客户离开其供应商是因为企业对客户关怀不够。一个非常满意的客户其购买意愿将六倍于一个满意的客户。而客户满意度方面的5%的提高将使企业利润加倍。由此可见,客户的满意度与忠诚度是企业取得竞争优势的关键。此外,随着上网用户的增加,客户服务的自动化还应能够处理客户各种类型的询问,包括有关产品报价信息,定单请求,定单执行情况等等。三、客户关系管理系统建立的原则1.为客户提供多样化、个性化的服务。客户关系管理的核心思想,就是吸引客户、方便客户、满足客户、为客户提供多样化和个性化的服务。2.巩固和发展客户群体,提高企业的竞争力。印刷企业应朝着符合现代企业管理制度要求的现代企业发展。只有巩固忠诚客户群,不断发展新客户群,打造品牌效应,方能提高企业竞争力。3.适度超前和创新的原则。在建立客户关系管理系统同时,提供充分的扩展功能,满足企业未来业务经营与发展的需要。1、项目规划该系统主要由资料管理、我方信息管理、统计分析、用户管理、系统维护和帮助等模块组成,具体规划如下:l资料管理模块:该模块主要用于实现区域信息管理、客户资料管理和竞争对手信息等功能。l我方信息管理模块:本企业基本信息管理、员工信息管理、货物信息管理和重大历史历程管理等功能。l统计分析模块:该模块主要用于实现客户的级别分析和来源分析等功能。l用户管理模块:该模块主要用于实现用户管理、更改密码和权限设置等功能。l帮助模块:该模块主要用于实现更改窗体布局、重新登陆和退出等功能。 (一)项目技术简介本文所述的企业客户管理系统使用C#作为编程语言,采用目前比较新的MicrosoftSQLServer2005作为前台数据库。该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大、效率高;后台使用微软的新技术LINQ作为程序访问数据库的接口,简化了繁琐的SQL语句的编写过程,提高了代码的编写效率。1、编程语言C#C#是一门简单、现代、面向对象和类型安全的编程语言,由C和C++发展而来,而而且现在的大量软件或者网站都是采用C#来写的,C#的开发速度相当快,而且在安全方面也不错,就像宝马会娱乐城http://www.ahwogo.com。在C#之前,C和C++已经成为在软件的开发领域中使用最广泛的语言。它们为程序员提供了十分灵活的操作,但也因此牺牲了一定的效率及相应的易用性,比如与MicrosoftVisualBasic等语言相比,同等级别的C/C++应用程序往往需要更长时间来开发。也正由于C/C++语言的复杂性,C++也只有专业的程序员才能掌握,而对于一般用户而言,C++确实有些沉重。对于信息化社会的今天而言,单纯的软件开发甚为少见,但更多的注重于实际应用,许多程序员都试图寻找一种新的语言,希望能在功能与效率之间找到一个更为理想的权衡点。对于某些有些语言来说,也许以牺牲灵活性的代价来提高效率是可以接受,但是这些灵活性正是C/C++程序员所需要的,另外这些解决方案对编程人员的限制过多(如屏蔽一些底层代码控制的机制),其所提供的功能难以令人满意。这些语言无法方便地同早先的系统交互,也无法很好地和当前的网络编程相结合。对于C/C++用户来说,最理想的解决方案无疑是在快速开发的同时又可以调用底层平台的所有功能。他们想要一种和最新的网络标准保持同步并且能和已有的应用程序良好整合的环境。另外,一些C/C++开发人员还需要在必要的时候进行一些底层的编程。C#(Csharp)是微软对这一问题的解决方案。C#是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于Microsoft.NET平台的应用程序,Microsoft.NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。 正是由于C#面向对象的设计,使它成为构建各类组件的理想之选--无论是高级的商业对象还是系统级的应用程序。使用简单的C#语言结构,这些组件可以方便的转化为XML网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调用。最重要的是,C#使得C++程序员可以高效的开发程序,而绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。或者这么说生产信息化的今天,也就产生了C#。1、数据库前后台链接组件LINQLINQ,即语言级集成查询(LanguageIntegratedQuery),它是VisualStudio2008中的领军人物。借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据。目前为止LINQ所支持的数据源有SQLServer、XML以及内存中的数据集合。开发人员也可以使用其提供的扩展框架添加更多的数据源,例如MySQL、Amazon甚至是GoogleDesktop。简单来说,通过使用LINQ,开发人员可以以一个统一的方式访问包括内存数据集合、数据库、XML等在内的各类数据源。如下图所示:图3上图中,向我们展示了LINQ在实际的开发中所处的地位,我们可以从两方面来理解LINQ,首先他是一个工具集(Tool set),因为它为我们访问各类不同的数据源提供了可能。另一方面,它又扩展了原有的如C#,VB等语言语法,不用以前我们使用的SQL语句或者XML控制语句即可完成数据的访问和持久化操作。1、数据报表生成系统——水晶报表插件水晶报表(CrystalReport)是业内最专业、功能最强的报表系统,它除了强大的报表功能外,最大的优势是实现了与绝大多数流行开发工具的集成和接口。CrystalReports用于处理数据库,帮助用户分析和解释重要信息。使用CrystalReports可以方便地创建简单报表,同时它也提供了创建复杂或专用的报表所需的整套工具。CrystalReports几乎可以从任何数据源生成您需要的报表。内置报表专家在您生成报表和完成一般的报表任务过程中,会一步一步地指导您进行操作。报表专家通过公式、交叉表、子报表和设置条件格式帮助表现数据的实际意义,揭示可能被隐藏掉的重要关系。水晶报表的使用是数据的统计结果更为直观,实为数据分析的一大利器。一、企业客户管理系统系统分析(一)需求分析经了解,本系统应该具有如下的功能:l由于操作人员的计算机知识有限,因此要求系统具有良好的人机界面;l对不同的使用用户,要求系统具有良好的权限管理;l方便的数据查询功能;l方便的添加和修改数据功能;l使用水晶报表分析、显示客户级别和来源情况;l在相应的权限下,可方便的删除数据。(二)系统总体流程图分析企业客户管理系统的业务流程如下图所示。 图4(一)系统功能结构系统的总体功能图如图5所示。 图5(一)系统模块功能分析1、资料管理及我方信息管理该部分要求能够快速的查询所需信息,便捷的插入新的信息和删除无用信息,为了整个程序的易用性,由于各个小模块都是对数据库表的简单操作,具有类比性,因此可以使用统一的模板进行设计,再根据不同的字段设计不同的项目。2、统计分析该部分要求系统能够根据数据库里的数据自动的生成报表,并提供打印服务。 1、用户管理该部分要求系统能够根据用户权限的不同提供修改密码和权限的功能2、系统维护该部分要求能通过程序客户端完成数据库的备份,恢复及清理工作。3、帮助该部分包含系统说明、注销登录等功能。二、企业客户管理系统系统设计(一)设计目标l本系统属于小型的数据库系统,可以对中、小型企业客户进行有效的管理。通过本系统期望达到以下的目标:l灵活的录入数据,使信息传递更快捷。l系统采用人机交互方式、界面美观友好,信息查询灵活。数据存储安全可靠。l实现后台监控功能。l实现客户级别和来源分析功能。l实现各种查询,支持模糊查询。l实现企业客户及其内部资源的信息化管理。l对用户输入的数据进行严格的数据检验,尽可能避免人为错误。l系统最大限度的实现了易维护性和易操作性。(二)开发运行环境l系统开发平台:MicrosoftVisualStudio2008l系统开发语言:C# l数据库管理软件:MicrosoftSQLServer2005l运行平台:WindowsXP(SP2以上),Windows2000(SP4),WindowsServer2003l运行环境:Microsoft.NETFrameworkSDKV3.5(一)编码规范1、数据库命名规范数据库名以db开头,后面接相关英文单词,首字母大写;数据表以tb开头,后面接相关英文单词;数据表以英文单词或组合表示,首字母大写;视图以view开头、存储过程以proc开头、触发器以trig开头,后面接相关英文单词。如图表1所示。图表1数据库命名规范类别名称相关命名举例描述说明数据库db_CRM企业客户资源管理数据库表tb_User用户信息表字段UserID用户编号视图view_GoodInfo查看货物信息存储过程proc_Login实现登录功能触发器trig_inGoods插入商品信息2、变量命名规范变量名由其变量类型加上英文缩写构成,如图表2所示。图表2变量命名规范数据类型简写规则整形(int)int字符串(string)str浮点型(double)dbl布尔型(bool)bl长整型(long)lnt 1、控件命名规范空间一般以其英文缩写为前缀,在代码编写过程中不涉及具体编程的,可以以控件的默认名称为其命名。具体如图表3所示。图表3控件命名规范控件缩写形式FormfrmTextBoxtxtButtonbtnComboBoxcboxLabellabDateTimePickerdtpErrorProvidererrorPrGroupBoxgboxDataGridViewdgvDataSetdsListBoxlbTimertmrCheckBoxchbMenuStripmstripOpenFileDialogofDialogPictureBoxpicboxRichTextBoxrtboxStatusStripsstripToolStriptstripTreeViewtv(一)数据库设计2、数据表概要说明数据库名为:db_CRM,其中包含了8张数据表,如下图所示。 图61、重要表的E-R图企业基本信息实体E-R图如图7所示。图7 客户信息实体E-R图如图8所示。图8员工信息实体E-R图如图9。图9竞争对手实体E-R图如图10。图10 1、主要表的结构ltb_CInfo(企业基本信息表),用于保存企业的基本信息,其结构如图表4所示。图表4企业基本信息表字段名数据类型长度主键否描述Cnamevarchar50否企业名称CManagervarchar20否法人代表Cphonevarchar20否联系电话CPostCodebigint8否邮政编码CFaxvarchar20否传真号码CEmailvarchar50否E-mail地址CNAddressvarchar50否企业网址CAddressvarchar100否联系地址Cremarkvarchar1000否备注ltb_ClientInfo(客户信息表),用于保存企业客户的详细资料,其结构如图表5所示。图表5客户信息表字段名数据类型长度主键否描述ClientIDvarchar20是客户编号CNamevarchar50否客户名称CStepvarchar20否客户级别CRootvarchar20否客户来源CTradevarchar20否所属行业CTypechar10否客户类别CAreavarchar50否所在区域CPhonevarchar20否联系电话CFaxvarchar20否传真号码CPostCodebigint8否邮政编码CAddressvarchar50否联系地址CEmailvarchar50否E-mail地址CRemarkvarchar1000否备注 ltb_Employss(员工信息表),用于保存企业内部员工的详细资料,其结构如图表6所示。图表6员工信息表字段名数据类型长度主键否描述EIDvarchar20主键员工编号ENamevarchar20否员工姓名ESexchar4否员工性别EBirthdayvarchar20否员工生日EWDatevarchar20否工作日期EDiplomachar10否员工学历EDepartmentvarchar50否所在部门EPositionvarchar20否当前职务ETypevarchar20否员工类别ltb_GoodsInfo(货物信息表),用于保存企业内部货物的详细信息,其结构如图表7所示。图表7货物信息表字段名数据类型长度主键否描述GIDvarchar20主键货物编号GNamevarchar50否货物名称GTypevarchar50否货物类型GSpecvarchar50否货物规格GIPricemoney8否进货价格GOPricemoney8否售货价格GUnitchar10否计量单位Gremarkvarchar1000否备注ltb_User(用户信息表),用于保存本系统用户的基本信息及权限其结构如图表8所示。图表8用户信息表字段名数据类型长度主键否描述UserIDvarchar20主键用户编号UserNamevarchar20否用户名称UserPwdvarchar20否仓库名称UserRightchar10否货物规格 (一)对象模型的建立1、数据库对象的建立打开“服务器资源管理器”,选择新建连接。图112、使用VisualStudio2008建立实体类建立实体类的方式有很多种,例如手动编码建立、使用XML文件映射、使用命令行工具SqlMetal生成、使用LINQtoSQL设计器等。其中最方便的方法就是使用LINQtoSQL设计器。步骤如下。 1)在专用于数据处理的命名空间下选择“新建项”,添加一个名称为“CRMClasses”的“LINQtoSQL类”,如下图。图122)在“服务器资源管理器”窗口需要使用的表格拖入左边,把设计好的函数和存储过程等方法拖入右边,如图。图13 1)保存“CRMClasses”之后,实体类就这样建立完毕了,若需要还可以从“属性”窗口修改实体类的属性名称、存储过程映射的方法名,以及实体类的添加、删除、修改行为中使用的方法等。2)使用LINQtoSQL设计器设计出来的实体类是代码自动生成的,如果需要修改,过程是比较麻烦的,对于本文所述系统,由于其本身复杂度不够,系统自动生成的实体类已经足够,如果对更复杂的系统,手动编码建立、使用XML文件映射等方法建立的实体类更加的简介,也更符合具体系统的要求。(一)界面设计1、登录系统的设计系统登录主要用于对进入企业客户资源管理系统的用户进行安全性检查,以防止非法用户进入该系统。在登录时,只有合法的用户才可以进入该系统,同事,系统根据登录用户的级别,给予其不同的操作权限,系统登录窗体运行结果如下所示图14根据用户选择的用户名,系统自动判断用户权限,并且比较密码是否与数据库内纪录一致,如果是则可以进入系统主界面。2、主界面的设计系统主界面由三部分构成,分别为菜单栏、导航栏和底部的状态栏,其中在制作导航栏的时候,使用了第三方的控件“NavNarControl” ,做出来的效果还是相当的不错,其运行结果如下图。图15菜单栏和导航栏的功能基本一致,只是从两种途径来实现,底部的状态栏通过一系列字符串的合并显示用户名,登录时间等信息。通过点击菜单栏或者导航栏的相应功能,开启子窗口就可以进行子项目的操作了。1、通用信息管理界面的设计资料管理和我方信息管理里的7个小项目都具有一个共同的特点,都是对数据库进行的插入、删除及修改的操作,不同的只是针对的具体数据库表和字段的不同,以客户资料管理为例,预期的运行结果如下图。 图16整个界面由三个部分组成:l最上方的工具栏:提供新建及删除资料的服务,并且可以根据查询条件进行查询,还能调用邮件相关组件给客户发送E-mail。l中间的组合框:使用了textbox和combobox完成每一条记录详细显示,以供用户添加新信息或者修改现有信息。其中的联系电话,E-mail等还应设置正则表达式来检验数据输入的合法性。l下面的DataGridView列出了符合当前查询的所有条目,供用户查看,双击其条目可以在中间的组合框内显示改条目的详细内容,供用户修改。在界面设计方面,宝马会娱乐城http://www.ahwogo.com为我提供了大量的技术支持1、联系客户窗体的设计联系客户窗体用来实现企业与客户的交流、沟通功能。实现该功能时调用了System.Net.Mail命名空间下的MailMessage类和SmtpClient类。界面设计如下图所示。 图17在窗体Load的时候自动载入客户的编号、名称和邮箱。如果选择了上传附件,则会打开一个OpenFileDialog对话框,供用户选择文件,并返回该文件的路径。点击发送后,调用系统函数发送邮件。1、水晶报表的设计客户级别分析窗体主要反映不同级别的客户情况,操作人员可以通过选择客户等级,查看制定级别的客户详细信息。客户级别分析窗体运行结果如下图所示。 图18(一)关键性代码解析1、邮件的发送在联系客户的窗体中,实现了通过客户端发送邮件的功能,在事先给客户发送邮件时,需要制定邮件的发送者、接受者、主题、内容、发送邮件的SMTP服务器的地址及端口号。在邮件发送方面,宝马会娱乐城的一位老程序员http://www.ahwogo.com/forum-2-1.html给我了特大的帮助。特别的,如果有附件的存在,还需要声明一个ContentDispotion类的对象,并通过其属性,完成附件属性的设置,其运行代码如下。 usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;usingSystem.Net.Mail;namespaceCRM.DataManage{publicpartialclassfrmRClient:Form{CRM.BaseClass.BaseOperateboperate=newCRM.BaseClass.BaseOperate();CRM.BaseClass.OperateAndValidateopAndvalidate=newCRM.BaseClass.OperateAndValidate();publicfrmRClient(){InitializeComponent();}privatevoidfrmRClient_Load(objectsender,EventArgse){opAndvalidate.cboxBind("selectdistinctClientIDfromtb_ClientInfo","tb_ClientInfo","ClientID",cboxCID);}privatevoidcboxCID_SelectedIndexChanged(objectsender,EventArgse){SqlDataReadersqlread=boperate.getread("selectCName,CEmailfromtb_ClientInfowhereClientID=""+cboxCID.Text.Trim()+""");sqlread.Read();if(sqlread.HasRows){txtCName.Text=sqlread["CName"].ToString().Trim();txtCEmail.Text=sqlread["CEmail"].ToString().Trim(); }sqlread.Close();}//选择附件privatevoidbtnUP_Click(objectsender,EventArgse){oFDialogSFile.InitialDirectory="C:\";oFDialogSFile.Filter="allfiles(*.*)|*.*";oFDialogSFile.RestoreDirectory=true;oFDialogSFile.ShowDialog();cboxAccessories.Items.Add(oFDialogSFile.FileName.Trim());}//删除附件privatevoidbtnDel_Click(objectsender,EventArgse){if(cboxAccessories.Text==""){MessageBox.Show("没有附件可删!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}else{cboxAccessories.Items.Remove(cboxAccessories.Text.Trim());}}//发送邮件privatevoidbtnSend_Click(objectsender,EventArgse){//邮箱格式验证if(!opAndvalidate.validateEmail(txtSEmail.Text.Trim())){errorSEmail.SetError(txtSEmail,"输入的邮箱格式不正确!");}else{ errorSEmail.Clear();try{//创建MailMessage对象,使用邮件功能stringfile=Application.StartupPath+"testXML.xml";System.Net.Mail.MailMessagemyMail=newSystem.Net.Mail.MailMessage();myMail=newSystem.Net.Mail.MailMessage(txtSEmail.Text.Trim(),txtCEmail.Text.Trim());myMail.Subject=txtETitle.Text.Trim();myMail.Body=txtEContent.Text.Trim();if(cboxAccessories.Items.Count>0){for(inti=0;i