11.1 开发应用程序的基本步骤 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

在开发应用程序时,首先应进行系统环境规划,规划中要考虑的因素有:应用程序所面向的用户及其可能需要的各种操作、数据库规模、系统工作平台(单用户或是网络)、程序要处理的数据类型(是本地数据还是远程数据)等。规划完成之后,即可利用项目管理器来进行每一步开发,它可以帮助管理开发过程中的所有文件,并最终连编成应用程序。应用程序的开发步骤大致如下图所示:

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

1. 数据库结构设计

2. 系统功能模块设计

3. 菜单设计

4. 用户界面设计

5. 查询设计

6. 报表设计

7. 系统维护设计

8. 系统模块调试

9. 用项目管理器连编成应用程序

11.2 优化应用程序的技巧

1. 优化表和索引

1) 如果没有启用记录或表缓冲,应该使用INSERT-SQL命令(因索引只需更新一次),而不要使用APPEND BLANK 命令后再使用REPLACE

2) 当需要将大量记录追加到索引过的表中时,应先取消或关闭索引,在数据追加完毕,再重建索引,这样速度会快些;

3) 在SQL语句中要尽量避免函数调用;

4) 如果需要经常使用某种索引顺序,应周期性使用此索引对表进行排序,提高表的性能;

5) 在多用户环境中,使用CDX 索引文件比 IDX 索引文件快。

2. 使用Rushmore 技术加速数据访问

使用 Rushmore 技术可以显著地提高查询的速度。Rushmore 是一种从表中快速地选取记录集的技术,它可将查询响应时间从数小时或数分钟降低到数秒。访问单表时,使用 FOR 子句,访问多表时,使用SELECT-SQL 查询,可自动隐含地使用该技术。

1)访问单个表中的数据,使用一个FOR子句;

2)访问多个表中的数据,使用SELECT-SQLDELETE-SQLUPDATE-SQL命令。

3. 优化表单和控件

1) 使用数据环境;

2)在表单集里限制表单数目;

3)在页框中动态加载页面控件;

4)动态绑定控件与数据;

5)当必须对屏幕进行多处更改时,延迟屏幕刷新;

6)在经常使用的方法程序中减少代码。

4. 提高VFP程序性能的一般技巧

1)数据要选择正确的数据类型

2)避免重复打开文件,需要打开多个文件时,将它们分配给不同的工作区,需要时使用SELECT命令选择工作区;

3)尽量使用FOR…ENDFOR循环,而不要使用DO WHILE…ENDDO循环,因为FOR循环较快;

4)从多个字段复制数据时,用SCATTER TO ARRAY 比用SCATTER MEMVER快;

5)为了有效的使用内存,避免在需要对象之前就创建它们,当不要该对象时应及时清除它;

6)尽量将输出发送到顶层窗口,速度快些;

7)使用SET TALK OFF命令取消状态显示,可节省屏幕顶端更新时间;

8)将SET DOHISTORY 设置为OFF,避免当运行程序时每次都更新命令窗口;

9)使用名称表达式代替宏替换,因为名称表达式更快;

10)有效地引用对象属性:

·优化对属性的重复引用,可将属性值保存到一个变量中,再进行更改,在完成时一次性的设置属性;

·有效地引用多个属性,可以用WITH…ENDWITH命令避免重复查找同一个对象,或将对象的引用保存在变量中。

11.3 程序开发实例

—— 简单的高校教学管理系统

1. 设计数据库

数据库的组成:学生登记表、教师登记表、院系登记表、专业登记表、班级登记表、教学计划表、课程登记表、成绩登记表

数据表的结构:各数据表的结构如下表。

表名

字段名及字段类型

学生登记表

学号

姓名

性别

出生日期

班级

年级

专业

院系

特长

政治面貌

C8

C8

C2

D

C5

C2

C4

C3

M

C10

教师登记表

教工号

姓名

性别

出生日期

职称

晋升时间

职务

专业

院系

参加工作时间

C5

C8

C2

D

C10

D

C10

C4

C3

D

成绩登记表

学号

姓名

课程代号

平时成绩

期末考试

总评成绩

考试类型

教师

考试日期

C7

C8

C5

N5.1

N5.1

N5.1

C10

C5

D

教学计划表

院系名称

班级名称

课程名

学年/学期

学时数

考试类型

教室

任课教师

C10

C10

C16

C5

N3

C10

C4

C8

课程登记表

课程代号

类别

课程名

学分

是否考试

是否必修

 

 

 

C5

C2

C16

N3.1

L

L

 

 

 

班级登记表

班级代号

班级名称

班级人数

专业代号

 

 

 

C5

C10

N3

C4

 

 

 

专业登记表

专业代号

专业名称

部门代号

 

 

 

 

C4

C20

C3

 

 

 

 

院系登记表

院系代号

院系名称

 

 

 

 

 

C3

C20

 

 

 

 

 

2. 设计基本表单

总表单:设计主界面表单与口令检查表单(采用表单集)并运行测试。

数据表表单:先用向导创建各数据表的表单,再用表单设计器修改成所需的样式。

数据测试:利用各表单向每个数据表输入部分数据,并进行简单测试。

3. 设计菜单

主菜单组成:根据需要本系统设置6大项菜单:系统维护(需密码才可进入)、浏览、查询、信息输出、帮助、退出。

菜单设计:根据需要完成的各项功能,在菜单设计器中设计各菜单的子菜单和菜单项。

4. 设计浏览表单

设计成表单集的形式,该表单集既要能浏览到各表的详细信息,又要能浏览到相关表的统计信息。在此表单中出现的任何信息仅供浏览。

5. 设计查询表单

先在表单设计器中设计一个查询总表单,再用表单向导中的一对多表单向导设计几个分表单,并在表单设计器中进行所需的修改,最后在总表单的命令按钮中添加所需代码, 使各项查询功能得到实现。

6. 设计输出报表

根据学校通常所需的教学管理信息,设计一组报表,需要时可以打印出来。

输出报表包括:学生一览表、教师一览表、部门一览表、专业一览表、班级一览表、课程一览表、成绩一览表、教学计划一览表。

7. 完善菜单设计

编制各菜单项的过程代码使菜单功能得以实现。

8. 编制帮助信息

将帮助信息以独立的文件形式保存在计算机中,通过表单的调用来显示帮助信息。帮助信息主要介绍本系统的各项功能及使用方法。

9. 连编应用程序

设计一个主程序,并在项目管理器中用连编按钮将系统所有文件连编成一个应用程序。

10.测试

对不符合要求的部分进行修改,重新连编,再调试,直到完全满足要求为止。