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-SQL、DELETE-SQL、UPDATE-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.测试
对不符合要求的部分进行修改,重新连编,再调试,直到完全满足要求为止。
转载于:https://blog.51cto.com/hanbing/79301