• 793.00 KB
  • 2022-05-14 15:45:05 发布

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

  • 61页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书摘要客户资源是企业的宝贵财富,客户管理系统可以有效地管理企业的客户资源,记录企业与客户之间的商业活动,这对于现代企业是非常重要的。本系统后台数据库使用Access,前台开发工具使用VisualBasic。系统采用目前比较流行的ADO数据访问技术,并将每个数据库表的字段和操作封装到类中,从而成功地将面向对象的程序设计思想应用到数据库应用程序设计中。这也是本系统的特色和优势。用户通过登录窗体的用户认证进入系统主界面,可以对系统的所有功能进行操作,根据不同的用户身份权限,对客户管理系统进行各种信息的录入、删除、修改、等一系列操作。关键词:客户管理系统,Access数据库,VisualBasic开发语言,管理信息系统第V页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书AbstractThecustomerresourcesareenterprise"spreciouswealth,thecustomerresourcemanagementsystemmaymanagetheenterpriseeffectivelythecustomerresources,betweentherecordingenterpriseandthecustomertradeactivity,thisregardingthemodernenterpriseisextremelyimportant.ThissystembackstagedatabaseusesAccess,theonstagedevelopmentkitusesVisualBasic.ThesystemusesthepresentquitepopularADOdataaccessingtechnology,andsealseachdatabasetablefieldandtheoperationinthekind,thusappliessuccessfullytheobject-orientedprogrammingthoughtinthedatabaseapplicationprogramming.Thisalsoisthissystemcharacteristicandthesuperiority.Theuserscangetintothemainformbypassingtheuser’sloginandtheycanoperatetherelatedfunctionofthesystemaccordingtotheiridentitypower,suchastheadministercanadd、modify、delete,inquireandprinttheinformation,butthecommonusercanonlyinquireandprinttheinformation.Keywords:Thecustomerresourcemanagementsystem,theAccessdatabase,VisualtheBasicdevelopmentlanguage,themanagesofinformation.毕业设计(论文)原创性声明和使用授权说明第V页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名:     日 期:     指导教师签名:     日  期:     使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名:     日 期:     第V页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书目录绪论11.开发工具综述21.1.VisualBasic简介21.1.1.VisualBasic概述21.1.2.VisualBasic的特点21.1.3.VisualBasic开发步骤:41.2.ADO简介51.2.1.为什么需要ADO51.2.2.什么是ADO51.2.3.ADO编程模型61.2.4.ADO对象模型61.3.Access2000简介81.3.1.Access2000概述81.3.2.Access的功能及优点92.系统需求分析与总体设计102.1.系统可行性分析102.1.1.技术可行性102.1.2.经济可行性102.1.3.操作可行性102.1.4.法律可行性102.2.系统需求分析102.2.1.引言102.2.2.目的112.2.3.任务112.2.4.功能需求说明112.2.5.环境需求说明112.2.6.数据流图112.3.系统总体设计132.3.1.引言132.3.2.目的132.3.3.系统功能概述132.3.4.系统功能模块设计142.4.系统数据库设计152.4.1.E-R图绘制152.4.2.数据库建表163.系统详细设计213.1.登录窗体和系统主界面设计213.2.基本信息管理模块设计263.2.1.设计地域信息编辑窗体263.2.2.设计地域信息管理窗体28第V页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书3.2.3.设计选择地域信息窗体313.2.4.设计客户类别信息编辑窗体333.3.客户信息管理模块设计343.3.1.设计客户单位信息编辑窗体343.3.2.设计客户单位信息管理窗体343.3.3.设计客户联系人信息编辑窗体353.3.4.设计客户联系人信息管理窗体363.3.5.设计客户联系人信息查看窗体363.4.商业往来管理模块设计373.4.1.设计商业机会信息编辑窗体373.4.2.设计商业机会信息管理窗体383.4.3.设计商业机会查看管理窗体383.5.用户管理模块设计393.5.1.用户管理窗体393.5.2.编辑用户信息窗体394.客户管理系统的维护与调试404.1.测试环境404.2.软件测试的目的和原则40结论42致谢43主要参考文献44附录:部分窗体源代码45第V页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书绪论本系统是在Windows平台下,以VisualBasic为开发工具,以SQL语言为数据库查询语言开发的客户管理软件。该软件的功能主要是管理客户信息的添加、修改、删除和查询,客户信息包括客户单位和联系人。商业往来信息的添加、修改、删除和查询。商业往来信息包括商业机会和客户跟踪。可以实现多点操作的信息共享,相互之间可以进行准确,快捷的信息传递。采用汉字图形界面,系统界面友好美观,操作简单易行,查询灵活方便。系统维护方便可靠。课程特点及意义:(1)特点:目前市面上流行的客户资源管理系统不少。但是,对于具体的企业单位来说,因为具有自己的特殊性,因此只需要一个操作方便,功能实用,能同时满足本企业的管理及需求的系统。我做的这个系统就是一个功能实用、操作方便,简单明了的客户资源管理系统。(2)意义:通过设计客户管理管理系统,让我了解了如何去开发一个简单的软件系统,开发一个系统需要分哪几个步骤以及设计思想对系统重要性;也让我了解了与广告公司客户管理系统相关方面的知识(由哪些模块、哪些功能组成等)。共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书1.开发工具综述1.1.VisualBasic简介众所周知,VisualBasic是美国微软公司的第一个编程工具和系统开发的第一个产品。多少年来,VisualBasic经历过初级产品试验、16位开发平台和目前的32位新产品的多次的升级换代,VisualBasic已成为了一个全新的成熟的高端产品。它以优良的性能、极强的系统开发功能、完美的视觉界面和简单易学的特点,已经赢得了全世界广大用户的偏爱。1.1.1.VisualBasic概述VisualBasic中的“Visual”是指开发图形用户界面(GUI,GraphicalUserInterface)的方法。Visual的意思是“可视的”,也就是直观的编程方法。在VB中引入了控件的概念,各种各样的按钮、文本框、选择框等。VB把这些控件模式化,并且每个控件都由若干属性来控制其外观、工作方法。这样,采用Visual方法无需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的控件加到屏幕上即可。就像使用画图之类的绘图程序,通过选择画图工具来画图一样。“basic“是指BASIC(BeginnersAll-purposeSymbolicInstructionCode)语言,一种在计算机技术发展史上应用得最为广泛的语言。VisualBasic在原有BASIC语言的基础上进一步发展,至今包含了数百条语句、函数及关键词,其中很多和WindowsGUI有直接关系。专业人员可以用VB实现其他任何Windows编程语言功能,而初学者只要掌握几个关键词就可以建立实用的应用程序。1.1.2.VisualBasic的特点VisualBasic是从BASIC发展而来的,对于开发Windows应用程序而言,VB是目前所有开发语言中最简单、最容易使用的语言。总的来说,VisualBasic有以下主要特点。(1)可视化的设计平台用传统程序设计语言编程时,需要通过编写代码设计用户界面,在设计过程中看到界面的实际显示效果,必须在运行程序时才能观察到。如果对界面的效果不满意,还要回到程序中修改,这一过程常常需要反复多次,大大影响了软件开发效率。VisualBasic提供的可视化设计平台,把Windows界面设计的复杂性“封装“起来,开发人员不必为界面的设计而编写大量程序代码,只需按照设计的要求,用系统提供的工具在屏幕上画出各种对象即可。VisualBasic自动产生界面设计代码,程序员只需要编写实现程序功能的那部分代码,从而大大提高了程序设计的效率。(2)面向对象的设计方法面向对象的设计方法(OOP,ObjectOrientedProgramming)从应用领域内的问题着手,以直观自然的方式描述客观世界的实体。Visual共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书Basic作为一种面向对象的编程方法,把程序和数据封装起来作为一个对象,并为每个对象赋予相应的属性.在设计对象时,不必编写建立和描述每个对象的程序代码,而是用工具画在界面上,由VisualBasic自动生成对象的程序代码并封装起来.(3)结构化的设计语言VisualBasic是在BASIC语言基础上发展起来的,具有高级程序设计语言的语句结构,接近与自然语言和人类的逻辑思维方式,其语句简单易懂。其编辑器支持彩色代码,可自动进行语法错误检查,具有功能强且使用灵活的调试器和编译器。在设计VisualBasic程序的过程中,随时可以运行程序,而在整个应用程序设计好之后,可以编译生成.exe可执行文件,.exe文件可脱离VisualBasic环境直接在Windows环境下运行。(4)事件驱动的编程机制VisualBasic通过事件来执行对象的操作,例如命令按钮是一个对象,当用户单击该按钮时,将产生一个单击事件,而在产生该事件时执行一段程序,用来实现指定的操作。在用VisualBasic设计应用程序时,不必建立具有明显开始和结束的程序,而是编写若干个微小的子程序,即过程。这些过程分别面向不同的对象,由用户操作引发某个事件来驱动完成某种特定功能,或由事件驱动程序调用通过过程执行指定的操作。(5)充分利用Windows资源VisualBasic提供的动态数据交换(DDE,DynamicDataExchange)编程技术,可以在应用程序中实现与其他Windows应用程序建立动态数据交换、在不同的应用程序之间进行通信。对象链接与嵌入(OLE,ObjectLinkingandEmbedding)技术将程序都看作一个对象,把不同的对象链接起来,嵌入到某应用程序中,从而可以得到具有声音、影像、图像、动画。文字各种信息的集合式文件。动态链接库(DLL,DynamicLinkLibraries)将C/C++或汇编语言编写的程序加入到VisualBasic的应用程序中,或是调用Windows应用程序接口(API,ApplicationProgrammingInterface)函数,实现SDK(SoftwareDevelopmentKit)所具有的功能。(6)开放的数据库功能与网络支持VisualBasic具有很强的数据库管理功能,不仅可以管理MSAccess格式的数据库,还能访问其他如FoxPro等格式的数据库。同时VB还提供了开放式数据库连接(ODBC,OpenDataBaseConnectivity)功能,可以通过直接访问或建立连接的方式使用并操作后台大型网络数据库,如SQLServer等。在应用程序中,可以使用结构化查询语言(SQL,StructuredQueryLanguage)直接访问Server上的数据库,并提供简单的面向对象的库操作命令、多用户数据库的加锁机制和网络数据库的编程技术,为单机上运行的数据库提供SQL网络接口,以便在分布式环境中快速而有效地实现客户/服务器(Client/Server)方案。共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书1.1.1.VisualBasic开发步骤:(1)设计并建立用户界面。(2)编写响应事件的代码。(3)创建过程所需并调用其他过程。(4)测试和调试。(5)转换为运行时版本。(6)准备可发布的文件。共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书1.1.ADO简介1.1.1.为什么需要ADO从简单的文本文件到各种复杂的关系型数据库,数据库应用程序需要面对各种各样的数据源。VisualBasic6.0提供ADO(ActiveDataObjects)作为应用程序和OLE-DB连接的桥梁。尽管用户对数据的要求种类繁多,但典型的数据源都支持ODBC(开放式数据库连接标准)和SQL(结构化查询语言)的。1.1.2.什么是ADOADO,即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的优点,可以通过简单的编程实现和各种数据结构进行连接。共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书1.1.1.ADO编程模型ADO通过下面几步来完成对数据库的操作:(1)创建一个到数据源的连接(Connection),连接到数据库;或者开始一个事务(Transaction)。(2)创建一个代表SQL命令行(包括变量、参数、可选项等)的对象。(3)执行命令行。(4)如果返回以表格形式组织的数据,则将它们保存在缓存中,产生相应的数据集对象(Recordset)。这样便于查找、操作数据。(5)通过数据集对象对数据进行各种操作,包括修改、增加、删除等。(6)更新数据源,如果使用事务,确认是否接受事务期间发生的数据变化。(7)结束连接和事务。1.1.2.ADO对象模型使用ADO的目的是进入数据源,使得修改、更新数据成为可能。ADO提供一系列的类和对象来完成各种操作。(1)连接对象――Connection一个连接(Connection)对象代表一个到指定数据源的成功连接。应用程序通过一个连接(包括实现数据交换的环境设置)访问数据源,也可以直接访问数据源(在两层数据结构的系统中比较常见),或者通过类似MicrosoftInternetInformationServer的中间层间接访问数据源(这就是通常说的三层结构)。连接成功,Connection以对象的形式存在。使用连接对象的各种属性和方法可以完成如下操作:·在打开连接前需要设置ConnectionString、ConnectionTimeout和Mode属性。·设置Cursorlocation属性,可以设置或者返回指针位置。·设置DefaultDatabase属性可以为连接指定一个默认的数据库。·设置IsolationLevel属性可以确定事务(Transaction)在连接的隔离等级。·设置Provider可以位连接指定一个OLE-DB寄主。·使用Open和Close方法来建立和中断一个连接。·使用Execute方法在连接上执行命令,设置CommandTimeout属性来指定或者返回命令执行时间。·共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书使用BeginTrans、CommitTrans和RollbackTrans方法以及Attributes属性来管理事务。·通过检查Errors对象可以知道数据源返回的错误。·通过Version属性可以知道ADO的版本。·使用OpenSchema方法可以知道数据库的计划信息。(2)命令行对象-Command命令行对象是对数据源将要执行的一系列操作的定义。使用命令行对象来查询数据库并返回数据集对象(Recordset)形式的查询结果。命令行对象指定变量、参数以及可选项来完成对数据的操作,如添加记录、删除记录、更新记录等。使用命令行对象的各种属性和方法可以完成如下操作:·设置CommandText属性可以定义命令行的内容,比如SQL语句等。·使用Execute方法执行命令行并返回一个数据集对象(Recordset)。·设置CommandType属性可以优化命令的效率。·设置CommandTimeout属性可以指定服务器等待医疗命令行执行的时间。·设置ActiveConnection属性可以将一个命令行对象与一个打开的连接关联。(3)数据集对象-Recordset如果命令行指定数据以表的形式组织,执行命令行后将返回相应的数据集。通过数据集可以对记录以及组成记录的列进行各种操作。共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书1.1.Access2000简介1.1.1.Access2000概述Access2000是Microsoft公司推出的Office2000办公软件中的组件,是数据库程序。利用它可以实现:·存储几乎无限多的信息;·按照用户的工作方式组织信息;·根据指定的选择标准检索信息;·创建窗体,使用户输入信息更方便;·生成可以合并数据、文本、图片和其他对象的实用直观的报告;·方便地通过Web共享信息。“数据库”是一个相当专业的词汇,可以定义为将信息组织成列表的集合。这种定义也许不太全面,但无论什么时候使用或制作信息列表(姓名、地址、产品、顾客或发票等),其实都是在使用数据库。存储在计算机中的数据库与记录在纸上、卡片上或通讯簿上的简单列表相比更加灵活实用。例如,用数据库可以生成最重要的电话号码列表、打印贺卡的邮递标签、生日列表等等。将数据存储在计算机中有几种方法,例如,可以将列表存储在MicrosoftWord或MicrosoftExcel工作表中。但是这样做将会遇到一个问题,即在一些重复信息上消耗很多精力。如某人因家庭搬迁或姓名更改,就不得不更新他的大量信息。对于一个小列表来说,这算不上什么,但对于经常需要更新信息的列表来说(例如地址列表),用这种方法来保持最新的数据无疑是一项繁重的工作。如果将地址信息保存在Access数据库中,可以给每条信息分配一个唯一的标识号,以便在每次需要使用或更改该信息时,只引用该标识号即可,这样就做到了每条信息只需输入一次。Access数据库中最基本的组件是“表”,在表中信息排成若干记录(行),每条记录包括多个字段(列)。除了表,Access数据库中还包括查询、窗体、报表、数据访问页和模块等组件,功能强大而且使用方便。共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书1.1.1.Access的功能及优点Access是一个基于关系型数据库的中小型数据库应用系统,虽然它的“出道”时间比较晚,但由于它的强大的功能和出众的易用性,很快得到了广大数据库应用程序员们的青睐,从而成为当今最通用的数据库软件。作为一种出色的数据库软件,Access可以实现以下的功能:(1)数据库中包含多个表,每个表可以分别表示和存储不同类型的信息。(2)通过建立各个表之间的关联,从而将存储在不同表中的相关数据有机地结合起来。(3)通过创建查询,用户可以在一个或多个数据表中检索、更新和删除记录,并且可以对数据库中的数据执行各种计算。(4)通过创建联机窗体,用户可以直接对数据库中的记录执行查看和编辑操作。(5)通过创建报表,用户可以将数据以特定的方式加以组织,从而达到分析和打印的目的。(6)利用宏或VisualBasicforApplication语言将各种数据库对象组织起来,形成一个数据库应用系统。对于以上的各项功能,在Access2000中都提供了多种向导,用户可以通过向导的帮助轻松地加以实现。Access2000的优点:完善地管理各种数据库对象,提供了很高的系统安全性。通过向导提供的一系列的可视化过程,用户可以方便地生成和操作数据库对象。通过导入和导出操作,用户可以和不同类型的数据库实现数据共享,简便而且快捷。共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书1.系统需求分析与总体设计1.1.系统可行性分析1.1.1.技术可行性硬件要求:主要配置为CPU(PII300以上)、内存(64M以上)、显卡(4M以上)以及大容量硬盘(10G以上)等。软件要求:系统采用VisualBasic6.0和MSAccess开发,用VB制作系统的用户界面,Access制作后台数据库,两者结合完成系统功能,可运行在Windows98及以上的系列操作系统上。1.1.2.经济可行性由于本系统开发的费用比较低,而在交付使用之后几年内所得的效益完全超过软件的开发费用,此后就会带来相应的经济效益,也会因为此软件的高效性、准确性、及时性赢得广大客户的尊重,取得无形的社会效益。1.1.3.操作可行性本系统运行在通用的Windows操作系统上,具有Windows相似的操作界面。具有简单易学,使用方便等特点,熟悉计算机的人员不需要再经过专门的培训即可熟练操作。1.1.4.法律可行性本系统是完全有计算机学院的学生单独开发完成的软件,使用的是VB和MSAccess等授权软件,它不是模仿他人已有的软件,在软件中也不会设置各种逻辑陷阱、特洛伊木马以及其它非法程序,也不会借此发布非法事件,故在法律上、专利问题上不会存在违反法律的行为。1.2.系统需求分析1.2.1.引言需求分析是软件定义时期的最后一个阶段,这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”。虽然在可行性研究阶段已经粗略地了解了用户的需求,甚至还提出了可行的方案,但是可行性研究的基本目的是用较小的成本在较短的时间内确定是否存在可行的解法,因此许多细节被忽略了。然而在最终的系统中却不能遗漏任何一个微小的细节,所以可行性研究并不能代替需求分析,它实际上并没有准确地回答“系统必须做什么?”这个问题。共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书1.1.1.目的需求分析不仅是软件定义时期的最后一个阶段,而且是软件开发期的第一个阶段,也是关系到软件开发成败的关键步骤。只有通过需求分析才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,从而奠定软件开发的基础。本阶段所研究的对象是软件项目的用户要求,必须全面理解用户的各项要求,但又不能全盘接受所有的要求。为了达到这一目的,我们必须对其中模糊的要求进行澄清,然后才能决定是否可以采纳。准确地表达被接受的用户要求,也是需求分析的另一个重要方面,只有经过确切描述的软件需求才能成为软件设计的基础。1.1.2.任务需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、具体的要求。需求分析的任务,在于完全地弄清用户对软件系统的确切要求,并按需求规格说明书的格式表达出来。1.1.3.功能需求说明完成所有信息管理,包括信息录入、删除、修改、查询、报表打印以及对系统登录的身份验证和系统的密码修改。1.1.4.环境需求说明(1)软件运行硬件环境:PII或更高档的微机,笔记本电脑;运行内存要求:≥32MB;安装所需硬盘:≥20MB;(2)软件要求:中文Windows95/98/2000/Me/XP;英文Windows95/98/2000/Me/XP;MicrosoftAccess97/2000/2002/XP(3)软件开发环境:.VisualBasic6.0、Access20001.1.5.数据流图(1)绘制数据流图的基本要求系统的顶层图使用来表示整个系统的功能结构。随着需求分析活动的逐渐深入,较高抽象级别上的复杂转换可以精化为一系列的相互关联的数据流和子转换。在数据流方法中,对数据(数据流)的精化是伴随着对转换的精化而同步进行的。在进行逐层精化的过程中,必须维持层间数据流图的平衡,即,被精化的的转换的输入、输出流必须与精化它的数据流子图的初始输入流和最终输出流严格一致。这是确保需求模型一致性的一条重要规则。同时,要注意逐层精化必须适可而止,因为需求分析活动只求对问题的全面、清晰的理解,并不关心软件的设计细节。共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书(2)客户管理系统数据流图的绘制根据上述的一些基本要求,经过本系统实际的需求分析,绘制数据流图如图1示:图1系统数据流图共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书1.1.系统总体设计1.1.1.引言在需求分析阶段的工作,系统必须“做什么”已经清楚了,现在是决定“怎样做”的时候。总体设计的基本目的就是回答“从总体上说,系统应该如何实现?”这个问题。总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的。1.1.2.目的在软件开发时期中,设计阶段是最富有活力,最需要发挥创造精神的阶段。在本阶段,主要就是软件需求说明转换为用适当方式表示的软件概要设计文档,从而得出本模块的具体实现方案与总体结构以及各组成部分之间的关系。1.1.3.系统功能概述本课题属于一个数据库开发的问题,主要功能简述如下:(1)登录窗体和系统主界面模块当系统运行时,首先打开登录窗体,只有有权限的用户才能进行系统。登录成功后,将显示系统主界面。(2)基本信息管理模块基本信息管理模块包括地域信息管理、客户类别管理、行业分类管理、职务名称管理、项目类型管理和销售人员管理。(3)客户信息管理模块客户信息管理模块包括客户单位管理和客户联系人管理等功能。(4)商业往来管理模块商业往来管理模块包括商业机会管理和客户跟踪管理等功能。(5)用户管理模块本模块只对管理员开放。管理员可以添加用户和对所有用户的密码信息进行修改等操作。共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书1.1.1.系统功能模块设计对上述各功能进行集中、分块,按照结构化程序设计的要求,得到图2所示的系统功能模块图:图2系统功能模块图共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书1.1.系统数据库设计数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建设中的核心技术,具体说,数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。1.1.1.E-R图绘制系统的E-R图如图3所示:实体:关系:属性:行业分类设置地域信息设置密码客户跟踪商业机会客户类型联系人客户类型设置基本信息职务名称设置项目类型设置销售人员管理NN用户名客户单位客户信息1职务名称管理员用户管理N密码商业往来信息N用户名普通用户图3系统实体联系图共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书1.1.1.数据库建表本系统采用Access2000作为后台数据库。数据库结构设计是总体设计阶段非常重要的环节,好的数据库结构可以简化开发过程,使系统功能更加清晰明确。因为数据库结构的变化会造成编码的改动,所以必须认真设计数据库结构后再进行编码,从而避免无所谓的重复工作。本系统数据库中包含8个表,即基本信息表Types、地域信息表Area、销售人员信息表Employess、客户单位信息表Customer、联系人信息表Contact、商业机会表SaleCHance、客户跟踪表SaltTask和用户信息表Users。这样整个数据库设计后的结果如图4所示:图4客户管理系统数据库共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书下面分别介绍各表结构:(1)基本信息表Types表Types用来保存客户类别信息、行业分类信息、职务名称信息和项目类型信息,结构如表1所示:表1Types的结构编号字段名称数据结构说明1Id自动编号记录编号,主键2TypeName文本,长度50信息名称3Flag数字/字节类型标记。1表示客户类别;2表示客户所属行业;3表示职务名称;4表示项目类型(2)地域信息表Area表Area用来保存地域信息,结构如表2所示:表2Area的结构编号字段名称数据结构说明1AreaId数字/长整型记录编号,主键2AreaName文本,长度50地域名称3AreaType数字/字节地域类型1表示洲;2表示国家。3表示省;4表示市县4UpperId数字/长整型上级地域编号表Employess用来保存销售人员信息,结构如表3所示:表3Employess的结构编号字段名称数据结构说明1EmpId自动编号人员编号,主键2EmpName文本,长度50姓名3Sex文本,长度2性别4DepName文本,长度50所在部门5ETitle文本,长度50职务共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书(3)客户单位信息表Customer表Customer用来保存客户单位信息,结构如表4所示:表4Customer表编号字段名称数据结构说明1CustId自动编号记录编号,主键2CEastman文本,长度200课程名称3CustTypeId数字/长整型所属客户类型编号4Address文本,长度200通信地址5Postcode文本,长度50邮政编码6AreaId数字/长整型所属地域编号7BussTypeId数字/长整型所属行业类别编号8EmpId数字/长整型销售人员(4)联系人信息表Contact表Contact用来保存联系人信息,结构如表5所示:表5Contact的结构表编号字段名称数据结构说明1Id自动编号记录编号,主键2CustId数字/长整型客户单位编号3CName文本/长度50姓名4Sex文本/长度2性别5TitleId数字/长整型职务编号6Office文本,长度50办公电话7Mobile文本,长度50移动电话8Birth文本,长度50生日9Hobby文本,长度50兴趣爱好10Memo1备注备注信息11Input_date文本,长度50记录录入日期12Input_time文本,长度50记录录入时间(5)商业机会表SaleChance表SaleChance用来保存商业机会信息,结构如表6所示:表6SaleChance的结构表共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书编号字段名称数据结构说明1Id文本,长度50记录编号2CustId数字/长整型客户编号3CtId数字/长整型联系人编号4ProName文本/长度200产品名称5PTypeId数字/长整型项目类型编号6EmpId数字/长整型销售人员编号7SignDate文本,长度50预计签订日期8SignSum数字/长整型预计成交金额9PPercent文本,长度50目前进度10Status文本,长度50状态11Detail备注详细介绍12CreateDate日期/时间创建日期13Poster文本,长度50创建人(6)客户跟踪表SaleTask表SaleTask用来保存客户任务跟踪信息,结构如表7所示:表7SaleTask的结构表编号字段名称数据结构说明1Id自动编号记录编号2SaleId文本,长度50商业机会编号3EmpId数字/长整型销售人员编号4TaskDate文本/长度50任务日期5Purpose文本/长度50拜访目的6CtId数字/长整型拜访人员编号7Place文本,长度100拜访地点8StartTime数字/长整型开始时间9EndTime文本,长度50目前进度10EndTimeDetail结束时间11Detail备注详细介绍12Result备注任务结果、进展总结共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书(7)用户信息表Users表Users用来保存系统用户信息,结构如表8所示。表8Users的结构表编号字段名称数据结构说明1UserName文本,长度50用户名,主键2UserPwd文本,长度50密码1.共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书系统详细设计1.1.登录窗体和系统主界面设计当系统运行时,首先打开登录窗体,只有有权限的用户才能进行系统。登录成功后,将显示系统主界面。(1)设计登录窗体登录窗体的名称为FrmLogin,它的界面布局如图5所示:图5登录窗体的界面布局登录窗体的属性表如表9所示。表9登录窗体的属性表窗体属性设置值具体说明名称FrmLogin设置窗体名称BorderStyle1-FixedSingle设置窗体的边框属性Caption身份验证窗体的标题条文本ControlBoxFalse取消控制按钮,防止用户通过控制按钮关闭对话框StartUpPosition2-屏幕中心设置窗体弹出时,位置在屏幕中心共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书登录窗体中控件的属性如表10所示:表10登录窗体包含的控件及其属性   对象名属性属性值Label1Caption用户名Label2Caption密码txtUserText空txtPwdText空PasswordChar*Cmd_OkCaption确定Cmd_CancelCaption取消下面介绍登录窗体的部分代码①变量声明登录窗体的变量声明如下:PublicPasswordKeyAsStringPublicTry_timesAsIntegerPublicNameKeyAsString②Cmd_Click过程当用户单击“确定”按钮时触发Cmd_Click事件,进行身份验证,代码如下:PrivateSubCmd_OK_Click()DimjAsSingle"数据有效性检查IftxtUser=""ThenMsgBox"请输入用户名"txtUser.SetFocusExitSubEndIfIftxtPwd=""ThenMsgBox"请输入密码"txtPwd.SetFocusExitSubEndIfNameKey=MakeStr(txtUser)共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书PasswordKey=MakeStr(txtPwd)"判断用户是否存在IfMyUser.In_DB(NameKey)=FalseThenMsgBox"用户名不存在"Try_times=Try_times+1IfTry_times>=3ThenMsgBox"您已经三次尝试进入本系统,均不成功,系统将关闭"DBapi_DisconnectEndElseExitSubEndIfEndIf"判断密码是否正确MyUser.GetInfo(NameKey)IfMyUser.UserPwd<>PasswordKeyThenMsgBox"密码错误"Try_times=Try_times+1IfTry_times>=3ThenMsgBox"您已经三次尝试进入本系统,均不成功,系统将关闭"DBapi_DisconnectEndElseExitSubEndIfEndIf"登录成功,将当前用户的信息保存在CurUser中CurUser.GetInfo(MyUser.UserName)"关闭自己UnloadMeEndSub程序的运行过程如下:l判断是否输入了用户名和密码,如果没有输入,则返回,要求用户输入。l将输入的用户名和密码赋值到变量NameKey和Passwordkey中,便于处理。共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书l调用MyUser.In_DB()函数,判断当臆用户名是否存在。如果不存在,则返回,要求用户重新输入,同时将计数变量Try_times加1。l如果用户名存在,则调用MyUser.GetInfo()函数,读取此用户的数据,并将用户密码与输入的密码进行比较。如果密码不同,要求用户重新输入,同时将计数变量Try_times加1。l如果Try_times大于或等于3,则退出系统。l如果通过密码验证,则将当前用户的信息保存到curUser对象中,以便以后使用。l关闭登录窗体。⑵设计主界面主窗体是工程的启动对象,可以在系统菜单中选择“工程”/“属性”,打开属性窗口设置启动对象。本系统中主窗体名为FrmMain。打开窗体的设计窗口,选择“工具”菜单项中的“菜单编辑器”,对菜单内容进行编辑,菜单编辑器如图6所示:图6菜单编辑器共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书本系统的主界面如图7所示:图7系统主界面在主窗体FrmMain中添加如下代码:PrivateSubForm_Load()FrmLogin.Show1EndSub当主窗体启动时,将打开“登录”对话框。如果不能通过身份验证,则不能进行系统。当选择“退出系统”菜单项时触发mn_Click事件,代码如下:PrivateSubmn_Exit_Click()DBapi_DisconnectEndEndSub1.1.基本信息管理模块设计基本信息管理模块包括地域信息管理、客户类别管理、行业分类管理、职务名称管理、项目类型管理和销售人员管理。3.2.1.设计地域信息编辑窗体共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书编辑地域信息的窗体可以用来添加和修改地域信息,窗体名称设置为FrmAreaEdit,窗体布局如图8所示:图8窗体FrmAreaEdit布局Cmd_Ok_Click过程当用户单击“确定”按钮时触发Cmd_Ok_Click事件,对应的程序代码如下:PrivateSubCmd_OK_Click()DimTmpIdAsIntegerIfTrim(txtArea)=""ThenMsgBox"请输入地域名称"ExitSubEndIf"将用户输入的输入赋值到MyArea对象中WithMyArea.AreaName=Trim(txtArea).AreaType=CurArea.AreaType+1.UpperId=CurArea.AreaIdIfModify=FalseThen"插入If.In_DB(Trim(txtArea),.UpperId)=TrueThenMsgBoxTrim(txtArea)+"已经存在"ExitSubEndIfTmpId=.Insert"生成TreeView控件中新结点的关键字Tmp_Key=Chr(Asc("a")+.AreaType)Tmp_Key=Tmp_Key+Trim(Str(TmpId))FrmAreaMan.TreeView1.SelectedItem.Image=1共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书FrmAreaMan.TreeView1.SelectedItem.ExpandedImage=2FrmAreaMan.TreeView1.SelectedItem.SelectedImage=3SetTmpNode=FrmAreaMan.TreeView1.Nodes.Add(FrmAreaMan.TreeView1.SelectedItem.Key,_tvwChild,Tmp_Key,.AreaName,4,5)TmpNode.Selected=TrueElse"修改IfCurArea.AreaName<>Trim(txtArea)ThenIf.In_DB(Trim(txtArea),.UpperId)=TrueThenMsgBoxTrim(txtArea)+"已经存在"ExitSubEndIfEndIfCall.Update(CurArea.AreaId)IfCurArea.AreaName<>Trim(txtArea)ThenFrmAreaMan.TreeView1.SelectedItem.Text=Trim(txtArea)EndIfCurArea.AreaName=Trim(txtArea)EndIfEndWithUnloadMeEndSub3.2.1.设计地域信息管理窗体地域信息管理窗体的名称设置为FrmAreaMan。在窗体中添加一个ImageList控件。右击此控件,选择菜单中的“属性”命令,打开“属性页”对话框。单击“图像”选项卡,通过单击“插入图像”和“删除图像”来编辑图像列表,如图9所示:共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书图9地域信息管理窗体下面分析窗体FrmClassMan中部分过程的代码。1、Form_Load过程PrivateSubForm_Load()FocusAreaName="中国""添加根结点SetTmpNode=TreeView1.Nodes.Add(,,"a0","全球地域",1,3)TmpNode.Selected=TrueTmpNode.ExpandedImage=2CallAdd_AreaToTree(TreeView1)TreeView1_ClickEndSub⑴Cmd_Add_Click过程PrivateSubCmd_Add_Click()IfCurArea.AreaType>=4ThenMsgBox"此地域已不能再细分"ExitSubEndIf"打开编辑窗体FrmAreaEdit.lblUpper=CurArea.AreaName共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书FrmAreaEdit.txtArea=""FrmAreaEdit.Modify=FalseFrmAreaEdit.Show1TreeView1_ClickEndSub⑵Cmd_Modi_Click过程当单击“修改”按钮时触发Cmd_Modi_Click事件,对应的代码如下:PrivateSubCmd_Modi_Click()IfTreeView1.SelectedItem.Key="a0"ThenMsgBox"此项不能修改"ExitSubEndIfFrmAreaEdit.lblUpper=MyArea.GetName(CurArea.UpperId)FrmAreaEdit.txtArea=CurArea.AreaNameFrmAreaEdit.Modify=TrueFrmAreaEdit.Show1TreeView1_ClickEndSub⑶Cmd_Del_Click过程当单击“删除”按钮时触发Cmd_Del_Click事件,对应的代码如下:PrivateSubCmd_Del_Click()DimTmpOrgAsStringIfCurArea.AreaType=0ThenMsgBox"此项不能删除"ExitSubEndIfIfCurArea.HaveSon(CurArea.AreaId)=TrueThenMsgBoxCurArea.AreaName+"包含下级地域,不能删除"ExitSubEndIfTmpOrg=MyCust.Area_In_Customer(TmpAreaId)IfTmpOrg<>""ThenMsgBox"地域中包含客户信息-"+TmpOrg+",不允许删除"ExitSub共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书EndIf"确认删除IfMsgBox("是否确定要删除"+Trim(TreeView1.SelectedItem.Text),vbYesNo,"请确认")=vbNoThenExitSubEndIfCurArea.Delete(CurArea.AreaId)TreeView1.Nodes.RemoveTreeView1.SelectedItem.IndexTreeView1_ClickEndSub⑷TreeView1_Click过程当单击TreeView列表时触发TreeView1_Click事件,对应的代码如下:PrivateSubTreeView1_Click()DimTmpTypeAsInteger"根据关键字获取地域信息FocusKey=TreeView1.SelectedItem.KeyCurArea.AreaName=TreeView1.SelectedItem.TextTmpType=Asc(Left(TreeView1.SelectedItem.Key,1))CurArea.AreaType=TmpType-Asc("a")CurArea.AreaId=Val(Right(TreeView1.SelectedItem.Key,Len(TreeView1.SelectedItem.Key)-1))"如果是根结点,则不需要再处理IfCurArea.AreaType=0ThenExitSubEndIf"决定结点显示的图像IfCurArea.HaveSon(CurArea.AreaId)=FalseThenTreeView1.SelectedItem.ExpandedImage=4TreeView1.SelectedItem.Image=4TreeView1.SelectedItem.SelectedImage=5EndIf"将地域信息读取到CurArea对象中CurArea.GetInfo(CurArea.AreaId)EndSub共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书3.2.1.设计选择地域信息窗体为了方便用户在其他模块中选择地域信息,设计一个选择地域信息的窗体,窗体名为FrmAreaSel。它的布局如图10所示:图10选择地域信息窗体窗体的属性如表11所示:表11设置窗体的属性窗体属性设置值具体说明名称FrmAreaSel设置窗体名称BorderStyle1-FixedSinglw设置窗体的边框属性Caption窗体的标题条文本为空ControlBoxFalse取消控制按钮StartUpPosition0-手动设置窗体弹出时,位置由用户指定当用户双击TreeView控件时触发TreeView1_DbClick事件,对应的代码如下:PrivateSubTreeView1_DblClick()DimTmpStrAsStringIfAreaLevel>0AndAreaLevel<5AndAreaLevel<>MyArea.AreaTypeThenSelectCaseAreaLevelCase1TmpStr="洲"Case2TmpStr="国家"共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书Case3TmpStr="省"Case4TmpStr="市/县"EndSelectMsgBox"请选择"+TmpStrExitSubElseIfAreaLevel=5Then"选择国家、省、市/县IfMyArea.AreaType<2OrMyArea.AreaType>4ThenMsgBox"请选择国家、省、市或县"ExitSubEndIfEndIfIfAreaLevel=6Then"选择省、市/县IfMyArea.AreaType<3OrMyArea.AreaType>4ThenMsgBox"请选择省、市或县"ExitSubEndIfEndIfEndIfCurArea.AreaId=MyArea.AreaIdCurArea.AreaName=MyArea.AreaNameCurArea.AreaType=MyArea.AreaTypeClickOK=TrueUnloadMeEndSub共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书3.2.1.设计客户类别信息编辑窗体客户类别信息编辑窗体的名称为FrmTypes,窗体中包含的控件及其属性如表12所示:表12窗体FrmTypes中包含的控件及其属性对象名属性属性值DataList1NameDataList1(用来显示客户类别名称)AdoTypeVisibleFalse(用于提供数据源)txtNameCaptiontxtName(用来编辑分类名称)Cmd_AddCaption添加Cmd_ModiCaption修改Cmd_DelCaption删除Cmd_ExitCaption退出窗体FrmType的布局如图11所示:图11客户类别信息窗体1.1.客户信息管理模块设计客户信息管理模块包括客户单位管理和客户联系人管理等功能。3.3.1.设计客户单位信息编辑窗体客户单位信息编辑窗体的窗体为FrmCustomerEdit,窗体布局如图12所示:共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书图12客户单位信息窗体3.3.1.设计客户单位信息管理窗体客户单位信息管理窗体的名称为FrmCustomerMan,窗体布局如图13所示:图13客户单位信息管理窗体共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书窗体属性与登录窗体相似,窗体中主要控件的属性如表13所示:表13设置窗体中主要控件的属性对象名属性属性值ComboArea用于选择地域Check1用于选择全部地域Dco_Ctype用于选择客户类别Check2用于选择全部客户类别AdoType为dco_Ctype提供数据源lblTotal用于显示全部客户单位数量lblSel用于显示当前选择客户单位的数量DataGrid1用于显示客户单位信息Adodc1为DataGrid1控件提供数据源Cmd_AddCaption添加Cmd_ModiCaption修改Cmd_DelCaption删除Cmd_ExitCaption返回3.3.1.设计客户联系人信息编辑窗体客户联系人信息管理窗体的名称为FrmContactEdit,窗体布局如图14所示:图14客户联系人信息管理窗体共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书3.3.1.设计客户联系人信息管理窗体客户联系人信息管理窗体的名称为FrmContactMan,窗体布局如图15所示:图15客户联系人信息管理窗体3.3.2.设计客户联系人信息查看窗体客户联系人信息查看窗体的名称为FrmContactView,窗体布局如图16所示:图16客户联系人信息查看窗体共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书1.1.商业往来管理模块设计商业往来管理模块包括商业机会管理和客户跟踪管理等功能。3.4.1.设计商业机会信息编辑窗体商业机会信息编辑窗体的名称为FrmSaleEdit,窗体布局如图17所示:图17商业机会信息编辑窗体共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书3.4.1.设计商业机会信息管理窗体商业机会信息管理窗体的名称为FrmSaleMan,窗体布局如图18所示:图18商业机会信息管理窗体3.4.2.设计商业机会查看管理窗体在客户单位信息管理窗体中,选择一个客户单位记录,然后再单击“查看销售机会”按钮,将打开商业机会信息查看窗体。商业机会信息查看管理窗体的名称为FrmSaleView,窗体布局如图19所示:图18商业机会查看管理窗体共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书1.1.用户管理模块设计用户管理模块包括用户管理和修改密码等功能。3.5.1.用户管理窗体用户管理窗体的名称为FrmUserMan,窗体布局如图20所示:图20用户管理窗体3.5.2.编辑用户信息窗体编辑用户信息窗体的名称为FrmUserEdit,窗体布局如图21所示:图21编辑用户信息窗体共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书1.客户管理系统的维护与调试1.1.测试环境操作系统:WindowXPProfessional数据库:MicrosoftAccess2000开发工具平台:MicrosoftVisualBasic6.01.2.软件测试的目的和原则在开发大型软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。我们力求在每个阶段结束之前通过严格的技术审查,尽可能早的发现并纠正错误。测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。尽管面向对象技术的基本思想保证了软件应该有更高的质量,但无论采用什么样的编程技术,编程人员的错误都是不可避免的,而且由于面向对象技术开发的软件代码重用率高,更需要严格测试,避免错误的繁衍。因此,软件测试在面向对象编程里更具有它的重要性。与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤地继续。大型软件系统通常由若干个子系统组成,每个子系统又由许多模块组成。因此,大型软件系统的测试的基本层次如图所示。图20测试的基本层次(1)单元测试单元测试的用例从单元详细设计中导出。在单元测试中可以采用功能性测试和结构性测试两种。(2)集成测试在这个测试步骤中所发现的往往是概要设计的错误。(3)系统测试在这个测试步骤中所发现的往往是需求规格说明的错误。一般来说,系统测试是功能性测试,不是结构性测试。共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书4.3子系统测试在客户资源管理系统的开发过程中,每开发完一个模块都会进行模块功能测试,由于系统还没有最后完成,现在暂时还不能进行集成和系统测试,这部分将在系统完成后才能进行。软件测试和调试过程中,系统显示出数据冗余度少、数据一致性强。系统功能设计符合用户要求。由于本人自身能力的局限性,所以做编写的代码,即使经过反复检查也难免出错所以在本阶段力求使用有限的时间找出尽可能多的错误,力求系统尽量正确。我们在本系统的测试中使用了黑盒法(即不关心程序内部的逻辑结构,而是根据程序的功能来设计是检测)请一位不熟悉本系统的人来进行随意性的操作,打破习惯的操作顺序,从中发现错误,在此阶段系统的大量错误得到了改正。共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书结论(1)系统存在的不足与改进方案本系统是本人参于MIS设计的第一个项目,由于经验的不足和相关知识的欠缺,导致系统开发中有些方面设计得不够周全。比如在数据库建模之初,由于急于开发,对建模这一块就没有很认真地设计,导致系统开发的过程中经常回过头来修改数据库,浪费了很多的时间。现在的系统还有一些数据的显示不是很符合实际,这要在数据窗口中进行统一设置。我们会对系统不断进行完善和升级,力求将不足之处一一改正过来。(2)毕业设计心得与收获通过参与一个实际项目的设计与开发,我学习到了好多从课本中学不到的知识,深刻理解了理论联系实际的客观意义,也明白了搞软件开发不是一件孤立的事情,从系统的设计到最终的成品推出,每一个步骤都需要我们严谨对待,同时也认识到对这一类专业软件业务的熟悉是软件最终能否在实际中使用的关键。这次毕业设计培养了我注重实际、勇于创新的良好思维能力,为以后的工作起到了很好的铺垫作用。共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书致谢在论文的选题及其后的设计过程中得到指导老师的悉心指导,使本文得以顺利完成,在此向赵老师表示衷心的感谢。本论文是在赵老师的指导下修改完成的。在此,要对她们的细心帮助和指导表示由衷的感谢。在这段时间里,我从她们身上不仅学到了许多的专业知识,更感受到了她们工作中的兢兢业业,生活中的平易近人。此外,她们严谨的治学态度和忘我的工作精神值得我去学习。感谢给予我帮助的其他人员,他们在我的毕业设计过程中经常给我提出许多关键性的问题,使我受益匪浅。感谢多年来传授我知识的老师们,更要感谢我的家人对我学业上的支持和鼓励,感谢所有关心帮助过我的人。在此我要特别感谢我的指导老师对我的精心指导和帮助,感谢本次答辩过程中在座的各位老师。你们的言传身教将使我终生受益!感谢所有帮助过我的人!共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书主要参考文献⑴马力,《VisualBasic程序设计院》,北京大学出版社,2004-8-1⑵冯硕,费志博,《VisualBasic数据库编程宝典》,电子工业出版社,2001-5-1⑶王守茂,《管理信息系统的分析与设计》,天津科技翻译出版公司,1993年⑷曹青、邱李华、郭志强,《VisualBasic程序设计教程》,机械工业出版社,2002年⑸姜旭平,《信息系统开发方法》,清华大学出版社,2002年⑹王珊,《数据庫系统概述》,高等教育出版社,1999年⑺姚达,《数据庫设计》,高等教育出版社,2000年⑻王珊、陈红,《数据库系统原理教程》,清华大学出版社,1999年⑼Korth,HenryF.andSilberschatz,Abraha,《DatabaseSystemConcepts》,NewYork:McGraw-Hill,Inc.1999.3⑽PatrickO’NeilElizabethO’Neil,《DATABASEPrinciples,Programming,andPerformance》(SecondEdition),NewYork:HigherEducationPressMorganKaufmannPublishers,2001.5共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书附录:部分窗体源代码(1)地域管理窗体代码PrivateSubCmd_Add_Click()IfCurArea.AreaType>=4ThenMsgBox"此地域已不能再细分"ExitSubEndIf"打开编辑窗体FrmAreaEdit.lblUpper=CurArea.AreaNameFrmAreaEdit.txtArea=""FrmAreaEdit.Modify=FalseFrmAreaEdit.Show1TreeView1_ClickEndSubPrivateSubCmd_Back_Click()UnloadMeEndSubPrivateSubCmd_Del_Click()DimTmpOrgAsStringIfCurArea.AreaType=0ThenMsgBox"此项不能删除"ExitSubEndIfIfCurArea.HaveSon(CurArea.AreaId)=TrueThenMsgBoxCurArea.AreaName+"包含下级地域,不能删除"ExitSubEndIfTmpOrg=MyCust.Area_In_Customer(TmpAreaId)IfTmpOrg<>""ThenMsgBox"地域中包含客户信息-"+TmpOrg+",不允许删除"ExitSubEndIf"确认删除共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书IfMsgBox("是否确定要删除"+Trim(TreeView1.SelectedItem.Text),vbYesNo,"请确认")=vbNoThenExitSubEndIfCurArea.Delete(CurArea.AreaId)TreeView1.Nodes.RemoveTreeView1.SelectedItem.IndexTreeView1_ClickEndSubPrivateSubCmd_Modi_Click()IfTreeView1.SelectedItem.Key="a0"ThenMsgBox"此项不能修改"ExitSubEndIfFrmAreaEdit.lblUpper=MyArea.GetName(CurArea.UpperId)FrmAreaEdit.txtArea=CurArea.AreaNameFrmAreaEdit.Modify=TrueFrmAreaEdit.Show1TreeView1_ClickEndSubPrivateSubForm_Load()FocusAreaName="中国""添加根结点SetTmpNode=TreeView1.Nodes.Add(,,"a0","全球地域",1,3)TmpNode.Selected=TrueTmpNode.ExpandedImage=2CallAdd_AreaToTree(TreeView1)TreeView1_ClickEndSubPrivateSubTreeView1_Click()DimTmpTypeAsInteger"根据关键字获取地域信息FocusKey=TreeView1.SelectedItem.KeyCurArea.AreaName=TreeView1.SelectedItem.TextTmpType=Asc(Left(TreeView1.SelectedItem.Key,1))CurArea.AreaType=TmpType-Asc("a")共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书CurArea.AreaId=Val(Right(TreeView1.SelectedItem.Key,Len(TreeView1.SelectedItem.Key)-1))"如果是根结点,则不需要再处理IfCurArea.AreaType=0ThenExitSubEndIf"决定结点显示的图像IfCurArea.HaveSon(CurArea.AreaId)=FalseThenTreeView1.SelectedItem.ExpandedImage=4TreeView1.SelectedItem.Image=4TreeView1.SelectedItem.SelectedImage=5EndIf"将地域信息读取到CurArea对象中CurArea.GetInfo(CurArea.AreaId)EndSub(2)行业分类设置窗体代码PrivateOriIdAsLong"类型编号PrivateOriTypeNameAsString"原来的类型名称"类型分类编号,1-客户类型;2-行业分类;3-职务类型;4-项目类型PublicnFlagAsIntegerPrivateSubCmd_Add_Click()"添加课程类型名称,先判断域是否为空IfLen(Trim(txtName))=0ThenMsgBox("请输入类型名称")txtName.SetFocusExitSubEndIf"判断数据库中是否已经存在此类型名称IfMyType.In_DB(Trim(txtName),nFlag)=TrueThenMsgBox("已经存在此类型名称")txtName.SetFocusExitSubEndIf"插入新记录WithMyType.TypeName=Trim(txtName).Flag=nFlag共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书.InsertMsgBox"添加成功"EndWithDataRefreshEndSubPrivateSubCmd_Del_Click()IfLen(Trim(DataList1.BoundText))=0ThenMsgBox("请选择记录")ExitSubEndIf"确定删除IfMsgBox("是否确定要删除",vbYesNo,"请确认")=vbNoThenExitSubEndIf"删除类型MyType.Delete(Val(DataList1.BoundText))MsgBox"删除成功"DataRefresh"刷新DataList1EndSubPrivateSubCmd_Exit_Click()UnloadMeEndSubPrivateSubCmd_Modi_Click()"修改类型名称IfLen(Trim(DataList1.BoundText))=0ThenMsgBox("请选择记录")ExitSubEndIf"判断新的名称是否和原来的相同IfTrim(txtName)=OriTypeNameThenExitSubEndIf"判断新的名称是否已经存在IfMyType.In_DB(Trim(txtName),nTypeId)=TrueThen共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书MsgBox("已经存在此类型名称")txtName.SetFocusExitSubEndIf"更新名称MyType.TypeName=Trim(txtName)MyType.Update(OriId)MsgBox"修改成功"DataRefresh"刷新类型列表EndSubPrivateSubDataList1_Click()"点击列表记录,将编号和名称放入变量和txtName域IfLen(Trim(DataList1.BoundText))=0ThenMsgBox("请选择记录")ExitSubEndIfOriId=Val(DataList1.BoundText)"记录编号IfMyType.GetInfo(OriId)=TrueThen"判断是否存在此记录信息OriTypeName=Trim(MyType.TypeName)"将类型名称保存到变量中txtName=Trim(MyType.TypeName)"文本框中显示类型名称EndIfEndSubPrivateSubForm_Load()"刷新DataList1中的数据DataRefreshEndSubPrivateSubDataRefresh()"设置连接字符串AdoType.ConnectionString=Conn"设置SQL语句AdoType.RecordSource="SELECT*FROMTypesWHEREFlag="+Trim(nFlag)AdoType.Refresh"设置数据源SetDataList1.RowSource=AdoType共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书DataList1.ListField="TypeName""设置列表中显示字段DataList1.BoundColumn="Id""设置列表绑定字段DataList1.RefreshEndSub(3)客户基本信息管理窗体PrivateSubRefresh_Customer()DimTmpSourceAsStringIfCurArea.AreaId<=0AndCheck1.Value=0ThenlblSel=0ExitSubEndIf"计算全部单位总数total_num=MyCust.CountCustomer(0)lblTotal=Trim(Str(total_num))TmpSource="SELECTc.CustId,c.CustNameas单位名称,a.AreaNameas地域名称,"_+"t.TypeNameas客户类型,t1.TypeNameAS所属行业,c.Addressas通信地址,"_+"c.Postcodeas邮政编码,a.AreaId,c.EmpId,e.EmpNameAS销售人员"_+"FROMCustomerc,Employeese,"_+"Areaa,Typest,Typest1WHEREc.CustTypeId=t.IdAnd"_+"c.BussTypeId=t1.IdANDc.EmpId=e.EmpId""未选择地域IfCheck1.Value=1Then"全部类别IfLen(Trim(dco_CType.Text))=0ThenTmpSource=TmpSource+"Andc.AreaId=a.AreaIdORDERBYc.CustName""选择类别ElseTmpSource=TmpSource+"Andc.AreaId=a.AreaIdAndc.CustTypeId="_+Trim(dco_CType.BoundText)+"ORDERBYc.CustName"EndIfElseIfCurArea.AreaType=4Then"市共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书"全部类别IfLen(Trim(dco_CType.Text))=0ThenTmpSource=TmpSource+"Andc.AreaId=a.AreaIdAndc.AreaId="_+Trim(Str(CurArea.AreaId))+"ORDERBYc.CustName"ElseTmpSource=TmpSource+"Andc.AreaId=a.AreaIdAndc.AreaId="_+Trim(Str(CurArea.AreaId))+"Andc.CustTypeId="_+Trim(dco_CType.BoundText)_+"ORDERBYc.CustName"EndIfElse"省IfLen(Trim(dco_CType.Text))=0ThenTmpSource=TmpSource+"And(c.AreaId=a.AreaIdAnda.UpperId="_+Trim(Str(CurArea.AreaId))+"Orc.AreaId=a.AreaIdAnda.AreaId="_+Trim(Str(CurArea.AreaId))+")ORDERBYc.CustName"ElseTmpSource=TmpSource+"And(c.AreaId=a.AreaIdAnda.UpperId="_+Trim(Str(CurArea.AreaId))+"Orc.AreaId=a.AreaIdAnda.AreaId="_+Trim(Str(CurArea.AreaId))+")Andc.CustTypeId="_+Trim(dco_CType.BoundText)_+"ORDERBYc.CustName"EndIfEndIfEndIfAdodc1.ConnectionString=ConnAdodc1.RecordSource=TmpSourceAdodc1.RefreshSetDataGrid1.DataSource=Adodc1lblSel=Trim(Str(Adodc1.Recordset.RecordCount))DataGrid1.Columns(0).Width=0DataGrid1.Columns(1).Width=2200DataGrid1.Columns(2).Width=1400DataGrid1.Columns(3).Width=1400DataGrid1.Columns(4).Width=1400DataGrid1.Columns(5).Width=1600共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书DataGrid1.Columns(6).Width=1200DataGrid1.Columns(7).Width=0DataGrid1.Columns(8).Width=0DataGrid1.Columns(9).Width=1200EndSubPrivateSubCheck1_Click()IfCheck1.Value=1ThenComboArea.Enabled=FalseComboArea.Text="全部地域"ElseComboArea.Text=MyArea.GetName(CurArea.UpperId)+""+CurArea.AreaNameComboArea.Enabled=TrueEndIfRefresh_CustomerEndSubPrivateSubCheck2_Click()IfCheck2.Value=1Thendco_CType.Enabled=Falsedco_CType.Text="全部客户类型"Elsedco_CType.Enabled=TrueEndIfRefresh_CustomerEndSubPrivateSubCmd_Add_Click()"设置添加信息FrmCustomerEdit.Modify=FalseFrmCustomerEdit.ComboArea.Text=""FrmCustomerEdit.Show1Refresh_CustomerEndSub共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书PrivateSubCmd_AddCt_Click()IfAdodc1.Recordset.BOF=TrueThenMsgBox"请选择记录"ExitSubEndIfFrmContactEdit.Modify=FalseFrmContactEdit.OriCustId=Adodc1.Recordset.Fields(0)FrmContactEdit.lbl_CustName=Trim(Adodc1.Recordset.Fields(1))FrmContactEdit.ComboSex.ListIndex=1FrmContactEdit.Show1EndSubPrivateSubCmd_Back_Click()UnloadMeEndSubPrivateSubCmd_Del_Click()IfAdodc1.Recordset.BOF=TrueThenMsgBox"请选择记录"ExitSubEndIf"是否存在此客户的商业机会IfMyChance.HaveCustomer(Adodc1.Recordset.Fields(0))=TrueThenMsgBox"商业机会中存在此客户信息,不能删除!"ExitSubEndIf"确认删除IfMsgBox("是否确定要删除客户信息,删除时同时删除客户联系人信息",vbYesNo,"请确认")=vbNoThenExitSubEndIf"删除客户信息CallMyCust.Delete(Adodc1.Recordset.Fields(0))"删除对应的联系人信息CallMyContact.DeleteByCustId(Adodc1.Recordset.Fields(0))Refresh_CustomerEndSub共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书PrivateSubCmd_Modi_Click()DimTmpAreaIdAsLongIfAdodc1.Recordset.BOF=TrueThenMsgBox"请选择记录"ExitSubEndIf"客户单位FrmCustomerEdit.OriCustId=Adodc1.Recordset.Fields(0)FrmCustomerEdit.txtName=Trim(Adodc1.Recordset.Fields(1))"地域FrmCustomerEdit.ComboArea.Text=Trim(Adodc1.Recordset.Fields(2))"类别FrmCustomerEdit.dco_CType.Text=Trim(Adodc1.Recordset.Fields(3))"所属行业FrmCustomerEdit.dco_BType.Text=Trim(Adodc1.Recordset.Fields(4))"通信地址FrmCustomerEdit.txtAddr=Trim(Adodc1.Recordset.Fields(5))"邮政编码FrmCustomerEdit.txtCode=Trim(Adodc1.Recordset.Fields(6))"销售人员FrmCustomerEdit.dco_Emps.Text=Trim(Adodc1.Recordset.Fields(9))"保存CurArea对象TmpAreaId=CurArea.AreaIdCurArea.AreaId=Adodc1.Recordset.Fields(7)FrmCustomerEdit.Modify=TrueFrmCustomerEdit.Show1"恢复CurArea的值CurArea.AreaId=TmpAreaIdCurArea.GetInfo(CurArea.AreaId)"刷新数据Refresh_CustomerEndSub共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书PrivateSubCmd_ViewCt_Click()IfAdodc1.Recordset.BOF=TrueThenMsgBox"请选择记录"ExitSubEndIfFrmContactView.SchId=Adodc1.Recordset.Fields(0)FrmContactView.lbl_CustName=Trim(Adodc1.Recordset.Fields(1))FrmContactView.Show1EndSubPrivateSubCmd_ViewSC_Click()IfAdodc1.Recordset.BOF=TrueThenMsgBox"请选择记录"ExitSubEndIfFrmSaleView.SchId=Adodc1.Recordset.Fields(0)FrmSaleView.lbl_CustName=Trim(Adodc1.Recordset.Fields(1))FrmSaleView.Show1EndSubPrivateSubComboArea_GotFocus()Check1.SetFocus"设置显示菜单的位置FrmAreaSel.AreaLevel=6FrmAreaSel.Left=Me.Left+ComboArea.Left+350FrmAreaSel.Top=Me.Top+ComboArea.Top+ComboArea.Height+450FrmAreaSel.Show1IfFrmAreaSel.ClickOK=TrueThenCurArea.GetInfo(CurArea.AreaId)ComboArea.Text=MyArea.GetName(CurArea.UpperId)+""+CurArea.AreaNameEndIfRefresh_CustomerEndSub共56页第56页 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊安徽工业大学工商学院毕业设计(论文)说明书PrivateSubdco_CType_Click(AreaAsInteger)Refresh_CustomerEndSubPrivateSubForm_Load()CurArea.Init"装入客户类别AdoType.ConnectionString=ConnAdoType.RecordSource="SELECT*FROMTypesWHEREFlag=1"AdoType.RefreshSetdco_CType.RowSource=AdoTypedco_CType.ListField="TypeName"dco_CType.BoundColumn="Id"dco_CType.Enabled=FalseCheck2.Value=1Check1.Value=1Refresh_CustomerEndSub共56页第56页