客户管理系统研究与毕业论文.doc

申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

文档介绍

客户管理系统研究与毕业论文.doc

客户管理系统研究与毕业论文第一章绪论1.1本课题研究背景和意义随着社会的不断发展,各大中小企业犹如雨后春笋不断增多,用人工管理复杂繁多的相关资料已不再现实可行,并且纸质文档容易丢失、难整理、查阅不便。因此,迫切需要利用计算机对企业信息进行自动化的管理。客户管理包括用户登录、数据录入、信息查询、报表输出等多方面的管理。本设计选用微软Windows平台下的VisualFoxPro6.0(简写为VFP6.0)作为软件开发工具,从客户信息管理和联系人信息管理两个方面展开,包括:用户管理、数据管理、报表打印、系统管理四个功能模块的设计。通过本设计成功实现了对客户信息、联系人信息相关数据的录入、变更、查询、打印等多方面的功能,因此也提高了管理人员对客户信息的管理效率。本设计报告对客户管理系统从构建到实现做了全面介绍,包括系统功能分析、系统结构设计、数据库设计、应用程序设计、系统调试、连编应用系统以及创建安装盘等几个阶段的开发模式,成功实现了由主程序调用登录界面,由登录界面调出主菜单,由主菜单调用表单及报表,实现了对数据库数据的各类操作。1.2客户管理系统简介客户管理是企业管理的一个重要内容。随着时代的进步,企业也逐渐变得庞大起来;业务流动越来越频繁,使得管理工作也变的越来越复杂。纵观国内外客户管理都是一个庞大的体系,尤其现在企业间竞争越来越激烈,如果信息还用纸质保存则易流失、难整理、需要大量人力资源。这个日常管理工作带来不变且工作效率低,因此需要一个完善的基于计算机的管理系统来提高客户信息的管理,增强其安全性、易维护性,提高工作效率、减少人力、物资的开销。 客户管理系统主要利用计算机对客户信息的管理来提高客户的管理效率和服务的质量。在本系统中,主要包括用户登录、数据录入、信息查询、报表输出以及系统维护等功能。第二章客户管理系统简介2.1背景介绍当今社会,随着科技的不断发展,计算机已在人们的日常生活和工作领域中日益普及,并且人们对于计算机的应用不在是简单的文字处理和最初的科学计算。计算机早已涉及到我们生活的各个方面,更多的是利用计算机来进行管理从而减轻我们的工作。客户是一个公司的主要联系对象,没有了客户,公司就失去了生存的根本。一直以来,人们用传统的方式来管理客户信息。这种管理方式存在效力低,保密性差的缺点。并且,随着时间的积累,客户的信息越来越多,查找,维护或者更新起来都非常的麻烦。手工管理已经不能满足需求。这就需要使用现代化的手段来提高管理和服务的水平。客户管理系统应该为客户和公司提供充足的信息和快捷的查询手段。使用计算机对客户信息进行管理,具有查询快速,查询方便,保密性好以及成本低的优点。这些优点能够极大的提高客户信息的管理效率。使用计算机来管理信息也是企业管理现代化的标志。因此开发一套客户管理系统,让计算机来管理客户信息势在必行。管理员通过管理系统可以查询某些客户的信息,公司所提供服务的情况;还可以对当前客户情况进行一些统计,给出统计表格,以便全面掌握客户的联系情况。客户通过客户管理系统可以查询公司的电话等信息。2.2系统分析了解了客户管理系统的开发背景后,就开始对系统进行设计前的简要分析。主要从系统的使用特点、开发语言以及数据库结构等方面进行分析。(1)系统的使用对象 使用该系统的人员,主要是教务部门的管理人员或者需要查询信息的学生。使用的目的主要是对客户的信息进行高效的管理,并对客户信息进行维护,包括客户信息的输入、变更、查询以及打印等。考虑到使用该系统的多为非计算机专业人员,所以在开发时要考虑以下几个方面:1)操作简单因为使用者多为非计算机专业人员,所以该系统要求设计的界面美观,操作方便。要充分考虑该软件的界面友好和操作方便,便于使用人员快速上手。2)易于维护一个软件设计得好坏,关键在于产品的可靠、稳定、便于维护。便于升级随着社会的发展,对系统的要求会越来越高。要求系统具有更高的安全性,更丰富的功能以及更快的操作速度。所以在设计时要考虑到以后的升级问题。(2)开发语言的选择针对目前世界上流行的大量软件和开发工具,经过认真分析其优缺点,结合目前的软硬件,选用微软Windows平台下的VisualFoxPro6.0(简写为VFP6.0)作为软件开发工具。选用该工具有以下几方面的优点:1)VFP6.0是比较好的关系型数据库管理系统开发软件。它提供了可视化的开发平台和面向对象的程序设计方法。大量控件的提供节省了开发工作量,提高了开发的效率。2)VFP6.0提供了很多设计器,诸如“数据库设计器”、“表单设计器”、“菜单设计器”等。另外还有一些“向导工具”。利用这些设计器和向导工具,不用编写大量的程序代码,使开发工作变得比较轻松。3)VFP本身就是一个数据库开发系统。使用它开发数据库系统效率高,稳定性好。综上所述,VFP6.0可以满足一个单位地客户信息管理的要求,所以用其来开发客户信息管理系统是非常合适的。 (3)数据库结构分析好的数据库结构,查询记录的速度较快,而且也不容易出现锁表现象。分析对客户信息的管理情况,首先需要了解客户的基本情况信息,包括客户的编号、单位名称以及电话等信息;还要有地区编号以及联系人等信息。联系人的信息主要包括电话、姓名、单位以及生日等信息。以便于在联系人生日到来时,公司为其进行庆祝。再联系客户时,如果记不住联系人的区号以及邮政编码等信息,可以进行查询。所以需要的数据表有客户表、联系人表、部门配置表、区号邮编表、服务表以及操作员表。2.3系统功能首先分析一下客户管理系统最终要达到什么目的。应该达到让计算机进行客户的信息管理、客户信息的打印;客户可以在网上查询公司的部门、电话、公司所在地区的编号以及邮编等操作。客户管理人员可以查询某客户以及客户联系人的基本信息;还可以对一些客户进行主动联系、进行生日的问候等。客户在查询公司信息时,可能对公司部门的信息掌握不是十分的全面。所以对公司部门电话的查询应该可以根据房间号或者部门代码信息进行查询。对客户的查询除来可以根据编号、名称、电话等信息外,还应该可以根据客户所在的地区进行查询。综上所述,本客户管理系统需要具有以下功能:(1)系统登录本系统的使用人员只有在输入了正确的证件号和密码后,才能进入该系统。是本单位的人员但是不知道密码不能进入系统。是本公司的客户,与该公司有联系的人员,在获得一个编号和密码后,也可以进入该系统。这用作主要防止不法人员使用系统的资源,进行数据的篡改。(2)权限设置不同的登录者具有不同的系统权限,具有不同权限者访问不同的系统资源,这样主要是为了限制越权操作。(3)数据录入管理 该模块实现主要是对与客户相关的信息的录入操作进行管理,主要包括录入,添加以及删除客户信息,联系人信息和服务的信息等功能。(4)信息查询管理对查询与客户相关的信息进行管理,主要包括:查询部门电话、查询客户信息、查询区号邮编以及查询联系人信息。其中查询部门电话可以根据房间号、部门代码以及电话进行查询。查询客户信息可以根据客户编号、电话、地区编号以及联系人编号进行查询。查询区号邮编可以根据地区名称以及地区编号进行查询。查询联系人信息可以根据联系人编号、姓名以及生日进行查询。部门电话记录主要包括:部门代码、处室名称、房间号以及分机号和直拨电话。(5)报表输出管理对一些联系信息进行管理,主要包括:打印服务信息、打印联系人信息以及打印区号邮编等。(6)系统维护对系统数据进行维护。主要是修改密码,普通用户可以修改自己的密码,此功能是防止密码被盗。这主要是出于对安全的考虑。(7)退出系统离开客户管理系统。第三章系统结构设计3.1系统结构图开发程序前,先理清思路,有一个清晰明了的结构图,能大大提高开发程序的效率和质量。为了开发学生管理系统,需要设计若干表单、数据表、程序、报表以及菜单。由项目管理器统一管理,由主程序进入系统,由主程序调出用户登录程序。登录成功后调出系统的主菜单,有主菜单调用表单界面和报表。整个系统的结构更紧凑、简洁;功能更明确完整。客户管理系统的总体功能流程如图3.1所示: 系统首页验证密码退出系统主表单数据录入密码管理报表输出系统维护信息查询录入客户信息查询部门电话查询客户信息查询区号邮编查询联系人信息打印客户信息打印服务信息打印联系人信息打印区号邮编录入联系人信息录入服务信息图3.1总体功能流程图3.2项目管理器的建立设计应用系统时应使用项目管理器,这样做的目的是便于开发和维护。充分利用项目管理器提供的简单可视的方法来管理用户各类复杂的资源。通过项目管理器,可以集中和管理应用程序的所有内容,列如:创建、打开、修改和删除数据库、表、表单、报表以及应用程序等。或者在开发应用程序时用它来组织所用到的各种文件(如数据库、表、表单、报表、菜单等)。在一个项目文件中统一管理所用到的各种文件,并将其编译成一个可独立运行的.app或.exe文件。通过这种方法,用户可以快速、方便地存取存放在项目文件中的任何对象。项目的扩展名是.pjx。建立项目器的步骤如下所示: ①启动VisualFoxPro,进入程序主界面。单击菜单栏的【文件】【新建】命令,在弹出的【新建】对话框中选择【项目】选项,如图3.2所示。②单击【新建文件】按钮,在弹出的保存文件对话框中设置一个文件名并选择保存在路径,单击【保存】按钮后即可弹出【项目管理器】对话框,可以看到,这个新项目就在项目管理器中建立起来了。图3.2【新建】对话框3.3数据库和表的建立建立好项目管理器之后,就可以建立客户管理系统所需要的数据库和数据表了。(一).建立数据库首先在项目管理器中建立数据库。步骤如下所示:(1)单击【数据】选项卡,选择【数据库】选项。单图3.2【新建】对话框击【新建】按钮,弹出【新建数据库】对话框,如图3.3所示。(2)单击【新建数据库】按钮,出现保存对话框,保存数据库名为:客户管理系统.dbc。保存后出现【数据库设计器】窗口。 图3.3【新建数据库】刚创建的数据库只是一个空的数据库,还没有数据。只有创建了数据表和其他数据对象后,才能输入数据或者进行其他数据库的操作。(二).建立数据表下面开始在数据库中建立数据表首先建立部门配置表.dbf,步骤如下所示:(1)右击【数据库设计器】窗口,在弹出的快捷菜单上选择【新建表】命令。(2)在弹出的对话框中,单击【新建表】按钮,在出现的保存文件对话框中设置文件名为:部门配置.dbf。单击【保存】按钮后即弹出【表设计器】对话框,在该对话框中设计表结构。 (3)设计表结构时,在【字段】页面中,输入字段名、字段类型、宽度、小数位数、索引和null值(该功能是在一个记录中使用空标记,此时,记录的默认值不起作用)。在【显示】区设置字段的格式、输入掩码和标题。其他区域与之类似。(4)设置【表设计器】的索引页,切换至【索引】页面,设置部门代码为“主索引”。“主索引”和“唯一索引”是有区别的,主索引键值在数据表中是唯一的且不允许为空,唯一索引键值也是唯一的但允许为空。(5)表的结构设计完成之后,系统会提示是否立即输入数据,可以输入几条数据以供演示,现在就把部门配置表建好了。按照以上步骤,下面开始建立部门电话表:(1)右击【数据库设计器】窗口,在弹出的快捷菜单上选择【新建表】命令。(2)在弹出的对话框中,单击【新建】按钮,在出现的保存文件对话框中设置文件名为:部门电话.dbf。单击【保存】按钮后即弹出【表设计器】对话框,在该对话框中设计表结构。(3)设置【表设计器】的索引页,切换至【索引】页面,设置部门代码为“普通索引“。(4)表的结构设计完成之后,系统会提示是否立即输入数据,可以输入几条数据以供演示。建好部门电话表以后,按照和上面类似的步骤建立客户表。建立的步骤如下所示:(1)右击【数据库设计器】窗口,在弹出的快捷菜单上选择【新建表】命令。(2)在弹出的对话框中,单击【新建】按钮,在出现的保存文件对话框中设置文件名为:客户表.dbf。单击【保存】按钮后即弹出【表设计器】对话框,在该对话框中设计表结构。(3)设置【表设计器】的索引页,切换至【索引】页面,设置区号和联系人编号为“普通索引”。(4)表的结构设计完成之后,系统会提示是否立即输入数据,可以输入几条数据以供演示。 建好客户表以后,按照上面类似的步骤建立联系人表。建立的步骤如下所示:(1)右击【数据库设计器】窗口,在弹出的快捷菜单上选择【新建表】命令。(2)在弹出的对话框中,单击【新建】按钮,在出现的保存文件对话框中设置文件名为:联系人.dbf。单击【保存】按钮后即弹出【表设计器】对话框,在该对话框中设计表结构。(3)设置【表设计器】的索引页,切换至【索引】页面,设置联系人编号为“主索引”。(4)表的结构设计完成之后,系统会提示是否立即输入数据,可以输入几条数据以供演示。建好联系人表后,按照和上面类似的步骤建立区号邮编表。建立的步骤如下所示:(1)右击【数据库设计器】窗口,在弹出的快捷菜单上选择【新建表】命令。(2)在弹出的对话框中,单击【新建】按钮,在出现的保存文件对话框中设置文件名为:区号邮编.dbf。单击【保存】按钮后即弹出【表设计器】对话框,在该对话框中设计表结构。(3)设置【表设计器】的索引页,切换至【索引】页面,设置联系人编号为“主索引”。(4)表的结构设计完成之后,系统会提示是否立即输入数据,可以输入几条数据以供演示。注:(1)表结构设计完并检查无误后,单击【确定】按钮,提示输入数据。如果没有立即输入数据,可以通过【表】菜单中的【添加新纪录】命令来添加新数据。(2)在项目管理器中选择表后,单击【浏览】按钮,出现表的编辑窗口(和上次打开表的方式有关)。可以通过【显示】菜单,在表的编辑窗口和浏览窗口之间进行切换。(三)建立表之间的参照完整性参照完整性是指,当插入、修改或者删除表中的记录时,通过参照引用相关联的另一个表的数据,来保证对表操作的正确性。 关系数据库管理系统一个重要的功能就是参照完整性。必须先建立表之间的关系,才能使用参照完整性。建立表之间的关联之前,要先对表建立索引。为子表建立普通索引,为父表建立主索引。在父表的主索引和子表的普通索引之间建立联系。建立表之间的关联,要在数据库设计器中进行。首先要打开数据库设计器,方法是:在【项目管理器】对话框中的【数据】页面下,选择【数据库】选项中“客户管理系统“。单击【修改】按钮,即可打开数据库设计器。建立表之间的关联的方法是:在【数据库设计器】中,用鼠标左键选择区号邮编表的主索引区号,按住鼠标左键不动,拖动鼠标到客户表的区号索引上。此时鼠标箭头变成小矩形,放开鼠标左键,读者客户表与区号邮编表之间的关联就建好了。与其他表之间的关联方法的建立是类似的,在此不累述。默认的关系是一对多的关系。如果想修改建立的关系,可以通过【编辑关系】对话框进行。方法是:右击需要修改的关联(此时关联线变粗),在弹出的快捷菜单中选择【编辑关系】,就打开了【编辑关系】对话框。建立完数据表之间的关联后,就可以建立参照完整性约束了。必须先清理数据库才能建立参照完整性。操作的步骤如下所示:(1)单击菜单栏的【数据库】【清理数据库】命令,进行数据库清理。只要打开数据库设计器,菜单栏就会出现【数据库】菜单。(2)右击数据表之间的联系,选择【编辑参照完整性】命令,弹出【参照完整性生成器】界面。参照完整性生成器中显示所有的联系。参照完整性规则共有3个,分别是:更新规则、删除规则和插入规则。更新规则规定了当更新父表的主关键字时,处理相关子表中记录的方法。删除规则规定了当删除父表中的记录时,处理相关子表中记录的方法。插入规则规定了当子表中插入一条新纪录或者更新一条已经存在的记录时处理规则。在客户管理系统中,更新规则设定为【级联】,删除规则设定为【限制】,插入规则设定为【限制】。 第四章表单设计一个数据库管理系统的开发,一般包括系统功能分析、系统结构设计、数据库设计、应用程序设计、系统调试和连编、发布等6个阶段。其中应用程序设计包括用户操作界面设计和主程序设计,用户操作界面设计包括表单设计和菜单设计。创建完成数据库和数据表后就可以进行表单设计了。用户界面包括表单和菜单两部分,其中主要部分是表单,面向对象编程的大多数工作是在表单中进行的,表单设计的过程就是用户界面设计的过程。设计用户界面,是为了让用户和系统能够进行交互式操作。4.1登录表单设计登录表单的作用是操作者只有输入了正确的证件号和密码才能登录进入管理系统。数据环境:操作员表登录表单的设计步骤如下所示:(1)在【项目管理器】对话框的【文档】页面中,选中【表单】选项。单击【新建】按钮,弹出【新建表】对话框。(2)单击【新建表单】按钮。弹出【表单设计器】窗口。一个名为form1的空表单也随之出现在【表单设计器】窗口中。(3)右击【表单设计器】窗口,在弹出的快捷菜单中,选择【数据环境】命令。(4)在弹出的【添加表或视图】对话框中,从【数据库中的表】中选择操作员表,单击【添加】按钮。然后单击【关闭】按钮,关闭【添加表或视图】对话框。(5)依次把数据环境中操作员表的用户名和密码字段拖到空表单的合适位置。在表单上出现用户名标签、密码标签以及Name属性为text证件号、text密码的文本框。调整这四个控件在表单上的位置。在【属性】对话框中分别设置文本框的name属性为no,password1。密码文本框的passwordchar属性为星号“*”。(6)单击表单控件工具栏中的标签控件,在表单中添加两个标签控件。设置该标签Caption属性分别为“客户管理系统”和“登录界面”,FontSize属性分别为16和18。 (7)添加两个按钮,按钮Caption属性分别为确定和退出。(8)在【属性】对话框中,设置该表单的Caption属性为:登录表单,name属性为:login。各控件在表单中的位置、大小等属性,如图4.1所示。图4.1登录界面表单布局完登录表单的控件后,开始设计表单的方法程序和事件代码。(1)Load事件Load事件在加载登录表单时运行。右击表单窗口,在弹出的快捷菜单中选择【代码】命令。登录表单的Load事件代码如下所示:settalkoff&&关闭返回执行状态的显示,默认为开setsafetyoff&&设置safety为关,删除数据库时不会出现提示,与新建的数据库同名时直接覆盖closeall&&关闭所有的数据库opendatabased:VFP98客户管理系统.dbcexclusive&&以独占方式打开数据库“客户管理系统”selecta&&选择工作区Aused:客户管理系统操作员.dbf&&在工作区A中打开操作员表 (2)Unload事件caozuoyuan=""&&变量caozuoyuan为空returncaozuoyuan&&返回变量值closeall&&关闭所有打开的数据库以及数据表【确定】按钮的Click事件的代码如下所示:Privatezj,mm,st&&定义私有变量st="密码不正确,请重新输入!"&&提示信息zj=alltrim(thisform.no.value)&&把输入的用户名值赋给变量zjmm=alltrim(thisform.password1.value)&&把输入密码赋值给mmlocateforzj==alltrim(操作员.证件号)&&查找人员配置表与zj相等的证件号iffound()andalltrim(操作员.密码)==mm&&如果找到相同的比较密码是否相同caozuoyuan=alltrim(操作员.证件号)&&变量caozuoyuan值为操作员表中证件号thisform.visible=.f.&&如果都正确,该界面不在显示dozhumenu.mpr&&执行菜单zhumenu.mprelsewaitwindowsttimeout2&&程序运行等2秒,显示密码不正确的提示信息Thisform.password1.value=""&&密码文本框为空Thisform.password1.setfocus&&密码文本框获得焦点endif【退出】按钮的Click事件代码如下所示:tuichu=messagebox("您确定要退出客户管理系统吗?",4+32+0,"客户管理系统")iftuichu=6caozuoyuan=""releasethisformendifquit 关闭表单设计器,在弹出的保存对话框中保存表单。文件命名为“登录表单“。在【项目管理器】对话框中,选择【文档】页面下【表单】中的【登录表单】。单击【运行】按钮。4.2修改密码表单设计修改密码表单主要用来完成修改密码的功能。为了系统的安全起见,密码用一段时间就要进行更换。在该表单中,单击“确定”按钮,进行密码的修改。单击“取消”按钮,取消密码修改的操作。表单的创建和登录表单的创建步骤相同,其中只有几个属性不同。(1)在数据环境中添加操作员表,将密码拖到表单的相应位置。把密码标签修改成“旧密码”,设置txt密码文本框的passwordchar属性为星号“*”,输入时显示占位符。(2)单击表单控件工具栏的标签控件,在表单中添加三个标签控件。标签控件的Caption属性分别为“密码修改”、“证件号”、“新密码”,FontSize属性值依次设为18、12。(3)单击表单控件工具栏中的文本框控件,在表单中添加一个文本框控件和一个组合框控件。设置该文本框的Name属性为password2。Passwordchar属性为星号“*”,输入时显示占位符。“Combo1”控件的Rowsource属性值为:操作员.证件号;Rowsourcetype属性值为:6——字段。(4)添加3个按钮,按钮的Caption属性为:“确定”、“取消”以及“退出”。(5)在【属性】对话框中,设置该表单的Caption属性为:密码修改。下面设计密码修改表单的方法程序和事件代码。【确定】按钮的Click事件代码如下所示:publicxselecta&&选择工作区aused:VFP98客户管理系统操作员.dbfx=alltrim(thisform.txt密码.value)&&用x保存旧密码replace操作员.密码withalltrim(thisform.password2.value)&&新密码代替旧密码messagebox("密码已修改",0+48,"提示")thisform.refresh 【取消】按钮的Click事件代码如下所示:replace操作员.密码withxmessagebox("放弃密码修改",0+48,"提示")thisform.refresh【退出】按钮的Click事件代码如下所示:thisform.refreshthisform.release关闭表单设计器,在弹出的保存对话框中保存表单。文件命名为【密码修改】在【项目管理器】对话框中,选择【文档】页面下【表单】中的【密码修改】。单击【运行】按钮。运行后的登录表单,如图4.2所示。图4.2运行结果4.3客户查询结果表单客户查询结果表单显示按一定条件查询出的客户的基本情况信息。查询条件有按客户编号查询、按联系人编号以及电话查询。这类表单由后面的客户查询表单调用。在表单界面中可以查看第一条记录、前一条记录、后一条记录、最后一条记录以及退出该界面。下面以按客户编号查询出的查询结果表单为例进行介绍。客户查询结果表单的设计步骤如下所示: (1)在【项目管理器】对话框的【文档】页面中,选中【表单】选项。单击【新建】按钮,弹出【新建表】对话框。(2)单击【新建表单】按钮。弹出【表单设计器】窗口。一个名为form1的空表单也随之出现在【表单设计器】窗口中。(3)右击【表单设计器】窗口,在弹出的快捷菜单中,选择【数据环境】命令。(4)在弹出的【添加表或视图】对话框中,从【数据库中的表】中选择客户表,单击【添加】按钮,再添加联系人表。然后单击【关闭】按钮,关闭【添加表或视图】对话框。(5)依次把数据环境中的字段拖到空表单的合适位置。在表单上出现客户编号标签、电话标签、单位名称标签、传真标签、邮政编码标签、E-mail标签、单位地址标签、区号标签以及联系人编号标签。Name属性依次为txt客户编号、txt电话、txt单位地址、txt传真、txt邮政编码、txtE-mail、txt单位地址txt区号、txt联系人编号等文本框。调整这些控件在表单上的位置。(6)添加五个按钮,按钮的Caption属性分别为:“第一个”、“上一个”、“下一个”、“最后一个”以及“退出”。(7)在【属性】对话框中,设置该表单的Caption属性为:查询结果,name属性为:tquery。(8)单击表单空间工具栏中的表格控件,在表单中添加一个表格控件。设置该表格的childorder属性为:联系人编号。设置表格的columncount属性为:7.设置表格的linkmaster属性为:客户表。设置该表格的recordsource属性为:联系人表。设置该表格的recordsourcetype属性为:”0-表“下面设计表单的方法程序和事件代码。首先设计表单的Init事件程序。因为该表单显示的是查询后的结果,所以只可以查看记录而不可以修改。因此将各个文本框的Enabled属性设置为False.该查询表单的Init事件程序代码如下所示:thisform.refresh&&刷新表单locateforkh=alltrim(客户表.客户编号)&&光标转到与客户编号匹配的记录Thisform.txt客户编号.enabled=.f.&&客户编号文本框不可修改Thisform.txt电话.enabled=.f.&&电话文本框不可修改 Thisform.txt单位名称.enabled=.f.&&单位名称文本框不可修改Thisform.txt传真.enabled=.f.&&传真文本框不可修改Thisform.txt邮政编码.enabled=.f.&&邮政编码文本框不可修改Thisform.txtEMAIL别.enabled=.f.&&EMAIL文本框不可修改Thisform.txt单位地址.enabled=.f.&&单位地址文本框不可修改Thisform.txt区号.enabled=.f.&&区号文本框不可修改Thisform.txt联系人编号.enabled=.f.&&联系人编号文本框不可修改【第一个】按钮的Click事件的代码如下所示:GOTOP&&指针指向第一条记录THIS.ENABLED=.T.&&该记录获得焦点THISFORM.COMMAND2.ENABLED=.F.&&按钮组中的按钮2不能获得焦点THISFORM.COMMAND3.ENABLED=.T.&&按钮组中的按钮3获得焦点THISFORM.COMMAND4.ENABLED=.T.&&按钮组中的按钮4获得焦点THISFORM.COMMAND5.ENABLED=.T.&&按钮组中的按钮5获得焦点THISFORM.REFRESH&&刷新表单【上一个】按钮的Click事件的代码如下所示:【上一个】按钮的Click事件的代码如下所示:SKIP-1&&指针指向前一条记录THISFORM.COMMAND1.ENABLED=.T.&&按钮组中得按钮1获得焦点THISFORM.COMMAND3.ENABLED=.T.&&按钮组中得按钮3获得焦点THISFORM.COMMAND4.ENABLED=.T.&&按钮组中得按钮4获得焦点THISFORM.COMMAND5.ENABLED=.T.&&按钮组中得按钮5获得焦点THISFORM.REFRESH&&刷新表单IFBOF()&&判断指针是否在表头THIS.ENABLED=.F.&&该记录不能获得焦点ELSETHIS.ENABLED=.T.&&该记录获得焦点ENDIF THISFORM.REFRESH&&刷新表单skip-1&&指针指向前一条记录ifbof()&&判断指针是否在表头thisform.commandgroup1.command2.enabled=.t.thisform.commandgroup1.command1.enabled=.f.thisform.commandgroup1.command3.enabled=.f.thisform.commandgroup1.command4.enabled=.t.elsethisform.commandgroup1.command2.enabled=.t.thisform.commandgroup1.command1.enabled=.t.thisform.commandgroup1.command3.enabled=.t.thisform.commandgroup1.command4.enabled=.t.endifthisform.refresh&&刷新表单【下一个】按钮的Click事件的代码如下所示:SKIP&&指针指向下一条记录THISFORM.COMMAND1.ENABLED=.T.&&按钮组中的按钮1获得焦点IFEOF()&&判断指针是否在表尾THIS.ENABLED=.F.&&该记录不能获得焦点THISFORM.COMMAND1.ENABLED=.T.&&按钮组中的按钮1获得焦点THISFORM.COMMAND2.ENABLED=.T.&&按钮组中的按钮2获得焦点THISFORM.COMMAND3.ENABLED=.F.&&按钮组中的按钮3不能获得焦点THISFORM.COMMAND5.ENABLED=.T.&&按钮组中的按钮5获得焦点THISFORM.REFRESH&&刷新表单ELSETHIS.ENABLED=.T.&&该记录获得焦点THISFORM.COMMAND1.ENABLED=.T.&&按钮组中的按钮1获得焦点THISFORM.COMMAND2.ENABLED=.T.&&按钮组中的按钮2获得焦点THISFORM.COMMAND3.ENABLED=.T.&&按钮组中的按钮3获得焦点 THISFORM.COMMAND5.ENABLED=.T.&&按钮组中的按钮5获得焦点ENDIFTHISFORM.REFRESH&&刷新表单【退出】按钮的Click事件的代码如下所示:Thisform.refreshThisform.release关闭表单设计器,在弹出的保存对话框中保存表单。文件命名为“学生档案浏览”。在【项目管理器】对话框中,选择【文档】页面中【表单】选项下的【客户查询结果】表单。单击【运行】按钮,运行后的表单如图4.3所示。图4.3运行后的表单按照与上面类似的步骤设计出按联系人查询的查询结果表单。因为与上面的几乎一样所以在此就不重复了。4.4联系人查询结果表单 联系人查询结果表单显示按一定条件查询出的联系人的信息。在该界面中可以查看第一条记录、前一条记录、后一条记录、最后一条记录以及退出该界面。下面介绍联系人查询结果表单设计步骤。联系人查询结果表单的设计步骤如下所示:(1)在【项目管理器】对话框的【文档】页面中,选中【表单】选项。单击【新建】按钮,弹出【新建表】对话框。(2)单击【新建表单】按钮。弹出【表单设计器】窗口。一个名为form1的空表单也随之出现在【表单设计器】窗口中。(3)右击【表单设计器】窗口,在弹出的快捷菜单中,选择【数据环境】命令。(4)在弹出的【添加表或视图】对话框中,从【数据库中的表】中选择联系人表,单击【添加】按钮。接着添加客户表,然后单击【关闭】按钮,关闭【添加表或视图】对话框。(5)依次把数据环境中的字段拖到空表格的合适位置。在表单上出现联系人编号标签、姓名标签、性别标签、单位名称标签、电话标签、生日标签、爱好标签等,以及相应编辑框。Name属性依次为txt联系人编号、txt姓名、txt性别、txt单位名称、txt电话、txt生日、txt爱好等文本框。(6)添加五个按钮,按钮的Caption属性为:第一个、上一个、下一个、最后一个以及退出。(7)在【属性】对话框中,设置该表的Caption属性为:成绩浏览。(8)单击表单空间工具栏中的表格控件,在表单中添加一个表格控件。设置该表格的childorder属性为:联系人编号。设置表格的columncount属性为9.设置表格的linkmaster属性为:联系人表。设置该表格的recordsource属性为:客户表。设置该表格的recordsourcetype属性为:“0-表”。(9)选中表格的列,设置列的数据源分别为:客户表.客户编号、客户表.电话、客户表.单位名称、客户表.传真、客户表.邮政编码、客户表.单位地址、客户表.区号、客户表.联系人编号以及客户表.email。列标题分别为;客户编号、电话、单位名称、传真、邮政编码、单位地址、区号、联系人编号以及email。(10)单击表单控件工具栏中的标签控件,在表单中添加一个标签控件。设置该标签控件的caption属性为:联系人信息查询结果,Fontsize属性值设为:18。 下面设计该表单的方法程序和事件代码。首先设计表单的Init事件。Init事件在初始化表单时运行。设计的方法是:右击表单窗口,在弹出的快捷菜单中选择【代码】命令,在弹出的对话框中编写事件程序。因为该表单显示的是查询后的结果,所以记录只可以查看不可以修改。因此将各个文本框控件的Enabled属性设置为False.该查询表单的Init事件程序代码如下所示:THISFORM.REFRESH&&刷新表单LOCATEFORbh=ALLTRIM(联系人.联系人编号)THISFORM.txt联系人编号.enabled=.f.&&联系人编号文本框不可修改THISFORM.txt姓名.enabled=.f.&&姓名文本框不可修改THISFORM.txt性别.enabled=.f.&&性别文本框不可修改THISFORM.txt单位名称.enabled=.f.&&单位名称文本框不可修改THISFORM.txt电话.enabled=.f.&&电话文本框不可修改THISFORM.txt生日.enabled=.f.&&生日类型文本框不可修改THISFORM.txt爱好.enabled=.f.&&爱好文本框不可修改【第一个】按钮的Click事件的代码如下所示:GOTOP&&指针指向第一条记录THIS.ENABLED=.T.&&该记录获得焦点THISFORM.COMMAND2.ENABLED=.F.&&按钮组中的按钮2不能获得焦点THISFORM.COMMAND3.ENABLED=.T.&&按钮组中的按钮3不能获得焦点THISFORM.COMMAND4.ENABLED=.T.&&按钮组中的按钮4不能获得焦点THISFORM.COMMAND5.ENABLED=.T.&&按钮组中的按钮5不能获得焦点THISFORM.REFRESH&&刷新表单【上一个】按钮的Click事件的代码如下所示:SKIP-1&&指针指向前一条记录THISFORM.COMMAND1.ENABLED=.T.&&按钮组中的按钮1获得焦点 THISFORM.COMMAND3.ENABLED=.T.&&按钮组中的按钮3获得焦点THISFORM.COMMAND4.ENABLED=.T.&&按钮组中的按钮4获得焦点THISFORM.COMMAND5.ENABLED=.T.&&按钮组中的按钮5获得焦点THISFORM.REFRESH&&刷新表单IFBOF()&&判断指针是否在表头THIS.ENABLED=.F.&&该记录不能获得焦点ELSETHIS.ENABLED=.T.&&该记录获得焦点ENDIFTHISFORM.REFRESH&&刷新表单【下一个】按钮的Click事件的代码如下所示:SKIP&&指针指向下一个条记录THISFORM.COMMAND1.ENABLED=.T.&&按钮组中的按钮1获得焦点IFEOF()&&判断指针是否在表尾THIS.ENABLED=.F.&&该记录不能获得焦点THISFORM.COMMAND1.ENABLED=.T.&&按钮组中的按钮1获得焦点THISFORM.COMMAND2.ENABLED=.T.&&按钮组中的按钮2获得焦点THISFORM.COMMAND3.ENABLED=.F.&&按钮组中的按钮3不能获得焦点THISFORM.COMMAND5.ENABLED=.T&&按钮组中的按钮5获得焦点THISFORM.REFRESH&&刷新表单ELSETHIS.ENABLED=.T.THISFORM.COMMAND1.ENABLED=.T.&&按钮组中的按钮1获得焦点THISFORM.COMMAND2.ENABLED=.T.&&按钮组中的按钮2获得焦点THISFORM.COMMAND3.ENABLED=.T.&&按钮组中的按钮3获得焦点THISFORM.COMMAND5.ENABLED=.T.&&按钮组中的按钮5获得焦点ENDIF THISFORM.REFRESH&&刷新表单【最后一个】按钮的Click事件的代码如下所示:GOBOTTOM&&指针指向第一条记录THIS.ENABLED=.T.&&该记录获得焦点THISFORM.COMMAND1.ENABLED=.T.&&按钮组中的按钮1获得焦点THISFORM.COMMAND2.ENABLED=.T.&&按钮组中的按钮2获得焦点THISFORM.COMMAND3.ENABLED=.F.&&按钮组中的按钮3不能获得焦点THISFORM.COMMAND5.ENABLED=.T.&&按钮组中的按钮5获得焦点THISFORM.REFRESH&&刷新表单【退出】按钮的Click事件的代码如下所示:thisform.refresh&&刷新表单thisform.release&&释放表单资源关闭表单设计器,在弹出的保存对话框中保存表单。文件命名为“联系人查询结果”。在项目管理器对话框中,选择【文档】页面中【表单】选项下的【联系人查询结果】表单。单击【运行】按钮,运行后的表单如图4.4所示。 图4.4表单的运行结果4.5录入客户信息表单录入客户信息表单的作用是完成客户信息的录入。可以添加或者删除一条客户记录。(1)在【项目管理器】对话框的【文档】页面中,选中【表单】选项。单击【新建】按钮,弹出【新建表】对话框。(2)单击【新建表单】按钮。弹出【表单设计器】窗口。一个名为form1的空表单也随之出现在【表单设计器】窗口中。(3)右击【表单设计器】窗口,在弹出的快捷菜单中,选择【数据环境】命令。(4)在弹出的【添加表或视图】对话框中,从【数据库中的表】中选客户表,单击【添加】按钮。然后单击【关闭】按钮,关闭【添加表或视图】对话框。(5)依次把数据环境中的字段拖到空表单的合适位置。在表单上出现客户编号标签、电话标签、单位名称标签、传真标签、邮政编码标签、单位地址标签、区号标签、联系人编号标签以及email标签。Name属性依次为txt客户编号、txt电话、txt单位名称、txt传真、txt邮政编码、txt单位地址、txt联系人编号、txtemail。(6)添加7个按钮,按钮的Caption属性分别为:第一个、上一个、下一个、最后一个、添加、删除、退出。 (7)在属性对话框中,设置该表单的Caption属性为“录入客户信息”。下面设计该表单的方法程序和事件代码。首先设计表单的Init事件。Init事件在初始化成绩录入表单时使用。设计的方法是:双击表单窗口,在弹出的对话框中编写事件程序。因为该表单显示的内容是可以修改的,设置文本框的Enabled属性为true。该查询表单的Init事件程序代码如下所示:Select客户表&&选择客户表useD:VFP98客户管理系统客户表.dbfexclusive&&以独占的方式打开客户表【添加】按钮的Click事件代码如下所示:appendblank&&添加一条空记录thisform.refresh&&刷新表单【删除】按钮的Click事件代码如下所示:ifmessagebox("你的确删除该记录吗?",4+64+256,"提示")=6&&是否要删除delete&&删除记录pack&&紧接下条记录releasethisform&&释放表单资源endif【退出】按钮的Click事件代码如下所示:thisform.refresh&&刷新表单used:VFP98客户管理系统客户表.dbfshar&&恢复共享方式thisform.release&&释放表单资源第一个、上一个、下一个以及最后一个按钮的Click事件代码可参照上面的例子。关闭表单设计器,在弹出的保存对话框中保存表单。文件命名为:“录入客户信息”。在【项目管理器】对话框中,选择【文档】页面中【表单】选项下的【录入客户信息】表单。单击【运行】按钮,运行后的表单如图4.5所示。 图4.5表单的运行界面4.6录入联系人信息录入联系人信息表单主要的作用是添加或者删除一个联系人的基本情况信息。录入联系人表单的设计步骤如下所示:(1)在【项目管理器】对话框的【文档】页面中,选中【表单】选项。单击【新建】按钮,弹出【新建表】对话框。(2)单击【新建表单】按钮。弹出【表单设计器】窗口。一个名为form1的空表单也随之出现在【表单设计器】窗口中。(3)右击【表单设计器】窗口,在弹出的快捷菜单中,选择【数据环境】命令。(4)在弹出的【添加表或视图】对话框中,从【数据库中的表】中选择联系人,单击【添加】按钮。然后单击【关闭】按钮,关闭【添加表或视图】对话框。(5)依次把数据环境中的字段拖到空表单的合适位置。在表单上出现标签联系人编号标签、姓名称标签、性别标签、单位名称标签、电话标签、生日标签、爱好标签。Name属性依次为txt联系人编号、txt姓名、txt性别、txt单位名称、txt电话、txt生日、txt爱好等。调整这些控件在表单上的位置。(6)添加7个按钮,按钮的Caption属性分别为:第一个、上一个、下一个、最后一个、添加、删除以及退出。(7)在【属性】对话框中,设置该表单的Caption属性为“录入联系人”。下面设计录入联系人信息表单的方法程序和事件代码。首先设计表单的Init事件程序。 Init事件在初始化录入表单时运行。设计的方法是:双击表单窗口,在弹出的对话框中编写事件代码。因为该表单显示的内容是可以修改的,设置文本框的Enabled属性为true。该数据录入表单的Init事件程序代码如下所示:Select联系人&&选择联系人表useD:VFP98客户管理系统联系人.dbfexclusive&&以独占方式打开联系人表【添加】按钮的Click事件代码如下所示:appendblank&&添加一条空记录thisform.refresh&&刷新表单【删除】按钮的Click事件代码如下所示:ifmessagebox("你的确删除该记录吗?",4+64+256,"提示")=6&&是否要删除delete&&删除记录pack&&紧接下条记录releasethisform&&释放表单endif【退出】按钮的Click事件代码如下所示:thisform.refresh&&刷新表单used:VFP98客户管理系统联系人.dbfshar&&恢复共享方式thisform.release&&释放表单资源第一个、上一个、下一个、最后一个按钮的Click事件代码可参照上面的例子。关闭表单设计器,在弹出的保存对话框中保存表单。文件命名为:“录入联系人信息”。在【项目管理器】对话框中,选择【文档】页面中【表单】选项下的【录入联系人信息】表单。单击【运行】按钮,运行后的表单如图4.6所示。 图4.6表单的运行界面4.7录入服务信息表单(1)在【项目管理器】对话框的【文档】页面中,选中【表单】选项。单击【新建】按钮,弹出【新建表】对话框。(2)单击【新建表单】按钮。弹出【表单设计器】窗口。一个名为form1的空表单也随之出现在【表单设计器】窗口中。(3)右击【表单设计器】窗口,在弹出的快捷菜单中,选择【数据环境】命令。(4)在弹出的【添加表或视图】对话框中,从【数据库中的表】中选择服务表,单击【添加】按钮。然后单击【关闭】按钮,关闭【添加表或视图】对话框。(5)依次把数据环境中的字段拖到空表单的合适位置。在表单上出现标签部门代码标签、客户代码称标签、服务项目标签、服务评价标签、金额标签。Name属性依次为txt部门代码、txt客户代码、txt服务项目、txt服务评价、txt金额等。调整这些控件在表单上的位置。(6)添加7个按钮,按钮的Caption属性分别为:第一个、上一个、下一个、最后一个、添加、删除以及退出。(7)在【属性】对话框中,设置该表单的Caption属性为“录入服务信息”。 图4.7表单运行结果4.8客户查询表单设计客户查询表单是根据一定的条件查询出客户的信息。单击“查询”按钮,调出“客户查询结果”表单。可分为按客户编号查询、按电话查询、按联系人编号查询。4.8.1按客户编号查询表单通过选择客户的客户编号,调用“客户查询结果”表单,查询出客户的信息。数据环境:客户表按客户编号查询表单的设计步骤如下所示:(1)在【项目管理器】对话框的【文档】页面中,选中【表单】选项。单击【新建】按钮,弹出【新建表】对话框。(2)单击【新建表单】按钮。弹出【表单设计器】窗口。一个名为form1的空表单也随之出现在【表单设计器】窗口中。(3)右击“表单设计器”窗口,在弹出的快捷菜单中,选择【数据环境】命令。(4)在弹出的【添加表或视图】对话框中,从【数据库中的表】中选择客户表,单击【添加】按钮。然后单击【关闭】按钮,关闭【添加表或视图】对话框。(5)在表单控件工具栏选择"标签"控件,在空表单上拖出标题标签,设置caption属性为:按客户编号查询;设置fontsize属性为18.再次选择“标签” 控件,在表单上拖出一个标签,设置caption属性为请选择客户的编号。设置fontsize属性为12。(6)在表单控件工具栏选择组合框控件,在空表单上拖出组合框,右击添加的组合框,在【属性】对话框中选择【数据】页面,设置controlsource属性为客户表.客户编号。设置Rowsource属性为客户表.客户编号。设置rowsourcetype属性为6-字段。设置columncount为1。(7)选择“命令按钮”控件,在表单上放置两个命令按钮。其caption属性分别为“查询”和“退出”。(8)设置表单的caption属性为:客户编号查询。Name属性为:mform。设计完成的表单如图4.81所示:下面设置该表单的方法程序和事件代码:首先设计表单的init事件Init事件的代码如下所示:PUBLICkhUSEDVFP98客户管理系统客户表THISFORM.REFRESHGOTOPTHISFORM,combo1.value=客户表.客户编号【查询】按钮的Click事件代码如下所示:kh=ALLTRIM(THISFORM.combo1.value)&&把选择的电话信息赋值给DhTHISFORM.RELEASE&&释放表单资源DOFORMD:VFP98客户管理系统客户查询结果&&调用客户查询结果表单【退出】按钮的Click事件代码如下所示:THISFORM.RELEASE关闭表单设计器,在弹出的保存对话框中保存表单。文件命名为“客户编号查询”。在【项目管理器】对话框中,选择【文档】页面下【表单】中的【客户编号查询】表单。单击【运行】按钮,运行后的表单如下图所示。 图4.8表单运行界面4.8.2按联系人查询表单按联系人查询表单的设计步骤如下所示:(1)在【项目管理器】对话框的【文档】页面中,选中【表单】选项。单击【新建】按钮,弹出【新建表】对话框。(2)单击【新建表单】按钮。弹出【表单设计器】窗口。一个名为form1的空表单也随之出现在【表单设计器】窗口中。(3)右击“表单设计器”窗口,在弹出的快捷菜单中,选择【数据环境】命令。(4)在弹出的【添加表或视图】对话框中,从【数据库中的表】中选择客户表,单击【添加】按钮。然后单击【关闭】按钮,关闭【添加表或视图】对话框。(5)在表单控件工具栏选择"标签"控件,在空表单上拖出标题标签,设置caption属性为:按联系人编号查询;设置fontsize属性为18.再次选择“标签”控件,在表单上拖出一个标签,设置caption属性为请选择客户的联系人编号。设置fontsize属性为12。(6)在表单控件工具栏选择组合框控件,在空表单上拖出组合框,右击添加的组合框,在【属性】对话框中选择【数据】页面,设置controlsource属性为客户表.联系人编号。设置Rowsource属性为客户表.联系人编号。设置rowsourcetype属性为6-字段。设置columncount为1。(7)选择“命令按钮”控件,在表单上放置两个命令按钮。其caption属性分别为“查询”和“退出”。 (8)设置表单的caption属性为:联系人编号查询。Name属性为:mform。设计完成的表单如图4.9所示:下面设置该表单的方法程序和事件代码:首先设计表单的init事件Init事件的代码如下所示:PUBLICIxUSED王梅客户管理系统客户表THISFORM.REFRESHGOTOPTHISFORM,combo1.value=客户表.联系人编号【查询】按钮的Click事件代码如下所示:Ix=ALLTRIM(THISFORM.combo1.value)&&把选择的联系人编号信息赋值给IxTHISFORM.RELEASE&&释放表单资源DOFORMD:VFP98客户管理系统客户查询结果&&调用客户查询结果表单【退出】按钮的Click事件代码如下所示:THISFORM.RELEASE关闭表单设计器,在弹出的保存对话框中保存表单。文件命名为“联系人查询”。在【项目管理器】对话框中,选择【文档】页面下【表单】中的【联系人查询】表单。单击【运行】按钮,运行后的表单如下图所示。接下来设计按电话查询表单,方法与上两个查询表单相同,在此略去。4.9联系人查询表单设计联系人查询表单的功能是根据一定的条件查询出联系人的基本信息。单击“查询”按钮可以调出“联系人查询结果”表单。共分为联系人编号查询、联系热恩姓名查询和联系人生日查询。因为设计方法与客户查询表单一样,只是所调用表单有改动,所以在此不再设计。4.9查询部门电话表单设计 查询部门电话表单主要的作用是根据部门的代码查询出该部门的所有电话信息。可分为部门电话查询结果表单和部门电话查询表单。4.9.1部门电话查询结果表单部门电话查询结果表单是根据部门代码查询出的部门电话信息表单。在该界面中可以查看第一条记录、前一条记录、后一条记录、最后一条记录以及退出该界面。部门电话查询结果表单的设计步骤如下所示:(1)在【项目管理器】对话框的【文档】页面中,选中【表单】选项。单击【新建】按钮,弹出【新建表】对话框。(2)单击【新建表单】按钮。弹出【表单设计器】窗口。一个名为form1的空表单也随之出现在【表单设计器】窗口中。(3)右击【表单设计器】窗口,在弹出的快捷菜单中,选择【数据环境】命令。(4)在弹出的【添加表或视图】对话框中,从【数据库中的表】中选择部门电话表,单击【添加】按钮。然后单击【关闭】按钮,关闭【添加表或视图】对话框。(5)依次把数据环境中的字段拖到空表单的合适位置。在表单上出现标签部门代码标签、处室名称标签、房间号标签、分机号标签、直拨电话标签。Name属性依次为txt部门代码、txt处室名称、txt房间号、txt分机号、txt直拨电话等。调整这些控件在表单上的位置。(6)添加5个按钮,按钮的Caption属性分别为:第一个、上一个、下一个、最后一个以及退出。(7)在【属性】对话框中,设置该表单的Caption属性为“部门电话”Name属性为:form1。表单的方法程序和事件代码:表单的Init事件代码程序,应记录只可以查看不可以修改。所以将各个文本框控件的Enabled属性设置为False。THISFORM.REFRESH&&刷新表单LOCATEFORdm=ALLTRIM(部门电话.部门代码) THISFORM.txt.部门代码.enabled=.f.&&部门代码文本框不可修改THISFORM.txt.处室名称.enabled=.f.&&处室名称文本框不可修改THISFORM.txt房间号.enabled=.f.&&房间号文本框不可修改THISFORM.txt分机号.enabled=.f.&&分机文本框不可修改THISFORM.txt直拨电话.enabled=.f.&&直播电话文本框不可修改【退出】按钮的Click时间代码如下所示:THISFORM.REFRESHTHISFORM.RELEASE【第一个】按钮的Click时间代码如下所示:GOTOP&&指针指向第一条记录THIS.ENABLED=.T.&&该记录获得焦点THISFORM.COMMAND2.ENABLED=.F.&&按钮组中的按钮2不能获得焦点THISFORM.COMMAND3.ENABLED=.T.&&按钮组中的按钮3能获得焦点THISFORM.COMMAND4.ENABLED=.T.&&按钮组中的按钮4能获得焦点THISFORM.COMMAND5.ENABLED=.T&&按钮组中的按钮5能获得焦点THISFORM.REFRESH&&刷新表单【上一个】按钮的Click时间代码如下所示:SKIP-1&&指针指向前一条记录THISFORM.COMMAND1.ENABLED=.T.&&按钮组中的按钮1获得焦点THISFORM.COMMAND3.ENABLED=.T.&&按钮组中的按钮3获得焦点THISFORM.COMMAND4.ENABLED=.T.&&按钮组中的按钮4获得焦点THISFORM.COMMAND5.ENABLED=.T.&&按钮组中的按钮5获得焦点THISFORM.REFRESH&&刷新表单IFBOF()&&判断指针是否在表头THIS.ENABLED=.F.&&该记录不能获得焦点ELSETHIS.ENABLED=.T.&&该记录获得焦点ENDIF THISFORM.REFRESH&&刷新表单【下一个】按钮的Click时间代码如下所示:SKIP&&指针指向下一个条记录THISFORM.COMMAND1.ENABLED=.T.&&按钮组中的按钮1获得焦点IFEOF()&&判断指针是否在表尾THIS.ENABLED=.F.&&该记录不能获得焦点THISFORM.COMMAND1.ENABLED=.T.&&按钮组中的按钮1获得焦点THISFORM.COMMAND2.ENABLED=.T.&&按钮组中的按钮2获得焦点THISFORM.COMMAND3.ENABLED=.F.&&按钮组中的按钮3不能获得焦点THISFORM.COMMAND5.ENABLED=.T.&&按钮组中的按钮5获得焦点THISFORM.REFRESH&&刷新表单ELSETHIS.ENABLED=.T.&&该记录获得THISFORM.COMMAND1.ENABLED=.T.&&按钮组中的按钮1获得焦点THISFORM.COMMAND2.ENABLED=.T.&&按钮组中的按钮2获得焦点THISFORM.COMMAND3.ENABLED=.T.&&按钮组中的按钮3获得焦点THISFORM.COMMAND5.ENABLED=.T.&&按钮组中的按钮5获得焦点ENDIFTHISFORM.REFRESH&&刷新表单【最后一个】按钮的Click时间代码如下所示:GOBOTTOM&&指针指向第一条记录THIS.ENABLED=.T.&&该记录获得焦点THISFORM.COMMAND1.ENABLED=.T.&&按钮组中的按钮1获得焦点THISFORM.COMMAND2.ENABLED=.T.&&按钮组中的按钮2获得焦点THISFORM.COMMAND3.ENABLED=.F.&&按钮组中的按钮3不能获得焦点THISFORM.COMMAND5.ENABLED=.T.&&按钮组中的按钮5获得焦点THISFORM.REFRESH&&刷新表单 关闭表单设计器,在弹出的保存对话框中保存表单,文件命名为“部门电话查询结果”。该表单的运行如图所示:4.9表单运行结果4.9.2查询部门电话表单设计查询部门电话表单是根据选择的部门代码查询出的部门电话信息。单击“查询”按钮,调用“部门电话查询结果”表单。该表单的设计方法与客户查询表单设计一样,所以在此不再做重复。4.9.2查询区号邮编表单设计注:该表单的设计方法与部门电话查询表单设计的方法一样,故此处略去!第五章菜单设计在应用程序中,用户登录系统后首先看到的是菜单系统。在VisualFoxPro6.0中,通过菜单设计器可以方便、快捷地设计菜单。另外菜单也起到组织应用系统中各模块的作用,如果菜单设计得好,用户使用起来就比较方便。5.1布局菜单创建菜单之前首先进行菜单的布局,在本系统中,主要包含以下菜单:(1)文件:新建、打开、保存、另存为、关闭、页面设置以及退出;(2)编辑:撤销、重做、剪切、复制以及粘贴;(3)数据录入:录入客户信息、录入联系人信息、录入服务信息。(4)信息查询:查询部门电话、查询客户、查询区号邮编以及查询联系人。 (5)报表输出:客户信息、联系人信息、服务信息以及区号邮编。(6)系统维护:修改密码。(7)退出系统。(8)帮助:帮助主题和关于。5.2创建自定义菜单前面已经布局好了菜单,下面就使用【菜单设计器】把布局好的菜单设计出来。㈠创建菜单(1)在【项目管理器】对话框的【其他】页面中,选中【菜单】选项。单击【新建】按钮,弹出【新建菜单】对话框。(2)在【新建菜单】对话框中,单击【菜单】按钮,弹出【菜单设计器】对话框,如图5.1所示。图5.1【菜单设计器】对话框(3)选中【菜单名称】列的菜单名,在【结果】列右边出现【创建】按钮。单击【创建】按钮,弹出一个空的【菜单设计器】对话框。在该对话框中输入子菜单的名称。(4)单击【插入栏】按钮,弹出【插入系统菜单栏】对话框,如图5.2所示。 图5.2【插入系统菜单栏】对话框(5)在【插入系统菜单栏】对话框中选择需要插入的菜单,单击【插入】按钮,即可插入到子菜单中。单击【关闭】按钮,退出【插入系统菜单栏】对话框,返回菜单设计器。(6)单击【菜单名称】左边的方块,出现双箭头,通过上下拖动来调整菜单的顺序。(7)在菜单之间的合适位置插入分隔线。具体的方法是:将光标放在需要添加分隔线的位置,单击【插入】按钮,出现一个新菜单项,将菜单名称改为“-”,如图5.3所示。插入分隔线的目的是为了增加菜单的可读性。图5.3插入分隔线(8)单击【菜单级】中的三角箭头,选择【菜单栏】选项,就可以返回上一级菜单设计器。(9)重复上述步骤4~9设计【编辑】菜单项的子菜单。 ㈡在子菜单中调用表单下面介绍菜单项中包含子菜单,在子菜单中调用表单的步骤。首先设计“数据录入”菜单。(1)选中【菜单名称】列的菜单名,在【结果】列右边出现【创建】按钮。单击【创建】按钮,弹出一个空的【菜单设计器】对话框。在该对话框中输入子菜单的名称。(2)在【录入客户信息】行的【结果】列中选择【命令】选项,默认的是【子菜单】。(3)在【选项】文本框中输入“doformD:王梅客户管理系统录入客户信息”。(三)在菜单中使用过程在菜单中使用过程。即在结果列中选择过程选项,然后编辑过程代码。首先设计【退出系统】菜单,设计的步骤如下:(1)选中菜单名称列的菜单名“退出系统”,在结果列中选择过程选项。(2)单击结果列的创建按钮,弹出一个空的菜单设计器过程编辑界面,在该界面中输入过程代码。【退出菜单】的过程代码如下所示:SETPROCEDURETOsetproceduretoD:VFP98客户管理系统zhumenu.mpr&&指明该过程的位置closedatabases&&关闭数据库closeall&&关闭所有的表和数据clearevents&&清除事件循环quit&&退出系统接着设计报表输出菜单的子菜单及其过程代码(1)选中菜单名称列的菜单名,在结果列右边创建按钮弹出一个【菜单设计器】对话框。(2)在【客户信息】行的【结果】列中选择【过程】选项,默认的是子菜单。(3)单击结果列的创建按钮,弹出一个空的菜单设计器过程编辑界面,在该界面中输入过程代码。 客户信息菜单的过程代码如下所示:SETFILTERTO&&指定访问当前表中记录时满足的条件REPORTFORMD:VFP98客户管理系统客户信息&&从客户信息报表中输出同理可设计出服务信息菜单、联系人信息菜单、区号邮编菜单的过程代码,此处不再一一写出。第六章报表设计在系统中需要打印出客户信息、服务信息、联系人信息和区号邮编信息,所以首先要设计出客户信息报表服务信息报表、联系人信息报表、区号邮编报信息报表。下面详细介绍报表的使用方法以及具体报表的设计过程。6.1启动报表设计器使用【报表设计器】之前,先要进行启动,启动【报表设计器】的步骤如下所示:(1)在【项目管理器】对话框的【文档】页面中,选中【报表】选项。单击【新建】按钮,弹出【新建报表】对话框。(2)在【新建报表】对话框中,单击【报表向导】按钮,弹出一个【向导选取】窗口,如图6.1所示图6.1【向导选取】6.2客户信息报表(1)右击【报表设计器】窗口,在弹出的快捷菜单中选择【数据环境】命令。(2)右击【数据环境设计器】,选择添加命令,选择客户表,单击添加。(3)选择数据环境中的字段,将其拖动到【报表设计器】的细节区。(4)单击选定对象按钮,调整字段名的位置,单击布局工具栏的顶边对齐。 (5)单击工具栏中的标签按钮,在页标头区设置与细节区字段名相应的页标头。(6)通过菜单栏的【报表】==》【标题/总结】命令,弹出对话框,选择【标题带区】。(7)单击菜单栏的预览命令,预览界面。(8)保存命令报表为“客户信息”。用类似的方法设计出服务信息报表、联系人信息报表、区号邮编报表。第七章主程序设计在VisualFoxPro6.0中,主程序不是必须有的。应用程序的入口也可以是表单或者菜单。在VisualFoxPro6.0中应用程序的入口称作主文件,是数据库管理系统最先执行的程序。使用主程序作为主文件比较规范,尽量使用主程序作为应用程序的入口。主程序一般具有如下功能:(1)对系统进行初始化,设置系统的运行状态参数。(2)定义全局变量。(3)设置系统工具栏。(4)调用系统登录界面。(5)结束时清理环境。7.1建立主程序首先建立主程序,建立的步骤如下所示:(1)在【项目管理器】对话框的【代码】页面中,选中【程序】选项,单击【新建】按钮。(2)在弹出的【程序】窗口中编写程序代码,如图7.1所示。在主程序中首先要初始化环境。主要使用SET命令来初始化环境,设置环境变量的初值或者状态。主程序的代码为:setsysmenuoff&&关闭系统菜单显示setsysmenuto&&关闭系统菜单settalkoff&&关闭屏幕显示setsafetyoff&&关闭重名文件覆盖信息提示 doform登录表单.scxsettalkonsetsafetyonreadevents&&响应用户输入_screen.visible=.f.关闭程序窗口,在弹出的保存对话框中,命名程序为MAINPRO。在主程序中,readevents语句不可缺少,它用于启动事件循环。如果没有该语句,运行程序时,程序只是一闪而过,马上就停止了。在退出时,要有相应的清除循环的程序,系统才能正常退出。否则只能通过Ctrl+Alt+Del组合键来强制结束。7.2设置主文件主程序建好后,就可以把主程序设置为主文件,作为应用程序的入口。设置主文件的步骤如下所示:(1)在【项目管理器】中选择要设置为主文件的文件。在【项目管理器】中,选择【代码】页面中【程序】下的程序文件MAINPRO。(2)单击菜单栏的【项目】【设置主文件】命令。被设置的文件以粗体形式显示,如图7.2所示。第八章连编应用程序系统至此,数据库、数据库表、表单、菜单、报表以及主文件都已经设计完成,现在就可以把各个分散的功能连编成应用程序或者可执行文件了。在连编应用程序之前,要把应用程序中所用到的组件添加到项目管理器中。列如添加WIZEMBSS.VCX和WIZBTNS.VCX可视类库。在VFP环境下运行表单,vfp98目录下默认包含这两个可视类库,所以不需要添加。在连编应用程序时就需要将其添加到项目中,因为连编后的应用系统不一定运行在VFP环境下。添加的步骤如下所示:(1)在【项目管理器】对话框中,单击【添加】按钮,弹出【打开】对话框。 (2)找到目录D:VFP98客户管理系统WIZARDS下的可视类库WIZEMBSS.VCX和WIZBTNS.VCX,单击【确定】按钮,就可以将其添加到【项目管理器】对话框的【类】页面中,如图8.1所示。连编应用程序的步骤如下所示:(1)在【项目管理器】对话框的【代码】页面中,选择程序中的主程序main。单击【连编】按钮,弹出【连编选项】对话框。如图8.2所示。在【连编选项】对话框中,选择【连编应用程序】选项,则生成一个后缀为app的应用程序;该文件需要在VisualFoxPro系统下运行。选择【连编可执行文件】选项,如果没有错误,可连编成一个后缀为EXE的可执行文件。该文件可以不依赖于VisualFoxPro系统运行。(2)选择【连编可执行文件】选项,以及【重新编译全部文件】和【显示错误】选项。单击【确定】按钮,在弹出的保存对话框中,命名应用程序为“客户管理系统”。单击【确定】按钮,就开始进行应用程序的连编。图8.1【连编选项】对话框第九章制作安装盘完成了应用系统的连编以后,就可以为应用程序制作安装程序和发布磁盘了。该过程可以通过【安装向导】来完成。客户管理系统安装程序的制作步骤如下所示:(1)单击菜单栏的【工具】【向导】【安装】命令,弹出【安装向导】对话框。(2)在【安装向导】步骤1对话框中,指定定位文件。在【发布目录】下的文本框中输入“D:VFP98”,单击【下一步】按钮。 (3)在【安装向导】步骤2对话框中,选择应用程序所需的组件,单击【下一步】按钮。图9.1【安装向导】步骤2“VisualFoxPro运行时刻组件”:应用程序所需要的VisualFoxPro运行时刻文件(Vfp6r.dll)。该文件自动包含到应用程序中。“HTML帮助引擎”:为应用程序中的帮助文件提供MicrosoftHTML引擎。(4)在【安装向导】步骤3对话框中,输入磁盘映像目录(D:LLXSGLXXXT)。选择映像类型为1.44MB/3.5英寸,如图9.2所示。单击【下一步】按钮。(5)在【安装向导】步骤4对话框中,设置安装屏幕的提示信息,单击【下一步】按钮。 (6)在【安装向导】步骤5对话框中,设置安装程序需要创建的目录名。建议采用默认值。单击【下一步】按钮。(7)在【安装向导】步骤6对话框中,改变文件设置。表格中列出应用程序所包含的文件。(8)选择“客户管理系统.exe”后的【程序管理器】复选框按钮。弹出【程序组菜单项】对话框。在【说明】下的文本框中输入“学生信息管理系统”,在【命令行】下的文本框中输入“%s客户管理系统.exe”。单击【图标】按钮选择一个图形文件。单击【确定】按钮,返回【安装向导】步骤6对话框。然后单击【下一步】按钮。(9)在【安装向导】步骤7对话框中,单击【完成】按钮,安装向导自动生成应用程序的磁盘映像。如图9.3所示。 图9.3【安装向导】步骤7参考文献[1]王利,二级教程—VisualFoxPro程序设计[M].北京:高等教育出版社,2001.1. [2]王晟,王松,刘强.VisualFoxPro数据库开发经典实例解析[M].清华大学出版社,2005.[3]傅翠娇.VisualFoxPro典型系统实例与解析[M].电子工业出版社,2007.[4]毛一心.VisualFoxPro6.0应用及实例集锦[M].人民邮电出版社,2001.[5]郑人杰,段人昆,陶永雷,实用软件工程[M].北京:清华大学出版社,1997,387.[6]王立福,麻志毅,张世琨,软件工程[M].北京:北京大学出版社,2002,259.[7]王珊,陈红,数据库系统原理教程[M].北京:清华大学出版社,1989,266.[8]史济民,VisualFoxPro及其应用系统开发[M].北京:清华大学出版社.[9]教育部考试中心,VisualFoxPro6.0二级考试参考书[M].北京:高等教育出版社.[10]黎能武,VisualFoxPro6.0程序设计教程[M].水利水电出版社.[11]周学军,VisualFoxPro6.0程序设计[M].北京:北京理工大学出版社.[12]王毓珠,VisualFoxPro程序设计教程[M].人民邮电出版社.[13]王毓珠,VisualFoxPro程序设计习题答案与实验指导[M].人民邮电出版社.[14]李魁民,VisualFoxPro程序设计上机实训与习题集[M].地质出版社.[15]熊发涯,VisualFoxPro程序设计[M].中国铁道出版社.[16]彭金全,VFP程序设计简明教程[M].中山大学出版社,2002.[17]魏绍谦,陈万里,VisualFoxPro6.0简明教程[M].北京:高等教育出版社.2004[18]陈明,VisualFoxPro6.0应用与提高[M].科学出版社.2000.01[19]吴迪,VisualFoxPro6.0中文版程序设计指南[M].北京:清华大学出版社.1999.03[20]陈宗,VisualFoxPro6.0中文版应用与提高[M].青岛出版社.1999.07[21]苏宗,VisualFoxPro6.0中文版应用与开发[M].电子工业出版社.1999.09[22]郝锋,何曙,VisualFoxPro6.0/7.0命令与函数大全[M].北京:电子工业出版社.2002[23]伍俊良,VisualFoxPro6.0/FoxBASE+课程设计案例精编[M].中国水利水电出版社.2002.03 [24]李淑华,VisualFoxPro6.0程序设计[M].北京:高等教育出版社.2002.8[25]李春葆,VisualFoxPro6.0高级编程[M].科学出版社.2001.04[26]李钢,VisualFoxPro6.0基础编程教程[M].北京:北京希望电子出版社.2003.01[27]郭盈发,VisualFoxPro6.0及其程序设计[M].西北电子科技大学出版社.2001.12[28]王浩,VisualFoxPro6.0类和对象参考手册[M].上海:上海科学技术出版社.1998.09.[29]魏宁,VisualFoxPro6.0命令参考手册[M].上海:上海科学技术出版社.1998.09.[30]郗学奎,VisualFoxPro6.0使用指南[M].北京:人民邮电出版社.1999.03[31]魏茂林,VisualFoxPro6.0数据库应用设计学习指导[M].北京:高等教育出版社.2006.[32]李加福,VisualFoxPro6.0中文版入门与提高[M].北京:清华大学出版社.2001.05.[33]启明工作室,VisualFoxPro6.0中文版数据库应用系统开发与实例[M].人民邮电出版社.2004.[35]锡林花,VisualFoxPro6.0中文版应用短期培训教程[M].北京:北京工业大学出版社.2001.01[36]张磊,VisualFoxPro6.0使用详解[M].机械工业出版社.1999.07.[37]郭兴成,VisualFoxPro7.0开发实作教程[M].北京:北京希望电子出版社.2002.10.[38]方智慧,VisualFoxPro8.0程序员手册[M].科学出版社.2004.05.[39]陈宗兴,VisualFoxPro高级技术应用手册[M].华中理工大学出版社.1997.05.[40]武新华,VisualFoxPro管理信息系统开发案例[M].西安电子科技大学出版社.2004.[41]胡明.VisualFoxPro中通用查询表单的设计与实现[J].电脑知识与技术(学术交流),2006,(35) [42]张学智,陈莉莉.VisualFoxPro的表单自动生成及后期制作[J].西安工业学院学报,1997,(04)[43]周艳香.掌握VisualFoxPro应用的一些小技巧[J].职业圈,2007,(13).[44]陈潇.VisualFoxPro获取数据库中数据的几种方法[J].科技信息(学术研究),2008,(30).[45]滕敏.VisualFoxPro和Excel数据之间转换的五种尝试[J].福建电脑,2009,(02).[46]www.zgyimin.cn/doc/jsj/5723lw.html2010-8-30[47]www.cnki.com.cn/Article/CJFDTotal-HZYS201...2010-10-25[48]zhidao.baidu.com/question/49402156.html2008-4-9[49]www.lunwendz.com/iask/5,2/201004/00000254...2010-10-19[50]www.abc.edu.cn/jingpinkecheng/2006_yky/kc...2007-12-18 致谢经过一至两个月的紧张学习和软件设计,现在已接近尾声,在此要感谢所有关心我、支持我、帮助我的老师、同学和朋友。是他们的支持和鼓励让我在这艰辛的道路上勇敢的向前走。在此要特别感谢我的指导老师——杨春丽老师,感谢她对我的信任和鼓励。在设计过程中杨老师细心辅导,抛砖引玉,引导我做设计但是又不限制我的个人独立思考空间。在这段时间里,我被杨老师的严谨的治学精神,对待工作认真负责的作风,严肃的科学态度所激励着,因此我也不断地鞭策着自己提高能力,扩大自己的视野以增长见识以及培养自己独立思考和处理问题的能力。非常感谢杨老师的督促和帮助,在此致以最诚挚的谢意!最后我还要感谢工程学院和母校——大理学院对我的栽培,大理学院的综合性丰富了我的阅历,工程学院的教学设施锻炼了我的动手能力和逻辑思维能力。感谢大学教会我的为人处世,感谢母校让我认识了很多朋友,生活也丰富多彩。在一次感谢所有关心我、帮助我的老师同学、朋友以及我的家人。
查看更多

相关文章