客户关系管理系统概述_第1页
客户关系管理系统概述_第2页
客户关系管理系统概述_第3页
客户关系管理系统概述_第4页
客户关系管理系统概述_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

年4月19日客户关系管理系统概述文档仅供参考摘要根据当前一些小企业的特点,本系统旨在建立一个完成访客资料的记录和查询的客户管理系统,它能够理解为是当前流行的客户关系管理系统的一个子系统。论文在介绍了课题的来源和系统设计背景的基础上展开了系统设计过程的说明。首先讲述了系统的总体设计,主要论述面向对象的三层C/S架构的设计、系统功能模块的划分、系统结构设计。接着介绍了系统数据库的设计,包括数据库需求分析、数据库概念结构设计等,然后详细介绍了客户管理系统详细设计,包括系统组件设计,主界面设置,客户信息管理对话框代码设计、添加客户信息、修改客户信息、删除客户信息、查看客户信息、查找客户等设计内容。最后简要介绍了软件测试,包括测试的目的与任务以及调试中需要注意事项的。关键词:客户管理,VB,ACCESS,系统设计

AbstractSomeareinthelightofatpresentpeanutscharacteristic,thissystemaimsatbuildingthatcustomermanagementsystem,itareunderstandableforbeingatpresentpopularCustomerRelationshipManagementsystemonebuildofpreciswriterandinquiryaccomplishingthevisitordatasystem.Thesystemhavingspreadoutonthesisbasisdesigningbackgroundinsourceandsystemhavingintroducedaproblem'sdesignstheprocessexplanation.Thepopulationhavinggivenanaccountofsystem'sfirstdesigns,design,systemfunctiondiscussingbegearedtotheneedsofmarriagepartnerthreelayersofC/Sframe'smainlyhavenothemodulepartition,systemphysicaldesign.Andthenproceedtohaveintroducedsystemdatabasedesign,includedatabaseneedanalysis,databaseconceptphysicaldesignetc.,haveintroducedthatthecustomermanagessystemdetaileddesign,themoduledesigns,thehostinterfaceinterposes,thecustomerinformationadministrationconversationframecodedesigns,addingcustomerinformation,revisingcustomerinformation,deletingcustomerinformation,checkingcustomerinformation,seekingacustomerandsoondesignscontentincludingsystemdetailedly.Brieffinalthetestinghavingintroducedasoftware,thepurposeincludingatestingneedmattersneedingattention'swiththemissionanddebuggingmiddle.Keywords:Thecustomermanages,VB,ACCESS,systemdesignthat

目录TOC\o\h\z\u摘要 IAbstract II目录 III第1章概述 11.1课题来源 11.2开发环境简介 21.2.1VB概述 21.2.2ACCESS数据库简介 31.3本文所做的工作 4第2章系统总体设计 62.1系统功能分析 62.2系统设计要求 62.3系统设计 72.3.1面向对象的三层C/S架构的设计 72.3.2系统功能模块划分 82.3.3系统结构设计 8第3章系统数据库设计 103.1数据库需求分析 103.2数据库概念结构设计 113.3数据库逻辑结构设计 123.4数据库的生成与配置 14第4章系统详细设计 154.1组件设计 154.1.1客户管理事务处理事件的创立 154.1.2在工程中加入自定义枚举 154.1.3创立组件的公共模块 174.2客户管理主界面设置 184.2.1设计主窗体控件布局 184.2.2图片列表的关键字设置 194.2.3给工具条添加按钮 194.2.4 添加菜单 204.3主界面编辑状态预览 214.4客户信息管理模块 214.4.1客户信息管理对话框界面设计 214.4.2客户信息管理对话框代码设计 254.4.3添加客户信息 294.4.4修改客户信息 294.4.5删除客户信息 304.4.6查看客户信息 314.4.7查找客户 32第5章软件测试 335.1测试的目的与任务 335.2测试的方法 335.3系统的调试与注意事项 345.4系统的编译与发行 35总结 36参考文献 37致谢 38第1章概述1.1课题来源客户关系管理(CustomerRelationshipManagementCRM)起源于80年代初提出的”接触管理”(ContactManagement),即专门收集整理客户与公司联系的所有信息以达到了解客户的目的。而我们所做的客户管理系统是客户关系管理系统中的一部分。到90年代初期则演变成为包括电话服务中心与支援资料分析的客户服务。经历了二十多年的不断发展,客户关系管理不断演变发展并趋向于成熟,最终形成了一套完整的管理理论体系。当前随着Internet带来的巨大商机,电子商务变得越来越成熟,基于网络办公己经取得了更宽更广的应用。因此,基于B/S模式的CRM研究与应用更具有特别的意义。传统CRM系统的研究和应用都是基于C/S模式,即客户机/服务器的结构模式,再加上邮件处理系统,在企业网的内部进行实施和应用。这样的系统需要在客户端安装相应的客户端应用程序,服务器端也要安装服务器应用程序。随着Internet的广泛应用,C/S模式逐渐暴露出很多不足的地方,比如,部署程序复杂,系统升级困难,可扩展性差。相反,B/S模式的系统有许多优点:1)应用范围广泛。能够和电子商务联系起来,在全球范围内进行相关的业务处理。2)办公方式简捷,方便。只要能上网,就能进行业务处理。3)安装,使用方便,可扩展性强。只须安装服务器端应用程序,不需要安装客户端程序。因此,进行基于B/S模式的CRM系统研究与应用,能够使公司客户快速、方便、及时地查询公司最新的各种信息,处理与公司的业务。这对公司管理客户关系,促进业务处理,提高经济效益,都有重大意义。当前商用的CRM产品很多,企业着手进行CRM实施的过程中,多数以失败或者不理想而告终,主要原因在于系统不适合企业自身的需要,而且对于中小企业来说一个完全意义上CRM系统似没有必要的,她们使用CRM系统也主要就是使用其中的客户管理和联系等基本功能,因此我们认为自己动手开发一个适合企业特点的客户管理系统具有重要的现实意义。1.2开发环境简介根据我们当前的知识水平,我们选用了MicrosoftVisualBasic6.0作为前台的开发工具,用ACCESS作为后台支持数据库,经过VB6.0的数据库控件来连接ACCESS中并对其编程来实现各种功能。,因为ACCESS与VisualBasic用的同为MicrosoftJet数据库引擎,有着最好的兼容性。1.2.1VB概述VisualBasic(以下简称VB)的前身是QBASIC,语言基础是BASIC。自从微软推出VB后,便成为了程序开发人员的首选工具。据统计,仅在数据库系统开发领域,VB就占了90%的份额。VB是基于对象的可视化程序开发工具,它的优点在于能够快捷、简易地建立Windows应用程序。1998年8月,微软推出了VB6.0的版本,进一步加强了部件开发的功能。以适用人员来分,可有以下三个版本:1.标准版针对一般程序设计人员,适合普通应用系统的开发。2.专业版针对专业程序开发人员,它在标准版的基础上提供了对数据库和Internet的支持。3.企业版适用于专为企业设计应用软件的程序开发人员。使用VB不需要追求完美的算法和精密的逻辑,而只要充分发挥你的想象力和创造力,就能利用VB开发出各种实用的软件了,不论是小游戏还是大型的客户端/服务器端应用程序,都变得非常简单。可视化编程的一个突出特点就是其开发环境就像一个百宝箱,很多功能都集成在其之中,这就是IDE(IntegratedDevelopmentEnvironment),即集成开发环境。IDE是指在相应的开发平台中集成了编辑器、编译连接工具、控件器箱辅助工具。例如在VB的集成开发环境中就包括了以下一些主要元素:工具栏、工具箱、工程管理器窗口、属性窗口、窗体设计器、代码编辑器窗口等;和VB类似,Delphi的IDE中具有主控制窗体、对象查看窗口和窗体设计器。同时IDE的设置是很灵活的,开发人员能够按照自己的编程习惯来配置IDE。从简单的文本文件到各种复杂的关系型数据库,数据库应用程序需要面对各种各样的数据源。Visualbasic6.0提供ADO(ActiveDataObjects)作为应用程序和OLE-DB连接的桥梁ADO,即Active数据对象(ActiveDataObjects):实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,经过ODBC的方法同数据库接口相连。用户能够使用任何一种ODBC数据源,即不但适合于SQLServer、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE-DB之上的技术,因此ADO经过其内部的属性和方法提供统一的数据访问接口方法。Microsoft在VisualBasic6.0以后的版本都集成了ADO。它与以前VisualBasic的DAO、RDO相比有了很大的提高。DAO(DataAccessObjects)即数据访问对象,是一种面向对象的界面接口。经过DAO/Jet功能能够访问ISAM数据库,使用DAO/ODBCDirect功能能够实现远程RDO功能。RDO(RemoteDataObjects)即远程数据对象,为使用代码来创立和操作一个远程ODBC数据库系统的各个部件提供了一个框架。RDO是ODBCAPI的一个浅层界面接口,是专为访问远程ODBC关系数据源而设计的。ADO集中了DAO和RDO的优点,能够经过简单的编程实现和各种数据结构进行连接。使用ADO的目的是进入数据源,使得修改、更新数据成为可能。ADO提供一系列的类和对象来完成各种操作。1.2.2ACCESS数据库简介过去的一些数据库软件,在操作上、数据库建立、维护等等,都相当复杂且不易使用,可是在具备了窗口的GUI(图形用户界面)特性的ACCESS数据库推出之后,数据库的建立不再是困难的事情,我们能够在PC上简单而快速的建立出一套符合自己的数据库。不但如此,在ACCESS推出以后,我们发现数据库的建立更加的快速,可是功能却更加强大,用户不用再去记忆那一大堆的文件名称,或是为数据库的文件管理大费周章,经过ACCESS的人性化管理接口把数据库的管理整理,便于维护;另外,在报表的制作上也是相当容易的,完全的视觉开发向导设计,让人使用起来很舒服。可是美中不足的是ACCESS对于主从式结构的安全性管理不足,由于ACCESS能够快速的经过ODBC连接到数据库服务器上(DatabaseServer),并浏览所有表格或是相关对象转成HTML。基本上,ACCESS对建立一个数据库所具备的每一个对象,其中包括了表、查询、窗体、报表、宏、模块。其功能分别叙述如下:表对象打开已经存在的表格、对已存在的表格字段数据进行修改、新建表格。查询对象能够用直接拖放的方式,建立表格之间的关联与对应关系,自动产生SQL语法查询出我们想要的数据。窗体设计对象能够设计用户接口,用来输入并处理数据。报表对象利用视图向导的开发方式,简单、快速的建立出需求报表或标签。宏对象提供许多的宏功能,您能够把这样的宏连接到窗体设计中的任一个对象,以达成一些复杂的功能。模块对象撰写VB的程序模块,处理较复杂的问题与需求,该功能是采用事件驱动的模式,类似VB的处理方式。1.3本文所做的工作本文主要针对客户管理系统的设计过程做一个详细的说明,论文共分五章:第一章,概述,主要介绍了课题的来源,并简单介绍了系统开发环境VB与ACCESS数据库的特点。第二章,系统总体设计,论及了系统功能分析、系统设计要求、系统设计。其中最主要的是讲述系统设计,它主要论述面向对象的三层C/S架构的设计、系统功能没模块的划分、系统结构设计。第三章,系统数据库设计,包括数据库需求分析、数据库概念结构设计等。第四章,系统详细设计,首先介绍了组件设计,客户信息管理对话框界面设计、客户信息管理对话框代码设计、添加客户信息、修改客户信息、删除客户信息、查看客户信息、查找客户。第五章,软件测试,主要介绍测试的目的与任务以及调试中需要注意事项的。最后对整个设计工作作了一个总结。

第2章系统总体设计2.1系统功能分析以客户为中心的理念在国外兴起于20世纪50年代,当时很多企业寄望于经过改进技术、压缩生产周期、改进内部资源管理来提高生产增长率和利润,但事实上见效甚微。这样企业开始从强调降低经营成本的供应方发展策略转向了需求方策略。所谓需求方策略,就是指与客户联系更紧密,从客户关系方面挖掘新能源的策略,CRM应运而生。所不同的是,现在计算机能够帮助人们实现这些看似并不复杂而实际操作起来非常繁琐的工作。试想一下,当我们需要查找一个客户的电话号码时,只需要敲几下键盘,就能够看到客户的详细资料(包括姓名、公司名称、电话、E-mail,甚至包括合作历史记录),还有,当客户的生日快到时,软件能够提醒您是该客户寄出贺卡的时候了。所有的这些,正是一个完善的客户管理系统的功能所在。本系统设计的是一个面向企业或面向个人的客户管理系统。系统开发的总体任务是实现与客户相关的各种信息的系统化、规范化和自动化。系统主要完成的功能有:●客户类型的建立与维护,包括客户类型的新建、修改和删除等。●客户信息的输入,客户信息包括客户的基本信息、一般的通讯方式及客户其它信息,如爱好、禁忌、生日等。●客户信息的修改与删除,包括启动与取消客户的生日提醒等。●根据不同条件查询客户,能够查看客户信息。●与客户合作记录的信息维护,包括合作记录的添加、修改和删除等。●客户评价管理,包括客户的重要度、友好度、满意度的设定与查看。●客户事件提醒,包括定时约会提醒和生日提醒两种。●客户提醒信息维护,包括添加、修改和删除提醒信息。2.2系统设计要求根据小型客户管理系统的特点,该系统应该具有如下设计需求:三层结构设计:本系统采用三层结构设计,即程序逻辑结构分为用户界面层、业务逻辑处理层和数据存储层。三层在实际的物理结构上也是独立的,业务逻辑处理层采用ActiveXDLL实现,用户界面与业务逻辑分离,系统的安全性、可维护性、重用性和扩展性都大大提高。面向对象设计:系统中将客户类型、客户等都封装成相应的类,同时每个类都有自己对应的集合类,从而再次提高了对数据库操作的安全性和程序的可扩展性。人性化设计:系统不但仅是一个客户信息的管理软件,它更具有人性化的生日提醒,极具实用性的合作记录,以及对客户的重要度、友好度、满意度评价等。尽可能使用现有资源:目的当然是为了提高软件开发的效率,在本系统中主要体现为使用VB应用程序向导来创立应用程序,向导能够为我们生成很多有用的代码和一个总体框架,本系统在向导中选择的是”资源管理器样式”,这就是为什么系统的主界面很像资源管理器的原因了。另外,读者可能已经注意到了,系统的今日提醒界面与某些程序的”每日一帖”或”日积月累”对话框十分相似,事实上它正是用VB窗体模板中的”日积月累”对话框实现的。2.3系统设计现在首先从系统设计思想角度来介绍客户管理系统的总体设计,然后讲述本客户管理系统的功能模块设计与结构设计。2.3.1面向对象的三层C/S架构的设计本系统采用三层架构设计,它的工作原理如图2.1所示。用户界面层业务处理层数据存储层IUnkown用户界面层业务处理层数据存储层IUnkown给出客户ID,要查看组织SQL语句,查询客户信息数据库返回客户对象,返回查询结果内部有客户信息数据库客户管理组件客户管理组件客户管理系统操作界面图2.1三层架构的工作原理图图2.1C/S架构2.3.2系统功能模块划分根据上述的系统功能分析,能够得出图中2.2所示的系统功能模块图。从图中能够看出系统包括客户类型管理模块、客户管理模块和提醒管理模块,在客户管理模块中,又包括客户信息管理、客户评价管理和客户合作管理3部分。可见,客户是系统的核心,其它模块都是以客户为中心并为其它服务的。客户管理系统客户管理系统客户类型管理模块客户管理系统提醒管理模块添加客户类型修改客户类型删除客户类型客户信息管理客户评价管理客户合作管理查看今日提醒提醒设置管理查看定时管理删除定时管理修改定时管理添加定时管理删除合作记录修改合作记录添加合作记录查找客户信息查看客户信息删除客户信息修改客户信息图2.2系统功能模块图2.3.3系统结构设计根据面向对象和三层结构的设计思想,可得出如图2.3所示的系统结构设计图。从图中能够看出系统的物理结构也分为三层,即用户界面、组件和数据库。客户管理系统客户管理系统客户管理界面客户管理组件数据库客户类型相关界面客户信息相关界面合作信息相关界面客户类型管理客户信息管理合作信息管理提醒信息管理公共模块提醒信息集合类提醒信息类合作信息集合类客户合作信息类客户信息集合类客户信息类客户类型集合类客户类型类公共模块提醒信息相关界面枚举定义类图2.3系统结构设计图

第3章系统数据库设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接影响应用系统的效率及实现的效果。合理的数据库结构设计能够提高数据存储的效率,保证数据的完整性和一致性。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的及将来可能增加的需求。数据库设计一般包括数据库需求分析,数据库概念结构设计,数据库逻辑结构设计。3.1数据库需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。经过上述系统功能的分析,针对一般客户管理信息系统的需求,以下便是的需求信息:客户类型存在上下级关系。客户必须属于一个客户类型。如果一个客户类型存在客户,或存在下级客户类型,则该类型不可删除。客户评价与客户一一对应。客户合作信息必须与某一个客户相关。提醒能够针对某一个客户,也能够针对全部客户。客户信息、合作信息、提醒信息要能够添加、修改、删除、浏览、查看。客户能够按几种常见的信息查询。经过上述系统功能分析和需求总结,考虑到将来功能上的扩展,设计的数据项和数据结构如下:客户类型信息,包括的数据项有:客户类型编号、上级客户类型编号、客户类型名称等。包括的数据项有:客户基本信息、客户其它联系方式、客户其它信息几方面。客户基本信息包括客户编号、客户姓名、性别、手机、E-mail等;客户其它联系方式包括办公室电话、家庭住址、邮编等;客户其它信息包括客户公司网站、客户喜好、禁忌等。客户评价信息,包括重要度、友好度、满意度等。客户合作信息,包括合作编号、合作客户、合作时间、合作内容等。提醒信息,包括提醒编号、提醒对象、提醒时间、提醒内容等。在上面的需求分析、数据结构设计、数据项分析的基础上,下面能够开始数据库概念结构设计了。3.2数据库概念结构设计得到上面的数据项和数据结构以后,就能够设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,经过相互之间的作用形成数据的流动。本实例根据上面的设计规划出的实体有:客户类型信息实体、客户信息实体、提醒信息实体、评价信息实体、合作信息实体。每一个实体都是现实中实际存在的对象的抽象,每两个或两个以上的实体之间可能存在某种关系。下面分别给出各个实体的E-R(Entity-Relation)图。各实体之间关系的E-R图如图3.1所示,客户类型信息实体E-R图如图3.2所示,客户类型信息实体E-R图如图3.3所示,合作信息实体E-R图如图3.4所示,提醒信息实体E-R图如图3.5所示,评价信息实体E-R图如图3.6所示。客户类型客户类型客户提醒评价合作提醒信息评价信息合作信息图3.1各实体之间关系的E-R图客户类型客户类型客户类型名称上级类型客户名称客户性别客户E-mail客户电话图3.2客户类型信息实体图.图3.3客户信息实体图E-R图提醒信息提醒信息提醒编号提醒显示时间提醒类型显示时间合作信息合作编号合作时间满意度合作内容图3.4合作信息实体E-R图图3.5提醒信息实体E-R图评价信息评价信息友好度满意度重要度图3.6评价信息实体E-R图3.3数据库逻辑结构设计数据库的概念结构设计完毕后,现在能够将上面的数据库概念结构转化为某种数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。根据客户管理系统使用情况的不同,能够采用Acess数据库或SQLServer数据库。从系统移植方便性角度考虑,我们采用了Access数据库。客户管理系统数据库中各个表的设计结果如表3.1~表3.5所示。表3.1为客户信息表,因为与客户评价表主键相同,能够合并为一张表。表3.1客户信息表(ClientInfo)列表数据类型字段大小默认值说明ClientId自动编号长整型是””递增,主键Name文本20是0姓名Sex数字字节是0性别Age数字字节是年龄Birthday日期/时间短日期是””生日OfficePhone文本15是””办公室电话Mobile文本15是””手机Fax文本15是””传真HomePhone文本15是””宅电Work文本50是””职业Position文本30是””职位Email文本20是””邮件HomeAddress文本50是””住址MailAddress文本50是””通讯地址ZipCode文本8是””邮编SelfSite文本30是””个人网站Company文本50是””就职单位CompanySite文本30是””公司网站Likes备注是”未知”喜好Hate备注是”未知”厌恶TypeId数字长整型是0客户类型IDRemark备注是””备注BirthdayWarn是/否是FalseImportance数字整型是50重要度(0-255)Friendly数字整型是50友好度(0-255)Satisfaction数字整型是50满意度(0-255)表3.2 客户类型信息表(ClienType)列表数据类型字段大小必填字段默认值说明TypeId自动编号长整型是递增,主键SuperId数字长整型是0上级类型IDTypeName文本20否””客户类型名表3.3合作信息表(Cooperate)列表数据类型字段大小默认值说明CooperateId自动编号长整型是主键,递增ClientId数字长整型是客户ID,外码Date日期/时间短日期是#1900-1-1#合作日期Satefaction数字整型是50满意度(0-255)Remark备注是””备注表3.4提醒信息表(Warning)列表数据类型字段大小必填字段默认值说明WarnId自动编号长整型是主键,递增ClientId数字长整型是0客户ID,为0时表时全体客户ShowDate日期/时间短日期是#1900-1-1#提醒显示日期TypeId数字整型是1提醒类型Id,外码Msg备注是””提醒消息表3.5提醒类型信息表(WarnType)列表数据类型字段大小必填字段默认值说明WTypeId自动编号字节是提醒类型编号WtypeName文本30是”定时提醒”提醒类型名称3.4数据库的生成与配置经过前面的需求分析和概念结构设计以后,得到数据库的逻辑结构。下面在Acess数据库创立数据表,本系统的数据库文件名定为”ManageClient.mdb”,这里需要注意数据库的权限问题,即:(1)去掉数据库文件和所在文件夹的只读属性。(2)如果是NTFS分区,则要给适当的用户添加权限,一般,简单的解决办法是给它的Everyone用户添加完全控制权限。

第4章系统详细设计后台数据库结构的设计工作完成以后,能够进入系统的详细设计环节。客户管理事务处理组件用来处理客户管理系统中的业务逻辑,既负责与界面进行数据传递,同时也要将界面端的请求应用业务逻辑之后对数据库进行操作。4.1组件设计客户管理事务处理组件包括以下功能:(1)客户类型信息管理;(2)客户信息管理;(3)业务合作信息管理;(4)客户提醒信息管理。4.1.1客户管理事务处理事件的创立为了给客户管理事件创立组件,我们新建了ActiveXDLL工程,加入对ADO的引用,设置的工程的关键属性如下:工程类型为ActiveXDLL,启动对象为SubMain,工程名称为ClientManagerCom。4.1.2在工程中加入自定义枚举新建工程时自动生成的类型名称设为CPublic,此类没有别的具体意义,主要功能是保存一些自定义的枚举类型,这些枚举类型在以后其它各类中要经常见到,同时这个类的实现没有技术难度,根据需要我们定义了以下枚举:OptionExplicit'该类无实际意义,只为保存一些自定义枚举'自定义枚举,用于表示性别PublicEnumgxcSexMale=0Female=1EndEnum'连接数据库的类型PublicEnumgxcDBTypeDBAccess=0DBSQLServer=1EndEnum'以下枚举用于”客户类型”对象的操作,用于表示客户类型删除结果的枚举PublicEnumgxcDeleteDeleteOK=0DeleteFail=1'未知原因导致不能删除DeleteSubExists=2'由于存在子类型,因此不能删除DeleteClientExists=3'该客户类型存在客户,不能删除EndEnum'用于表示客户类型更新结果的枚举PublicEnumgxcUpdateUpdateOK=0UpdateFail=1DuplicateName_Update=2'名字不可重复RecordNotExist=3'当前更新的记录不存在EndEnum'用于表示客户类型新增结果的枚举PublicEnumgxcAddNewAddNewOK=0AddNewFail=1DuplicateName_AddNew=2'名字不可重复SuperNotExist=3'指定的上级客户类型的ID不存在EndEnum'用于提醒类别设置PublicEnumgxcWarnTypeBirthdayWarn=1'生日提醒CommonWarn=2'定时提醒EndEnum'用于对话框显示类别设置PublicEnumgxcViewTypevtadd=0'添加信息vtModify=1'修改信息vtInfo=2'查看信息EndEnum4.1.3创立组件的公共模块在工程中添加一个模块,命名为mdlpublic,此模块有两个功能:用来连接数据库及相关的初始化操作。存放在对数据库的操作过程中可能用到的一些公共函数。添加全局变量我们加入两个全局变量,它们的名称和功能如下:Publicg_Connection‘用于全局的数据连接Publicg_DBPathAsString‘如果是Access数据库,记录下数据库的路径SubMain()过程—启动对象手动加入SubMain()过程,这个就是刚才在工程属性设置里指定的启动对象。在这个过程中,完成ActiveXDLL的初始化工作。在SubMain()中的ConnecToDatabase函数时功能是用来连接到数据库,下面来看它的实现方法。ConnecToDatabase函数——与数据库建立连接功能:根据传入参数是DBAccess还是DBSQLSever来决定连接到Access数据库还是SQLSever数据库。参数设计:gxcDBType类型,参见CPublic类中的枚举定义。返回值:Boolean类型,True表示成功,False表示失败。设计思路:根据传入参数组织不同的连接字符串,然后打开数据库连接。现在,在mblPublic模块中连接数据库的功能已经实现,下面添加在数据库操作时比较常见的一些函数。RealString——替换字符串的单引号在用SQL语言存储字符型数据时,单引号成为我们最大的天敌,如果在字符串中存在单引号,则可能会意外截断字符,造成SQL语法错误。解决办法是用两个单引号来表示一个单引号。MaxID——替换字符串的单引号MaxID函数用来获取表中当前主键的最大值,这个函数用于在数据库中添新记录后,立即获取刚才添加记录的主键值。ExistByID——判断记录是否存在ExistByID函数用于给定一条记录的ID号后,查看数据库中是否存在此记录。GetValueByID——根据主键名获取某以字段的值这个函数根据输入的ID来查找对应的记录,如果找到一条记录,则根据输入的字段名返回对应值。比如知道客户ID后,能够调用此函数来获取客户名。4.2客户管理主界面设置4.2.1设计主窗体控件布局为了对主界面的设计,首先我们对主窗体的控件的属性,图片列表的关键字,工具条的按钮等做了些设置。按表4.1所示的设置为主窗体添加控件(已有控件只需设置属性即可)。表4.1主窗体及其控件属性的设置控件名称属性属性取值功能frmMain(Form)Caption客户管理系统系统主窗体imlViewSIcon(LisView)ImageHeight16树形控件和列表框小图标所使用的图片ImageWidth16imlViewBIcon(ImageList)ImageHeight32列表框大图标和工具条所使用的图片ImageWidth32tbToolBar(ToolBar)AlignvbAlignBottom主窗体中的工具条StyletbrFlatTextAlignmenttbrTextAlignBottomImageListimlViewBIcontvTreeView(TreeView)LineStletvwRootLines显示客户类型树Style7ImageListimlViewSIconlvListView(ListView)FullRowSlelctTrue显示客户列表GridLinesTrueViewlvwReportIconimlViewBIconSmallIconimlViewSIcon4.2.2图片列表的关键字设置按上述给窗体添加完控件并设置属性后,下面是对系统中要用到的图片做的初始化设置。对两个ImageList的图片选择不做限制,但要求:imlViewSIcon必须包”group”、”group2”、”boy”、”girl”、”sboy”、”sgirl”等关键字;imlViewSIcon必须包括”boy”、”girl”、”bboy”、”bgirl”、”group”、”add”、”modify”、”del””info”、”search”、”warn”、”setting”、”IstView”、”exit”等关键字。4.2.3给工具条添加按钮为了使用的方便,我们在工具条中设计了一下常见的按钮。具体设计细节见表4.2-4.4所示:表4.2工具条按钮的设置按钮标题关键字样式图像客户类型tbnClientType5-tbrDropdowngroup3-tbrSeperator添加客户tbnAddClient0-tbrDefualtadd修改客户tbnModifyClient0-tbrDefualtmodify删除客户tbnDelClient0-tbrDefualtdel客户信息TbnClientInfo0-tbrDefualtinfo查找客户tbnSearchClient0-tbrDefualtsearch3-tbrSeperator今日提醒tbnWarn0-tbrDefualtwarn提醒设置tbnWarnsetting0-tbrDefaultsettingtbnViewStyle3-tbrSeperator显示方式tbnViewStyle5-tbrDropdownIstView3-tbrSeperator退出系统tbnExit0-tbrDefault表4.3客户类型按钮的按钮菜单设计文本关键字添加客户类型tbnAddClientType修改客户类型tbnModifyClientType删除客户类型tbnDelClientType表4.4显示方式按钮的按钮菜单设计文本关键字大图标大图标小图标小图标列表列表详细资料详细资料添加菜单下面是主界面编辑的最后一步,在主界面的界面设计模式下,打开”菜单编辑器”对话框,按照表4.5所示的设置为主界面添加菜单,其它属性取值默认值。表4.5主界面菜单设置标题名称级别系统管理mnuAdmin1&X退出系统mnuExit2客户类型管理mnuClientType1&A添加客户类型mnuAddClientType2&M修改客户类型mnuModifyClientType2&D删除客户类型mnuDelClientType2客户管理mnuClient1&A添加客户mnuAddClient2&M修改客户mnuModifyClient2&D删除客户mnuDelClient2mnuSplit12&S查找客户mnuSearchClient2MnuSplit22&I查看客户详细资料mnuClientInfo2提醒管理mnuWarning1&T查看今日提醒mnuShowWarn2MnuSplitter32&S查看提醒设置mnuWarnSetting24.3主界面编辑状态预览按照以上的要求设置后,主界面frmMain的设计如图4.1所示。图4.1客户管理系统主界面设计视图4.4客户信息管理模块此系统是由我们小组的三位同学共同组合成的,本人是负责客户信息管理这个模块,以下是本人对这个模块具体的如何实现。客户信息管理模块实现以下的功能:(1)添加客户信息;(2)修改客户信息;(3)删除客户信息(5)查找客户信息;(6)查看客户信息。在本系统中,客户的关键信息是用列表控件显示在主窗体的右侧的,但客户信息的添加、修改、查看都需要新的窗口来支持,因为这几个窗口的控件布局完全相同,因此只需要设计一个对话框,在对话框内设一个标志来标识是哪种状态即可。下面首先对这个对话框进行界面设计。4.4.1客户信息管理对话框界面设计1.初步设计客户信息管理对话框添加一个对话框窗体,并向对话框中添加控件并设计属性,具体设计如表4.6。表4.6客户信息管理对话框中控件设置控件名称属性属性取值功能frmClient(Form)Caption客户信息管理客户信息管理对话框cmdModifyInfo(ListView)Caption修改由查看状态转入修改状态的按钮SSTabClientStypel0-ssStyleTabbedDialog分页显示客户信息TabOrientation0-ssTabOrientationTop再对SSTab控件添加4个选项卡(即属性页),选项卡标题分别设置为:”客户基本信息”、”客户其它信息”、”合作记录”、”客户评价”。2.创立客户基本信息属性页按表4.7所示的设置向客户基本信息属性页添加控件并设置属性。表4.7客户基本信息属性页控件设置控件名称属性属性取值功能frabaseInfo(Frame)Caption必填信息必填信息容器fracomInfo(Frame)Caption其它通讯方式其它通讯方式cboSex(ComboBox)Style2-DropdownList客户性别组合框List男女cboClientType(ComboBox)Style2-DropdownList客户类型组合框控件布局完毕后,客户基本信息对话框的设计界面如图4.2所示。图4.2客户基本信息对话框设计界面3.创立客户其它信息属性页按表4.8所示的设置向客户其它信息属性页添加控件并设置属性。表4.8”客户其它信息”属性页控件设置控件名称属性属性取值功能txtLikes(TestBox)MultiLineTrue客户喜好txtHte(TestBox)ScrollBars2-Vertical客户厌恶txtRemark(TestBox)MaxLength255客户备注控件布局完毕后,客户其它信息属性页设计界面如图4.3所示。图4-3客户其它信息属性页设计界面4.创立客户合作记录属性页按表4.9所示的设置为客户合作记录属性页添加控件。表4.9客户合作记录属性页控件设置控件名称属性属性取值功能fraCoop(Frame)Caption合作记录合作信息容器lvListView(ListView)FullRowSelectTrue显示合作记录列表GridLinesTrueViewIvwReportcmdAdd(CommandButton)Caption添加客户喜好cmdModify(TestBox)Caption修改客户喜好cmdDel(TestBox)Caption删除客户喜好cmdCoopInfo(TestBox)Caption查看客户喜好控件布局完毕后,客户合作记录属性页设计界面如图4.4所示。图4.4客户合作记录属性页设计界面5.创立客户评价属性页按表4-10所示的设置再客户评价属性页添加控件。控件名称属性属性取值功能fraScore(Frame)Caption客户评价客户评价容器SldImportance(Slider)sldFriendly(Slider)sldSatisfaction(Slider)Max255重要度友好度满意度Value50TickStyle3-sldNoTicks客户评价属性页设计界面如图4.5所示。图4.5客户评价属性页设计界面现在,客户信息管理对话框的全部界面已设计完毕。4.4.2客户信息管理对话框代码设计添加成员变量进入客户信息管理对话框的代码编辑模式,添加如下的成员变量:PrivateokAsBoolean‘确定按了oK还是cancel按钮PrivatemvarViewTypeAsgxcViewType‘显示类新,即表示当前是添加、查看、修改PrivateobjClientAscClient‘存储客户信息对象PrivatemvarBirthdayWarnAsBoolean‘标实是否启用生日提醒添加属性‘显示类型,即表示当前是添加、查看、修改PublicPropertyGetViewType()AsgxcViewTypeViewType=mvarViewTypeEndProperty‘标识是否启用生日提醒PublicPropertyGetShowBirthdayWarn()AsBooleanShowBirthdayWarn=mvarBirthdayWarnEndProperty添加方法SetStatus函数——设置对话框状态功能:设置对话框的显示状态,并指定控件的默认值。参数设计:无。设计思想:设置控件默认值->根据对话框状态设置控件显示状态。根据以上思想,能够编写出类似以下的代码。SetStatus函数的实现过程'根据对话框的显示方式来确定显示的数据PrivateSubSetStatus()DimctlAsControlDimintBorderStyleAsIntegerDimlngbkColorAsLongDimboolLockedAsBoolean'默认的文本框风格设置intBorderStyle=1'3DlngbkColor=&H80000009boolLocked=FalseOKButton.Visible=TrueCancelButton.Caption="取消"cmdModifyInfo.Visible=FalseSetDefaultValueSelectCasemvarViewTypeCasevtadd'添加客户'操作按钮可用性设置cmdModify.Enabled=FalsecmdAdd.Enabled=FalsecmdDel.Enabled=FalsecmdCoopInfo.Enabled=FalseOKButton.Caption="确定"Me.Caption="添加客户"CasevtModify'修改客户信息OKButton.Caption="保存"Me.Caption="修改客户信息"CasevtInfo'查看客户信息'只读的文本框风格设置intBorderStyle=0'3DlngbkColor=&H8000000FboolLocked=TruecmdModifyInfo.Visible=TrueOKButton.Visible=FalseCancelButton.Caption="关闭"Me.Caption="查看客户信息"CaseElseEndSelect'根据显示状态不同设置文本框风格ForEachctlInControlsIf(TypeOfctlIsTextBox)Thenctl.BorderStyle=intBorderStylectl.BackColor=lngbkColorctl.Locked=boolLockedElseIf(TypeOfctlIsComboBox)Or_(TypeOfctlIsDTPicker)Or_(TypeOfctlIsCheckBox)Or_(TypeOfctlIsSlider)Thenctl.Enabled=NotboolLockedEndIfNextEndSubSaveValue过程——保存用户输入数据功能:将输入信息保存到客户信息对象中,以便经过RetriveClient函数传出。设计思路:这个过程没有太复杂的技巧或原理,只需要将控件中的信息报讯到客户信息对象ojbClient中。根据以上思想,编写类似以下的代码。SaveValue过程PrivateSubSaveValue()WithobjClient.Name=Trim(txtName.Text)'客户名称.Age=Val(txtAge.Text)'客户年龄.Sex=IIf(cboSex.ListIndex=0,Male,Female)'性别.TypeID=cboClientType.ItemData(cboClientType.ListIndex)'客户类型Id.Mobile=Trim(txtMobile.Text)'手机.Email=Trim(txtEmail.Text)'E-mail.OfficePhone=Trim(txtOfficePhone.Text)'办公室电话.HomePhone=Trim(txtHomePhone.Text)'宅电.Fax=Trim(txtFax.Text)'传真.HomeAdr=Trim(txtHomeAdr.Text)'家庭住址.MailAdr=Trim(txtMailAdr.Text)'通讯地址.ZipCode=Trim(txtZipCode.Text)'邮编.Birthday=dtpBirthday.Value'生日.BirthdayWarn=chkBirthdayWarn.Value'是不启用生日提醒.Work=Trim(txtWork.Text)'职业.Position=Trim(txtPosition.Text)'职位.pany=Trim(txtCompany.Text)'公司.panySite=Trim(txtCompanySite.Text)'公司网址.SelfSite=Trim(txtSelfSite.Text)'个人网址.Likes=Trim(txtLikes.Text)'喜好.Hate=Trim(txtHate.Text)'厌恶.Remark=Trim(txtRemark.Text)'备注.Importance=sldImportance.Value'重要度.Friendly=sldFriendly.Value'友好度.Satisfaction=sldSatisfaction.Value'满意度EndWithmvarBirthdayWarn=IIf(chkBirthdayWarn.Value=0,False,True)EndSub4.4.3添加客户信息在客户信息管理对话框frmClient中关于客户信息管理的代码编写完毕后,能够回到主窗体frmMain中为客户管理的具体操作添加处理函数了。设计思想:调用客户信息管理窗体frmClien->接收用户输入信息->调用CClient.AddNew->显示操作结果。代码如下:'添加客户PrivateSubAddClient()DimobjClientAscClient'显示添加客户对话框并获取数据IffrmClient.RetriveClient(objClient,vtadd,GetID(tvTreeView.SelectedItem.Key))_=FalseThenExitSub'更新数据库IfobjClient.AddNew=TrueThenAddClientToLvwobjClient,lvListView,FalseElseMsgBox"错误"EndIfEndSub4.4.4修改客户信息设计思想:获取选中的客户信息->调用添加客户信息对话框frnClient显示数据->接收用户输入->调用CClient.Update->显示操作结果。实现代码如下:'修改客户信息PrivateSubModifyClient()DimobjClientAscClientDimobjWarnAsNewCWarning'从客户列表中获取选中客户信息IfGetClientFromControl(lvListView,objClient)=FalseThenExitSub'显示修改客户信息对话框IffrmClient.RetriveClient(objClient,vtModify)=FalseThenExitSub'更新数据库IfobjClient.Update=TrueThenobjWarn.ClientID=objClient.IDobjWarn.ShowDate=objClient.Birthday'如果选择生日提醒,则在数据库中加入提醒规则objWarn.ShowBirthdayWarn=frmClient.ShowBirthdayWarnRefreshListViewElseMsgBox"错误"EndIfSetobjWarn=NothingSetobjClient=Nothing4.4.5删除客户信息经过在frmMaind的代码中加入过程DelClient来实现客户信息的删除。设计思想:提示确认->获取选中的客户信息->调用CClient.Delete->显示结果。实现代码如下:'删除客户PrivateSubDelClient()DimobjClientAscClientIfMsgBox("确定要删除客户吗?",vbQuestion+vbYesNo+vbDefaultButton2)=vbNoThenExitSub'从客户列表中获取选中的客户信息IfGetClientFromControl(lvListView,objClient)=FalseThenExitSub'从数据库中删除客户,并从界面中也删除IfobjClient.Delete=TrueThenlvListView.ListItems.Remove(lvListView.SelectedItem.Index)ElseMsgBox"错误"EndIfEndSub4.4.6查看客户信息经过在frmMaind的代码中加入过程ClientInfo来实现客户信息的浏览功能。设计思想:获取选中的客户信息->调用添加客户信息窗体frnClient显示数据->如果转到了修改状态,则调用CClient.Update->显示操作结果。实现代码如下:'查看客户信息PrivateSubClientInfo()DimobjClientAscClientDimobjWarnAsNewCWarning'获取客户列表中选择项的客户信息IfGetClientFromControl(Me.lvListView,objClient)=FalseThenExitSub'显示客户信息界面IffrmClient.RetriveClient(objClient,vtInfo)=FalseThenExitSub'如果在查看客户信息时选择修改信息,则进一步保存修改内容IffrmClient.ViewType=vtModifyThenIfobjClient.Update=TrueThenobjWarn.ClientID=objClient.IDobjWarn.ShowDate=objClient.BirthdayobjWarn.ShowBirthdayWarn=frmClient.ShowBirthdayWarnRefreshListViewElseMsgBox"错误"EndIfEndIfSetobjWarn=NothingSetobjClient=NothingEndSub4.4.7查找客户设计思想:调用查找客户对话框frnSearch->取得查找条件->调用CClient.Find->显示结果。实现代码如下:'查找客户PrivateSubSearchClient()DimobjClientsAsNewCClients'显示查询对话框IffrmSearch.RetriveSearch()=FalseThenExitSub'返回查询结果objClients.Find,frmSearch.SearchName,frmSearch.TypeID'将查询结果显示到客户列表中ClientsToListviewobjClients,lvListViewEndSub

第5章软件测试测试是软件开发时期的最后一个阶段,也是软件质量保证中至关重要的一个环节。5.1测试的目的与任务测试的真正目的是”为了发现程序中的错误”。这和某些人一般想象的”测试是为了表明程序是正确的”,”成功的测试是没有发现错误的测试”等等是完全相反的。正确认识测试的目标是十分重要的,测试目标决定了测试方案的设计。如果为了表明程序是正确的而进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。5.2测试的方法测试任何产品都有两种方法:如果已经知道了产品应该具有的功能,能够经过测试来检验是否每个功能都能正常使用;如果知道产品内部工作过程,能够经过测试来检验产品内部动作是否按照规格说明书的规定正常进行。前一个方法成为黑盒测试,后一个方法称为白盒测试法。对于软件测试而言,黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生地输出信息,而且保持外部信息(如,数据库或文件)的完整性。黑盒测试又称为功能测试。与黑盒测试方法相反,白盒测试法的前提是能够把程序看成安装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。白盒测试又称为结构测试。不论采用上述哪种测试方法,只要对每一种可能的情况都进行测试,就能够得到完全正确的程序。包含所有可能情况的测试称为穷尽测试,对于实际程序而言,穷尽测试一般是不可能做到的。使用黑盒测试法,为了做到穷尽测试,至少必须对多有输入数据的各种可能值的排列组合都进行测试,可是,由此得到的应测试的情况往往大到世局上根本无法测试的程度。使用白盒测试法,为了做到穷尽测试,程序中每条可能的通路至少都应该执行一次(严格地说每条通路都应该在每种可能地输入数据下执行一次)。即使测试很小的程序,一般也不能做到上述这一点。5.3系统的调试与注意事项1.强制变量声明这一点其实已经成为一个无需再谈的常识,因为我们是在做一个项目,所要遵循的是软

温馨提示

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

评论

0/150

提交评论