资料下载网
首页 计算机 考试教辅
Visual Foxpro编程实例教程 pdf电子书免费下载,百度云
首页 > 计算机 > 数据库技术 > Visual Foxpro编程实例教程 pdf电子书免费下载,百度云

《Visual Foxpro编程实例教程》pdf电子书免费下载


下载方式一:

百度网盘下载地址:https://pan.baidu.com/s/1oQkJqvy8V1cm1EWOkQ5CRQ
百度网盘密码:1111

下载方式二:

http://ziliaoshare.cn/Download/ae_123666_do_VisualFoxproBCSLJC.zip

 


Visual Foxpro编程实例教程

作者:empty

出版社:empty

《Visual Foxpro编程实例教程》介绍

实验五 Visual Foxpro编程实践

一. 实验目的与要求

掌握利用Visual Foxpro编制开发自己的应用程序的实践知识,并学会在程序调试中自行发现问题和修改程序代码,最终完成应用程序的无错运行。

二. 相关知识

利用Visual Foxpro自行开发编制应用程序的步骤:

1.设置好系统的工作环境(尤其注意工作目录的默认设置)。

2.如果是初次进行,应当先建立一个项目,为该项目命名,激活项目管理器。如果是接着上次的工作进行,则打开上次工作的本项目,同样也激活项目管理器。

3.在项目管理器的“数据”à“数据库”下面创建一个数据库,并命名(如已创建,则跳过本步骤)。

4.在项目管理器的“数据”à“数据库”à“表”下面进行数据表的创建或修改工作,并输入少量的正确数据以便将来的运行调试(如果已经创建了数据表,则跳过本步骤)。

5.在项目管理器的“文档”下面创建该应用程序所用到的所有表单,设计好各表单的界面并为表单里的控件填写程序代码.(注意为表单添加各自的数据环境,否则会出错!)

6.试运行各表单,发现问题后重新修改有问题的表单的代码,反复调试和修改直至最后能无错运行。

7.将应用程序打包发布或制作成安装文件。

三. 实验内容与步骤

本次实验以一个简单的学生成绩管理系统为例。首先,对该系统作一个简单的介绍:

该应用系统为完成学生信息和成绩的管理系统,主要有以下几个应用模块:

(1)用户登录管理: 系统具有管理员功能,只有取得管理员权限的人才能使用本系统。

(2)数据添加功能: 对学生基本信息、教师基本信息、班级信息、课程信息、学生成绩信息进行添加录入。

(3)数据查询功能: 对上述信息的基本查询。

(4)数据修改功能: 对上述信息可进行修改工作。

(5)统计操作: 可分别按个人成绩、单科成绩统计出最高成绩、最低成绩和平均成绩等。

(6)打印功能: 对上述信息可进行打印。

实验步骤如下:

1.数据库设计:

首先设置好系统的运行环境和工作目录,然后建立项目,为项目命名为“学生成绩管理系统”,激活项目管理器,并在在项目管理器的“数据”à“数据库”下面创建一个数据库,命名为“学生成绩管理”,在“数据库”的“表”下面创建以下各数据表:

(1)用户信息表user (表名命名为user即可,不要加汉字。以下同。)

字段名称类型宽度

用户名字符型10

密码字符型10

(2)学生信息表 student

字段名称类型宽度

学号字符型8

姓名字符型10

性别字符型2

班级编号字符型6

出生日期日期型8

(3)教师信息表 teacher

字段名称类型宽度

教师代码字符型4

姓名字符型10

性别字符型2

职称字符型10

部门字符型10

出生日期日期型8

(4)班级信息表 classes

字段名称类型宽度

班级编号字符型6

年级字符型4

专业字符型10

系代码字符型2

学制字符型2

类型字符型4

(5)课程信息表 course

字段名称类型宽度

课程代码字符型6

课程名称字符型16

类别字符型4

教师代码字符型4

(6)分数信息表 score

字段名称类型宽度

学号字符型8

课程代码字符型6

成绩数值型4

创建好以上数据表以后,应该向每个表中添加适量合法数据以便后面的测试。

2.表单设计

2.1登录模块

功能描述: 实现只有指定的用户才能访问系统的功能。并且,只有身份为“管理员”的用户才可以调用修改模块修改数据。

界面设计:

表单名称: login

文件名: login.scx

数据环境: user.dbf

对象设置:

对 象 属 性 值说 明

Form1Caption欢迎使用学生成绩管理系统

Lable1Caption学生成绩管理系统

Lable2Caption请输入用户名:

Lable3Caption请输入密码:

Combo1RowSourceType6-字段指定数据值来源类型

RowSourceUser.用户名指定数据值来源

Cammand1Caption登录

Cammand2Caption退出

函数与方法声明:

(1)Command1中的Click事件

功能:完成在登录时对输入的用户名和密码的检验,如果数据表user中存在输入的用户名和密码信息,则调用主窗口(如果是管理员则不但调用主窗口,还允许执行主窗口的修改功能),否则提示输入错误。

程序清单:

private kl,yh,st

st='密码不正确,请重新输入!'

use user

kl=alltrim(thisform.text1.value)

yh=alltrim(thisform.combo1.value)

*将用户输入的用户名和密码的值分别保存在yh和kl变量中

locate for alltrim(thisform.combo1.value)= =alltrim(user.用户名)

*在user表中查找是否有与yh和kl匹配的记录

if found() and alltrim(user.密码)= =kl

*正确的用户名和密码

thisform.visible=.f.

close tables all

do form main.scx

if yh= ='admin'

*如果是超级用户管理员,则允许他使用main表单中的第三组按钮(即修改模块)

main.optiongroup1.option3.enabled=.t.

endif

this.parent.text1.value=''

else

*错误的用户名和密码,系统给出提示,延迟2秒

wait window st timeout 2

thisform.text1.value=''

thisform.text1.setfocus

endif

(2)Command2中的Click事件

功能:退出学生成绩管理系统

程序清单:

clear events

quit

(3)Form1的Destroy事件

功能:意外关闭程序窗口时的处理

程序清单:

clear events

2.2 主界面模块

功能描述: 主要是提供本系统各功能模块的入口.

界面设计:

表单名称: main

文件名: main.scx

数据环境: 无

对象设置:

对 象 属 性 值

Form1Caption学生成绩管理系统

Lable1Caption欢迎使用学生成绩管理系统

Lable2Caption请选择要操作的内容:

Optiongroup1ButtonCount6

Optiongroup1.Option1Caption添加记录

Optiongroup1.Option2Caption查询记录

Optiongroup1.Option3Caption修改记录

Optiongroup1.Option3Enabled.F.

Optiongroup1.Option4Caption统计数据

Optiongroup1.Option5Caption打印报表

Optiongroup1.Option6Caption退出系统

函数与方法声明:

(1)Optiongroup1中的IntelactiveChange事件:

功能: 根据Optiongroup1中的选择单击按钮,调用各重要功能模块.

程序清单:

do case

case this.value=1

do form 添加

case this.value=2

do form 查询

case this.value=3

do form 修改

case this.value=4

do form 统计

case this.value=5

do form 打印

case this.value=6

thisform.release

quit

endcase

(2)Optiongroup1中的每一个Option的Click事件:

功能: 与(1)中不同,(1)是指在Optiongroup中的各个Option切换时才触发的程序,仅这样还不够,还要编写每个Option被单击时触发的程序才完整。

程序清单:

对应Optiongroup1.Option1的Click事件: do form 添加

……(其余类推)

2.3 数据添加模块

功能描述: 用户通过5个不同的页面来完成对学生信息表、教师信息表、班级表、课程表和成绩表的数据添加操作。

界面设计:

表单名称: 添加

文件名: 添加.scx

数据环境: student.dbf, class.dbf, score.dbf, teacher.dbf, course.dbf

对象设置:

对 象 属 性 值说 明

Form1Caption添加

PageFrame1PageCount5

Command1Caption返回主菜单主表单中的Command1

Page1Caption学生表

Page2Caption教师表

Page3Caption班级表

Page4Caption课程表

Page5Caption成绩表

Command1Caption添加与上面的Command1不同,这是在各个页面中的Command1

Command2Caption清空

函数与方法声明:

因为添加表单中对于5个表的操作方法类似,所以这里只给出学生表的添加部分,其余4个页面的程序请同学们自己对照思考和编制。

(1)Form1中的Active事件

功能: 设置焦点位置

程序清单:

this.pageframe1.page1.text1.setfocus

(2)Form1中的Command1的Click事件

功能: 释放当前窗口

程序清单:

thisform.release

(3)Page1中Command1的Click事件

功能: 将输入的新记录信息添加到学生表中,完成新记录的添加工作

程序清单:

num1=alltrim(thisform.pageframe1.page1.text1.value)

num2=alltrim(thisform.pageframe1.page1.text2.value)

num3=alltrim(thisform.pageframe1.page1.text3.value)

num4=alltrim(thisform.pageframe1.page1.text4.value)

num5=alltrim(dtoc(thisform.pageframe1.page1.text5.value)) &&并非是alltrim(thisform.pageframe1.page1.text5.value)

set exact on

do case

case num1=''

messagebox('学号不能为空!',0+48,'系统提示!')

thisform.pageframe1.page1.text1.setfocus

case num2=''

messagebox('姓名不能为空!',0+48,'系统提示!')

thisform.pageframe1.page1.text2.setfocus

case num3=''

messagebox('性别不能为空!',0+48,'系统提示!')

thisform.pageframe1.page1.text3.setfocus

case num4=''

messagebox('班级编号不能为空!',0+48,'系统提示!')

thisform.pageframe1.page1.text4.setfocus

case num5=''

messagebox('出生日期不能为空!',0+48,'系统提示!')

thisform.pageframe1.page1.text5.setfocus

otherwise

a=messagebox('确认添加么?',1+64+0,'系统提示!')

if a=1

select student

go bottom

insert into student(学号,姓名,性别,班级编号,出生日期) values(num1,num2,num3,num4,ctod (num5))

messagebox('添加成功!')

else

thisform.pageframe1.page1.text1.setfocus

endif

endcase

(4)Page1中的Command2的Click事件:

功能: 清空当前页面上输入的数据

程序清单:

this.parent.text1.value=''

this.parent.text2.value=''

this.parent.text3.value=''

this.parent.text4.value=''

this.parent.text5.value=''

由于其它各个页面上的添加数据的操作大同小异,这里不再赘述。

比如:

num1=alltrim(thisform.pageframe1.page2.text1.value)

num2=alltrim(thisform.pageframe1.page2.text2.value)

num3=alltrim(thisform.pageframe1.page2.text3.value)

num4=alltrim(thisform.pageframe1.page2.text4.value)

num5=alltrim(thisform.pageframe1.page2.text5.value)

num6=alltrim(dtoc(thisform.pageframe1.page2.text6.value)) &&并非是alltrim(thisform.pageframe1.page2.text6.value)

set exact on

do case

case num1=''

messagebox('教师代码不能为空!',0+48,'系统提示!')

thisform.pageframe1.page2.text1.setfocus

case num2=''

messagebox('姓名不能为空!',0+48,'系统提示!')

thisform.pageframe1.page2.text2.setfocus

case num3=''

messagebox('性别不能为空!',0+48,'系统提示!')

thisform.pageframe1.page2.text3.setfocus

case num4=''

messagebox('职称不能为空!',0+48,'系统提示!')

thisform.pageframe1.page2.text4.setfocus

case num5=''

messagebox('部门不能为空!',0+48,'系统提示!')

thisform.pageframe1.page2.text5.setfocus

case num6=''

messagebox('出生日期不能为空!',0+48,'系统提示!')

thisform.pageframe1.page2.text6.setfocus

otherwise

a=messagebox('确认添加么?',1+64+0,'系统提示!')

if a=1

select student

go bottom

insert into student(教师代码,姓名,性别,职称,部门,出生日期) values(num1,num2,num3,num4,num5,ctod(num6))

messagebox('添加成功!')

else

thisform.pageframe1.page2.text1.setfocus

endif

endcase

2.4 数据查询模块

功能描述: 用户可以通过不同的页面完成对5个不同表中的数据的查询操作

界面设计:

表单名称: 查询

文件名: 查询.scx

数据环境: student.dbf, class.dbf, score.dbf, teacher.dbf, course.dbf

对象设置:

查询主表单中的对象设置:

对 象 属 性 值说 明

Form1Caption查询

PageFrame1PageCount3

Command1Caption返回主菜单主表单中的Command1

PageFrame1.Page1中的对象设置:

对 象 属 性 值

Combo1RowSourceType6-字段

RowSourceClassese.班级编号

Combo2RowSourceType6-字段

RowSourceStudent.姓名

Label1Caption请选择班级代码和姓名

Label2Caption班级代码

Label3Caption姓名

Label4Caption学号

Label5Caption姓名

Label6Caption性别

Label7Caption出生日期

PageFrame1.Page2用来对数据表进行浏览,其界面为:

其中的对象设置:

对 象 属 性 值

Combo1RowSourceType1-值

RowSource学生表,教师表,班级表,课程表,成绩表

Style2-下拉列表框

Value1

Label1Caption请选择要浏览的表

Grid1RecordSourceType0-表

PageFrame1.Page3用来进行课程浏览.其界面为:

其中的对象设置:

对 象 属 性 值

CommandGroup1ButtonCount5

Label1Caption课程代码

Label2Caption课程名称

Label3Caption类别

Label4Caption教师代码

函数与方法声明:

(1)Thisform.PageFrame1.Page1中的Deactive事件:

功能: 当前学生情况查询页面被释放时,使数据查询设置过滤条件为空.

程序清单:

set filter to

(2)Thisform.PageFrame1.Page1.Combo1中的InteractiveChange事件:

功能: 根据下拉列表框的选择,设置班级信息的过滤条件,同时清空文本框信息.

程序清单:

public m

m=thisform.pageframe1.page1.combo1.value

select student

set filter to 班级编号=m

thisform.pageframe1.page1.text1.value=''

thisform.pageframe1.page1.text2.value=''

thisform.pageframe1.page1.text3.value=''

thisform.pageframe1.page1.text4.value=''

(3)Thisform.PageFrame1.page1.Combo2中的InteractiveChange事件:

功能: 根据前面设置的班级过滤条件对学生信息进行查询,并将结果在当前页面显示

程序清单:

locate for 姓名=this.value *用组合框中的值进行查找

if found()

thisform.pageframe1.page1.text1.value=学号

thisform.pageframe1.page1.text2.value=姓名

thisform.pageframe1.page1.text3.value=性别

thisform.pageframe1.page1.text4.value=出生日期

thisform.pageframe1.page1.combo2.value=''

endif

(4)Thisform.PageFrame1.page2中的Init事件:

功能: 在“数据表浏览”页显示时进行相关的初始化工作.

程序清单:

with this.grid1

.recordsourcetype=6

.recordsource='student'

.refresh

.columncount=5

.column1.width=60

.column2.width=65

.column3.width=40

.column4.width=70

.column5.width=60

.column1.header1.caption='学号'

.column2.header1.caption='姓名'

.column3.header1.caption='性别'

.column4.header1.caption='出生日期'

.column5.header1.caption='班级编号'

.readonly=.t.

.deletemark=.f.

endwith

(5)Thisform.PageFrame1.Page2.Combo1中的IntelactiveChange事件

功能: 在“数据表浏览”页中根据下拉组合框中的选择对不同的表进行数据内容显示

程序清单:

&&加入如下代码,可防止由字段少的表往字段多的表切换时造成数据字段丢失无法显示的问题

with this.parent.grid1

.columncount=6

.column1.width=60

.column2.width=65

.column3.width=50

.column4.width=66

.column5.width=70

.column6.width=70

endwith

&&即每次都事先把grid先刷新成行数教多的表.

do case

case this.value=1

with this.parent.grid1

.recordsourcetype=6

.recordsource='student'

.columncount=5

.column1.width=60

.column2.width=65

.column3.width=40

.column4.width=70

.column5.width=60

.column1.header1.caption='学号'

.column2.header1.caption='姓名'

.column3.header1.caption='性别'

.column4.header1.caption='出生日期'

.column5.header1.caption='班级编号'

.refresh

.readonly=.t.

.deletemark=.f.

endwith

case this.value=2

with this.parent.grid1

.columncount=6

.recordsource='teacher'

.column1.header1.caption='教师代码'

.column2.header1.caption='姓名'

.column3.header1.caption='性别'

.column4.header1.caption='出生日期'

.column5.header1.caption='部门'

.column6.header1.caption='技术职务'

.column1.width=60

.column2.width=65

.column3.width=50

.column4.width=66

.column5.width=70

.column6.width=70

.refresh

.readonly=.t.

.deletemark=.f.

endwith

case this.value=3

with this.parent.grid1

.recordsourcetype=6

.recordsource='classes'

.columncount=6

.column1.width=60

.column2.width=65

.column3.width=50

.column4.width=70

.column5.width=60

.column6.width=60

.column1.header1.caption='班级编号'

.column2.header1.caption='年级'

.column3.header1.caption='专业'

.column4.header1.caption='系代码'

.column5.header1.caption='学制'

.column6.header1.caption='类别'

.refresh

.readonly=.t.

.deletemark=.f.

endwith

case this.value=4

with this.parent.grid1

.recordsourcetype=6

.recordsource='course'

.columncount=4

.column1.width=60

.column2.width=100

.column3.width=50

.column4.width=50

.column1.header1.caption='课程代码'

.column2.header1.caption='课程名称'

.column3.header1.caption='类别'

.column4.header1.caption='教师代码'

.refresh

.readonly=.t.

.deletemark=.f.

endwith

case this.value=5

with this.parent.grid1

.recordsourcetype=6

.recordsource='score'

.columncount=3

.column1.width=60

.column2.width=100

.column3.width=50

.column1.header1.caption='学号'

.column2.header1.caption='课程代码'

.column3.header1.caption='成绩'

.refresh

.readonly=.t.

.deletemark=.f.

endwith

endcase

(6)Thisform.PageFrame1.Page3中的Init事件

功能: 当“课程浏览”页面被显示出来时,进行相关的初始化工作.

程序清单:

select course

this.text1.value=课程代码

this.text2.value=课程名称

this.text3.value=类别

this.text4.value=教师代码

(7)Thisform.PageFrame1.Page3中的Refresh事件

功能: 在“课程浏览”页面中刷新当前的数据显示

程序清单:

select course

this.text1.value=课程代码

this.text2.value=课程名称

this.text3.value=类别

this.text4.value=教师代码

(8)Thisform.PageFrame1.Page3中的CommandGroup1的Click事件

功能: 利用按钮组完成对数据库中的记录浏览

程序清单:

select course

do case

case this.value=1

go top

case this.value=2

skip -1

if bof()

messagebox('已到首部!',0+48,'系统提示')

go top

endif

case this.value=3

skip

if eof()

messagebox('已到末尾!',0+48,'系统提示')

go bottom

endif

case this.value=4

go bottom

case this.value=5

thisform.release

endcase

thisform.refresh

2.5 数据修改模块

功能描述: 用户可以通过不同的页面完成对5个不同表中的数据的修改操作

界面设计:

由于修改表单中对于5个表的操作方法类似,这里只给出第一个页面即“学生表”的设计部分。其余4个页面的设计及相关的程序代码请同学们自己思考并完成。

表单名称: 修改

文件名: 修改.scx

数据环境: student.dbf, class.dbf, score.dbf, teacher.dbf, course.dbf

对象设置:

对 象 属 性 值

Form1Caption修改

PageFrame1PageCount5

Command1Caption返回:

Page1.Combo1RowSourceType6-字段

RowSourceStudent.学号

Page2.Combo1RowSourceType6-字段

RowSourceTeacher.教师代码

Page3.Combo1RowSourceType6-字段

RowSourceClassess.班级编号

Page4.Combo1RowSourceType6-字段

RowSourceCourse.课程代码

Page5.Combo1RowSourceType6-字段

RowSourceScore.学号

Page1.Command1Caption确定

Page1.Command2Caption退出

函数与方法声明:

(1)Thisform.PageFrame1.Page1中的Activate事件:

功能: 在学生信息修改页面显示时进行初始化操作

程序清单:

select student

go top

this.text1.value=学号

this.text2.value=姓名

this.text3.value=性别

this.text4.value=出生日期

this.text5.value=班级编号

(2)Thisform.PageFrame1.Page1.Combo1中的IntelactiveChange事件:

功能: 根据学号,查找对应的学生信息

程序清单:

select student

locate for 学号=this.value

if found()

thisform.pageframe1.page1.text1.value=学号

thisform.pageframe1.page1.text2.value=姓名

thisform.pageframe1.page1.text3.value=性别

thisform.pageframe1.page1.text4.value=出生日期

thisform.pageframe1.page1.text1.value=班级编号

endif

(3)Thisform.PageFrame1.Page1.Command1中的Click事件:

功能: 当用户单击“确定”按钮后,将当前修改的数据保存到数据库中.

程序清单:

select student

a=alltrim(thisform.pageframe1.page1.text1.value)

b=alltrim(thisform.pageframe1.page1.text2.value)

c=alltrim(thisform.pageframe1.page1.text3.value)

d=alltrim(dtoc(thisform.pageframe1.page1.text4.value))

e=alltrim(thisform.pageframe1.page1.text5.value)

set exact on

do case

case a=’’

messagebox(‘学生学号不能为空’,0+48,’系统提示’)

thisform.pageframe1.page1.text1.setfocus

case b=’’

messagebox(‘学生姓名不能为空’,0+48,’系统提示’)

thisform.pageframe1.page1.text2.setfocus

case c=’’

messagebox(‘学生性别不能为空’,0+48,’系统提示’)

thisform.pageframe1.page1.text3.setfocus

case d=’’

messagebox(‘学生出生日期不能为空’,0+48,’系统提示’)

thisform.pageframe1.page1.text4.setfocus

case e=’’

messagebox(‘学生班级编号不能为空’,0+48,’系统提示’)

thisform.pageframe1.page1.text5.setfocus

otherwise

m=messagebox(‘确定要修改学生记录吗?’,0+48,’系统提示’)

if m=1

select student

replace 学号 with a

replace 姓名 with b

replace 性别 with c

replace 出生日期 with ctod(d)

replace 班级编号 with e

messagebox(‘修改成功!’)

endif

endcase

(4)Thisform.PageFrame1.Page1.command2中的Click事件:

功能: 释放当前窗口

程序清单:

thisform.release

2.6 数据统计模块

功能描述: 用户可以通过不同的页面完成对5个不同表中的数据的修改操作

界面设计:

表单名称: 统计

文件名: 统计.scx

数据环境: student.dbf, score.dbf, course.dbf

对象设置:

对 象属 性值

Form1Caption统计

OptionGroup1ButtonCount2

Label1Caption最高成绩

Label2Caption最低成绩

Label3Caption平均成绩

List1RowSourceType6-字段

Label4~Label6(空白标签用于显示运算结果)

Command1Caption返回

函数与方法声明:

(1)Form1中的Init事件

功能: 在窗体被调用时,进行显示的初始化工作

程序清单:

this.label5.caption=''

this.label6.caption=''

this.label7.caption=''

(2)Thisform.OptionGroup1中的IntelactiveChange事件

功能: 根据单选框的选择情况,进行数据源的设置

程序清单:

do case

case this.value=0

thisform.list1.rowsource='' *无选项时不设置数据源

thisform.list1.refresh

case this.value=1

thisform.list1.rowsource='student.姓名'

thisform.list1.refresh

case this.value=2

thisform.list1.rowsource='course.课程名称'

thisform.list1.refresh

endcase

(3)Thisform.List1中的IntelactiveChange事件

功能: 如果选项被改变,则根据用户指定的新选项重新统计并显示结果

程序清单:

do case

case thisform.optiongroup1.value=1

xm=alltrim(this.value)

select student

locate for 姓名=xm

xh=学号

select score

calculate max(成绩),min(成绩),avg(成绩) for 学号=xh to n1,n2,n3

thisform.label5.caption=alltrim(str(n1,4,1))

thisform.label6.caption=alltrim(str(n2,4,1))

thisform.label7.caption=alltrim(str(n3,4,1))

case thisform.optiongroup1.value=2

ch=alltrim(this.value)

select course

locate for 课程名称=ch

kcdm=课程代码

select score

calculate max(成绩),min(成绩),avg(成绩) for 课程代码=kcdm to m1,m2,m3

thisform.label5.caption=alltrim(str(m1))

thisform.label6.caption=alltrim(str(m2))

thisform.label7.caption=alltrim(str(m3))

endcase

(4)Thisform.Command1中的Click事件

功能: 释放当前窗口

程序清单: thisform.release

2.6 数据打印模块

功能描述: 完成相应的打印操作

界面设计:

表单名称: 打印

文件名: 打印.scx

数据环境: user.dbf, class.dbf, score.dbf, teacher.dbf, course.dbf

对象设置:

对 象 属 性 值

OptionGroup1ButtonCount5

Option1Caption学生表

Option2Caption教师表

Option3Caption班级表

Option4Caption课程表

Option5Caption成绩表

Command1Caption显示结果

Command2Caption返回

函数与方法声明:

(1) Thisform.Command1中的Click事件

功能: 根据选择的具体表,将其中的数据记录进行显示

程序清单:

do case

case thisform.optiongroup1.value=1

select student

go top

do form 打印结果显示

list rest to printer

case thisform.optiongroup1.value=2

select teacher

go top

do form 打印结果显示

list rest to printer

case thisform.optiongroup1.value=3

select classes

go top

do form 打印结果显示

list rest to printer

case thisform.optiongroup1.value=4

select course

go top

do form 打印结果显示

list rest to printer

case thisform.optiongroup1.value=5

select score

go top

do form 打印结果显示

list rest to printer

endcase

(2) Thisform.Command2中的Click事件

功能: 释放本窗口.

程序清单:

thisform.release

2.9 主程序

注意: 在项目管理器里的“代码”à“程序”下面建立本系统的主程序

文件名: main.prg

程序清单:

set talk off

clear all

_screen.visible=.f.

public mypath

mypath=left(sys(16),rat(' ',sys(16)))

set defa to &mypath

do form login.scx

read events

说明: 每一个项目都应该有主程序,又叫入口程序,即整个项目是从哪里开始执行的。

设置主程序的方法是在项目管理器中选中它,然后按鼠标右键将其设置为主程序。设置为主程序的程序会以黑体字显示,以后应用系统的执行将首先从该程序开始执行,由该程序来调用其它的程序或模块。

我们经常把系统的环境设置,公共变量设置等放在主程序之中。


《Visual Foxpro编程实例教程》目录

计算机


python
AI人工智能
javascript
计算机网络/服务器
数据库技术
计算机F

考试教辅


考研考博
英语四六级

沪ICP备18046276号-5