当前位置:文档之家› Visual Foxpro编程实例

Visual Foxpro编程实例

Visual Foxpro编程实例
Visual Foxpro编程实例

实验五Visual Foxpro编程实践

一. 实验目的与要求

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

二. 相关知识

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

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

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

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

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

5.在项目管理器的“文档”下面创建该应用程序所用到的所有表单,设计好各表单的界面并为表单里的控件填写程序代码.(注意为表单添加各自的数据环境,否则会出错!) 6.试运行各表单,发现问题后重新修改有问题的表单的代码,反复调试和修改直至最后能无错运行。

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

三. 实验内容与步骤

本次实验以一个简单的学生成绩管理系统为例。首先,对该系统作一个简单的介绍:该应用系统为完成学生信息和成绩的管理系统,主要有以下几个应用模块:

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

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

绩信息进行添加录入。

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

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

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

等。

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

实验步骤如下:

1.数据库设计:

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

(1)

(2)

(3)

(4)

(5)

(6)

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

2.表单设计

2.1登录模块

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

界面设计:

表单名称:login

文件名:login.scx

数据环境:user.dbf

对象设置:

函数与方法声明:

(1)Command1中的Click事件

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

程序清单:

private kl,yh,st

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

use user

kl=alltrim(thisform.text1.value)

yh=alltrim(https://www.doczj.com/doc/a816734748.html,bo1.value)

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

locate for alltrim(https://www.doczj.com/doc/a816734748.html,bo1.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

数据环境:无

对象设置:

函数与方法声明:

(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

对象设置:

因为添加表单中对于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 对象设置:

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

其中的对象设置:

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

其中的对象设置:

函数与方法声明:

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

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

程序清单:

set filter to

(2)https://www.doczj.com/doc/a816734748.html,bo1中的InteractiveChange事件:

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

public m

m=https://www.doczj.com/doc/a816734748.html,bo1.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)https://www.doczj.com/doc/a816734748.html,bo2中的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=出生日期

https://www.doczj.com/doc/a816734748.html,bo2.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)https://www.doczj.com/doc/a816734748.html,bo1中的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

函数与方法声明:

(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)https://www.doczj.com/doc/a816734748.html,bo1中的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)https://www.doczj.com/doc/a816734748.html,mand1中的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)https://www.doczj.com/doc/a816734748.html,mand2中的Click事件:

功能:释放当前窗口

程序清单:

thisform.release

2.6 数据统计模块

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

表单名称:统计

文件名:统计.scx

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

函数与方法声明:

(1)Form1中的Init事件

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

程序清单:

https://www.doczj.com/doc/a816734748.html,bel5.caption=''

https://www.doczj.com/doc/a816734748.html,bel6.caption=''

https://www.doczj.com/doc/a816734748.html,bel7.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

https://www.doczj.com/doc/a816734748.html,bel5.caption=alltrim(str(n1,4,1))

https://www.doczj.com/doc/a816734748.html,bel6.caption=alltrim(str(n2,4,1))

https://www.doczj.com/doc/a816734748.html,bel7.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 https://www.doczj.com/doc/a816734748.html,bel5.caption=alltrim(str(m1))

https://www.doczj.com/doc/a816734748.html,bel6.caption=alltrim(str(m2))

https://www.doczj.com/doc/a816734748.html,bel7.caption=alltrim(str(m3))

endcase

(4)https://www.doczj.com/doc/a816734748.html,mand1中的Click事件

功能:释放当前窗口

程序清单:thisform.release

2.6 数据打印模块

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

界面设计:

表单名称:打印

文件名:打印.scx

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

(1) https://www.doczj.com/doc/a816734748.html,mand1中的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

《VisualFoxPro6.0简明教程》教学指导书(精)

《Visual FoxPro6.0简明教程》教学指导书 一、教学目的和要求 本课程以Visual Foxpro 6.0 为基础,讲授数据库系统的基本概念和基本理论,使学生了解关系型数据库的基本概念和程序设计方法,能够独立编写VFP程序,并结合数据库的操作管理功能,实现信息管理与查询功能,为后续课程学习奠定基础。 通过本课程的学习,使学生掌握数据库的基本概念、操作、查询;掌握高级语言程序设计及可视化编程功能,掌握可视化编程技巧及技术。学完本课程后,学生应该能够独立编制小型数据库应用程序。 为了便于教师备课,掌握进度,我们给出该课程的教学指导书。但基于各学校的教学安排和情况有所不同,所以很难有统一要求,我们仅以每周3+2学时为例(3节上课,2节上机,按18周设计)写出教学要求。对于每周2+2学时的教学单位有些章节内容可以删略。 二、课程内容及其安排 (课程安排以教育部高职高专规划教材《Visual FoxPro6.0简明教程》为基础) 教学课程内容安排: 第一周 内容:第1章Visual FoxPro 6.0概述 教学目的: 要求学生掌握VFP6.0的功能,VFP6.0系统的软硬件环境,VFP6.0系统的安装及性能指标和VFP6.0文件组成。 教学重点与难点: 1.VFP6.0系统的启动 2. VFP6.0环境介绍 3.VFP6.0文件组成 作业: 1.VFP 6.0的主要特点是什么? 2.VFP 6.0主要使用哪两种菜单? 3.VFP 6.0的数据库文件和数据表文件的扩展名是什么? 第二周 内容:项目管理器 教学目的: 使学生学会项目管理器的建立和使用. 教学重点与难点: 1.项目管理器的建立和界面操作 2. 设计器与生成器的使用 3. 工作目录与搜索路径的建立 作业: 1.什么是项目管理器? 2.如何进入项目管理器 3.项目文件的扩展名是什么?

MCGS触摸屏编程实例精选

MCGS触摸屏编程实例精选 1.MCGS表格中,两数据连接到两个开关量,要把采集到的“0”和“1”的状态,显示为“关”和“开” 在表格里输入“开|关”,然后连接开关型变量Data1,按钮是让开关量Data1取反。

这样就行了,运行时Data1默认为0显示关,按下按钮后Data1为1显示开,如此反复

2.mcgs里怎么画渐变色 渐变色只有通用版和网络版有,嵌入版没有 方法就是:填充颜色——填充效果,然后根据你的需要设置就行了。

3.如何在mcgs做脚本i0.0=1 让Q输出 当PLC的I0.0有信号,让Q0.0输出,在PLC中做我会,不知道在MCGS中怎么实现 在循环脚本中,循环时间为10ms,条件表达式为1,脚本程序为 IF I0.0 = 1 THEN Q0.0 = 1 ELSE Q0.0 = 0 ENDIF 4.MCGS组态如何实现这样的功能?点击某一部分,弹出登录对话框 这个画面是在有管理员帐户登录的情况下才可以设置的,我现在想实现当有人在没有登录的情况下点击了这个地方,就弹出提示:请先登录。 1条回答 可以先用函数!CheckUserGroup来判断当前登录的用户是不是你需要的用户组,返回只为0表示已经登录了你需要的用户组了,直接进行下一步,如果返回值不为0,表示当前登录的不是你需要的用户组或是没有任何登录,那么用子窗口或者可见度啥的都行,显示出来就行了。 追问

我是想在用户点击了上面图片中的部分时才弹出登录提示,怎么实现呢? 回答 你把判断的语句写到图片的事件里就行了 追问 求在具体一点,不知道怎么写。 回答 点控件,右键——事件——Click——事件连接脚本

VisualFoxpro编程实例

实验五 Visual Foxpro编程实践 一. 实验目的与要求 掌握利用Visual Foxpro编制开发自己的应用程序的实践知识,并学会在程序调试中自行发现问题和修改程序代码,最终完成应用程序的无错运行。 二. 相关知识 利用Visual Foxpro自行开发编制应用程序的步骤: 1.设置好系统的工作环境(尤其注意工作目录的默认设置)。 2.如果是初次进行,应当先建立一个项目,为该项目命名,激活项目管理器。如果是接着上次的工作进行,则打开上次工作的本项目,同样也激活项目管理器。 3.在项目管理器的“数据”“数据库”下面创建一个数据库,并命名(如已创建,则跳过本步骤)。 4.在项目管理器的“数据”“数据库”“表”下面进行数据表的创建或修改工作,并输入少量的正确数据以便将来的运行调试(如果已经创建了数据表,则跳过本步骤)。 5.在项目管理器的“文档”下面创建该应用程序所用到的所有表单,设计好各表单的界面并为表单里的控件填写程序代码.(注意为表单添加各自的数据环境,否则会出错!) 6.试运行各表单,发现问题后重新修改有问题的表单的代码,反复调试和修改直至最后能无错运行。 7.将应用程序打包发布或制作成安装文件。 三. 实验容与步骤 本次实验以一个简单的学生成绩管理系统为例。首先,对该系统作一个简单的介绍:该应用系统为完成学生信息和成绩的管理系统,主要有以下几个应用模块: (1)用户登录管理:系统具有管理员功能,只有取得管理员权限的人才能使用本系统。 (2)数据添加功能:对学生基本信息、教师基本信息、班级信息、课程信息、学生成 绩信息进行添加录入。 (3)数据查询功能:对上述信息的基本查询。 (4)数据修改功能:对上述信息可进行修改工作。 (5)统计操作:可分别按个人成绩、单科成绩统计出最高成绩、最低成绩和平均成绩 等。 (6)打印功能:对上述信息可进行打印。 实验步骤如下: 1.数据库设计: 首先设置好系统的运行环境和工作目录,然后建立项目,为项目命名为“学生成绩管理系统”,激活项目管理器,并在在项目管理器的“数据”“数据库”下面创建一个数据库,命名为“学生成绩管理”,在“数据库”的“表”下面创建以下各数据表: 字段名称类型宽度 用户名字符型10 密码字符型10 字段名称类型宽度 学号字符型8 字符型10

数据库的创建与表间关系的各种操作

学科实验报告 班级2010级金融姓名陈光伟学科管理系统中计算机应用实验名称数据库的创建与表间关系的各种操作 实验工具Visual foxpro 6.0 实验目的1、掌握数据库结构的创建方式 2、表间的关联关系 实验步骤一、建立数据库。 1、在项目管理器中建立数据库。首先选择数据库,然后单击“新建”建立数据库,出现的界面提示用户输入数据库的名称,按要求输入后单击“保存”则完成数据库的建立,并打开i“数据库设计器”。 2、从“新建”对话框建立数据库。单击工具栏上的“新建”按钮或者选择菜单“文件——新建”打开“新建”对话框,首先在“文件类型”组框中选择“数据库”,然后单击“新建文件”建立数据库,后面的操作和步骤与1相同。 3、用命令交互建立数据库。命令是create database【databasename ▏?】 二、表间关系的各种操作。 1、创建索引文件。可以再创建数据表时建立其结构复合索引文件,但是也可以先建立好数据表,以后再创建或修改索引文件。 2、索引的操作。A、打开与关闭。要使用索引,必须先要打开索引。一旦数据表文件关闭所有相应的索引文件也就自动关闭了。B、确定主控索引。可以使用命令确定当前主控索引。命令格式1:set order to 【tag】<索引标识>【ascending| desceding】命令格式2:use<表文件名>order【tag】<索引标识>【ascending | esceding】C、删除索引标识。要删除结构复合索引文件中的索引标识,应当打开数据表文件,并打开其表设计器对话框。在“索引”页面中选定要删除的索引标识后,单击“删除”按钮删除。 3、创建关联。在创建数据表之间的关联时,把当前数据表叫做父表,而把要关联的表叫做子表。必须保证两个要建立关系的数据表中存在能够建立联系的同类字段;同时要求每个数据表事先分别以该字段建立了索引。A、建立表间的一对一的关系。在“数据库设计器”窗口中选择M表中的字段,并按住左键拖到关联表H中对应字段上,放开鼠标左键。这是可以看到在两个表之间的相关字段上产生了一条连线,表明两个表之间已经建立了“一对一”关系。B、建立表间一对多的关系。将M表的名称字段MC设定为主索引,或者候选索引;H表中的JG字段已经设置成普通索引。在“数据库设计器”窗口中将MC字段拖到关联表中对应字段JG上,放开鼠标左键。这时可以看到在两个表之间的相关字段上产生了一条显然与“一对一”关联不同形式的连线,表明两个表之间已经建立了“一对多”关系。 4、调整或删除关联。A、删除关联。在数据库设计器对话框窗口中,首先必须用鼠标左键单击关联线,该连线变粗了说明它已被选中。如果要删除可敲【del】。也可以单击鼠标右键在弹出对话框窗口中单击“删除关联”选项。B、编辑关联。在数据库设计器对话框窗口中,首先必须用鼠标左键单击关联线,该连线变粗了说明已被选中。在主菜单“数据库”选项的下拉菜单中的“编辑关系”选项,也可以单击鼠标右键在弹出对话框窗口中单击“编辑关系”选项。 5、设置数据表之间的参照完整性。在对数据库表建立关联关系后,就可以设置两个相关数据表之间操作的有效性原则。这些规则可以控制相关表中的记录的插入、删除或修改。

S7-200模拟量输入输出实例(DOC)

对输入、输出模拟量的PLC编程的探讨及编程实例解析 3134人阅读| 4条评论发布于:2011-12-29 9:03:42 对于初学PLC编程的人来说,模拟量输入、输出模块的编程要比用位变量进行一般的程序控制难的多,因为它不仅仅是程序编程,而且还涉及到模拟量的转换公式推导与使用的问题。不同的传感变送器,通过不同的模拟量输入输出模块进行转换,其转换公式是不一样的,如果选用的转换公式不对,编出的程序肯定是错误的。比如有3个温度传感变送器:(1)、测温范围为0~200 ,变送器输出信号为4~20ma (2)、测温范围为0~200 ,变送器输出信号为0~5V (3)、测温范围为-100 ~500 ,变送器输出信号为4~20ma (1)和(2)二个温度传感变送器,测温范围一样,但输出信号不同,(1)和(3)传感变送器输出信号一样,但测温范围不同,这3个传感变送器既使选用相同的模拟量输入模块,其转换公式也是各不相同。 一、转换公式的推导 下面选用S7-200的模拟量输入输出模块EM235的参数为依据对上述的3个温度传感器进行转换公式的推导: 对于(1)和(3)传感变送器所用的模块,其模拟量输入设置为0~20ma电流信号,20ma 对应数子量=32000,4 ma对应数字量=6400; 对于(2)传感变送器用的模块,其模拟量输入设置为0~5V电压信号,5V对应数字量=32000,0V对应数字量=0; 这3种传感変送器的转换公式该如何推导的呢?这要借助与数学知识帮助,请见下图:

上面推导出的(2-1)、(2-2)、(2-3)三式就是对应(1)、(2)、(3)三种温度传感变送器经过模块转换成数字量后再换算为被测量的转换公式。编程者依据正确的转换公式进行编程,就会获得满意的效果。 二、变送器与模块的连接 通常输出4~20ma电流信号的传感变送器,对外输出只有+、- 二根连线,它需要外接24V电源电压才能工作,如将它的+、- 二根连线分别与24V电源的正负极相连,在被测量正常变化范围内,此回路将产生4~20ma电流,见下左图。下右图粉色虚线框内为EM235 模块第一路模拟输入的框图,它有3个输入端,其A+与A-为A/D转换器的+ - 输入端,RA 与A-之间并接250Ω标准电阻。A/D转换器是正逻辑电路,它的输入是0~5V电压信号,A-为公共端,与PLC的24V电源的负极相连。 那么24V电源、传感变送器、模块的输入口三者应如何连接才是正确的?正确的连线是这样的:将左图电源负极与传感器输出的负极连线断开,将电源的负极接模块的A-端,将

visualfoxpro程序设计实验报告

VF程序设计实验报告 图书馆管理系统 专业: 学号: 姓名: 指导教师:

2010年12月31日 目录 第一部分系统概述--------------------------------2第二部分系统功能模块设计------------------------2第三部分系统数据库及表设计----------------------2第四部分系统菜单设计----------------------------5第五部分系统界面设计----------------------------6第六部分系统相关程序代码-----------------------13第七部分实验报告小结---------------------------22第八部分参考资料-------------------------------22

一、系统概述 近年来,随着图书馆规模的不断扩大,图书数量相应的增加,有关图书的各种信息量也成倍增加,面对庞大的信息量,传统的人工管理户导致图书管理的混乱,人力与物力过多的浪费,图书管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理。因此,为了充分发挥了图书馆的功效,最大限度地为读者服务,必须制定一套合理、有效,规范和实用的图书馆管理系统,对图书资料进行集中统一的管理。 根据上述需要,我们建立本图书馆管理系统。 根据图书、读者和管理员三者之间的关系,本系统主要实现读者对图书的查询、个人信息的修改和管理员对读者、图书的管理。 本系统采用作为开发工具。 二、系统功能模块设计 本系统可以完成一般图书馆关于图书查询、借阅及书库管理的主 要功能。其中:图书查询模块可以查询所需要的图书;读者管理模块 中,读者可以查看自己的信息,对登陆密码进行修改,管理员可以对

非常实用的mcgs触摸屏编程实例精选上

MCGS实例解答 1.MCGS表格中,两数据连接到两个开关量,要把采集到的“0”和“1”的状态,显示为“关”和“开” 在表格里输入“开|关”,然后连接开关型变量Data1,按钮是让开关量Data1取反。

这样就行了,运行时Data1默认为0显示关,按下按钮后Data1为1显示开,如此反复

2.mcgs里怎么画渐变色 渐变色只有通用版和网络版有,嵌入版没有 方法就是:填充颜色——填充效果,然后根据你的需要设置就行了。

3.如何在mcgs做脚本i0.0=1 让Q输出 当PLC的I0.0有信号,让Q0.0输出,在PLC中做我会,不知道在MCGS中怎么实现 在循环脚本中,循环时间为10ms,条件表达式为1,脚本程序为 IF I0.0 = 1 THEN Q0.0 = 1 ELSE Q0.0 = 0 ENDIF 4.MCGS组态如何实现这样的功能?点击某一部分,弹出登录对话框 这个画面是在有管理员帐户登录的情况下才可以设置的,我现在想实现当有人在没有登录的情况下点击了这个地方,就弹出提示:请先登录。 1条回答 可以先用函数!CheckUserGroup来判断当前登录的用户是不是你需要的用户组,返回只为0表示已经登录了你需要的用户组了,直接进行下一步,如果返回值不为0,表示当前登录的不是你需要的用户组或是没有任何登录,那么用子窗口或者可见度啥的都行,显示出来就行了。 追问

我是想在用户点击了上面图片中的部分时才弹出登录提示,怎么实现呢? 回答 你把判断的语句写到图片的事件里就行了 追问 求在具体一点,不知道怎么写。 回答 点控件,右键——事件——Click——事件连接脚本

VisualFoxPro数据库编程函数大全

大全 数据库函数大全 VisualFoxPro数据库函数 ADATABASES()将所有打开数据库的名称和路径放到内存变量数组中 ADBOBJECTS()把当前数据库中的命名连接名、关系名、表名或sQL视图名放到一个内存变量数组中AFIELDS()把当前表的结构信息存放在一个数组中,并且返回表的字段数 ALIAS()返回当前表或指定工作区衰的别名 ASESSIONS()创建一个已存在的数据工作期ID数组 ATAGINFO()创建一个包含索引和键表达式的名字、数量和类型信息的数组 AUSED()将一个数据工作期中的表别名和工作区存入内存变量数组 BOF()确定当前记录指针是否在表头 CANDIDATE()判断索引是否为候选索引 CDX()根据指定的索引位置编号,返回打开的复合索引(.CDX)文件名称 CPDBP()返回一个打开表所使用的代码页 CREATEOFFLINE()由已存在的视图创建一个游离视图 CURSORGETPROP()返回VisualFoxPro表或临时表的当前属性设置 CURSORSETPROP()指定VisualFoxPro表或临时表的属性设置 CURSORTOXML()转换VisualFoxPro临时表为XML文本 CURVAL()从磁盘上的表或远程数据源中直接返回字段值 DBC()返回当前数据库的名称和路径 DBF()返回指定工作区中打开的表名,或根据表别名返回表名 DBSETPROP()给当前数据库或当前数据库中的字段、命名连接、表或视图设置一个属性 DELETED()返回一个表明当前记录是否标有删除标记的逻辑值 DESCENDING()是否用DESCENDING关键字创建了一个索引标识 DROPOFFLINE()放弃对游离视图的所有修改,并把游离视图放回到数据库中 EOF()确定记录指针位置是否超出当前表或指定表中的最后一个记录 FCOUNT()返回衰中的字段数目 FIELD()根据编号返回表中的字段名 FILTER()返回SETFILTER命令中指定的表筛选表达式 FLDLIST()对于SETmELDS命令指定的字段列表,返回其中的字段和计算结果字段表达式 FLOCK()尝试锁定当前表或指定表 FOR()返回一个己打开的单项索引文件或索引标识的索引筛选表达式 FOUND()如果CONTINUE、FIND、LOCATE或SEEK命令执行成功,函数的返回值为"真" FSIZE()以字节为单位,返回指定字段或文件的大小 GETFLDSTATE()返回一个数值,标明表或临时表中的字段是否已被编辑,或是否有追加的记录,或者记录的删除状态是否已更改 GETNEXTMODIFIED()返回一个记录号,对应于缓冲表或临时表中下一个被修改的记录 HEADER()返回当前或指定表文件的表头所占的字节数 IDXCOLLATE()返回索引或索引标识的排序序列 INDBC()如果指定的数据库对象在当前数据库中,则返回"真"(.T.) INDEXSEEK()在一个索引表中搜索第一次出现的某个记录 ISEXCLUSIVE()判断一个表或数据库是以独占方式打开的 ISFLOCKED()返回表的锁定状态 ISREADONLY()判断是否以只读方式打开表 ISRLOCKED()返回记录的锁定状态 KEY()返回索引标识或索引文件的索引关键字表达式 KEYMATCH()在索引标识或索引文件中搜索一个索引关键字 LOOKUP()在表中搜索字段值与指定表达式匹配的第一个记录 LUPDATE()返回一个表最近一次更新的日期

数据库与表的创建和使用

数据库与表的创建和使用 一、常用字段类型 1、字符型 2、数值型 3、日期型 4、逻辑型(T是,F否) 5、备注型 二、项目管理器 项目管理器是VFP中处理数据和对象的主要工具。项目管理器是系统的“控制中心”。一个项目是文件、数据、文档、对象的集合,项目文件以扩展名*.pjx保存。 创建一个项目文件的方法 1、CREATE PROJECT 项目文件名或? 2、文件—新建 3、工具栏“新建”按钮 二、数据库与表的概念 在VFP中有两种表:一种是自由表,它独立于任何数据库;一种是数据库表,它是数据库的一部分。 数据库和表是两个不同的概念。表是处理数据、建立关系数据库的应用程序的基础单元,它用于存储收集来的各种信息。而数据库是表的集合,它控制这些表协同工作,共同完成特定任务。 本节重点:数据库的创建和使用,数据库表的创建和使用,表的扩展属性,数据库表之间的关系的创建。 三、数据库的创建(*.dbc)

1、使用界面方式创建数据库:项目管理器、“新建”按钮 2、使用命令方式创建数据库 CREATE DATABASE 数据库文件名或? 四、打开数据库 OPEN DATABASE 数据库名或? 五、设置当前数据库 SET DATABASE TO 数据库名 六、修改数据库 MODIFY DATABASE 数据库文件名或? 七、关闭数据库 CLOSE DATABASE &&关闭当前数据库 CLOSE DATABASE ALL &&关闭所有数据库 八、删除数据库 DELETE DATABASE 数据库文件名或? 数据库表的创建和使用(*.dbf) 在VFP中,每个数据表可以有两种存在状态:自由表(即没有和任何数据库关联的*.dbf文件)或数据库表(即与数据库关联的*.dbf 文件)。属于某一数据库的表称为“数据库表”;不属于任何数据库而独立存在的表称为自由表。数据库表和自由表可以相互转换。 一、数据库表的创建

VFP程序设计教程习题答案

第一章 1.试说明数据与信息的区别和联系。 数据是人们用于记录事物情况的物理符号。信息是数据中所包含的意义。数据与信息既有区别,又有联系。数据是表示信息的,但并非任何数据都能表示信息,信息只是加工处理后的数据,是数据所表达的内容。另一方面信息不随表示它的数据形式而改变,它是反映客观现实世界的知识,而数据则具有任意性,用不同的数据形式可以表示同样的信息,信息只是加工处理后的数据,是数据所表达的内容。 2.什么是数据库、数据库管理系统和数据库系统? 数据库是在数据库管理系统的集中控制之下,按一定的组织方式存储起来的、相互关联的数据集合。 数据库管理系统(Database Management System,DBMS)是对数据进行统一的控制和管理,从而可以有效地减少数据冗余,实现数据共享,解决数据独立性问题,并提供统一的安全性、完整性和并发控制功能的系统软件。 数据库系统是把有关计算机硬件、软件、数据和人员组合起来为用户提供信息服务的 系统。 3.简述数据库的三级模式结构。 为了有效地组织、管理数据,提高数据库的逻辑独立性和物理独立性,人们为数据库设 计了一个严谨的体系结构,数据库领域公认的标准结构是三级模式结构,它包括外模式、模 式和内模式。 模式又称概念模式或逻辑模式,对应于概念级。它是由数据库设计者综合所有用户的数 据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图)。外模式又称子模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。内模式又称存储模式,对应于物理级。它是数据库中全体数据的内部表示或底层描述。 4.数据库系统的特点是什么? 特点是数据共享,减少数据冗余,具有较高的数据独立性,增强了数据安全性和完整性保护。 5.实体之间的联系有哪几种?分别举例说明。

VisualFoxPro常用函数分类表

VisualFoxPro磁盘_目录_文件函数 ADIR()将文件信息存放到数组中,然后返回文件个数。 CURDIR()返回当前目录或文件夹。 DEFAULTEXT()如果一个文件没有扩展名,则返回一个带新扩展名的文件名。DIRECTORY()若在磁盘上存在指定的目录,返回真(.T.)。 DISPLAYPA TH()为显示而截去长路径名到指定长度。 DRIVETYPE()返回指定驱动器的类型。 FDATE()返回文件最近一次修改的日期或日期时间。 FILE()如果在磁盘上找到指定的文件,则返回“真”(.T.)。 FILETOSTR()将一个文件的内容返回为一个字符串。 FORCEEXT()返回一个字符串,使用新的扩展名替换旧的扩展名FORCEPATH()返回一个文件名,使用新路径名代替旧文件名 FTIME()返回最近一次修改文件的时间。 FULLPATH()返回指定文件的路径或相对于另一文件的路径。 GETDIR()显示“选择目录”对话框,从中可以选择目录或文件夹。 GETFILE()显示“打开”对话框,并返回选定文件的名称。 JUSTDRIVE()从完整路径中返回驱动器的字母。 JUSTEXT()从完整路径中返回三字母的扩展名。 JUSTFNAME()返回完整路径和文件名中的文件名部分。 JUSTPATH()返回完整路径中的路径名。 JUSTTEM()返回完整路径和文件名中的根名(扩展名前的文件名)。 LOCFILE()在磁盘上定位文件并返回带有路径的文件名。 PUTFILE()激活“另存为…”对话框,并返回指定的文件名。 STRTOFILE()将一个字符串的内容写入一个文件。 SYS(3)返回一个合法文件名,可用来创建临时文件。 SYS(5)返回当前VisualFoxPro的默认驱动器。 SYS(7)返回当前格式文件的名称。 SYS(2000)返回一个按字母排序的与文件名和扩展名梗概匹配的第一个文件名。SYS(2003)返回默认驱动器或卷上的当前目录或文件夹的名称。 SYS(2014)返回指定文件相对于当前目录、指定目录或文件夹的最小化路径。SYS(2020)以字节数返回默认磁盘空间。 SYS(2022)以字节为单位返回指定磁盘簇(块)的大小。

西门子触摸屏的组态和编程

龙源期刊网 https://www.doczj.com/doc/a816734748.html, 西门子触摸屏的组态和编程 作者:石学勇 来源:《科技资讯》2017年第03期 摘要:触摸屏的全称叫作触摸式图形显示终端,是一种人机交互装置,故又称作人机界面。触摸屏是在显示器屏上加了一层具有检测功能的透明薄膜,使用者只要用手指轻轻地碰触摸屏上的图形或者文字,就能实现对主机的操作或信息显示,人机交互更为简洁。触摸屏在工业现场中应用的越来越广泛,该文介绍了西门子公司的TPP177B触摸屏在现场使用时如何进行组态和编程,介绍了编程环境winccflexible的安装使用以及程序的下载。触摸屏适合了现场逻辑控制较多,模拟量控制较少,并且现场环境较好的场合。 关键词:触摸屏组态 winccflexible 中图分类号:TP313 文献标识码:A 文章编号:1672-3791(2017)01(c)-0018-02 1 硬件准备 (1)一套S7300 315F PN/DP cpu。 (2)安装有Winccflexible2008 sp2软件的计算机。 (3)必要的附件,包括:编程下载需要的网线及PLC与TP177B连接的网线。 2 触摸屏组态 在完成的STEP7界面中添加设备。 在SIMATIC主界面中选择“Insert New Object”>“SIMATIC HMI Station”在STEP7中添加HMI设备(如图1)。 在随后的对话框中选择目标设备“TP177B 6 color PN/DP”点击OK。 在STEP7下方会出现新添加的HMI station,随后点击,为触摸屏配置IP地址并添加到CPU共同的以太网上。点击编译。 3 编辑画面 Winccflexible的主界面,在左侧项目树中找到“通讯”,在其中双击“连接”,在这一界面中已经自动生成了连接,这里只需将“在线”处设置为“开”即可。

《Visual Foxpro6.0数据库与程序设计》试题(附答案)

1.不允许记录中出现重复索引值的索引是()。 A.主索引和普通索引 B.主索引,候选索引和普通索引 C.主索引和候选索引 D.普通索引,候选索引和唯一索引 2.结构化程序设计的三种基本逻辑结构是()。 A.选择结构,循环结构和嵌套结构 B.顺序结构,选择结构和循环结构 C.选择结构,循环结构和模块结构 D.循环结构,递归结构和循环结构 3.Visual FoxPro参照完整性规则不包括()。 A.更新规则 B.查询规则 C.删除规则 D.插入规则 4.测试数据库记录指针是否指向数据末尾所使用的函数是()。 A.FOUND( ) B.BOF() C.FILE() D.EOF() 5.命令SELECT 0的功能是()。 A.选择编号最小的未使用工作区 B.选择0号工作区 C.关闭当前工作区的表 D.选择当前工作区 6.以下函数结果为“共和国”的是()。 A.SUBSTR(“中华人民共和国”,5,3) B.SUBSTR(“中华人民共和国”9,6) C.SUBSTR(“中华人民共和国”9,3) D.SUBSTR(“中华人民共和国”5,6) 7.字符型数据的最大长度是( )。 A.20 B.254 C.10 D.255 8.如果内存变量和字段变量均有变量名"姓名",那么引用内存的正确方法是()。 A.M.姓名 B.M_>姓名 C.姓名 D.A和B都可以 9.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。 A.一对一 B.多对多 C.多对一 D.一对多 10.当前数据库文件有10条记录,执行下列命令后的结果是()。 GO 5 APPEND BLANK ?RECNO() A.11 B.6 C.5 D.10 11.Visual Foxpro的ZAP命令可以删除当前数据库文件的()。 A.满足条件的记录 B.有删除标记的记录 C.结构 D.全部记录 12.命令:CREATE DATABASE ABC是用来()。

Visual FoxPro经典教程

Visual FoxPro 经典教程:第九章:创建表单 经典教程:第九章:
第九章: 第九章:创建表单
利用表单, 可以让用户在熟悉的界面下查看数据或将数据输入数据库。 但表单提供的远不止 一个界面:它还提供丰富的对象集,这些对象能响应用户(或系统)事件,这样就能使用户 尽可能方便和直观地完成信息管理工作。
本章内容要点:
? ? ? ? ?
设计表单 创建新表单 在表单中添加对象 处理对象 管理表单
设计表单
Visual FoxPro 提供了一个功能强大的表单设计器,使得设计表单的工作变得又快又容易。 在表单设计器中可以处理下列内容:
? ? ? ? ?
表单中不同类型的对象。 与表单相关联的数据。 顶层表单或子表单。 能一起操作的多个表单。 基于自定义模板的表单。
表单和表单集是拥有自己的属性、 事件和方法程序的对象, 在表单设计器中可以设置这些属 性、事件和方法程序。表单集包括了一个或多个表单,可以将它们作为一个整体来操作。例 如,如果在表单集中有四个表单,可以在运行时用一个命令显示或隐藏它们。
创建新表单
在“表单设计器”中可以新建表单, 而且在设计时刻就能看见其中各对象显示在用户面前的外 观。
若要新建一个表单
?
请在“项目管理器”中选定“表单”,并选择“新建”按钮。 -或者 -

?
从“文件”菜单中选择“新建”命令,选定“表单”按钮并选择“新建文件”按钮。 -或者 -
?
使用 CREATE FORM 命令。
表单设计器带下列工具栏的:表单设计器、表单控件、布局和 表单设计器带下列工具栏的:表单设计器、表单控件、布局和调色板
有关“表单设计器”的详细内容,请参阅《用户指南》中的第八章“用表单管理数据”。有关 工具栏的详细内容,请在“帮助”中查找“工具栏”,并选择与所需信息有关的工具栏。
设置数据环境
每一表单或表单集都包括一个数据环境。 数据环境是一个对象, 它包含与表单相互作用的表 或视图, 以及表单所要求的表之间的关系。 可以在“数据环境设计器”中直观地设置数据环境, 并与表单一起保存。
在表单运行时数据环境可自动打开、关闭表和视图。而且,通过设置“属性”窗口中 ControlSource 属性设置框,在这个属性框中列出数据环境的所有字段,数据环境将帮助您 设置控件的 ControlSource 属性。 若要打开数据环境设计器 1. 从“显示”菜单中选择“数据环境”。 2. 从快捷方式菜单中选择“添加”。 3. 在“添加表或视图”对话框中选择一表或视图添加到数据环境中去。

VFP6.0安装教程

Visual Foxpro 6.0 中文版安装向导图 文示例介绍 最近在本站上下载Visual Foxpro 6.0的用户比较多,部分用户没有安装vfp6.0的经验,出现找不到安装程序,找不到产品ID号的问题,并提出建议要我们做一个安装教程,VFP6.0现在就要用于数据库设计,微软在10多年前就开发出来了。不过这个版本很经典,深受高校学生们的喜欢。首先准备VFP6.0:https://www.doczj.com/doc/a816734748.html,/k/vfp/。下面是解压,安装图文教程,希望对用户朋友们有帮助。 1、解压你所下载的Visual_Foxpro6.0_CN.rar,foxpro6.0 到你电脑上的任一目录下。 2、运行VisualFoxPro 6.0 安装向导如下图:点击下一步

3、最终用户许可协议->选择接受协议,下一步 4、产品号和用户ID,产品的ID号为,111-1111111或者000-0000000,姓名和公司名称可以自己随便填写。

5、选择公用安装文件夹,默认就行了,下一步。 6、Visual FoxPro 6.0 安装程序,选择“继续”。

7、提示你的电脑上的产品标识号,确定就可了。 8、等待安装->选择“典型安装”或者“自定义安装”(更改安装目录等),建议选择“典型安装”

9、安装成功,确定。 10、一点小状况,这个版本是没有带MSDN 6.0的,这一步是安装MSDN,不要选择“安装MSDN”。

11、通过Web 注册,这个也不需要了。不要选择“现在注册”,点击“完成”。终于大功告成了。 12、从开始菜单->程序里找到Visual FoxPro 6.0,如下图

新编VFP程序设计教程课后答案

思考题参考答案 第1章数据库系统概述 (1)数据库、数据库管理系统及数据库系统的概念分别是什么? 答:数据库是存储在计算机存储设备上的、结构化的相关数据集合;数据库管理系统是数据库系统中对数据进行管理的软件系统,是数据科系统的核心;数据库系统是指引入了数据库技术的计算机系统。 (2)在关系数据模型中,关系、元组、属性是什么概念? 答:一个关系就是一张二维表,由行和列构成;元组也称记录,是表中的一行;属性也称字段,是表中的一列。 (3)关系模型允许定义哪几类完整性约束? 答:实体完整性;参照完整性;用户定义完整性。 (4)关系的基本运算有哪几类? 答:传统的集合运算(并、交、差等);专门的关系运算(选择、投影、连接)。 (5)Visual FoxPro主要提供了哪几种设计工具? 答:略。 (6)如何设置当前工作目录? 答:界面方式:选择“工具|选项”菜单命令,打开“选项”对话框,在“文件位置”选项卡中选中“默认目录”列表项,单击“修改”命令按钮,打开“更改文件位置”对话框,选中“使用默认目录”复选框,单击“定位默认目录”文本框后的“…”命令按钮,选择一个目录后确定即可。 命令方式:SET DEFAULT TO <路径说明>。 (7)项目管理器的功能有哪些? 答:对项目中的表、数据库、查询、表单、报表、菜单等对象进行组织和管理;实现对项目中各个对象的创建、修改、删除等操作;将应用程序编译成可独立运行的可执行文件等。 第2章Visual FoxPro的数据与数据运算 (1)Visual FoxPro有哪几种常用的数据类型? 答:字符型、数值型、整型、浮点型、双精度型、货币型、日期型、日期时间型、逻辑型、备注型、通用型。 (2)字段变量与内存变量有何区别? 答:字段变量是数据表中的一个字段,变量名即字段名,针对不同的记录,同一字段可以有不同的字段值;内存变量是用户在程序中定义的,当程序运行时,在内存中临时创建内存变量,用于存放程序运行的中间结果和最终结果。 (3)什么是函数?如何调用函数? 答:函数是一段预先编写好的程序代码,用于实现某个特定功能,每个函数有一个函数名,可以接收若干个参数,返回一个确定值。 函数的一般调用格式为:函数名([参数列表])。 (4)什么是表达式?常见的表达式类型有哪几种? 答:表达式是把常量、变量、函数和字段名等用运算符连接起来的式子。常见的表达式类型有:算术表达式、字符表达式、日期和时间表达式、关系表达式、逻辑表达式。 第3章数据表的建立和使用 (1)Visual FoxPro中的表分为哪两类?它们有什么不同?

数据库及表的基本操作

第四章数据库与表的基本操作 实验4-1 数据库及表的操作 (一)实验目的 1.掌握创建数据库的基本操作方法。 2.熟练掌握创建表结构和输入记录的操作方法。 3.熟练掌握修改表结构、浏览和修改表记录数据的操作。 4.熟练掌握建立索引的操作。 5.掌握创建表间联系的操作。 (二)实验内容及步骤 1.创建数据库 【实例4-1】在实验2-1所建立的“教学管理.pjx”项目中,创建一个“学生成绩.dbc”数据库。 操作步骤如下: (1)打开“教学管理.pjx”项目。 (2)在“项目管理器”窗口中,选择“数据库”,然后单击“新建”按钮,打开“新建数据库”对话框,单击其中的“新建数据库”按钮,打开“创建”对话框,如图4-1所示。 图4-1“创建”对话框 (3)在“保存在”文本框中,选择保存数据库的文件夹“程序VX”;在“数据库名”文本框中,输入数据库名称“学生成绩”。 (4)单击“保存”按钮,即在指定位置建立一个“学生成绩.dbc”数据库文件。 此时,在VFP主窗口中弹出一个“数据库设计器”窗口,同时还激活了“数据库设计器”工具栏,如图4-2所示。

图4-2“数据库设计器”窗口 2.创建数据表 【实例4-2】在“教学管理.pjx”项目中,创建学生表(Student.dbf)、成绩表(Grade.dbf)、课程表(Course.dbf)、授课表(Teach.dbf)和教师表(Teacher.dbf)。各个表的结构和数据记录如图4-3、图4-4、图4-5、图4-6、图4-7、图4-8、图4-9、图4-10、图4-11和图4-12所示。 图4-3学生表(Student.dbf)的结构 图4-4学生表(Student.dbf)的记录浏览窗口

西门子触摸屏编程软件

分享资源:西门子触摸屏编程软件Siemens Simatic WINCC Flexible 2008 下载免费下载 2009-12-16 18:22:59 / 个人分类:电脑网络 前几天去甘肃陇南的武都区装了一套西门子P LC+触摸屏。这已不是第一次使用触摸屏了。但是触摸屏编程软件是个大问题。因为真正版本的要收费。自己用只能从网上下。只能忍着巨慢的网速从电驴上下载。 下载了两天才下好,然后安装,好用!现在现场调试已经结束。想想这个软件,我就放到网上分享给大家。免得大家再花钱购买或是电驴下载了。 因文件足足2.8G,很占流量,为防止盗链,我把rar文件加密了。密码就是本站网址:(https://www.doczj.com/doc/a816734748.html,), 注意密码不含括号! 解压出来是原版ISO文件的分卷压缩文件,必须再次解压成原版ISO文件,用虚拟光驱软件加载运行或刻盘即可。有的电脑将ISO格式文件也显示为RAR的图标。双击该ISO文件也执行解压操作。请大家根据情况选择是用ISO文件,还是用最终的安装文件。反正我偏重用前者。 这里总结一下大家遇到的问题: 1、如何下载,见文底的连接,因为用境外空间防止版权问题被关或者盗链,文件加了密。 2、解压密码,https://www.doczj.com/doc/a816734748.html,建议手动输入,不要复制,因为复制容易多或少字符。 3、解压后怎么安装,也见上文。稍有复杂,需要点电脑常识,如果没有,赶快去补,否则也别搞工控了。 4、WIN7可否安装,这点我不清楚。毕竟没试过。但我用Win7装S7-200的编程软件是装不进去的,需要点技巧。如果装不进去,那可以换系统或尝试用虚拟机。 5、“wi ncc flexible 2008 无法与自动化许可证管理器建立连接”。这个问题我没遇到过。但我认为首先看是否安装了授权,然后看相关服务是否启动或是安装时被360神马的给拦截了。然后就是看系统,可能win7会有这情况,注意,该条只是建议。 6、怎样进行破解,我以前有过留言:“加密许可需要安装Crack文件夹下的两个解密程序文件。先运行其中一个,选择加密许可文件存放的地方。确定就可以。然后运行另一个即可。该程序自动生成加密许可放到硬盘上。但加密许可文件

VFP基础教程-数据库的创建和使用

4.1 VFP数据库 1. 数据库的基本组成 数据库由一个以上相互关联的数据表组成,可以包含一个或多个表、视图、到远程数据源的连接和存储过程。 视图(view): 一个保存在数据库中的、由引用一个或多个表、或其他视图的相关数据组成的虚拟表,可以是本地的、远程的或带参数的。 存储过程(stored procedure): 是保存在数据库中的一个过程。该过程能包含一个用户自定义函数中的任何命令和函数。 创建数据库时系统自动生成3个文件: 数据库文件: 扩展名为 .DBC 数据库备注文件: 扩展名为 .DCT 数据库索引文件: 扩展名为 .DCX 2. 数据库的设计过程 1)明确建立数据库的目的和使用方式 2)设计所需的数据表(包括表结构和表记录) 3)建立表之间的关系 4)改进设计 4.2 数据库的创建

1. 数据库的创建过程 数据库的创建过程中一般会涉及下面一些常用操作: 1)创建新表→用表设计器(设置字段属性和表属性) 2)添加表→用数据库设计器按钮或数据库菜单 3)创建视图→用视图向导、视图设计器 4)建立关系→用鼠标将父表的索引拖到子表的相关索引上 5)编辑关系→用数据库菜单或快捷菜单→参照完整性生成器6)移去关系→用快捷菜单或按delete键 7)修改表→用表设计器 8)删除表或视图→用数据库设计器按钮或数据库菜单 2. 数据库的新建、打开、关闭 (1)新建数据库:

从文件菜单中单击新建→在新建对话框中选择数据库并单击新文件→在创建对话框中给出库文件名和保存位置→在数据库设计器中建立所需的数据库。 或从命令窗口中输入命令:create database 数据库名 (2)打开数据库: 从文件菜单中单击打开→在打开对话框中给出库文件名和保存位置并确定之。 或从命令窗口中输入命令: open database 数据库名 (3)关闭数据库: 从命令窗口中输入命令: close database && 关闭当前数据库 或close all && 关闭所有被打开的数据库 注意:1) 关闭了数据库表不等于关闭了数据库,但关闭了数据库则其中的数据表被同时关闭; 2) 用鼠标关闭了数据库设计器窗口并不能代表关闭数据库。 3. 用数据库设计器设计数据库

VisualFoxpro编程实例

实验五Visual Foxpro编程实践 一. 实验目的与要求 掌握利用Visual Foxpro编制开发自己的应用程序的实践知识,并学会在程序调试中自行发现问题和修改程序代码,最终完成应用程序的无错运行。 二. 相关知识 利用Visual Foxpro自行开发编制应用程序的步骤: 1.设置好系统的工作环境(尤其注意工作目录的默认设置)。 2.如果是初次进行,应当先建立一个项目,为该项目命名,激活项目管理器。如果是接着上次的工作进行,则打开上次工作的本项目,同样也激活项目管理器。 3.在项目管理器的“数据”→“数据库”下面创建一个数据库,并命名(如已创建,则跳过本步骤)。 4.在项目管理器的“数据”→“数据库”→“表”下面进行数据表的创建或修改工作,并输入少量的正确数据以便将来的运行调试(如果已经创建了数据表,则跳过本步骤)。 5.在项目管理器的“文档”下面创建该应用程序所用到的所有表单,设计好各表单的界面并为表单里的控件填写程序代码.(注意为表单添加各自的数据环境,否则会出错!) 6.试运行各表单,发现问题后重新修改有问题的表单的代码,反复调试和修改直至最后能无错运行。 7.将应用程序打包发布或制作成安装文件。 三. 实验容与步骤 本次实验以一个简单的学生成绩管理系统为例。首先,对该系统作一个简单的介绍:该应用系统为完成学生信息和成绩的管理系统,主要有以下几个应用模块: (1)用户登录管理:系统具有管理员功能,只有取得管理员权限的人才能使用本系统。 (2)数据添加功能:对学生基本信息、教师基本信息、班级信息、课程信息、学生成 绩信息进行添加录入。 (3)数据查询功能:对上述信息的基本查询。 (4)数据修改功能:对上述信息可进行修改工作。 (5)统计操作:可分别按个人成绩、单科成绩统计出最高成绩、最低成绩和平均成绩 等。 (6)打印功能:对上述信息可进行打印。 实验步骤如下: 1.数据库设计: 首先设置好系统的运行环境和工作目录,然后建立项目,为项目命名为“学生成绩管理系统”,激活项目管理器,并在在项目管理器的“数据”→“数据库”下面创建一个数据库,命名为“学生成绩管理”,在“数据库”的“表”下面创建以下各数据表: (1) (2)

相关主题
文本预览
相关文档 最新文档