2023年7月27日发(作者:)
第9章 数据库应用系统开发
本章将介绍开发数据库应用系统的基本步骤,然后以一个比拟简单的学生管理系统为 例,较为详细地介绍设计一个Visual FoxPro应用系统的开发过程,通过对数据库系统的开 发实践来到达对所学知识的综合应用。
9. 1数据库应用系统开发步骤
一个完整的数据库应用系统的设计开发应该包括两个方面:一是结构设计,即设计数据 库框架和数据库结构;二是行为设计,即设计具体的应用程序。为了完成上述的设计目标, 需要规范的设计方法和步骤。一般来说,数据库应用系统的开发包括以下几个步骤:需求分 析、数据库设计、应用程序设计、软件测试、应用程序发布以及系统的运行前维护。
9. 1.1需求分析
数据库应用系统的开发从系统的需求分析开始,它是整个开发过程的起点和基础。需求 分析的目标是明确用户的具体要求,包括应用系统的功能结构、信息要求、处理要求、平安 性与完整性的要求等具体的指标,并以需求分析报告的形式表达出来。
一般来说,需求分析需要从以下两个方面着手:数据分析和功能分析。数据分析是指通 过合适的数据模型来描述系统所要处理的各种对象,建立关于对象的概念模型,再将概念模 型转换为关系数据模型。功能分析是指确定系统边界,了解系统功能,确定哪些功能由计算 机完成,哪些活动由人工完成。由计算机完成的功能就是系统应该实现的功能。
进行需求分析时应该注意以下一些问题:首先,需求分析必须建立在调查研究的基础上, 包括访问用户,了解人工系统模型,采集相关资料等。为确保调查的客观性和正确性,系统 调查工作应该严格按照自顶向下的系统化观点全面展开,逐层分析和了解。其次,在需求分 析阶段就要建立基于用户需求的观念,主动和用户进行沟通,了解他们的需求和偏好,在系 统实施的过程中也要及时接受用户的反应信息,对系统进行适当的修正。
9. 1.2数据库设计
数据库设计的任务主要包括概念结构的设计、逻辑结构的设计和物理结构设计。
数据库的概念结构是现实世界与机器世界的中介,它一方面能够充分地反映现实世界, 包括实体和实体之间的联系,同时又易于向关系数据模型转换。在概念结构设计阶段,设计 人员通过对现实世界的抽象,对实际的人、物、事和概念进行人为处理,抽取人们关心的共 同特性,并把这些特性用各种概念精确地加以描述,从而形成一个具体的独立于数据库管理 系统的概念模型。
数据库的逻辑结构设计是指将概念模型转化为关系数据库模型,根据系统分析的结果来 确定该数据库中需要存储哪些信息,以及如何利用字段来合理地表示这些信息,从而定义出 数据库中每个表所需的字段和数据类型。并在此基础上对数据进行优化,排除数据冗余,弥 补数据漏洞,完善数据结构。最后完成数据库的逻辑结构设计,设计表的结构、字段约束关DELETE
H
ENDIF
⑤“返回”命令按钮的Click事件代码:
E.成绩输入表单
“成绩输入”表单界面如图9 4所示,具体设计和操作步骤如下。图9 4“成绩输入”表单
⑴创立表单界面
①翻开表单设计器,生成一空白表单。
②翻开数据环境设计器,将“成绩表”添加到其中。
③将“成绩表”中的全部字段分别拖放到表单上,并调整其位置和大小。
④在表单上添加1个标签控件和5个命令按钮控件,并调整其位置和大小。
⑵设置对象属性
该表单所用的局部对象及其属性值如表9 7所示。
表9 7 “成绩输入”表单中各控件及其属性值
控件名称
属性
属性值
Forml
AutoCenter
Caption
.T.
成绩输入
Label 1
Caption
ForeColor
FontName
FontSize
Command 1
Command2
Commands
Command4
Command5
(3)事件代码的编写
5个命令按钮的Click事件代码分别如下。
①“上一个”命令按钮的Click事件代码:
SKIP -1
IF BOF()MESSAGEBOX(〃已是第一条记录〃,48, 〃信息窗口〃)
D1 .ENABLED = .F.
SKIP
D 1 .ENABLED = .T.
ENDIF
D 1 .ENABLED = .T.
成绩信息输入
0,0,255(蓝色)
楷体 _GB2312
20
Caption
Caption
Caption
Caption
Caption
上一个
下一个
添加
放弃
返回 H
②“下一个”命令按钮的Click事件代码:
SKIP
IF EOF()MESSAGEBOX(〃已是最后一条记录〃,48, 〃信息窗口”)
D = .F.
SKIP -1
D = .T.
ENDIF
D = .T.
H
③“添加”命令按钮的Click事件代码:
APPEND BLANK
GO BOTT
H
④“放弃”命令按钮的Click事件代码:
CX=MESSAGEBOX(〃 放弃添加? 〃,4+32+0+0,"确认!")
IF CX = 6GO BOTT
DELETEPACK
H
ENDIF
⑤“返回”命令按钮的Click事件代码:
E.学生信息维护表单
“学生信息维护”表单主要用来对“学生表”中的数据进行修改和删除。当表单启动后
系统自动将所有学生的学号添加到列表框Combol中,由用户选择,中选择其中一个学号时,
表单上相应地显示出该同学的具体信息。“学生信息维护”表单界面如图9 5所示,具体 设计和操作步骤如下「 图9 5“学生信息维护”表单(1)创立表单界面
①翻开表单设计器,生成一空白表单。
②翻开数据环境设计器,将“学生表”添加到其中。
③将“学生表”中的全部字段分别拖放到表单上,并调整其位置和大小,同时将所有文 本框的Readonly属性设置为“.T.”。
④在表单上添加2个标签控件、5个命令按钮控件和1个组合框控件(利用生成器将“学 生表.dbf”中的“学号”字段设为组合框的数据源),并调整其位置和大小。
(2)设置对象属性
该表单所用的局部对象及其属性值如表9 8所示。
表9 8 “学生信息维护”表单中各控件及其属性值
控件名称 属性 属性值
Forml
AutoCenter .T.
Caption
学生信息维护
Label 1
Caption
学生信息维护
ForeColor
0Q255(蓝色)
FontName
楷体 _GB2312
FontSize 20
Label 2 Caption
请选择学号
Command1 Caption
上一个
Command2 Caption
下一个
Commands Caption
修改
Command4 Caption
删除
Commands Caption
返回
Combo 1
RowSourceType
6 字段
RowSource
学生表.学号 (3)事件代码的编写
5个命令按钮和1个组合框的Click事件代码分别如下。
①“上一个”命令按钮的Click事件代码:
SKIP -1
IF BOF()MESSAGEBOX(〃已是第一条记录〃,48, 〃信息窗口〃)
D 1 .ENABLED = .F.
SKIP
D 1 .ENABLED = .T.
ENDIF
D 1 .ENABLED = .T.
H
1 .VALUE=学号
②“下一个”命令按钮的Click事件代码:
SKIP
IF EOF()MESSAGEBOX(〃已是最后一条记录〃,48, 〃信息窗口")
D = .F.
SKIP -1
D = .T.
ENDIF
D = .T.
H
1 .VALUE=学号
③“修改”命令按钮的Click事件代码:
学号.READONLY = .F.
姓名.READONLY = .F.
籍贯.READONLY = .F.
出生日期.READONLY = .F.
奖学金.READONLY = .F.
性另ij . READONLY = .F.
简历.READONLY = .F.
H &&当单击“修改”按钮后,所有文本框变为可读写状态
@ “删除”命令按钮的Click事件代码:
DX = MESSAGEBOX("确实要删除? 〃,4+32+0+0, 〃 确认! 〃)
IF DX=6DELETE
PACK
ENDIF
H
⑤“返回”命令按钮的Click事件代码:
E
©Combo 1的Click事件代码:
LOCATE FOR 学号= LVALUE
IF EOF()? MESSAGEBOX(〃查无此人,请重新选择! ",0+48+0+0,"确定")
ENDTF
H.成绩信息维护表单 “成绩信息维护”表单主要用来对“成绩表”中的数据进行修改和删除。当表单启动后 系统自动将所有学生的学号添加到列表框Combol中,同时将课程号添加到列表框Combo2 中,由用户选择。中选择其中一个学号和一个课程号时,表单上相应地显示出该同学该门课 程的成绩。“成绩信息维护”表单界面如图9 6所示,具体设计和操作步骤如下。
图9 6”成绩信息维护”表单
(1)创立表单界面
①翻开表单设计器,生成一空白表单。
②翻开数据环境设计器,将“成绩表”添加到其中。
③将“成绩表”中的全部字段分别拖放到表单上,并调整其位置和大小,同时将所有 文本框的Readonly属性设置为。
④在表单上添加3个标签控件、5个命令按钮控件和2个组合框控件(利用生成器分别 将“学生表.dbf”中的“学号”字段设为Combol的数据源,将“课程表.dbf”中的“课 程号”字段设为Combo2的数据源),并调整其位置和大小。
(2)设置对象属性
该表单所用的局部对象及其属性值如表9 9所示。 表9 9“成绩信息维护”表单中各控件及其属性值
控件名称
属性
属性值
Forml
AutoCenter
Caption
.T.
成绩信息维护
Label 1
Caption
ForeColor
FontName
FontSize
Label2
Label3
Command 1
Command2
Command3
Command4
Command5
成绩信息维护
0,0,255(蓝色)
楷体 _GB2312
20
Caption
Caption
Caption
Caption
Caption
Caption
Caption
请选择学号
请选择课程号
上一个
下一个
修改
删除
返回
Combo 1
RowSourceType
RowSource
6 -字段
学生表.学号
Combo2
RowSourceType
RowSource
(3)事件代码的编写
5个命令按钮和2个组合框的Click事件代码分别如下。
①“上一个”命令按钮的Click事件代码:
SKIP -1
IF BOF()MESSAGEBOX(〃已是第一条记录〃,48, 〃信息窗口〃)
D 1 .ENABLED = .F.
SKIP
D 1 .ENABLED = ,T.
ENDIF
D 1 .ENABLED = .T.
H
1 .VALUE=学号
=课程号
②“下一个,,命令按钮的Click事件代码:
SKIP
IF EOF()MESSAGEBOX(〃已是最后一条记录〃,48, 〃信息窗口")
D = .F.
SKIP -1
D = .T.
ENDIF
D = .T.
6-字段
课程表.课程号 H
1 .VALUE=学号
=课程号
③“修改”命令按钮的Click事件代码:
THISFORMTXT 学号.READONLY = .F.
课程号.READONLY = .F.
成绩.READONLY = .F.
H &&当单击“修改”按钮后,所有文本框变为可读写状态
@ “删除”命令按钮的Click事件代码:
EX=MESS AGEBOX(〃 确实耍删除? ",4+32 + 0+0, 〃 确认!")
IF EX = 6DELETE
PACK
ENDIF
H
⑤“返回”命令按钮的Click事件代码:
E
©Combo 1的Click事件代码:
H
⑦Combo2的Click事件代码:
LOCATE FOR 学号= 1 .VALUE AND 课程号=
IF EOF()? MESSAGEBOX(〃此人该课程记录尚无,请重选!〃,0+48+0+0,"确定〃)
ENDIF
H.查询表单
这里为了更好地利用表单空间,可以使用前面学到的页框控件,将一个表单分为学生信 息查询、课程查询和成绩查询3页来分别进行设计。查询表单界面如图9 7所示,具体设 计和操作步骤如下cJ
< ;二1
■• J
Mill I MS0
3」
图9 7 “查询”表单
(1)创立表单界面
①翻开表单设计器,生成一空白表单。
②翻开数据环境设计器,将“学生表”“成绩表”和“课程表”依次添加到其中,以 “学生表”为父表,“成绩表”为子表,以“学号”字段为关键字建立一对多的关系。
③在表单上添加1个标签控件,其Caption属性值为“查询”;添加1个命令按钮控件, 其Caption属性值为“退出",Click事件代码为“E” ;再添加1个页 框控件,将其PageCount属性设为“3”,并调整其位置和大小。
(2)设置学生信息查询页面
①在“学生信息查询”页面(即pagel)上添加1个标签控件,其C叩tion属性值为“请选 学号”,再添加1个组合框控件(利用生成器将“学生表.dbf”中的“学号”字段设为 Combol的数据源),并调整其位置和大小,如图9 8所示。
iitt
图9 8“学生信息查询”页面
②在数据环境设计器中将“学生表”整体拖放到表单上,右击“学生表”,在弹出的快 捷菜单中选择“编辑”命令,调整表格的列宽。
③“学生信息查询”页面的事件代码的编写。
Combol的Click事件代码:
AME1 .PAGE 1 .GRID 1 .RECORDSOURCETYPE=4 && 表格数据 来源为
&& SQL语句系、字段间的约束关系、表间的关系及索引等。
数据库的物理结构设计是为逻辑数据模型选取一个最适合应用环境的包括存储结构和 存储方法的物理结构。由于数据库的物理结构依赖于所选的数据库管理系统,也依赖于计算 机硬件环境,设计时主要考虑以下几方面内容:确定数据的存储结构,需要综合考虑存储时 间、存储空间利用率和维护代价3方面的因素;设计数据的存取路径,如如何建立索引,建 立单索引还是复合索引;确定数据的存储位置,对不同数据的存放进行适当的安排;最后的 工作是确定系统配置。
9. 1.3应用程序设计
在实际的应用系统开发中,应用程序设计和数据库设计两方面的需求是相互制约的。具 体地说,应用程序设计受到数据库当前结构的约束,而设计数据库时也必须考虑应用程序设 计实现的需要。数据库系统的应用程序设计包括以下内容。
(1)用户界面设计
第9章数据库应用系统开发
Visual FoxPro数据库及其应用界面是用户和系统的输入/输出接口,界面设计用于控制 数据的输入/输出,它包括欢迎界面、登录表单、数据输入表单、系统菜单等用户界面的设 计。
(2)功能模块设计
完成具体的数据处理工作,一般按照数据的输入、修改、编辑、查询与统计、报表输出 等功能模块划分,并通过控件的事件代码来实现。
(3)控件属性设计
通过对控件属性的设计完成系统的特定功能,包括表单集、表单和表单中各种控件的属 性设置,通过属性设置来改变窗体或控件运行时的功能和外观。
(4)主程序设计
设置应用程序系统运行环境和程序起始点,显示初始的用户界面,控制事件的循环,组 织主程序文件。具体的内容将通过后面的案例来说明。
(5)调试程序
应用程序编写完成之后,要对它进行编译和运行,以发现程序中的语法错误,反复修改, 直至程序完善为止。
9. 1.4软件测试
应用程序设计完成之后,应对软件进行测试,以检验系统各个组成局部的正确性,验证
SOURCE = SELECT 学号,姓 名,性别,出生日期,;奖学金,籍贯,简历;
FROM学生表;
WHERE 学号= AMELPAGE1 COMBO LVALUE INTO CURSOR RESULT
"
H
(3)设置课程查询页面
①在“课程查询”页面(即page2)上添加1个标签控件,其Caption属性值为“请选课程 号”,再添加1个组合框控件(利用生成器将“课程表.dbf”中的“课程号”字段设为 Combol的数据源),并调整其位置和大小,如图9 9所示。
查询学生0・*声..聋声|
3图9 9 “课程查询”页面
*逸景程号际
②在数据环境设计器中将“课程表”整体拖放到表单上,右击“课程表”,从弹出的快 捷菜单中选择“编辑”命令,调整表格的列宽。
③“课程查询”页面的事件代码的编写。
Combol的Click事件代码: SOURCETYPE=4
AMEl .1 .RECORDSOURCE =
v SELECT 课程号,课 程名,学时数,学分;
FROM课程表;
WHERE 课程号 = AME 1 . 1 .VALUE INTO CURSOR
RESULT 〃
H
(4)设置成绩查询页面
①在“成绩查询”页面(即page3)上添加1个标签控件,其Caption属性值为“请选学 号”,再添加1个组合框控件(利用生成器将“学生表.dbf”中的“学号”字段设为Combol 的数据源),并调整其位置和大小,如图9 10所示。
图9 10“成绩查询”页面
②在数据环境设计器中将“学生表”中的“姓名”和“学号”字段分别拖放到表单上, 再将“成绩表”整体拖放到表单上。右击“成绩表”,从弹出的快捷菜单中选择“编辑”命 令,调整表格的列宽。
③“成绩查询”页面的事件代码的编写。
Combo 1的Click事件代码:
LOCATE FOR 学号=AME1 .PAGE3coMBOI .VALUE
IF EOF()? MESSAGEBOX(〃查无此人,请重新选择! ",0+48+0+0,"确定")
ENDIF
H7.报表设计
用户经常需要按照指定的格式输出信息,这是建立报表时必不可少的。Visual FoxPro 提供报表设计器和报表向导进行报表设计。下面以“学生信息表”报表的设计为例介绍报 表设计的大致过程。
⑴报表的设计步骤
“学生信息表”报表的设计过程如图9 11所示。“学生信息表”利用了 Visual FoxPro 的“快速报表”功能,使报表的生成更加方便快捷。 图9 11快速报表
①在“工程管理器”中切换到“文档”选项卡,选择“报表”选项,单击“新建”按钮, 新建报表。在菜单栏中选择“报表” 一 “快速报表”命令,弹出“翻开”对话框,选择“学 生表”并将其添加到报表中。 ②在“快速报表”窗口中按步骤设置布局。如果在新建的报表中只添加基表包含的局部 字段,那么应单击“快速报表”对话框中的“字段”按钮来翻开“字段选择器”。选择所需的 字段,将它添加到“选定字段”列表框中,在选取字段之后,单击“确定”按钮,所选字段 显示在“页标头”区。
③在“页标头”区将字段名拖动到需要的位置,然后再加入一个标签用于显示标题“学 生通讯录”。
④“细节”区一般包含来自表中的一行或多行记录。利用报表控件中的线条控件可加入 线条画表格线,使报表更为美观。
⑤“页注脚”区可用来指定报表页面底部的一些信息,如页码、节等。在“页注脚”区 添日期函数DATE0和页码.PAGE,最终生成报表文件“学生报表.frx",报表如图9 12 所示。
qJSJZj图9 12学生报表预览
(2)报表的调用程序
学生基本信息表
聂名2
加由女性别 出生日期 奖学金
浙江桃州
2
苏双女02/02/87800
浙江温州
2OOS34521101
阚研女09/04/860
河北邯郸
2
杨丹女08/09/870
03/04/860
江苏总城
2
于科男09/19/870
浙江十波
2
超H男11/05/881000
北京
2
罗江男07/29/880
天潭 朝南2
男08/08/870
女01/05/86500
长沙 海江2
里09/27/860
硼 安微合2!
工10/09/860
肥
2
二05/16/86500
看庆
2
量05/06/880
冒用长沙
200&45&31002
八01/23/880
2
叶01/12/870
浙江如刊
2
八02/11/870
海江州河
2
字01/05/89500
天津
200s45631104
至01/21/86500
浙江宁波
2
男04/04/860
女06/03/880
江苏砌 浙01/01/890
2
男03/10/89800
江潮州 湖2
男04/08/871000
北就汉 浙2!
女09/04/870
江嘉兴 江2
男苏无锡 浙
2
江杭州 天2
潼
为了在主菜单中快速地调用报表,还需要建立过程文件“学生过程.prg”,并在该过中调用“学生报表.frx”。
“学生过程.prg”文件的程序语句为:
.PROCEDURE学生才艮表REPORT FORM D: '学生管理'学生报表PREVIEW
RETU程文件 9. 2.4系统主菜单设计
图9 13主菜单
系统要具有良好的界面,必须进行菜单的设计,本节介绍系统主菜单的设计。
1
.系统主菜单的功能
在通过登录界面进入本系统后,界面首先翻开的是菜单系统。通过对各项菜单的选择, 可分别进入系统中的不同模块。学生管理系统的主菜单如图9 13所示。
2
.系统主菜单的设计步骤创立菜单是通过菜单设计器来完成的,设计的具体操作步骤如下。
①在工程管理器中切换到“其他”选项卡,选择“菜单”选项,单击“新建”按钮,在 弹出的“新建菜单”对话框中单击“菜单”按钮,进入菜单设计器,在菜单设计器中分别输入菜单的各项信息。
②具体的各项菜单如表9 10所示。
表9 10学生信息主菜单设计
菜单名称
学生信息输入(数据录入菜单)
成绩信息输入(数据录入菜单)
学生信息维护(数据维护菜单)
成绩维护(数据维护菜单)
数据查询菜单
学生信息输舟(数据输出菜单)
成绩输出(数据输出菜单)
结果
命令
命令
命令
命令
命令
命令
命令
选项
DO FORM D: '学生管理'学生信息输入.sex
DO FORM D: '学生管理'成绩输入.sex
DO FORM D: '学生管理'学生信息维护.sex
DO FORM D: '学生管理'成绩维护.sex
DO FORM D: '学生管理'查询.sex
DO FORM D: '学生管理'学生过程.prg
DO FORM D: '学生管理'成绩过程.prg
退出 命令
QUIT
③将菜单设置在顶层表单中,方法是:选择“显示”一“常规选项”命令,在弹出的“常
规选项”对话框中选择“顶层表单”复选框,单击“确定”按钮。
④生成菜单程序。在菜单设计器中填好菜单结构后,选择“菜单” 一 “生成”命令,在 弹出的“生成菜单”对话框中输入要生成的菜单程序名,单击“产生”按钮即可。这样, Visual
FoxPro会自动根据菜单文件(.mnx)生成菜单程序(.mpr),如果修改过菜单结构的话, 需重新生成菜单程序。
3 .主表单的设计主表单是用户登录后首先进入的表单,在该表单中要调用系统主菜单。学生管理系统的
主菜单设置在这个主表单中。
主表单的属性设置如表9 11所示。
表9 11主表单的属性设置
控件名称
属性
属性值
Forml
Caption
ShowWindow
WindowState
Closable
Init事件
学生管理系统(表单标题)
2 作为顶层表单
2 最大化
.F.
DOD: '学生管理'学生信息.mpr WITH THIS,.T.(在主表单中 嵌入系统主菜单)
9. 2.5主程序设计
前面设计了各种程序组件,包括数据库、表、表单、菜单和报表等,最后还要设计一个 主程序,作为整个系统的入口。一般来说,建立一个简单的主程序应该考虑以下几方面的内 容。
①初始化环境,设置应用程序所需的环境,可从当前系统环境中截取命令,然后进行修
改;初始化变量;建立数据文件的默认路径;翻开所需要的数据库和表文件等。
②调用一个菜单或表单来建立初始的用户界面。
③执行READ EVENTS命令来建立事件循环。
④从一个菜单或命令按钮中执行CLEAR EVENTS命令。
⑤应用程序退出时,恢复环境。
在学生管理系统中主程序文件“主文件.prg”的程序语句如下:
SET TALK OFFCLEAR ALL
SET DEFAULT TOD: '学生管理&&设置当前目录DO FORM 登录.sex
READ EVENTS &&启动事件循环QUIT &&退出整个系统
9. 2.6连编与运行应用程序
数据库及其组件建立完毕后,需要通过工程管理器将他们组合起来进行联合调试和编 译,这个过程称为应用程序的连编。
1
.用工程管理器组织应用程序
Visual FoxPro提供工程管理器组织应用程序的相关组件,通过创立或翻开工程文件将 已经开发好的各个程序组件添加到该工程中,或者直接在工程管理器中创立应用程序的各个 组件,然后加入工程信息。后者的具体操作方法是:右击工程管理器空白处,在弹出的快捷 菜单中选择“工程信息”命令,弹出“工程信息”对话框,输入相关的信息,包括开发者的 信息,如作者、单位、地址等信息;工程的主目录;通过复选框选择在应用程序文件中是否 包含调试信息;是否对应用程序加密;通过附加图标复选框指定是否为生成的文件选择自己 的图标。
2
.设置文件的“包含”与“排除”
文件的“包含”与“排除”相对。将一个工程编译成一个应用程序时,所有工程包含的 文件将组合为一个单一的应用程序文件。在工程连编之后,那些在工程中标记为“包含”的 文件将变为只读文件。
对于用户经常修改的文件,在连编之前必须将它们设置为“排除”。这些文件虽然是该 应用程序的一局部,但是并没有被编译,因此用户可以对它们进行及时的更新。一般的Visual FoxPro默认数据库和表文件可以修改,默认为“排除”,而表单、报表、查询、菜单和程 序文件应该设置为“包含”。
具体的操作方法是:在工程管理器中右击需要设置的文件,从弹出的快捷菜单中选择 “排除”命令,根据要求选择即可。
3
.设置主文件
主文件是整个应用程序的入口,也称为主控程序,它可以是一个程序、菜单或者表单文 件。主文件的任务是设置应用程序的起点、初始化环境、显示初始的用户界面和控制事件的 循环。一般来说,如果该文件是添加到工程中的第一个程序文件,那么系统自动将它设置为主 文件,否那么,就应该人为地把该文件设置为主文件。
具体的操作方法是:在工程管理器中右击需要设置的文件,从弹出的快捷菜单中选择 “设置主文件”命令,即可完成设置。
4
.连编应用程序
在上述设置完成之后,可以通过工程管理器把应用程序编译并连接成一个可执行的程序 文件,这就是应用程序的连编。连编生成的可执行文件可以是.app文件,也可以是.exe 文件,所不同的是.app文件只能在Visual FoxPro环境下执行,.exe文件可离开Visual FoxPro 环境,在Windows环境下直接执行,且运行速度明显快于.app文件。另外也可以生成.dll 文件。
在工程管理器中单击“连编”按钮,弹出“连编选项”对话框。选择不同选项,可以建 立一个.app文件或.exe文件。如果发现错误,应该找出相应的错误,改正后再编译,直 至运行全部成功为止。另外也可以使用命令的方式进行连编,其命令格式为:
BUILD EXE〈文件名,FROM〈工程名〉
BUILD APP〈文件名,FROM〈工程名〉.运行应用程序
假设要运行应用程序,可以选择“程序” 一 “运行”命令,然后选择耍执行的应用程序文
件即可,也可以在命令窗口中输入命令:
DOv应用程序文件名〉 如要运行应用程序“学生信息管理.app”,可以在命令窗口中输入:
DO学生信息管理.app && DO学生信息管理.exe也可练习题
一、选择题
1 .数据库应用系统的数据资源来自于()。
A.表单B.数据库C.报表D.系统菜单
2 .用工程管理器组装应用系统,不能将()资源文件组装在一个工程中。
A.可执行文件B.类C.表单D.菜单
3 .下面关于Visual FoxPro主程序的表达中正确的选项是()。
A.主程序必须同时包含启动事件循环命令和终止事件循环命令B. 一个数据库应用系统可以包含多个主程序
C.主程序可以完成数据库应用系统的所有功能D.主程序是运行Visual FoxPro应用程序时首先启动的文件,是整个应用程序的入口
4 .以下的()不是应用程序生成器具有的选项卡。
A.菜单B.数据C.常规 D.表单
5 .连编应用程序不能生成的文件是()oA. .exe文件 B..app文件 C..prg文件 文件
6 .下面关于运行应用程序的说法正确的选项是()程序只能在Windows环境下运行
A. .app程序只能在Windows环境下运行.exe程序可以在Visual FoxPro和Windows环境下运行
B. .app程序可以在Visual FoxPro和Windows环境下运行
7 .在数据库应用系统中各工作窗口是由()提供的。
A.工具B.表单C.关系D.报表
8 .以下不属于应用程序设计范畴的是()。
A.用户界面设计B.概念结构设计C.功能模块设计D.控件属性设计
9 .表“”中的内容,在连编后的应用程序中不能被修改,那么应在连编之前将 其设置为()。
A.包含B.排除C.更改D.主文件
10 .作为整个应用程序入口点的主程序,至少应具有()功能。
A.初始化环境B.初始化环境,显示初始用户界面
C.初始化环境,显示初始用户界面,控制事件循环D.初始化环境,显示初始用户界面,控制事件循环,退出时恢复环境
二、填空题
1 .进行数据库设计时,主要包括、和 3方面的内容。
2 .进行系统维护时,主要包括、和 3方面的工作。
3 .连编应用程序要使用,可以生成两种文件:和。
4 . 一个Visual FoxPro应用程序只有一个主文件,当重新设置主文件时,原来的设置将
5 .在Visual FoxPro中,启动事件循环的命令是,终止事件循环的命令是
6 .对整个工程编译之前,可以设置文件的“排除”与“包含”。如果某文件需要经常 修改,应该将该文件设置为
O
7 .把一个工程连编成应用程序(.app)的命令是
o三、简答题
1 .简述数据库应用系统开发的一般过程。
2 .在设计Visual FoxPro应用程序时,主程序的作用有哪些?
3 .简述应用程序的发布过程。软件的运行是否符合系统的设计要求。测试又可以分为模块测试和综合测试。一般来说,模 块测试在编码阶段就同时进行了,主要检查模块的功能结构方面的问题。在测试阶段主要进 行综合测试,也就是将各模块组件组装起来,按系统设计的要求,逐项进行测试,检验系统 是否满足实际的功能要求。
9. 1.5应用程序发布
软件测试完毕后,就可以发布应用程序了,在Visual FoxPro中发布工作主要包括以下 儿个方面的内容。
①备份源程序代码:在制作安装盘之前,应当备份应用系统的所有源程序代码,以备将 来使用。
②创立发布树.目录:发布树.目录用于存放整个应用系统所需的全部文件,目录中的文件
和子目录将被压缩到磁盘镜像文件中,并通过安装程序安装到用户机器上。创立发布树目录 可按如下步骤进行。
• 创立目录,目录名为应用程序安装在用户机器上出现的名称。
• 把发布目录分成适合于应用程序的子目录。
• 把应用程序工程中的文件复制到相应目录中,应用程序(.exe)必须放到该树的根目录
下。
③创立发布盘:创立发布盘时,通过安装向导压缩发布目录树中的文件,并把这些压缩 过的文件复制到磁盘映射目录,每个磁盘放置在一个独立的子目录中。创立了应用程序磁盘 映射之后,就把每个磁盘映射目录的内容复制到一张独立的磁盘上。在发布盘生成后,运行
""程序,就可以在用户机器上安装应用程序的所有文件了。
9. 1.6系统运行和维护
在系统正式投入使用后,就进入了系统运行和维护阶段。事实证明,系统运行和维护的 工作更加繁多和琐碎,也牵涉到更多的人力和物力。
系统运行的主要内容有:日常的例行工作,它包括数据的录入、存储、更新、复制及统 计分析、报表生成等数据处理工作;临时性的信息服务,如临时性的信息检索和报表生成; 运行情况的记录,如工作量记录、工作效率记录、系统维护情况记录和系统故障记录。
系统维护的主要内容有:硬件维护,包括定期的预防性维护和突发性故障维护;软件维 护,主要是对程序的维护,它是系统维护中最重要的、工作量最大和耗时最多的一项维护; 数据维护,主要是指数据有较大的变化时、安装或转换新的数据库文件,或在数据库容量太 大而出现数据溢出时采取重写文件的工作。
9. 2数据库应用系统开发实例
开发一个数据库应用系统,应该首先进行需求分析,绘出系统的功能结构图,根据功能 结构进行数据库设计和应用程序设计。下面较为详细地介绍一个比拟简单的学生管理系统的 开发过程,旨在抛砖引玉,希望有兴趣的读者可以在此基础上,开发出功能更加完善的信息 管理系统。 9.
2.1学生管理系统需求分析
为了尽可能完善学生管理系统的各项功能,必须进行系统的功能分析,绘出系统的功能 结构图。
1.系统功能分析
本系统主要用于学生的信息管理,它包括学生的基本信息、成绩信息、课程信息等。系 统的主要任务是用计算机对上述信息进行日常管理,如数据录入、维护、查询,报表输出等。 这里为了简便起见,省略班级和系别信息,以及学生选课的功能。
从学生管理角度考虑,学生管理系统应包括以下几个主要功能。
①系统登录动能:要求系统登录时有密码管理功能,用户要输入正确的用户名和密码才 能进入系统。
②数据录入功能:系统要具有学生成绩信息、学生基本信息等录入功能。
③数据维护功能:系统要能够对学生的各种信息进行数据维护,主要是维护学生、课程 和成绩等方面的基本信息,包括增加、删除、修改等功能。
④数据查询功能:系统要具有学生班级信息、学生基本信息等查询功能。
⑤报表打印:实现各种所需报表的预览和打印功能,这里主耍包括学生基本信息和成绩 信息的打印功能。
⑥退出:用来实现退出本管理系统。
2.系统功能图
由前面的分析我们得到系统功能图如图9 1所示。学生管理系统包括4个主要功能: 数据录入功能,含有学生基本信息的录入和成绩信息的录入;数据维护功能,含有学生基本 信息的维护和成绩信息的维护;数据查询功能,含有学生基本信息的查询、成绩信息的查询 以及课程信息的查询;数据输出功能,含有学生基本信息的输出和成绩信息的输出。
学生管理系统
数据输入 数据维护
数据作询
数据输出
退出系统
学生信息输入
成绩信息输入
学生信息维护
成绩信息维护
学生信息杳询
.课程信息介.询
成
领
信
息
查
询
学
生
信
息
输
H1
成绩信息输出
图9 1学生管理系统功能结构图9. 2.2数据库设计
数据库设计主要涉及3方面的内容:系统的数据对象分析、数据库的逻辑结构设计和项 目文件的建立。
1
.系统的数据对象分析
从系统功能分析可以看出,用户的需求具体表达在学生管理的各种信息的提供、保存、 查询和输出上,这就要求系统的数据结构能充分表示学生管理的各种信息。通过系统需求分 析,总结出系统的数据对象应包含如下的信息。
①用户信息:包含用户名和密码。
②学生信息:包含学号、姓名、性别、出生日期、奖学金、籍贯、简历等,其中“学号” 字段唯一。
③课程信息:包含课程号、课程名、学时数和学分,其中“课程号”字段唯一。
④成绩信息:包含学号、课程号和成绩。
2
.数据库的逻辑结构设计
由于系统的概念结构相对简单,因此可以直接开始数据库的逻辑结构设计。采用VisualFoxPro开发,系统中使用的各个数据表的字段设计如表9 1〜表9 4所示。
表9 1 管理员表(passdbf)
字段
1
2
字段名
用户名
密码
类型
字符型
字符型
宽度
小数位
索引
注释
10
10
普通索引 表9 2学生基本信息表(学生表.dbf)
字段
1
2
3
4
5
6
7
字段名
学号
姓名
性别
出生日期
奖学金
籍贯
类型
字符型
字符型
字符型
日期型
数值型
字符型
宽度
小数位
索引
注释
12
8
主索引
男,女
2
8
4
简历 备注型
表9 3课程信息表(课程表.dbf)
字段
1
2
3
4
字段名
课程号
课程名
学时数
类型.
字符型
字符型
数值型
16
4
宽度
小数位
索引
主索引
注W
数字
8
20
学分 数值型
表9 4成绩信息表(成绩.dbf)
字段
1
2
3
字段名
学号
课程号
成绩
类型
字符型
字符型
数值型
3
4
宽度
小数位
索引
普通索引
普通索引
注释
数字
数字
12
4
5
3 .工程文件的建立
为了便于管理该系统中的各种文件,需要建立一个学生信息管理的工程文件,另外再建 立一个“D八学生管理”文件夹来存储该工程生成的所有文件,今后系统的详细设计也均在 该工程下进行操作。
9. 2.3应用程序设计wiol X|
学生管理系统
用户名密码 |・定II 3
I
取信图9 2 “登录”表单
本节介绍各表功能模块的详细设计。
1
.系统登录表单
本系统一般供管理人员使用。系统涉及学生信息、成绩信息和课程信息等,这些信息不 能受到随意的修改,因此,系统设置登录表单,要求用户输入正确的用户名和密码。为了方 便使用,系统自动将管理员表中已有的用户名添加到列表框Combol中,由用户选择。
(1)登录表单的设计
“登录”表单如图9 2所示,共有7个控件对象,其中包括3个标签控件、1个组合 框控件(利用生成器将“passdbf”中的“用户名”字段设为组合框的数据源)、1个文本框控 件和2个命令按钮控件。表单及控件的属性如表9 5所示。
表9 5 “登录”表单中各控件及其属性值
控件名称 属性 属性值
Forml
Caption
登录
Height 250
Width 375
ShowWindow
1 在顶层表单中
Label 1
Caption
学生管理系统
ForeColor
0,0,255(蓝色)
FontName
楷体 _GB2312
FontSize 20
Label2
BackStyle
0 透明
Caption
用户名
FontName
宋体
FontSize 16
Label3
Caption
密码
其他同Label2
Command 1 Caption
确定
Command! Caption
取消
Combo 1 RowSourceType
6 字段
Textl
全部属性
默认值
⑵事件代码的编写
①“确定”按钮的Click事件代码:
SET DEFAULT TOD: '学生管理
OPEN DATABASE学生数据
USE PASS
LOCATE FOR ALUTRIM(密码) = ALUTRIM( );
AND用户名=VALUE &&查找用户名和密码均符合的 记录EOF()E
DO FORM
ELSE? MESSAGEBOX(〃密码错误,请重新输入! 〃,0+48+0+0, 〃确定“)
H
ENDIF
②“取消”按钮的Click事件代码:
IF NOT QUIT.学生信息输入表单
“学生信息输入”表单界面如图9 3所示,具体设计和操作步骤如下。
图9 3“学生信息输入”表单
(1)创立表单界面
①翻开表单设计器,生成一空白表单。
②翻开数据环境设计器,将“学生表”添加到其中。
③将“学生表”中的全部字段分别拖放到表单上,并调整其位置和大小。
④在表单上添加1个标签控件和5个命令按钮控件,并调整其位置和大小。
⑵设置对象属性
该表单所用的局部对象及其属性值如表9 6所示°
表9 6 “学生信息输入”表单中各控件及其属性值
控件名称
属性
属性值
Forml
AutoCenter
Caption
.T.
学生信息输入
Label 1
Caption
ForeColor
FontName
FontSize
Command 1
Command2
Command3
Command4
Commands
⑶事件代码的编写
学生信息输入
0,0,255(蓝色)
楷体 _GB2312
20
Caption
Caption
Caption
Caption
Caption
上一个
下一个
添加
放弃
返回
5个命令按钮的Click事件代码分别如下。
①“上一个”命令按钮的Click事件代码:
SKIP -1
IF BOF()MESSAGEBOX("已是第一条记录〃,48, 〃信息窗口〃)
D 1 .ENABLED = .F. SKIP
D 1 .ENABLED = .T.
ENDIF
D 1 .ENABLED = .T.
H
②“下一个”命令按钮的Click事件代码:
SKIP
IF EOF()MESSAGEBOX(〃已是最后一条记录〃,48, 〃信息窗口")
D = .F.
SKIP -1
D = .T.
ENDIF
D = .T.
H
③“添加”命令按钮的Click事件代码:
APPEND BLANK
GO BOTT
H
④“放弃”命令按钮的Click事件代码:
BX=MESSAGEBOX(〃 放弃添加? 〃,4+32+0+0,
IFBX = 6GO BOTT
〃确认!〃)
发布者:admin,转转请注明出处:http://www.yc00.com/news/1690429915a348768.html
评论列表(0条)