客户管理系统的开发毕业设计_第1页
客户管理系统的开发毕业设计_第2页
客户管理系统的开发毕业设计_第3页
客户管理系统的开发毕业设计_第4页
客户管理系统的开发毕业设计_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第页引言以客户为中心,让客户成为朋友是本客户管理系统所追求的最终目的,客户管理系统通过对用户信息资源的整合,从而为客户提供更快速周到的优质服务,吸引和保持更多的客户,更有效地管理客户信息,降低企业营销管理成本。客户管理系统是一套灵活的人机交互系统,它能帮助企业更好地吸收潜在的客户和留住最有价值的客户,从而实现销售、市场营销、服务和支持的商业流程自动化。对于现在的企业来说,利用计算机支持企业高效率完成客户管理的日常事务,是适应现代企业制度要求、推动企业客户管理走向科学化、规范化的必要条件;而客户管理是一项琐碎、复杂而又十分细致的工作,因为这些信息直接和业务相关,因此不允许出错,如果实行手工操作,每月都必须手工填制大量的表格,这就会耗费工作人员大量的时间和精力,而客户管理系统应用软件应紧紧围绕以客户为中心的思想,以客户信息为主线,将企业的市场销售、服务有机结合起来,形成跨部门、跨机构的统一信息平台。通过对客户相关信息的集中管理,挖掘销售机会,了解市场竞争,提高销售成功率;通过对客户相关信息的分析与挖掘,识别客户消费规律和客户价值,指导企业的部门运作和市场规划,从而提供更加快捷和周到的优质服务,帮助企业提升客户满意度和忠诚度,最终提高企业市场竞争力。这些优点能够极大地提高客户管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。该客户管理系统实现了与客户相关的各种信息的系统化、规范化和自动化。通过对客户资料管理、系统数据设置、客户资料分析三个模块基本功能的实现,对客户的各种信息进行增、删、查、改等操作,完成对客户相关信息的管理。这些功能基本可以满足一般中小型企业对客户管理的需求,使企业节省人力,减轻劳动强度;降低成本,节省开支;提高了管理水平,增强了企业在同行业中的竞争力;同时提高了客户信息处理的及时性和准确性。本系统采用Delphi7进行开发、设计,后台采用SQLServer2000提供强有力的支持,系统界面友好,操作简单,比较实用。系统的实施将为企业获得更多的客户,保留更好的客户,创造更大的客户价值,保持客户永久的忠诚,从而为企业带来更丰厚的利润和持续的竞争优势。

1.开发工具的选择及简介现在,市场上可以选购的应用开发产品很多,流行的也有数十种。目前在我国市场上最为流行、使用最多、最为先进的可用作企业级开发工具的产品有:Microsoft公司的VisualBasic,Microsoft公司的VisualC,Borland公司的Delphi,Sybase公司的PowerBulider,还有Java等等。在目前市场上这些众多的程序开发工具中,有些强调程序语言的弹性与执行效率;有些则偏重于可视化程序开发工具所带来的便利性与效率的提高,各有各的优点和特色,也满足了不同用户的需求。然而,语言的弹性和工具的便利性是密不可分的,只有便利的工具,却没有弹性的语言作支持,许多特殊化的处理动作必需要耗费数倍的工夫来处理,使得原来所标榜的效率提高的优点失去了作用;相反,如果只强调程序语言的弹性,却没有便利的工具作配合,一些即使非常简单的界面处理动作,也会严重地浪费程序设计师的宝贵时间。我们先对我国市场上流行的几种开发工具产品进行一下简单的比较。VisualBasic是一个被软件界称之为划时代的革新产品,该软件改变了人们开发Windows程序的方式,它采用交互式的可视化操作,使得人们开发Windows程序的每一过程都有直观形象的反馈,从而加速整个开发进程。但是,采用VB也有一定的缺点,原因有以下几点:1)VB来源于Basic语言,虽然经过微软的不断增强,但是仍然缺乏非常灵活的数据类型和编程策略,因而在开发一些需要复杂数据结构的项目时常遇到麻烦,如链表、图和二叉树等等。由于在中大型项目开发后期,开发工作不再以界面为主,而是在算法设计和底层软硬件工作,这就使VB开发项目的后期工作量大幅度增加。2)VB运行速度慢,采用P-Code代码虽然执行文件很小,但是在运行时需要解释执行,并且,它的运行必须有对应的VBRUN.DLL和所使用的VBX或者OCX支持。对于浮点操作密集或者循环嵌套很多的应用来说,VB没有采取特别的优化。3)VB不能灵活地使用系统资源。4)VB项目分发和管理困难,其原因同上,VB应用的运行不能脱离VB的运行库和所使用的控件,因此,如果开发人员要将VB应用分发给用户那么一定要带上VB的运行库和所使用的控件,并且要保证正确安装,这就导致即使一个非常简单的应用也需要附带大量其它相关支撑库程序,对于VB4.0及更高版本,由于大量的使用了OLE控件(在VB中称为OCX),其安装更为复杂。我们不选VC而选择DELPHI的主要原因有两点,一是为了提高开发效率,从代码量上后者有优势,而且可以获得大量的第三方控件减少重复劳动时间。二是为了降低对人的要求,从入门和掌握两个阶段来看,后者都更容易一些,而我这次毕业设计的时间也不是很宽裕,对其也不是十分了解,因此放弃对VC的选择。PowerBulider完全是特别针对于数据库开发的,其数据访问对象可绑定任何SQL语句和存储过程,数据访问具有无与比拟的灵活性,但是它做出的界面不够美观,没有delphi那么灵活。作为数据库系统的开发,Delphi7是一个非常理想的选择,它有一流的可视化技术,强大的功能,严谨的语言,把通俗和高雅天衣无缝的结合在一起了,所以Delphi7因简单易学、功能强大、编译速度快而从众多的软件开发工具中脱颖而出。它提供了灵活的可视化设计工具,将可视化界面与面向对象技术完善、紧密地结合起来,并封装了Windows编程的复杂性。程序的规模小到简单的个人数据库应用,大到复杂的企业的多层次分布式系统,都可以使用Delphi7进行开发,其友好的集成开发环境,可视化的双向开发模式,良好的数据库应用支持,高效的程序开发和程序运行,备受广大程序开发人员的好评。尤其是Delphi7对数据库应用的强大支持,大大提高了数据库应用软件开发的效率,缩短了开发周期,深受广大数据库应用程序设计人员的喜爱。Delphi7为数据库应用开发人员提供了丰富的数据库开发组件,使数据库应用开发功能更强大,控制更灵活,编译后的程序运行速度更快。1.1关于Delphi功能和特点的介绍1.1.1Delphi简介Delphi是著名的Borland公司开发的可视化软件开发工具。“真正的程序员用c,聪明的程序员用Delphi”,这句话是对Delphi最经典、最实在的描述。Delphi被称为第四代编程语言,它具有简单、高效、功能强大的特点。和VC相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色;和VB相比,Delphi则功能更强大、更实用。可以说Delphi同时兼备了VC功能强大和VB简单易学的特点。它一直是程序员至爱的编程工具。Delphi实际上是Pascal语言的一种版本,但它与传统的Pascal语言有天壤之别。一个Delphi程序首先是应用程序框架,而这一框架正是应用程序的“骨架”。在骨架上即使没有附着任何东西,仍可以严格地按照设计运行。您的工作只是在“骨架”中加入您的程序。缺省的应用程序是一个空白的窗体(Form),您可以运行它,结果得到一个空白的窗口。这个窗口具有Windows窗口的全部性质:可以被放大缩小、移动、最大最小化等,但您却没有编写一行程序。因此,可以说应用程序框架通过提供所有应用程序共有的东西,为用户应用程序的开发打下了良好的基础。Delphi具有以下的特性:基于窗体和面向对象的方法,高速的编译器,强大的数据库支持,与Windows编程紧密结合,强大而成熟的组件技术。但最重要的还是ObjectPascal语言,它才是一切的根本。ObjectPascal语言是在Pascal语言的基础上发展起来的,简单易学。Delphi提供了各种开发工具,包括集成环境、图像编辑(ImageEditor),以及各种开发数据库的应用程序,如DesktopDataBase等。除此之外,还允许用户挂接其它的应用程序开发工具,如Borland公司的资源编辑器(ResourseWorkshop)。Delphi发展至今,从Delphi1、Delphi2到现在的Delphi2006,不断添加和改进各种特性,功能越来越强大。Delphi7添加了对IDE(集成开发环境)的很多改进新特性,扩展了数据库支持(ADO和InterBase数据库),带有Internet支持的MIDAS改进版,TeamSouse版本控制工具,转换功能,框架概念以及很多的新组件与新特性。在Delphi众多的优势当中,它在数据库方面的特长显得尤为突出:适应于多种数据库结构,从客户机/服务器模式到多层数据结构模式;高效率的数据库管理系统和新一代更先进的数据库引擎;最新的数据分析手段和提供大量的企业组件。1.1.2DELPHI访问数据库的方式DELPHI通过三种方式来访问数据库:通过内置的数据库驱动程序。Delphi可以直接访问Paradox和DBase这两个桌面型的数据库系统。访问这两种类型的数据库时不需要特别的设置,只需要把文件路径赋给Table控件的属性DatabaseName就可以访问该路径下的数据库了。通过ODBC访问。访问Paradox和DBase以外的数据库,通常是通过ODBC来实现的。Delphi可以访问支持ODBC的数据库系统,如Access、SQLServer和Oracle等。当然,通过ODBC访问数据库时,首先要使用Windows的控制面板或Delphi的数据库引擎(BDE)建立ODBC数据源。通过连接控件访问(BDE、ADO控件)。Delphi中可以不通过ODBC,而以连接控件访问SQLServer、Oracle、DB2等数据库系统。这需要使用数据库别名来指定数据库,数据库别名可以事先建立,也可以在程序运行时动态创建。前者称为静态别名,后者称为动态别名。使用数据库别名来访问数据库的方法和使用ODBC数据源的情形相同,这里不再累述。通过连接控件访问数据库与通过ODBC访问数据库相比,前者的速度要快一些。而且,使用连接控件的方式可以在程序中动态地设置连接数据库所需的参数,用户不必设置ODBC数据源,这就降低了对用户技术水平的要求,并且减少了用户的工作量。从系统配置的难易和复杂程度来看,使用连接控件的方式开发出的数据库应用系统更便于普通用户使用。因此,在开发较大型的应用系统时,最好通过连接控件来访问数据库。BDE访问数据库的过程如图1.1所示:用户用户TDBGid等数据控制控件TdataSource控件TdataSource控件(包括Ttable,TQuery和TStoredproc控制)本地数据库Paradox等BDE数据引擎远程数据库SQLserver,ORACLE等数据驱动ODBC用户界面 应用程序数据库图1.1BDE访问数据库的过程ADO访问数据库的过程如图1.2所示:用户用户TDBGid等数据控制控件TdataSource控件ADO系列控件OLEDBProvider数据库驱动数据库用户界面应用程序系统数据库图1.2ADO访问数据库的过程因此本系统开发选择了Delphi7.0,通过对该开发环境的熟悉了解和深入学习,我学会了用Delphi7.0制作系统的界面,并用Delphi7.0中的ADO控件与SQLServer2000数据库进行连接,并且通过编程实现系统中的主要功能。1.2.3Delphi中的ADO数据访问组件由于ADO技术的迅速普及,从Delphi5.0开始,加入了ADO技术的模块,并逐步成为Delphi数据库设计的主流。但是和VB与ADODC相比,它还是有所不同的。在数据绑定上,它更多地吸收了BDE的特点,以做到和原来的程序兼容。同时它又可以接受标准ADO技术的各种属性和方法,在接受这些属性和方法时,它是和数据绑定控件脱离的。从某种意义上来说,这种方案提高了执行效率,给设计人员以更多的选择。Delphi7.0的ADO组件应用Delphi组件的内容和使用方法来实现ADO数据对象的功能。最为突出的是ADO对象包括Connection、Command、Recordset对象。这些对象分别体现在DelphiADO组件中的TADOConnection、TADOComman以及TADODataset组件中。而其他一些ADO结构对象,例如Field和Properties,在Delphi中没有专门对应的组件。Delphi7.0ADO面板中一共有7个组件:1)ADOConnection:对应着ADO数据对象中的Connection对象,主要用于建立数据库的连接。2)ADODataSet:ADO提取和操作数据库的主要数据集,可以直接连接到数据库,也可以通过ADOConnection连接到数据库。3)ADOTable:主要用以操作和提取单个基表的数据,可以直接连接到数据库,也可以通过ADOConnection连接到数据库。4)ADOQuery:通过SQL语言提取数据,其连接数据库的方式和前两种一样。5)ADOStoredProc:这个组件专门用于运行数据库中的存储过程。6)ADOCommand:该组件用于运行一些SQL命令,这个组件可以和支持数据集的组件仪器使用,也可以直接从一个基表中提取一个数据集。7)RDSConnection:一个进程或一台计算机传递到另一个进程或计算机的数据集合。为了连接数据绑定控件,上述组件往往要和DataAccess中的Datasource配合使用。1.2SQLServer2000数据库介绍目前市场上数据库的主流厂商及产品有IBMDB2、MicrosoftSQLServer2000、ORACLE9i、Sybase。IBM是通过DB2与WebSphere、Tivoli和Lotus四大品牌共同提供电子商务基础架构,而自己并不开发应用软件,目前一些ERP厂商、CRM厂商以及电子商务软件厂商都与IBM建立了合作关系,将IBM公司的数据库作为其应用软件的开发平台。Oracle则截然不同,它在自己的数据库平台上为用户开发了电子商务套件,其中包括ERP、CRM和SCM等企业应用软件。它认为这样可以使用户直接获得一整套解决方案,而不必考虑集成问题,而且,通过一家厂商就可以获得全部的服务和支持,避免在集成上的昂贵开销。Sybase公司作为客户机/服务器的倡导者,其开发工具PowerBuilder拥有众多的开发者。还有一部分不可忽视的是免费的数据库,比如MYSQL等。SQLServer作为微软在Windows系列平台上开发的数据库,一经推出就以其易用性得到了很多用户的青睐,相信大多数将自己的业务建立在Windows平台上的用户都会对它有相当的亲切感。区别于FoxPro、Access小型数据库,SQLServer是一个功能完备的数据库管理系统。它包括支持开发的引擎、标准的SQL语言、扩展的特性(如复制、OLAP、分析)等功能。而像存储过程、触发器等特性,也是大型数据库才拥有的。SQLSERVER2000有以下几个特点:(1)学习、使用上手容易大多数的中小企业日常的数据应用是建立在Windows平台上的。由于SQLServer与Windows界面风格完全一致,且有许多“向导(Wizard)”帮助,因此易于安装和学习,有关SQLServer的资料、培训随处可得,并且目前国内具有MCDBA认证的工程师不在少数。从另一个角度来讲,学习SQLServer是掌握其他平台及大型数据,如Oracle,Sybase,DB2的基础。因为这些大型数据库对于设备、平台、人员知识的要求往往较高,而并不是每个人都具备这样的条件,且有机会去接触它们。但有了SQLServer的基础,再去学习和使用它们就容易多了。IT行业的实践经验充分证明了这一点。(2)兼容性良好由于今天Windows操作系统占领着主导地的位,选择SQLServer一定会在兼容性方面取得一些优势。另外,SQLServer2000除了具有扩展性,可靠性以外,还具有可以迅速开发新的因特网系统的功能。尤其是它可以直接存贮XML数据,可以将搜索结果以XML格式输出等特点,有利于构建了异构系统的互操作性,奠定了面向互联网的企业应用和服务的基石。这些特点在.NET战略中发挥着重要的作用。(3)相对于7.0的忧越性MicrosoftSQLServer2000是在SQLServer7.0的基础上对性能、可靠性、质量以及易用性进行了扩展。SQLServer2000中包含许多新特性,这些特性使其成为针对电子商务、数据仓库和在线商务解决方案的卓越的数据库平台。其增强的特性包括对丰富的扩展标记语言(XML)的支持、综合分析服务以及便捷的数据库管理。(4)电子商务在使用由MicrosoftSQLServer2000关系数据库引擎的情况下,XML数据可在关系表中进行存储,而查询则能以XML格式将有关结果返回。此外,XML支持还简化了后端系统集成,并实现了跨防火墙的无缝数据传输。还可以使用HypertextTransferProtocol(超文本传输协议,HTTP)来访问SQLServer2000,以实现面向SQLServer2000数据库的安全Web连接和无须额外编程的联机分析处理(OLAP)多维数据集。(5)数据仓库MicrosoftSQLServer2000非常明显的改进就是增加了OLAP(联机分析处理)功能,这可以让很多中小企业用户也可以使用数据仓库的一些特性进行分析。OLAP可以通过多维存储技术对大型、复杂数据集执行快速、高级的分析工作。数据挖掘功能能够揭示出隐藏在大量数据中的倾向及趋势,它允许组织或机构最大限度的从数据中获取价值。通过对现有数据进行有效分析,这一功能可以对未来的趋势进行预测。(6)增强的在线商务MicrosoftSQLServer2000简化了管理、优化工作,并且增强了迅速、成功的部署在线商务应用程序所需的可靠性和伸缩性。其中,用以提高可靠性的特性包括日志传送、在线备份和故障切换群集。在伸缩性方面的改进包括对多达32颗CPU和64GBRAM的支持。通过自动优化和改进后的管理特性——诸如数据文件尺寸的自动管理、基于向导的数据库拷贝、自动内存管理和简化的故障切换群集安装与管理,在线商务应用程序能够被迅速部署并有效管理。基于SQLServer2000有以上这些特点和优势,尤其是考虑到它对于开发大型数据库甚至数据仓库所表现出的优越性,故此本系统使用SQLServer2000作为数据库开发软件。

2.需求分析2.1总体需求调查2.1.1现行系统存在的问题我们通过对某公司的实际调查,该公司由于规模较小,其客户管理工作大部分还是进行着手工管理,工作起来效率很低,并且不能及时了解各类客户的实际情况,也无法快速地进行客户相关信息的查询等操作,不便于动态及时地调整客户资料,以便更好地适应当前经济形势发展的需要和本企业的管理的先进性。手工管理还存在着许多弊端,由于不可避免的人为因素,经常造成数据的遗漏、误报。计算机信息化管理有着储存信息量大、速度快等许多优点,提供给我们的处理信息及时快捷,同时也提高了我们工作人员的自身素质。2.1.2解决方案基于以上的对问题的分析,利用计算机给我们提供信息,及时地调整企业客户管理系统,并且对各类客户的管理过程形成一整套动态的管理就十分必要了。客户管理系统的建立,需要进行用户的需求调查与分析,以确定系统目标,提出解决问题的详细方案,这是系统建设的重要环节。企业客户的各方面资料比较复杂,但要有着完善的客户资料信息,对每一客户的相关信息要有详细的记录说明,功能上对系统的需求是全面的。因此对用户的需求可分为几个方面:一是客户管理人员可以通过计算机来管理各类客户,调整客户数据,增加客户数量,适应客户管理的需求;二是管理人员可以通过系统很方便地对客户即将购买、已购买,购买何种商品进行编辑,包括增加、删除和修改,能够很方便地对客户的需求进行有效管理;三是在联系上多下功夫,包括对客户方的联系人,以及如何跟其联系做出有效的管理;四是统计分析,这是衡量和了解企业各商品销售情况的重要手段;五是预测分析,这是一个创新的部分,它来完成对客户下次购买的时间进行预测,可以对公司产品的进销进行有效的管理;最后是公司对内部人员的管理。这四个方面形成了企业客户管理的一个工作整体,采用计算机自动化信息处理,可方便快捷地共享信息、交流信息,高效地协同工作。在软、硬件方面对系统的需求:软件要求易学,界面友好,容易掌握,可以很简单方便的管理各种客户信息。硬件的配置要求不能太高,这样可以很好的适应当前的客户管理。在开发方式上对系统的需求:由于客户管理系统虽然是一种商业性的活动(但对于本人来说,却是一个毕业设计的内容),所以系统设计开发的周期要短,在短时间内完成,减少开发成本,提高开发效率,方便、简单、实用作为系统开发的指导思想。2.2可行性分析通过对该公司的各个方面进行了具体的了解之后,现对其开发客户管理系统的可行性进行分析。技术上可行:该系统所需硬件设备,市场上销售价格较低,甚至可以使用原有的设备;软件上,操作系统采用Windows系列操作系统,开发工具使用功能强大的Delphi7.0,后台采用SQLServer2000提供强有力的支持,这些软件在MIS开发中已被大量应用,技术上都比较成熟。因此在技术上是可行的。经济上可行:由于公司急需采用计算机来进行客户的管理,因此对开发客户管理系统大力支持,开发经费没有问题。管理上可行:该企业的客户种类较多,因此公司要为每个客户建立资料档案,也便加强公司对客户资料的管理,因此在管理上可行。另外,客户部和上级领导对开发该系统也是大力支持的,同时制定了培训计划,并进行了实施MIS的物质准备和工作准备。综上所述,开发客户管理系统在技术上、经济上、管理上都是可行的。2.3系统目标客户管理系统是一个以客户为核心的管理系统,本次毕业设计本着这个原则,重点实现了与客户有关资料的管理功能,包括客户资料、销售详情和产品等信息,并且实现销售构成和对客户购买动向的分析。我们力争使整个系统做到操作直观、方便、实用、安全等的目的。2.4系统功能分析作为一个客户管理系统应用软件,应该能够综合管理与客户相关的企业资源,包括销售、服务、市场等各方面的资源、信息,使各种信息都能够实现一次录入,随处使用。销售是每个企业都非常关注的环节,销售业绩的好坏与企业的生存与发展息息相关。客户管理系统的销售管理应该能够实现:联系人管理:可以记录联系人的名称、电话号码、地址、邮件地址等各项信息。联系活动管理:详细记录销售代表与联系人之间的所有活动,包括每个活动的具体细节。客户信息管理:能够记录与客户有关的所有信息。活动追踪:既能够按照活动的日期、次数、类型、描述、执行人等来追踪活动,也能够按照联系人、企业和商机来追踪活动。还应该包括机会管理、机会分析、销售预测、销售统计等各项功能。2.5数据流图数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理元素,它只是描绘信息在软件中流动和被处理的情况。因为数据流图是系统逻辑功能的图形表示,即使不是专业的计算机人员也容易理解它,所以它是分析员和用户之间极好的通信工具。如图2.1所示,数据流图的四种基本符号和具体描述如下:数据的源点数据的源点/终点变换数据的处理变换数据的处理数据存储数据存储数据流数据流图2.1数据流图的基本符号在对该公司客户管理的手工管理模式和业务流程进行认真分析和研究的基础上,经过与该客户部的相关人员的反复协商、论证,最后确定了该客户管理系统的逻辑模型。我们以数据流图和数据字典的方式来描述新系统的逻辑功能。该系统的数据流图如图2.2所示:客户客户客户信息1存储客户数据客户资料2存储商品数据商品信息商品商品信息5.1提取基础数据3修改客户数据操作员4修改商品数据操作员5.2新增销售数据销售记录6修改销售数据操作员销售数据7商品销售构成分析8客户购买时间预测主管商品编号客户编号销售数据销售数据商品信息客户信息图2.2客户管理系统数据流图2.6数据字典数据字典是所有与系统相关的数据元素的有组织的列表,并且包含了对这些数据元素的精确、严格的定义,从而使得用户和系统分析员双方对输入、输出、存储的成分甚至中间计算结果有共同的理解。简而言之,数据字典是描述数据的信息的集合,是对系统中使用的所有数据元素的定义的集合。下面的表是对各数据元素的详细说明:数据存储名称:客户资料简述:记录和保存客户的基本信息记录组成:客户资料=客户ID+客户名称+所属人员+地址+电话+电子邮件+登记时间+法人代表+邮编+传真+等级+来源+类型+行业组织方式:按记录建立次序顺序排列,有客户ID索引数据存储名称:商品信息简述:记录和保存商品的基本信息记录组成:商品信息=商品ID+商品名称+规格+型号+计量单位+最低销售价+标准销售价组织方式:按记录建立次序顺序排列,有商品ID索引数据存储名称:销售记录简述:记录和保存客户购买商品的详细记录记录组成:销售记录=销售详情ID+销售记录ID+客户ID+商品ID+联系时间+联系方式+单价+数量组织方式:按记录建立次序顺序排列,有销售记录ID索引数据项名称:客户信息简述:客户的各项详细信息数据项组成:客户信息=客户名称+地址+电话+电子邮件+邮编+传真+等级+来源+类型+行业数据项名称:客户编码简述:给每个客户的一个唯一的、做标识的号码值类型:4个字符数据项名称:商品信息简述:商品的各项详细信息数据项组成:商品信息=商品名称+规格+型号+计量单位+最低销售价+标准销售价数据项名称:商品编码简述:给每件商品的一个唯一的、坐标识的号码值类型:4个字符数据项名称:销售数据简述:客户购买商品的详细记录数据项组成:销售数据=客户ID+商品ID+联系时间+联系方式+单价+数量

3.系统设计3.1数据库设计3.1.1E-R图根据以上需求分析进行初步设计可以画出本系统实体间关系的E-R图,如图3.1所示,系统中包括客户、商品、我方人员和联系人四个实体。每个客户都有若干个联系人,公司的职员与客户进行联系时,首先应该是联络属于该客户的某个联系人。经过联络或商谈之后,与客户签订销售合同、出售相应的产品。系统将与联系人联络的资料及销售产品的资料保存起来,当作以后对市场、客户进行分析的依据。联系人联系人我方人员客户联络销售属于家庭电话办公电话部门生日姓名性别ID职务方式姓名时间费用ID权限职务地址行业等级时间ID电话名称类型单据编号产品详情商品名称ID规格售价型号nnn1nmnmp图3.1系统的E-R图3.1.2从E-R模型导出数据模式通过对实际客户管理和设计出的E-R图的分析,本系统设计的实体和属性如下:1)客户:(客户ID,名称,地址,电话,等级,类型,行业)2)联系人:(联系人ID,姓名,性别,职务,办公电话,家庭电话,部门,邮编,生日)3)我方人员:(我方人员ID,姓名,职务,权限)4)商品:(商品ID,名称,规格,型号,售价)5)销售:(销售记录ID,商品ID,客户ID,单据编号,开单时间,制单人ID(我方人员))6)联络:(联系记录ID,联系时间,联系人ID,我方人员ID,方式,费用)7)属于:(客户ID,联系人ID,姓名,职务,部门)3.1.3数据库中表的设计根据系统的功能分析和E-R图可以设计如下所示的数据库中的表。数据库采用SQLServer2000,调试、运行程序前必须先在SQLServer服务器上建立一个名为company的数据库。下面集中给出了与该客户管理系统相关的各个数据表的详细结构。1)客户信息表如表3.1所示,客户信息表(CMRKh)描述了与公司相关的所有客户的信息,这是客户管理系统中的重要数据。表中字段所属人员ID保存的是公司中负责该客户的人员的ID,即该客户的主经手人的ID。表3.1客户信息表序号字段名类型长度精度小数位数默认值允许空主键说明1kh_iint4客户ID2kh_mcvarchar50√客户名称3kh_bmvarchar10√客户编码4kh_ssryiint4√所属人员ID5kh_dzvarchar100√地址6kh_dh1varchar20√电话17kh_dh2varchar20√电话28kh_dzyjvarchar50√电子邮件9kh_djsjdatetime8√等级时间10kh_frdbvarchar20√法人代表11kh_ybchar6√邮编12kh_czvarchar20√传真13kh_khdjiint4√客户等级ID14kh_khlyiint4√客户来源15kh_khlxiint4√客户类型16kh_sshyiint4√所属行业17kh_bztext16√备注2)联系人信息表如表3.2所示,联系人信息表(CRMLxr)保存了所有客户的联系人的资料。一个客户的主联系人一般只有一个,因此对于某个客户来说最多只有一个联系人是否主联系人字段可以取值为真,这一点是通过程序来控制的。表3.2联系人信息表序号字段名类型长度精度小数位数默认值允许空主键说明1lxr_iint4联系人ID2lxr_khiint4客户ID3lxr_bmvarchar10√联系人编码4lxr_xmvarchar20√姓名5lxr_ncvarchar20√昵称6lxr_zlxrbit1(0)√是否主联系人7lxr_xbiint4性别ID8lxr_zwvarchar20√职务9lxr_bmenvarchar20√部门10lxr_bgdhvarchar20√办公电话11lxr_jtdhvarchar20√家庭电话续表序号续表字段名类型长度精度小数位数默认值允许空主键说明12lxr_dzyjvarchar50√电子邮件13lxr_qqint4√QQ号14lxr_dzvarchar100√地址15lxr_ybchar6√邮编16lxr_srdatetime8√生日17lxr_bztext16√备注3)我方人员信息表如表3.3所示,我方人员信息表(PMPerson)保存了对我方管理人员的基本信息。表3.3我方人员信息表序号字段名类型长度精度小数位数默认值允许空主键说明1Per_iint4√人员ID2Per_pint4(0)√人员编号3Per_namevarchar20√人员姓名4Per_codevarchar20√人员编码5Per_sexvarchar10√性别6Per_gwvarchar20√岗位7Per_zwvarchar60√职务8Per_dlmzvarchar20√登录名字9Per_dlmmvarchar20√登录密码10Per_qxint4(0)√权限4)销售记录表如表3.4所示,销售记录表(CRMXsjl)保存了对客户销售的基本信息。表3.4销售记录表序号字段名类型长度精度小数位数默认值允许空主键说明1xsjl_iint4√销售记录ID2xsjl_khiint4√客户ID3xsjl_djbhvarchar20√单据编号4xsjl_kdsjdatetime8√开单时间5xsjl_zdriint4√制单人ID6xsjl_shriint4√审核人ID7xsjl_shsjdatetime8√审核时间8xsjl_bztext16√备注9xsjl_cxyytext16√撤消原因10xsjl_zttinyint1(1)销售记录状态1—待审核2—待完成3—审核未通过4—已完成5—已撤消5)销售详情表如表3.5所示,销售详情表(CRMXsxq)保存了与销售记录表对应的销售产品的具体数据。表3.5销售详情表序号字段名类型长度精度小数位数默认值允许空主键说明1xsxq_iint4√销售详情ID2xsxq_xsjliint4√销售记录ID3xsxq_spiint4√商品ID4xsxq_spggchar20√商品规格5xsxq_djdecimal9182√单价6xsxq_sldecimal9184√数量6)联系记录表如表3.6所示,联系记录表(CRMLxjl)保存了公司职员已经完成的与客户的联系人进行联络的信息。表3.6联系记录表序号字段名类型长度精度小数位数默认值允许空主键说明1lxjl_iint4√联系记录ID2lxjl_sjdatetime8√联系时间3lxjl_lxriint4√联系人ID4lxjl_wfryiint4√我方人员5lxjl_lxfsiint4√联系方式6lxjl_jltext16√联系记录7lxjl_fydatetime9182√联系费用7)行动安排表如表3.7所示,行动安排表(CRMXdap)记录了公司职员预计将与客户的联系人进行联络的信息。表3.7行动安排表序号字段名类型长度精度小数位数默认值允许空主键说明1xdap_iint4√行动安排ID2xdap_wfryiint4√我方人员ID3xdap_lxriint4√联系人ID4xdap_sjdatetime8√时间5xdap_xqtext16√行动安排详情6xdap_wcbit1(0)√完成7xdap_cxbit1(0)√行动撤消8)经手人变更表在客户信息表的说明中曾经说到每个客户都会有一个主经手人,如表3.8所示,经手人变更表(CRMJsrbg)记录了每个客户由于各种原因导致的主经手人变更的信息。在经手人变更时,首先应该更改客户信息表中的所属人员ID字段的值,并且在经手人变更表中增加一条记录。表3.8经手人变更表序号字段名类型长度精度小数位数默认值允许空主键说明1jsrbg_iint4经手人变更ID2jsrbg_kssjdatetime8√变更时间3jsrbg_lxriint4√联系人ID4jsrbg_ryiint4√我方人员ID续表序号续表字段名类型长度精度小数位数默认值允许空主键说明5jsrbg_yytext16√变更原因6jsrbg_jssjdatetime8√结束时间9)联系人安排表每个联系人在公司内部除了有一个主经手人之外,可能还需要多个其他职员与该联系人保持联系;另外,每个职员也会与多个联系人进行联系,即联系人和公司职员之间存在多对多的关系。如表3.9所示,联系人安排表(CRMLxrap)记录了每个联系人与公司职员之间的联络关系。表3.9联系人安排表序号字段名类型长度精度小数位数默认值允许空主键说明1lrap_iint4√联系人安排ID2lrap_lxriint4√联系人ID3lrap_wfryiint4√我方人员ID10)行业表如表3.10所示,行业表(CRMHy)保存了行业的分类信息。表3.10行业表序号字段名类型长度精度小数位数默认值允许空主键说明1hy_iint4√行业2hy_mcvarchar20√行业名称3hy_msvarchar50√行业描述11)客户等级表如表3.11所示,客户等级表(CRMKhdj)保存了客户分等级的方法。表3.11客户等级表序号字段名类型长度精度小数位数默认值允许空主键说明1khdi_iint4√客户等级ID2khdi_mcvarchar20√客户等级名称3khdi_msvarchar50√客户等级描述12)客户类型表如表3.12所示,客户类型表(CRMKhlx)保存了客户类型的说明。表3.12客户类型表序号字段名类型长度精度小数位数默认值允许空主键说明1khlx_iint4√客户类型ID2khlx_mcvarchar20√客户类型名称3khlx_msvarchar50√客户类型描述13)客户来源表如表3.13所示,客户来源表(CRMKhly)保存了客户可能的来源的说明。表3.13客户来源表序号字段名类型长度精度小数位数默认值允许空主键说明1khly_iint4√客户来源ID2khly_mcvarchar20√客户来源名称3khly_msvarchar50√客户来源描述14)联系方式表如表3.14所示,联系方式表(CRMLxfs)保存了与联系人进行联络的方式。表3.14联系方式表序号字段名类型长度精度小数位数默认值允许空主键说明1lxfs_iint4√联系方式ID2lxfs_mcvarchar20√联系方式名称3lxfs_msvarchar50√联系方式描述15)商品表如表3.15所示,商品表(CRMSp)保存了所有产品相关的信息。表3.15商品表序号字段名类型长度精度小数位数默认值允许空主键说明1sp_iint4商品ID2sp_bmvarchar20√商品编码3sp_mcvarchar30√商品名4sp_ggchar20√商品规格5sp_xhchar20√商品型号6sp_jldwvarchar10√计量单位7sp_zdxsjdecimal9182√最低销售价8sp_bzxsjdecimal9182√标准销售价9sp_mstext16√商品描述16)性别表如表3.16所示,性别表(CRMXb)保存了性别的分类信息。表3.16性别表序号字段名类型长度精度小数位数默认值允许空主键说明1xb_iint4√性别2xb_mcvarchar20√性别名称3xb_msvarchar50√性别描述3.1.4数据库中视图的设计在本系统当中,设计了一个对该公司所有客户下次购买不同商品的时间进行预测的模块,为此我们设计了一个算法,而我们通过在SQL中设计一个存储过程(pro_yc)来实现该算法。为了方便实现该过程,在数据库中定义了两个视图,分别为VIEW_XQ和VIEW_YC1。1)视图VIEW_XQ的设计视图VIEW_XQ的设计目的是为了将销售记录表(CRMXsjl)和销售详情表(CRMXsxq)两个表联系起来,因为在设计时,销售记录表是定义了与客户有关的销售信息,而销售详情表定义了与商品有关的销售信息,它们是通过联系记录ID来关联起来建立起此视图的。视图的图表区显示如右图3.2所示。选择两个表的所有列来建立此视图,在SQL语言区输入下面代码:SELECTA.*,B.*图3.2视图VIEW_XQFROMdbo.CRMXsxqAINNERJOINdbo.CRMXsjlBONA.xsxq_xsjli=B.xsjl_i2)视图VIEW_YC1的设计建立此视图的目的是同样是在工程pro_yc的实现中所用到,目的是为了统计某一时间段内客户购买某种商品的数量总和(具体算法将会在本文的系统实现章节中提到)。此视图SQL语言区的具体代码如下:SELECTxsjl_khi,xsxq_spi,xsjl_kdsj,SUM(xsxq_sl)ASSLHJFROMdbo.VIEW_XQGROUPBYxsjl_khi,xsxq_spi,xsjl_kdsj3.2系统模块设计3.2.1模块划分客户是客户管理的核心,因此,本系统重点实现了客户资料的管理功能,并且外加实现了一个销售分析的功能模块。本客户管理系统可大致分为三个模块。具体描述如下:(1)客户资料管理模块:包括客户信息管理、联系人资料管理、销售记录管理、联系记录管理和行动安排。(2)客户资料分析模块:包括销售构成分析,它分别从客户、时间和商品三个方面进行分析。(3)系统数据设置模块:包括设置产品数据、设置系统数据和管理员设置。3.2.2系统功能模块图系统的具体功能模块图见图3.3。客户管理系统客户管理系统客户资料管理客户资料分析系统数据设置联系记录管理设置系统数据设置产品数据销售构成分析行动安排销售记录管理联系人资料管理客户信息管理管理员设置客户购买商品时间预测图3.3系统功能模块图

4.系统实现4.1系统共用模块在客户管理中,有许多函数和过程是多个模块需要调用的,如查询数据库的函数和过程、显示定制对话框等,还有一些变量也是多个模块需要访问的,如当前登录系统的用户权限等,这些数据和过程都放在模块PublicModel.pas中。4.1.1用户信息数据结构及获得用户信息函数1)用户信息数据结构用户信息数据结构TUser定义了系统中需要调用的一些用户信息的数据结构,如用户ID、姓名、权限等,同时还定义了一个NowUser的全局变量,记录当前登录用户的信息,NowUser的值在用户登录系统时设定。用户信息数据结构的定义为:typeTUser=recordUserID:integer;UserName:string;UserPower:string;aFlag:integer;end;NowUser的定义为:VerNowUser:Ture;//系统当前的用户2)判断用户是否具有权限在本系统中采用了很简单的两级权限,即管理员和查看员,因此定义了一个名为aFlag的权限标识,在用户信息数据结构定义的代码中可以看出,具体实现的代码如下:functionhasPower:boolean;beginifNowUser.aFlag=1thenResult:=TrueelseResult:=False;end;4.1.2自定义对话框为了界面的统一和整齐、美观,在需要使用对话框的地方,程序进行了统一定制。程序中常用的对话框分为两种,一种是需要选择进行下一步操作还是放弃操作的两个按钮的对话框,一种是进行一些信息提示的单按钮对话框。因此,程序中分别定义了一个单按钮的通用对话框,利用这两个对话框又可以定义程序中常用的错误提示,普通信息提示和确认对话框。1)单按钮的通用对话框单按钮对话框,通常是提示程序的某些操作结果或者错误信息,因此不需要返回结果,程序中将单按钮对话框定义为一个过程,代码如下:functionCustorMessageDlg(constaMsg,aCaption:string;constPicFile:String=''):integer;varDialogForm:TForm;AOkButton:TButton;aCancelButton:TButton;aLabel:TLabel;aImg:TImage;aPic:TPicture;i,formWidth:integer;beginResult:=2;下面代码首先创建对话框中的各个控件:DialogForm:=TForm.Create(Application);AOkButton:=TButton.Create(Application);aCancelButton:=TButton.Create(Application);aLabel:=TLabel.Create(Application);aImg:=TImage.Create(Application);aPic:=TPicture.Create;formWidth:=300;tryaPic.LoadFromFile(PicFile);exceptend;下面代码设置提示内容的label控件:withaLabeldobeginFont.Size:=8;Caption:='';fori:=1tolength(aMsg)dobeginif(Imod56=0)thenCaption:=Caption+aMsg[I]+#13elseCaption:=Caption+aMsg[I];end;Width:=Width+32;Left:=52+(formWidth-Width-52)div2;Top:=20;Parent:=DialogForm;end;下面代码设置【确定】按钮控件:withAOkButtondobeginFont.Size:=8;Left:=42+(formwidth-42-75*2-20)div2;Top:=40+aLabel.Height;Width:=75;Height:=25;TabOrder:=0;Caption:='确定[&O]';Parent:=DialogForm;ModalResult:=mrOk;end;下面代码设置显示的图标:withaImgdobeginPicture:=aPic;Top:=20;Left:=10;Width:=32;Height:=32;Stretch:=true;Parent:=DialogForm;end;显示对话框,代码如下:withDialogFormdobeginFont.Size:=8;Name:='DlgForm';Width:=formWidth;ClientHeight:=20+aLabel.Height+20+AButton.Height+20;Caption:=aCaption;Position:=poDesktopCenter;BorderStyle:=bsDialog;Color:=BACKCOLOR;ShowModal;Free;end;2)两个按钮的通用对话框两个按钮的对话框,通常是需要进行选择,并且得到选择结果,因此定义为函数,函数返回值为1表示选择进行下一步操作,返回值为2表示放弃下一步操作,代码如下:procedureCustorMessageDlgOneButton(constaMsg,aCaption:string;constPicFile:String='');varDialogForm:TForm;AButton:TButton;aLabel:TLabel;aImg:TImage;aPic:TPicture;i,formWidth:integer;begin下面代码首先创建对话框中的各个控件:DialogForm:=TForm.Create(Application);AButton:=TButton.Create(Application);aLabel:=TLabel.Create(Application);aImg:=TImage.Create(Application);aPic:=TPicture.Create;formWidth:=300;tryaPic.LoadFromFile(PicFile);exceptend;下面代码设置提示内容的label控件:withaLabeldobeginFont.Size:=8;Caption:='';fori:=1tolength(aMsg)dobeginif(Imod56=0)thenCaption:=Caption+aMsg[I]+#13elseCaption:=Caption+aMsg[I];end;Width:=Width+32;Left:=52+(formWidth-Width-52)div2;Top:=20;Parent:=DialogForm;end;显示对话框并返回选择结果的代码如下:withDialogFormdobeginFont.Size:=8;Name:='DlgForm';Width:=formWidth;ClientHeight:=20+aLabel.Height+20+AOkButton.Height+20;Caption:=aCaption;Position:=poDesktopCenter;BorderStyle:=bsDialog;Color:=BACKCOLOR;ifShowModal<>2thenResult:=1;Free;end;3)程序中使用的对话框利用上面定义的两个通用对话框可以对程序中常用的错误提示、信息提示、确认对话框分别进行定制,供其它模块调用。错误提示的对话框代码如下:procedureshowErrMsg(s:string);beginCustorMessageDlgOneButton(s,'客户管理系统',ExtractFilePath(Application.Exename)+'error.ico');end;信息提示的对话框代码如下:procedureshowInfMsg(s:string='');beginCustorMessageDlgOneButton(s,'客户管理系统',ExtractFilePath(Application.Exename)+'information.ico');end;确认对话框的代码如下:functionshowConfirmDlg(s:string):boolean;beginifCustorMessageDlg(s,'客户管理系统',ExtractFilePath(Application.Exename)+'confirm.ico')=1thenresult:=TrueelseResult:=False;end;4.1.3通用数据库查询程序中经常要查询数据库,通常查询数据库有三种情况:一种是用一条SQL语句获得一个结果集;另一种是用一条SQL语句对数据库进行更新,不需要获得结果集;还有一种就是多条SQL语句对数据库进行更新,需要进行事务处理,因此程序中分别定义了这三个过程。1)用一条SQL语句获得结果集的过程procedureExecQuery(varDS:TADODataSet;strSQL:string);beginDS.Active:=false;DS.CommandText:=strSQL;DS.Active:=True;end;2)用一条SQL语句更新数据库、不需要返回结果集的过程procedureExecQuery2(strSQL:string);beginDM.ADOQuery1.SQL.Clear;DM.ADOQuery1.SQL.Add(strSQL);DM.ADOQuery1.ExecSQL;end;3)多条SQL语句对数据库进行更新procedureBatchSQL(s:Tstrings);beginDM.ADOQuery1.SQL:=s;DM.ADOQuery1.ExecSQL;end;4.1.4其他通用过程1)破解DBNavigator控件DBNavigator在数据库编程中使经常用到的控件,但是在使用时不能修改它的图形,也不能修改它的文字,尤其本系统采用了一种类似WindowsXP风格的界面,使用DBNaigator将使界面显得非常不协调,通过使用一些技巧,可以达到目的。DBNavigator的按钮属于一个集合属性Buttons,通过Buttons属性可以控制改变各个按钮的外观、显示文字等,Buttons的访问方式是Protected的,普通的调用是不能访问的。但是由于Delphi默认在同一个单元里面的类可以互相访问其Protected属性,因此可以利用这一点达到目的。首先定义一个类,它派生自DBNavigator:TDBNavCracker=class(TDBnavigator);然后再程序中对DBNavigator进行强制转换就可以访问它的受控制属性了,通过访问Bottons属性的值,就可以控制按钮的外观了。程序中统一定制了DBNavigator的外观,代码如下:proceduresetNavigator(vardbn:TDBNavigator);beginTDBNavCracker(dbn).Buttons[nbFirst].Caption:='第一条';TDBNavCracker(dbn).Buttons[nbFirst].Layout:=blGlyphTop;TDBNavCracker(dbn).Buttons[nbPrior].Caption:='上一条';TDBNavCracker(dbn).Buttons[nbPrior].Layout:=blGlyphTop;TDBNavCracker(dbn).Buttons[nbNext].Caption:='下一条';TDBNavCracker(dbn).Buttons[nbNext].Layout:=blGlyphTop;TDBNavCracker(dbn).Buttons[nbLast].Caption:='最后';TDBNavCracker(dbn).Buttons[nbLast].Layout:=blGlyphTop;TDBNavCracker(dbn).Buttons[nbInsert].Caption:='新增';TDBNavCracker(dbn).Buttons[nbInsert].Layout:=blGlyphTop;TDBNavCracker(dbn).Buttons[nbDelete].Caption:='删除';TDBNavCracker(dbn).Buttons[nbDelete].Layout:=blGlyphTop;TDBNavCracker(dbn).Buttons[nbEdit].Caption:='编辑';TDBNavCracker(dbn).Buttons[nbEdit].Layout:=blGlyphTop;TDBNavCracker(dbn).Buttons[nbPost].Caption:='提交';TDBNavCracker(dbn).Buttons[nbPost].Layout:=blGlyphTop;TDBNavCracker(dbn).Buttons[nbCancel].Caption:='取消';TDBNavCracker(dbn).Buttons[nbCancel].Layout:=blGlyphTop;TDBNavCracker(dbn).Buttons[nbRefresh].Caption:='刷新';TDBNavCracker(dbn).Buttons[nbRefresh].Layout:=blGlyphTop;TDBNavCracker(dbn).Color:=BACKCOLOR;end;2)检测数据库程序中需要检测数据库连接及检测数据表的完整性,由于在数据模块中已经定义了数据集,因此可以通过检测数据集来检查数据库,代码如下:functionconnectDB:Boolean;vari:integer;beginwithDM.ADOConnectiondobegintryOpen;exceptResult:=False;exit;end;Result:=True;fori:=0todm.ComponentCount-1dobeginifDM.Components[i]isTADODataSetthentryTADODataSet(DM.Components[i]).Active:=true;exceptonE:exceptiondobeginshowErrMsg('打开数据集时出现错误!'+#13#10+'错误提示:'+E.Message);Result:=False;Exit;end;end;end;end;end;3)调用chm帮助chm帮助文件是基于Web页的更灵活的新一代帮助系统,它的应用已经很广泛。Chm首先要求开发与运行环境使用Windows98或更高版本,否则系统无法支持。Delphi并不支持chm帮助系统,它仍然是用WinHelp。但是调用Windows系统目录System32下的HHCTRL.OCX,利用其中的HtmlHelpA函数接口可以实现chm帮助。首先需要定义调用HHCTRL.OCX中的函数及相关参数全局变量,代码如下:HtmlHelpA:function(hwndCaller:HWND;pszFile:PChar;uCommand:UINT;dwData:DWORD_PTR):HWND;stdcall;HHControlInstance:THandle;dwCookie:DWORD;定义一个调用帮助的函数,代码如下:functionHtmlHelp(hwndCaller:HWND;strFile:String;uCommand:UINT;dwData:DWORD_PTR):HWND;varLFileName:String;p:PChar;beginifHHControlInstance=0thenbeginLFileName:=StringOfChar('',256);p:=PChar(LFilename);GetSystemDirectory(p,255);StrCat(p,'\HHCTRL.OCX');HHControlInstance:=LoadLibrary(P);ifHHControlInstance=0thenbeginshowErrMsg('没有找到帮助系统,不能显示帮助文件');exit;end;@HtmlHelpA:=GetProcAddress(HHControlInstance,'HtmlHelpA');if@HtmlHelpA=nilthenbeginshowErrMsg('装载帮助文件错误!');exit;end;HtmlHelpA(0,nil,$001C,(@dwCookie));end;result:=HtmlHelpA(hwndCaller,PChar(strFile),uCommand,dwData);end;关闭帮助文件的函数的代码如下:procedureCloseHtmlHelp;beginifHHControlInstance<>0thenbeginHtmlHelpA(0,nil,$001D,DWORD_PTR(dwCookie));FreeLibrary(HHControlInstance);end;end;4.2数据模块程序中有多处需要访问数据库,为了统一程序中对数据库的访问,可以利用Delphi提供的数据模块对程序中一些需要在多处进行访问的表放置到数据模块中进行统一访问,同时也有利于对数据模块的检验。4.2.1建立数据模块1)在Delphi菜单中选择【File】|【New】|【DataModule】,建立一个新的数据访问模块。2)如表4.1中所示的控件,并按表中所示设置属性。3)保存设置结果在DataModule.pas中。表4.1数据模块中控件的主要属性设置控件类型控件名称功能主要属性设置TADOConnectionADOConnection提供数据库连接LoginPrompt=FalseTADODataSetDSetHy访问行业表(CRMHy)的数据集CommandText=’select*fromCRMHy’Connection=ADOConnectionTDataSourceDSHy访问行业表(CRMHy)的数据源DataSet=DSetHyTADODataSetDSetKhdj访问客户等级表(CRMKhdi)的数据集CommandText=’select*fromCRMKhdj’Connection=ADOConnectionTDataSourceDSKhdj访问客户等级表(CRMKhdi)的数据源DataSet=DSetKhdjTADODataSetDSetKhlx访问客户类型表(CRMKhlx)的数据集CommandText=’select*fromCRMKhlx’Connection=ADOConnection续表控件类型续表控件名称功能主要属性设置TDataSourceDSKhlx访问客户类型表(CRMKhlx)的数据源DataSet=DSetKhlxTADODataSetDSetKhly访问客户来源表(CRMKhly)的数据集CommandText=’select*fromCRMKhly’Connection=ADOConnectionTDataSourceDSKhly访问客户来源表(CRMKhly)的数据源DataSet=DSetKhlyTADODataSetDSetXb访问性别表(CRMXb)的数据集CommandText=’select*fromCRMXb’Connection=ADOConnectionTDataSourceDSXb访问性别表(CRMXb)的数据源DataSet=DSetXbTADOQueryADOQuery1更新数据库控件Connection=ADOConnectionTADODataSetDSetKhzl访问客户资料表(CRMKhzl)的数据集CommandText=’select*fromCRMKh’Connection=ADOConnectionTDataSourceDSKhzl访问客户资料表(CRMKhzl)的数据源DataSet=DSetKhzlTADODataSetDSetRy访问人员表(PMPerson)的数据集CommandText=’select*fromPMPersonConnection=ADOConnectionTDataSourceDSRy访问人员表(PMPerson)的数据源DataSet=DSetRyTADODataSetDSetLxjl访问联系记录表(CRMLxjl)的数据集CommandText=’select*fromCRMLxjl’Connection=ADOConnectionTDataSourceDSLxjl访问联系记录表(CRMLxjl)的数据源DataSet=DSetLxjlTADODataSetDSetLxfs访问联系方式表(CRMLxfs)的数据集CommandText=’select*fromCRMLxfs’Connection=ADOConnectionTDataSourceDSLxfs访问联系方式表(CRMLxfs)的数据源DataSet=DSetLxfsTADODataSetDSetLxr访问联系人表(CRMLxr)的数据集CommandText=’select*fromCRMLxr’

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论