Visual FoxPro
i s u a l
F
V
o x P r o
Visual FoxPro
14.1 数据库应用系统的目的及开发步骤
14.2 系统需求分析
14.3 系统设计
14.4 系统的实现
Visual FoxPro14.1 数据库应用系统的开发步骤
数据库应用系统的开发过程一般包括需求分析、
系统初步设计、系统详细设计、编码、调试、系统
切换等几个阶段,每阶段应提交相应的文档资料,
包括, 需求分析报告,,, 系统初步设计报告,,
,系统详细设计报告,,, 系统测试大纲,,, 系
统测试报告, 以及, 操作使用说明书, 等。但根据
应用系统的规模和复杂程度在实际开发过程中往往
有一些灵活处理,有时候把两个甚至三个过程合并
进行,不一定完全刻板地遵守这样的过程,产生这
样多的文档资料,但是不管所开发的应用系统的复
杂程度如何,需求分析、系统设计、编码 -调试 -修
改这一个基本过程是不可缺少的。
Visual FoxPro
1.需求分析
这一阶段的基本任务简单说来有两个,一是摸清现
状,二是理清将要开发的目标系统应该具有哪些功
能。具体说来,摸清现状就要做深入细致的调查研
究、摸清人们现在完成任务所依据的数据(使用了
什么台帐、报表、凭证)及其联系、使用什么规则
(上级有什么法律和政策规定、本单位或地方有哪
些规定、以及有哪些得到公认的规则等)、对这些
数据进行什么样的加工、加工结果以什么形式(报
表、工作任务单、台帐、图表等)表现;理清目标
系统的功能就是要明确说明系统将要实现的功能,
也就是明确说明目标系统将能够对人们提供哪些支
持。需求分析完成后,应撰写, 需求分析报告, 并
请项目委托单位签字认可,以作为下阶段开发方和
委托方共同合作的一个依据。
Visual FoxPro
2.系统设计
在明确了现状与目标后,还不能马上就进入程序设
计(编码)的阶段,还要对系统的一些问题进行规划
和设计,这些问题包括:设计工具和系统支撑环境的
选择(选择哪种数据库、哪几种开发工具、支撑目标
系统运行的软硬件及网络环境等)、怎样组织数据也
就是数据库的设计(即设计表的结构、字段约束关系、
字段间的约束关系、表间约束关系、表的索引等)、
系统界面的设计(菜单、表单等)、系统功能模块的
设计、对一些较为复杂的功能,还应该进行算法设计。
Visual FoxPro
这一部分工作完成后,要撰写, 系统设计报告,,
在, 系统设计报告, 中,要以表格的形式详细列出
目标系统的数据模型、并列出系统功能模块图、系
统主要界面图、以及相应的算法说明。, 系统设计
报告, 既作为系统开发人员的工作指导,也是为了
使项目委托方及早(在系统尚未开发出来时)认识
目标系统,从而及早的发现问题,减少或防止项目
委托方与项目开发方因对问题认识上的差别而导致
的返工(这种情况在实际工作中是经常出现的)。
同样,,系统设计报告, 也需得到项目委托方的签
Visual FoxPro
3.系统实现(编码、调试)
这一阶段的工作任务比较明确了,就是依据前
两个阶段的工作,具体建立数据库和数据表,定
义各种约束,并录入部分数据;具体设计系统菜
单、系统表单、定义表单上的各种控制对象、编
写对象对不同事件的响应代码、编写报表和查询
等。
Visual FoxPro
4.测试
测试阶段的任务就是验证系统设计与实现阶段中
所完成的功能能否稳定准确地运行、这些功能是否
全面地覆盖并正确地完成了委托方的需求,从而确
认系统是否可以交付运行。测试工作一般由项目委
托方或由项目委托方指定第三方进行。在系统实现
阶段,一般说来设计人员会进行一些测试工作,但
这是由设计人员自己进行的一种局部的验证工作,
重点是检测程序有无逻辑错误,与前面所讲的系统
测试在测试目的、方法及全面性来讲还是有很大的
差别的。
Visual FoxPro
为使测试阶段顺利进行,测试前应编写一份, 测
试大纲,,详细描述每一个测试模块的测试目的、
测试用例、测试环境、步骤、测试后所应该出现
的结果。对一个模块可安排多个测试用例,以能
较全面完整地反映实际情况。测试过程中应进行
详细记录,测试完成后要撰写, 系统测试报告,,
对应用系统的功能完整性、稳定性、正确性以及
使用是否方便等方面给出评价。
Visual FoxPro
5.系统交付
这一阶段的工作主要有两个方面,一是全部文
档的整理交付,二是对所完成的软件(数据、程
序等)打包并形成发行版本,使用户在满足系统
所要求的支撑环境的任一台计算机上按照安装说
明就可以安装运行。
Visual FoxPro
本章以一个公司的工资管理系统为例,来说明一个
数据库应用系统的基本开发过程。系统设计要求是:
( 1)能适应公司不同的员工工资计算与考核方法。
( 2)能自动生成并打印员工个人工资单和公司工
( 3)工资数据要求保存 5年时间,并随时能够查询
5年内的工资历史数据。
Visual FoxPro
14.2.1 系统调查
项目开发组在接受任务后去该公司的相应职能部门
进行调查后发现,该公司的员工实行了 3种不同的
(1)公司董事会成员和经理层的高级管理人员实行年
薪制,其年薪额度由上年末的股东大会确定,每个
月发放年薪的 1/15(此比例可调),余下的的 3/15
由年末的股东会议讨论,有一定比例的浮动。
14.2
Visual FoxPro
(2)其他管理人员、销售人员和技术开发人员的月薪
由基本工资和考核工资两部分组成,其中基本工资
又由岗位工资(由每人所在岗位决定)和工龄工资
(由每人的社会工龄和公司工龄决定)两部分组成。
这一部分的基本工资本分由公司的人事部门管理,
基本稳定,但也有不定期的修改;考核工资由每人
Visual FoxPro
(3)工人实行基本工资加计件计质工资制度。基本工
资和管理人员工资的含义相同,由公司人事部门负
责管理。计件计质工资就是在考虑工人所完成的产
品质量等级的前提下,按其所完成的产品数量计算
薪金、这一部分由公司生产部门和质量检查部门共
同负责考核决定,生产部门统计每个工人所完成的
Visual FoxPro
14.2.2 系统功能需求
工资体制以及与某种工资体制相对应的工资计算是
一项政策性很强的工作,搞得好就能调动公司各级
员工的积极性,搞得不好就可能引起各种矛盾,挫
伤员工的积极性。该系统项目开发设计组在与公司
协商后制定了一个确定系统需求的原则:对各种考
核数据(包括股东会议对公司高层领导的考核数据、
公司高层及中层干部对下属的工资考核数据以及对
工人的计时计质考核数据)在本系统中只管使用,
不对这些数据的制定进行支持。制定这样的原则也
是合理的,按照系统划分的一般做法,上述的考核
应归于人事管理的范畴。
Visual FoxPro
( 1)能对应 3种不同工资制度编制相应的员工工
资发放表,并要求对工资计算方法具有一定弹性,
即用户可以根据公司决定调整几个工资计算参数。
( 2
( 3
( 4
Visual FoxPro14.2.3 系统数据需求
( 1)员工工资发放明细表:用来存储并计算公司
全体员工的当月工资应发部分及代扣部分,从而计
( 2)员工工资发放台帐表:根据财务规定,有关
财务的数据要保留 3年备查,该数据表用一个统一
的形式存储公司前 3
( 3
( 4
( 5
( 6) 3类员工工资考核台帐表。
Visual FoxPro 14.3
14.3.1 系统功能模块设计
1.系统参数设置
这个模块是为满足功能需求的第一条而设置的。拟
设置的参数包括:实行第三类工资制度的员工 A,B
两类不同质量的工时单价、实行第二种工资制度的
员工每个系数应发放的工资等、实行年薪的员工每
这一部分功能拟设置一个数据表存储相应的计算参
数,并设置一个功能模块维护与管理这些参数,每
次计算工资时,由相应的工资计算模块访问该数据
表以获得计算参数的值。
Visual FoxPro
2.
员工的考核是由不同部门的不同人员完成的,而公
司员工的工资一般全部由财务部门计算。所以工资
会计需要将各种考核数据连接到每个员工的工资表
根据前面的功能需求分析,这一部分的功能主要有
3个:数据录入、数据连接和数据的备份存储。对
应 3种实行不同工资体制的人员,设计了 3个结构功
能大体相同的表单来完成这些功能,详细设计情况
在界面设计部分进行说明 。
Visual FoxPro
3.工资报表编制汇总与打印
这里只要根据前面形成的数据编写一个报表应用
4.月工资数据的备份存储
Visual FoxPro
14.3.2
1.系统模块图
整个工资管理系统由 4个基本模块构成,为方便实
现,有 3个基本模块又分解成更简单、功能更单一
的模块,这里 8个模块都比较容易用一个表单予以
实现,后面有关于其中几个典型表单的实现过程
2.系统菜单设计
有了上面的模块图后,菜单的设计就很容易了,
请读者自行设计。
Visual FoxPro
14.3.3 数据库设计
进行数据库设计的依据有 3个:第一当然是在进行
系统调查时由项目委托方所提供的各种凭证、报表
和数据台帐;第二是功能设计结果;第三是数据库
设计规范化理论。
Visual FoxPro
原始数据(凭证、报表、台帐)是素材,是提
炼数据库设计的基础,而功能设计为素材选择提供
了一个参考标准,只把为满足功能设计要求所需要
的数据提炼为系统数据库,而把那些在实现系统功
能时不需要的数据暂时放开,做到集中精力解决主
要矛盾。有了设计素材和选择标准后,还需要根据
数据库设计的规范化理论设计数据表及其字段,以
保证在为系统功能提供足够的信息量的前提下数据
组织更加科学合理,更便于数据的维护与查询。
三者的关系
Visual FoxPro
1.数据库设计的基本技术与工具
( 1) E-R
E-R图是用一种直观的图形方式建立现实世界中
实体及其联系模型的工具,也是设计数据库的一
种基本工具。这种图用矩形框表示现实世界中的
实体,用椭圆型框表示实体的属性,用菱形框描
述实体间的联系 。
Visual FoxPro
( 2) E-R
一般用一个关系转化一个实体,E-R图中的椭
圆型框作为关系的属性,并在一个主属性(能够区
分一个实体类中的两个不同实体的属性称为主属性,
如学生的学号,班级的班号就是主属性)字段上建
立索引。要描述两种实体间的联系,应该再增加一
个对方主属性的字段,通常把这个增加的字段称为
外键,如在学生表中,除设置学号、姓名、民族、
年龄等 4个字段外,再增加一个班号字段以反映学生
和班级两种不同实体间的联系。这样,学生表中的
一个记录( 1005,张其兵,汉,22,005)就能够清
楚的反映张其兵是第 5班的学生,并能顺着 005这个
线索在班级表中找到该班的其他情况,如该班所属
系、专业等等。
Visual FoxPro
( 3
数据规范是一个大问题,需要进行专门的研
究,简单地说,数据规范就是为了保证所建立的
数据表不出现数据冗余,不出现数据插入异常和
删除异常而提出的一些标准。数据规范分成几种
不同的层次,分别称为一到三范式。这里只介绍
第一和第二范式,一般情况下应保证自己建立的
数据表符合这两个范式。
Visual FoxPro
第一范式,一个表的每个字段应该是基本的。
这是表设计的最基本要求,不能把两种属性作
为一个字段。如职工的应发工资由基本工资和
考核工资两部分组成,在设计表时,就不能把
构成应发工资的基本工资和考核工资两部分数
据放在同一个字段中,而应该分别设置基本工
资和考核工资两个字段。
Visual FoxPro
第二范式,表中的非主属性字段间不应该存在依赖关
系,也就是说,表中的每个字段都描述了本实体的一
个独立属性,对其它一个或几个非主字段都没有依赖
关系。还是用工资表来说明这点,当表中设置了基本
工资和考核工资字段后,因为应发工资可以由基本工
资和考核工资简单相加而得到,所以工资表中就不应
该再设置应发工资这样一个字段,否则就不符合第二
范式。此外如果在学生表中既设置一个, 班号, 字段,
同时又设置一个, 专业, 字段也是不符合第二范式的,
因为, 专业, 由, 班号, 而唯一确定,这种确定关系
在, 班级, 表中已有明确定义,这里在, 学生, 表中
加入一个, 专业, 字段对于整个系统未提供新的信息
Visual FoxPro
范式 只是指导数据库设计的一种工具,如果有
时增加一个字段确能带来很大的方便,违反规范化
2.
利用上面的数据库设计方法,可以设计本系统的数
据库。
(1) 员工基本信息表( JBXXB
(2)第一类员工年终考核表( KHB1
(3)第二类员工月度工资考核汇总表( KHB2
(4)第三类员工月度工资考核汇总表( KHB3
Visual FoxPro
(5)系统参数表( XTCSB
(6)工资发放表( GZFFB
(7)工资发放汇总表( GZHZB
(8)工资发放表留存台帐( GZLCTZ
(9)第一类员工年度考核留存台帐( KHLCTZ1
(10)第二类员工月度工资考核留存台帐( KHLCTZ2)
(11)第三类员工阅读工资考核留存台帐( KHLCTZ3)
Visual FoxPro
14.4 系统的实现
14.4.1
1.系统启动界面(封面)
封面是一个应用系统的招牌,要尽量做得有特色而
不花哨。封面完成应用系统的登录,当用户输入了
正确的用户名和密码后,系统启动应用菜单,进入
后续应用,否则,显示登录不成功(如图中右面的
小图形),以拒绝非授权用户的使用。
Visual FoxPro
工资应用系统封面
Visual FoxPro
( 1) Visual FoxPro中,选择“文件”菜单中的
“新建”,指定文件类型为“表单”,然后选择
( 2)在新建的表单窗口建立 4个标签控件、两个
文本控件和 1
( 3)设置这些控件的属性。
Visual FoxPro
2.员工考核数据录入与处理界面
按照公司制定的 3类不同考核办法,在每月计算工
资前,需要将每位员工的考核数据录入计算机以计
算每人的考核部分工资。 3类员工的该部分程序基
Visual FoxPro
3
工资发放表计算是在各种数据(人员名单、基
本工资、考核数据等)都已准备好的前提下计算每
人的应发工资、各种由公司代扣的经费(所得税、
养老保险、医疗保险等),最后计算每人实发工资
并打印工资发放表。在这一过程中,没有系统与工
资管理员的数据交互行为。这里设计的界面,只是
让工资管理员能通过一个窗口观察到系统的计算过
程并能随时检查计算结果。
Visual FoxPro
第二类员工考核
数据录入界面
第二类员工考
核数据界面
Visual FoxPro14.4.2 几个主要程序代码段的实现
1.系统登录过程
系统登录是封面表单的基本功能,作用是为了验证
用户身份,防止未授权用户的使用。下面的程序段
运行前需要建立一个用户密码表( yhmm.dbf),有
3
yhmm(yhm,yhmm,sm)
即(用户名、用户密码、说明),系统设计时,应
给出一个最初的用户名及用户密码,并设计一个表
单对这一个数据表进行专门处理(增加用户、删除
用户、修改用户名及密码等。)这里不讨论这一过
程而只讨论怎样应用该数据表来实现用户身份认证
工作。
Visual FoxPro

USE yhmima
user1=Trim(ThisForm.user.Value) && 通过表单的
文本框接受用户名与用户密码
pass1=Trim(ThisForm.password.Value)
LOCATE ALL FOR yhm=user1
IF FOUND() AND mima=pass1
DO gzjsgl.mpr && 验证通过,启动系统菜单
ELSE
MESSAGEBOX(′用户名或密码错误,请查证后
再登录 ′)
ENDIF
ThisForm.Release
Visual FoxPro
2,Comgrop_gz 类的设计
Comgrop_gz 是一个子类,其基类是命令按钮组,
该命令组包含“加入数据”、“删除”等 6个按钮,
由其生成了 4个对象分别置于“员工基本信息维
护”、“第一类员工工资考核数据维护”、“第二
类员工工资考核数据维护”、“第三类员工工资考
核数据维护”等 4个表单中,这也充分反映了面向
对象程序设计方法的优点,一次设计,多处使用。
下面列出该类中“加入数据”命令按钮的 Click事
件响应代码。其他几个按钮的相应代码请读者根据
前面讲述的总体设计思想自行补充并上机调试运行。
Visual FoxPro
SELECT
(ThisForm.DataEnvironment.Cursor1.Alias)
kh=Trim(ThisForm.khfl)
IF recc()=0
Append From jbxxb FOR fl=kh
Goto Top
ELSE
=MessageBox(′你已经追加了数据 ′)
ENDIF
ThisForm.Refresh
Visual FoxPro
3,Comgrop_gzff 类的设计
Comgrop_gzff 类也是一个基于命令按钮组的子类,
包含了“追加工资数据”、“工资计算”、“打印
工资表”、“编制汇总表”等 6个命令按钮组。在整
个工资计算系统中,该类只应用在“工资发放”一
个表单中,因此,仅对于本系统的而言,也可以不
专门设计这样一个类而在“工资发放”表单中直接
设计一个命令按钮组对象,其设计过程与工作量是
大致相同的,但是,这里独立设计的“类”可以供
其他应用系统使用,而与某一固定表单捆绑在一起
的对象是不能直接供其他应用系统使用的。
Visual FoxPro
下面列出该类中“追加工资数据”和“工资计算”
两个命令按钮的 Click
( 2) 工资计算
( 1) 追加工资数据
点击
点击
14.4.3 应用系统的发布过程
1.发布的意义
一般来说,作为设计者用来进行开发的计算机和作
为用户使用的计算机在物理上不会是一套计算机,
其配置和设置也不会完全相同。这就存在一个将整
个开发好并经过调试的应用系统从开发者的计算机
中拷贝到用户的计算机中去并根据用户计算机调整
一些设置的过程。
Visual FoxPro
对于一些小型应用,可以使用一种移动载体(如软
盘)将应用所含的几个文件拷贝走就行了,但一般
的实际应用系统都是比较复杂的,应用系统所含文
件很多,包括数据库文件、表文件、程序文件、表
单文件、自定义“类”文件以及引用的系统“基类”
文件等等,只要这些文件拉掉一个,或者即使没有
拉掉文件而只是文件装载的路径不同,都将导致系
统的无法运行。所以,现在的应用系统一般都以一
个打包后形成的发布版本的形式发行(称为发行
版)。在发行版中有一个安装程序 setup.exe,运行
该程序后系统会按照所要安装的计算机的环境而自
动调整文件存储和调用路径,从而获得一个可以运
行的系统,其安装过程与 Windows,Office以及
Visual FoxPro
Visual FoxPro
2.系统发布过程
( 1)建立发行树目录,并把应用系统所涉及到的
全部文件拷贝到该发行树目录下。在用“安装向导”
创建磁盘之前,必须创建一个目录结构,或称为
“发布树”,存储要复制到用户硬盘上的所有发布
文件。在进行发布前,要把希望复制到发布磁盘的
( 2
①打开应用系统的项目管理器。
②连编应用系统。
( 3)引用发布向导,制作应用系统发布盘。
( 4)至此已完成系统发布过程。