VFP应用程序设计实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VFP应用程序设计实例--学生学籍管理系统(1)
电脑笔记2007-10-29 16:43:36 阅读2795 评论5 字号:大中小
图1
MIS是英文Management Information System的英文缩写,意思是信息管理系统,该系统可用于中小型企事业单位业务处理和信息交流,从而大大提高了企业运作的效率。

微软公司的Visual
FoxPro可视化面向对象的编程软件是一个设计MIS系统即简单又快捷的好软件。

下面,就以VFP 6.0
为开发环境,讲述设计学生学籍管理系统的详细设计过程,也为在看过了前面非表单设计的学生学
籍管理系统的朋友们继续了解并学习采用表单(Form)的方式设计MIS系统的方法。

一、设计思路:学生学籍管理系统的运行以封面表单开始,如图1所示,要求用户输入登录密码,
并设置三次检查功能,若三次输入的密码均有错,则自动退出系统;否则出现系统菜单,接收用户的
操作,操作完毕后用户可以从系统菜单中退出系统。

二、系统功能:系统的功能主要分成十个功能模块,它们是:录入数据、修改数据、删除数
据、查
询数据、统计数据、显示数据、打印数据、导出数据、导入数据和清空数据。

录入数据可以实现
学生
信息的录入;修改数据可以实现学生信息的修改;删除数据可以实现学生数据的删除;查询数据
可以
实现学生信息的查询;统计数据可以实现学生人数、党员人数、学生总平均成绩、高数平均成绩、

语平均成绩和VFP平均成绩的统计;显示数据可以实现以字段分布和二维表两种方式显示学生信
息;
打印数据可以实现用报表的形式打印学生的信息;导出数据可以实现学生数据的备份,防止数据

失;导入数据可以实现学生数据的还原,保证数据的正确性;清空数据可以实现学生数据的清空

作。

三、菜单结构框架图
四、数据库结构:(可定义表名为xj.dbf)
字段名类型宽度小数位数
学号字符型 2
姓名字符型 6
五、具体设计:(给出源代码,表单属性可参照图示在VFP属性框中设置,所有程序文件和表
单文件
均通过VFP项目管理器建立)
1、学生学籍管理系统主程序源代码(可定义程序名为main.prg)
_SCREEN.WINDOWSTATE=2 &&设置窗口规格为第2种系统窗口_SCREEN.CAPTION="学生学籍管理系统" &&设置窗口标题为“学生学籍管理系统”
_SCREEN.CLOSABLE=.T. &&去掉关闭按钮
_SCREEN.CONTROLBOX=.F. &&去掉控制按钮
_SCREEN.MAXBUTTON=.F. &&去掉最大化按钮
_SCREEN.MINBUTTON=.F. &&去掉最小化按钮
_SCREEN.BACKCOLOR=RGB(50,100,128) &&设置窗口的背景色
CLOSE ALL
CLEAR ALL
CLEAR
SET SYSMENU OFF
SET SYSMENU TO
SET TALK OFF
SET SAFETY OFF
SET STATUS BAR OFF &&关闭Visual Foxpro的状态栏
DO FORM A:\封面.SCX &&调用系统登录“封面”表单
READ EVENT &&响应用户输入
DO A:\菜单.MPX &&运行系统菜单
READ EVENT
SET SYSMENU TO DEFAULT &&恢复Visual Foxpro的系统菜单的默认值
SET SYSMENU ON &&显示Visual Foxpro的系统菜单
SET STATUS BAR ON &&显示Visual Foxpro的状态栏
CLOSE ALL &&关闭所有文件
CLEAR ALL
RETURN &&返回
2、封面表单源代码(A:\封面.sct)
PROCEDURE Click &&确定按钮的单击事件过程
SET EXACT ON &&设置精确比较命令
IF THISFORM.text1.VALUE="8888" &&如果文本框的值是8888
THISFORM.RELEASE &&那么释放封面表单
DO A:\菜单.MPX &&运行菜单程序
ELSE &&否则
THISFORM.NO=THISFORM.NO+1 &&将自定义属性NO的值由0加1
IF THISFORM.NO>=3 &&如果自定义属性NO的值为3
=MESSAGEBOX("密码三次输错,您不能使用本系统!",0+16+0,"学生学籍管理系统") &&那么弹出内容为“密码三次输错,您不能使用本系统!”的对话框
QUIT &&结束程序的运行
ELSE &&否则
=MESSAGEBOX("密码错误!",48+0+0,"警告") &&弹出内容为“密码错误!”的
对话框
THISFORM.text1.VALUE="" &&设置文本框的内容为空
THISFORM.text1.SETFOCUS &&并将光标定位到文本框中
THISFORM.REFRESH &&刷新封面表单
ENDIF
ENDIF
SET EXACT OFF &&设置关闭精确比较命令
ENDPROC
PROCEDURE Click &&取消按钮的单击事件过程
THISFORM.RELEASE &&释放封面表单
CLOSE ALL &&关闭所有文件
CLEAR EVENT
quit
ENDPROC (未完)
VFP应用程序设计实例--学生学籍管理系统(2)电脑笔记2007-10-29 16:54:06 阅读3360 评论0 字号:大中小
图2
3、录入数据表单源代码(A:\录入.sct,如图2所示)
PROCEDURE Init &&录入数据表单的初始化事件过程
SET TALK OFF
mand4.ENABLED=.f. &&设置第四个按钮为不可用状态mand5.ENABLED=.f. &&设置第五个按钮为不可用状态THISFORM.txt学号.ENABLED=.f. &&设置学号文本框为不可用状态
THISFORM.txt姓名.ENABLED=.f. &&设置姓名文本框为不可用状态
bo1.ENABLED=.f. &&设置组合框1为不可用状态
bo2.ENABLED=.f. &&设置组合框2为不可用状态
bo3.ENABLED=.f. &&设置组合框3为不可用状态
bo4.ENABLED=.f. &&设置组合框4为不可用状态
THISFORM.txt邮编.ENABLED=.f. &&设置邮编文本框为不可用状态
THISFORM.txt高数.ENABLED=.f. &&设置高数文本框为不可用状态
THISFORM.txt英语.ENABLED=.f. &&设置英语文本框为不可用状态
THISFORM.txtVfp.ENABLED=.f. &&设置VFP文本框为不可用状态
bo5.ENABLED=.f. &&设置组合框5为不可用状态
THISFORM.txt电话.ENABLED=.f. &&设置电话文本框为不可用状态THISFORM.txt通信地址.ENABLED=.f. &&设置通信地址文本框为不可用状态THISFORM.edt备注.ENABLED=.f. &&设置备注编辑框为不可用状态
ENDPROC
PROCEDURE Load &&录入数据表单的加载事件过程
CLOSE DATA &&关闭所有数据库
USE A:\XJ存 &&打开A盘中的XJ.DBF表文件
SET MULTILOCKS ON &&设置锁定一组记录
=CURSORSETPROP('buffering',5,'XJ') &&打开开放式表缓冲
ENDPROC
PROCEDURE InteractiveChange &&录入数据表单的交互改变事件过程
REPL 出生年月 WITH
bo2.displayvalue+"."+bo3.displayvalue+"."+ bo4.displayvalue &&用组合框的值替换出生年月字段
THISFORM.REFRESH &&刷新录入数据表单
ENDPROC
PROCEDURE Command1.Click &&单击命令按钮1的事件过程
APPEND BLANK &&添加一空白记录
THISFORM.REFRESH &&刷新录入数据表单
mand1.ENABLED=.f. &&设置命令按钮1为不可用状态mand2.ENABLED=.f. &&设置命令按钮2为不可用状态mand3.ENABLED=.f. &&设置命令按钮3为不可用状态
mand4.ENABLED=.t. &&设置命令按钮4为可用状态
mand5.ENABLED=.t. &&设置命令按钮5为可用状态
mand6.ENABLED=.f. &&设置命令按钮6为不可用状态
THISFORM.txt学号.ENABLED=.t.
THISFORM.txt姓名.ENABLED=.t.
bo1.ENABLED=.t.
bo2.ENABLED=.t.
bo3.ENABLED=.t.
bo4.ENABLED=.t.
THISFORM.txt邮编.ENABLED=.t.
THISFORM.txt高数.ENABLED=.t.
THISFORM.txt英语.ENABLED=.t.
THISFORM.txtVfp.ENABLED=.t.
bo5.ENABLED=.t.
THISFORM.txt电话.ENABLED=.t.
THISFORM.txt通信地址.ENABLED=.t.
THISFORM.edt备注.ENABLED=.t.
THISFORM.txt学号.SETFOCUS
ENDPROC
PROCEDURE Command2.Click &&单击命令按钮2的事件过程
SET DELETE ON &&设置打开删除命令
DELETE &&删除当前记录
YN=MESSAGEBOX('确实要删除这条记录?',4+32+256,'删除确认') &&弹出内容为“确实要删
除这条记录?”的对话框
DO CASE &&运行条件判断语句
CASE YN=6 &&当单击“是”按钮时
=TABLEUPDATE(.T.) &&执行更新表函数,删除当前记录CASE YN=7 &&当单击“否”按钮时
RECALL &&恢复已作了删除标记的当前记录
ENDCASE
THISFORM.REFRESH
ENDPROC
PROCEDURE Command3.Click &&单击命令按钮3的事件过程mand1.ENABLED=.f.
mand2.ENABLED=.f.
mand3.ENABLED=.f.
mand4.ENABLED=.t.
mand5.ENABLED=.t.
mand6.ENABLED=.f.
ENDPROC
PROCEDURE Command4.Click &&单击命令按钮4的事件过程
=TABLEUPDATE(.T.)
mand1.ENABLED=.t.
mand2.ENABLED=.t.
mand3.ENABLED=.t.
mand4.ENABLED=.f.
mand5.ENABLED=.f.
mand6.ENABLED=.t.
ENDPROC
PROCEDURE Command5.Click &&单击命令按钮5的事件过程
=TABLEREVERT(.T.)
mand1.ENABLED=.t.
mand2.ENABLED=.t.
mand3.ENABLED=.t.
mand4.ENABLED=.f.
mand5.ENABLED=.f.
mand6.ENABLED=.t.
ENDPROC
PROCEDURE Command6.Click &&单击命令按钮6的事件过程
SELE 1 &&选择1号工作区
USE A:\XJ EXCLUSIVE 打开A盘中的XJ.DBF数据表
PACK &&彻底删除已作了删除标记的记录
THISFORM.RELEASE &&释放录入数据表单
ENDPROC
PROCEDURE InteractiveChange
REPL 是否党员 WITH bo5.DISPLAYVALUE &&用组合框的值替换是否党员字段
THISFORM.REFRESH
ENDPROC
4、修改数据表单源代码(A:\修改.sct)
图3
PROCEDURE Command1.Click
IF NOT BOF() &&如果记录指针没有到记录的开头
SKIP –1 &&向上跳转一个记录
THISFORM.REFRESH
mand2.ENABLED=.t.
ELSE
WAIT WINDOW '已经是第一条记录了!' &&系统给出内容为“已经是第一条记录了!”提示窗

ENDIF
ENDPROC
PROCEDURE Command2.Click
IF NOT EOF() &&如果记录指针没有到记录的结尾
SKIP &&向下跳转一个记录
THISFORM.REFRESH mand1.ENABLED=.t.
ELSE
WAIT WINDOW '已经是最后一条记录了!'
ENDIF
ENDPROC
PROCEDURE Command3.Click
GO TOP &&将记录指针移到记录的开头
THISFORM.REFRESH mand1.ENABLED=.f. mand2.ENABLED=.t.
ENDPROC
PROCEDURE Command4.Click
GO BOTTOM &&将记录指针移到记录的结尾
THISFORM.REFRESH mand1.ENABLED=.t. mand2.ENABLED=.f.
ENDPROC
PROCEDURE Command5.Click
=TABLEUPDATE(.T.) mand1.ENABLED=.t. mand2.ENABLED=.t. mand3.ENABLED=.t. mand4.ENABLED=.t.
mand5.ENABLED=.f.
mand6.ENABLED=.f.
mand7.ENABLED=.t.
ENDPROC
PROCEDURE Command6.Click
=TABLEREVERT(.T.) &&启用表缓冲,放弃表中对所有记录所做的修改函数
mand1.ENABLED=.t.
mand2.ENABLED=.t.
mand3.ENABLED=.t.
mand4.ENABLED=.t.
mand5.ENABLED=.f.
mand6.ENABLED=.f.
mand7.ENABLED=.t.
ENDPROC
PROCEDURE Command7.Click
USE A:\XJ EXCLUSIVE
PACK
THISFORM.RELEASE
ENDPROC
PROCEDURE Click
IF EMPTY(bo1.VALUE) &&如果组合框1的值为空
=MESSAGEBOX("请选择学号!",48+0+0,"学生学籍管理系统") &&系统给出内容为“请选择学
号!”的对话框
ENDIF
AA=RECNO() &&用显示记录号的函数将记录号赋给变量AA GO AA &&将记录指针移到当前记录号
THISFORM.txt学号.REFRESH &&刷新学号文本框的内容
THISFORM.txt姓名.REFRESH &&刷新姓名文本框的内容
THISFORM.txt性别.REFRESH &&刷新性别文本框的内容THISFORM.txt出生年月.REFRESH &&刷新出生年月文本框的内容THISFORM.txt邮编.REFRESH &&刷新邮编文本框的内容
THISFORM.txt高数.REFRESH &&刷新高数文本框的内容
THISFORM.txt英语.REFRESH &&刷新英语文本框的内容
THISFORM.txtVfp.REFRESH &&刷新VFP文本框的内容THISFORM.txt是否党员.REFRESH &&刷新是否党员文本框的内容THISFORM.txt电话.REFRESH &&刷新电话文本框的内容THISFORM.txt通信地址.REFRESH &&刷新通信地址文本框的内容THISFORM.edt备注.REFRESH &&刷新备注编辑框的内容mand5.ENABLED=.t.
mand6.ENABLED=.t.
ENDPROC(未完)
VFP应用程序设计实例--学生学籍管理系统(2)电脑笔记2007-10-29 16:54:06 阅读3360 评论0 字号:大中小
图2
3、录入数据表单源代码(A:\录入.sct,如图2所示)
PROCEDURE Init &&录入数据表单的初始化事件过程
SET TALK OFF
mand4.ENABLED=.f. &&设置第四个按钮为不可用状态mand5.ENABLED=.f. &&设置第五个按钮为不可用状态THISFORM.txt学号.ENABLED=.f. &&设置学号文本框为不可用状态
THISFORM.txt姓名.ENABLED=.f. &&设置姓名文本框为不可用状态
bo1.ENABLED=.f. &&设置组合框1为不可用状态
bo2.ENABLED=.f. &&设置组合框2为不可用状态
bo3.ENABLED=.f. &&设置组合框3为不可用状态
bo4.ENABLED=.f. &&设置组合框4为不可用状态
THISFORM.txt邮编.ENABLED=.f. &&设置邮编文本框为不可用状态
THISFORM.txt高数.ENABLED=.f. &&设置高数文本框为不可用状态
THISFORM.txt英语.ENABLED=.f. &&设置英语文本框为不可用状态
THISFORM.txtVfp.ENABLED=.f. &&设置VFP文本框为不可用状态
bo5.ENABLED=.f. &&设置组合框5为不可用状态
THISFORM.txt电话.ENABLED=.f. &&设置电话文本框为不可用状态THISFORM.txt通信地址.ENABLED=.f. &&设置通信地址文本框为不可用状态THISFORM.edt备注.ENABLED=.f. &&设置备注编辑框为不可用状态
ENDPROC
PROCEDURE Load &&录入数据表单的加载事件过程
CLOSE DATA &&关闭所有数据库
USE A:\XJ存 &&打开A盘中的XJ.DBF表文件
SET MULTILOCKS ON &&设置锁定一组记录
=CURSORSETPROP('buffering',5,'XJ') &&打开开放式表缓冲
ENDPROC
PROCEDURE InteractiveChange &&录入数据表单的交互改变事件过程
REPL 出生年月 WITH
bo2.displayvalue+"."+bo3.displayvalue+"."+ bo4.displayvalue &&用组合框的值替换出生年月字段
THISFORM.REFRESH &&刷新录入数据表单
ENDPROC
PROCEDURE Command1.Click &&单击命令按钮1的事件过程
APPEND BLANK &&添加一空白记录
THISFORM.REFRESH &&刷新录入数据表单
mand1.ENABLED=.f. &&设置命令按钮1为不可用状态mand2.ENABLED=.f. &&设置命令按钮2为不可用状态mand3.ENABLED=.f. &&设置命令按钮3为不可用状态
mand4.ENABLED=.t. &&设置命令按钮4为可用状态
mand5.ENABLED=.t. &&设置命令按钮5为可用状态
mand6.ENABLED=.f. &&设置命令按钮6为不可用状态
THISFORM.txt学号.ENABLED=.t.
THISFORM.txt姓名.ENABLED=.t.
bo1.ENABLED=.t.
bo2.ENABLED=.t.
bo3.ENABLED=.t.
bo4.ENABLED=.t.
THISFORM.txt邮编.ENABLED=.t.
THISFORM.txt高数.ENABLED=.t.
THISFORM.txt英语.ENABLED=.t.
THISFORM.txtVfp.ENABLED=.t.
bo5.ENABLED=.t.
THISFORM.txt电话.ENABLED=.t.
THISFORM.txt通信地址.ENABLED=.t.
THISFORM.edt备注.ENABLED=.t.
THISFORM.txt学号.SETFOCUS
ENDPROC
PROCEDURE Command2.Click &&单击命令按钮2的事件过程
SET DELETE ON &&设置打开删除命令
DELETE &&删除当前记录
YN=MESSAGEBOX('确实要删除这条记录?',4+32+256,'删除确认') &&弹出内容为“确实要删
除这条记录?”的对话框
DO CASE &&运行条件判断语句
CASE YN=6 &&当单击“是”按钮时
=TABLEUPDATE(.T.) &&执行更新表函数,删除当前记录CASE YN=7 &&当单击“否”按钮时
RECALL &&恢复已作了删除标记的当前记录
ENDCASE
THISFORM.REFRESH
ENDPROC
PROCEDURE Command3.Click &&单击命令按钮3的事件过程mand1.ENABLED=.f.
mand2.ENABLED=.f.
mand3.ENABLED=.f.
mand4.ENABLED=.t.
mand5.ENABLED=.t.
mand6.ENABLED=.f.
ENDPROC
PROCEDURE Command4.Click &&单击命令按钮4的事件过程
=TABLEUPDATE(.T.)
mand1.ENABLED=.t.
mand2.ENABLED=.t.
mand3.ENABLED=.t.
mand4.ENABLED=.f.
mand5.ENABLED=.f.
mand6.ENABLED=.t.
ENDPROC
PROCEDURE Command5.Click &&单击命令按钮5的事件过程
=TABLEREVERT(.T.)
mand1.ENABLED=.t.
mand2.ENABLED=.t.
mand3.ENABLED=.t.
mand4.ENABLED=.f.
mand5.ENABLED=.f.
mand6.ENABLED=.t.
ENDPROC
PROCEDURE Command6.Click &&单击命令按钮6的事件过程
SELE 1 &&选择1号工作区
USE A:\XJ EXCLUSIVE 打开A盘中的XJ.DBF数据表
PACK &&彻底删除已作了删除标记的记录
THISFORM.RELEASE &&释放录入数据表单
ENDPROC
PROCEDURE InteractiveChange
REPL 是否党员 WITH bo5.DISPLAYVALUE &&用组合框的值替换是否党员字段
THISFORM.REFRESH
ENDPROC
4、修改数据表单源代码(A:\修改.sct)
图3
PROCEDURE Command1.Click
IF NOT BOF() &&如果记录指针没有到记录的开头
SKIP –1 &&向上跳转一个记录
THISFORM.REFRESH
mand2.ENABLED=.t.
ELSE
WAIT WINDOW '已经是第一条记录了!' &&系统给出内容为“已经是第一条记录了!”提示窗

ENDIF
ENDPROC
PROCEDURE Command2.Click
IF NOT EOF() &&如果记录指针没有到记录的结尾
SKIP &&向下跳转一个记录
THISFORM.REFRESH mand1.ENABLED=.t.
ELSE
WAIT WINDOW '已经是最后一条记录了!'
ENDIF
ENDPROC
PROCEDURE Command3.Click
GO TOP &&将记录指针移到记录的开头
THISFORM.REFRESH mand1.ENABLED=.f. mand2.ENABLED=.t.
ENDPROC
PROCEDURE Command4.Click
GO BOTTOM &&将记录指针移到记录的结尾
THISFORM.REFRESH mand1.ENABLED=.t. mand2.ENABLED=.f.
ENDPROC
PROCEDURE Command5.Click
=TABLEUPDATE(.T.) mand1.ENABLED=.t. mand2.ENABLED=.t. mand3.ENABLED=.t. mand4.ENABLED=.t.
mand5.ENABLED=.f.
mand6.ENABLED=.f.
mand7.ENABLED=.t.
ENDPROC
PROCEDURE Command6.Click
=TABLEREVERT(.T.) &&启用表缓冲,放弃表中对所有记录所做的修改函数
mand1.ENABLED=.t.
mand2.ENABLED=.t.
mand3.ENABLED=.t.
mand4.ENABLED=.t.
mand5.ENABLED=.f.
mand6.ENABLED=.f.
mand7.ENABLED=.t.
ENDPROC
PROCEDURE Command7.Click
USE A:\XJ EXCLUSIVE
PACK
THISFORM.RELEASE
ENDPROC
PROCEDURE Click
IF EMPTY(bo1.VALUE) &&如果组合框1的值为空
=MESSAGEBOX("请选择学号!",48+0+0,"学生学籍管理系统") &&系统给出内容为“请选择学
号!”的对话框
ENDIF
AA=RECNO() &&用显示记录号的函数将记录号赋给变量AA GO AA &&将记录指针移到当前记录号
THISFORM.txt学号.REFRESH &&刷新学号文本框的内容
THISFORM.txt姓名.REFRESH &&刷新姓名文本框的内容
THISFORM.txt性别.REFRESH &&刷新性别文本框的内容THISFORM.txt出生年月.REFRESH &&刷新出生年月文本框的内容THISFORM.txt邮编.REFRESH &&刷新邮编文本框的内容
THISFORM.txt高数.REFRESH &&刷新高数文本框的内容
THISFORM.txt英语.REFRESH &&刷新英语文本框的内容
THISFORM.txtVfp.REFRESH &&刷新VFP文本框的内容THISFORM.txt是否党员.REFRESH &&刷新是否党员文本框的内容THISFORM.txt电话.REFRESH &&刷新电话文本框的内容THISFORM.txt通信地址.REFRESH &&刷新通信地址文本框的内容THISFORM.edt备注.REFRESH &&刷新备注编辑框的内容mand5.ENABLED=.t.
mand6.ENABLED=.t.
ENDPROC(未完)
、查询数据表单源代码(A:\查询.sct)
图4
PROCEDURE Click
IF EMPTY(bo1.VALUE)
=MESSAGEBOX("请选择学号!",48+0+0,"学生学籍管理系统")
ENDIF
AA=RECNO()
GO AA
THISFORM.txt学号.REFRESH
THISFORM.txt姓名.REFRESH
THISFORM.txt性别.REFRESH
THISFORM.txt出生年月.REFRESH
THISFORM.txt邮编.REFRESH
THISFORM.txt高数.REFRESH
THISFORM.txt英语.REFRESH
THISFORM.txtVfp.REFRESH
THISFORM.txt是否党员.REFRESH
THISFORM.txt电话.REFRESH
THISFORM.txt通信地址.REFRESH
THISFORM.edt备注.REFRESH
ENDPROC
6、统计数据表单源代码(A:\统计.sct)
图5
PROCEDURE Click &&单击“统计记录总数”按钮时的事件过程COUNT TO AA FOR 是否党员="是" &&对党员计数,并将计数结果赋给变量AA THISFORM.text5.value=AA &&将变量AA的值赋给文本框5
THISFORM.text5.REFRESH
ENDPROC
PROCEDURE Click &&单击“统计英语平均成绩”按钮时的事件过程
AVERAGE 英语 TO AA &&对所有记录的英语成绩求平均,并将平均值赋给变量AA THISFORM.text3.value=AA &&将变量AA的值赋给文本框3
THISFORM.text3.REFRESH
ENDPROC
PROCEDURE Click &&单击“统计VFP平均成绩”按钮时的事件过程AVERAGE vfp TO AA &&对所有记录的VFP成绩求平均,并将平均值赋给变量AA THISFORM.text4.value=AA &&将变量AA的值赋给文本框4
THISFORM.text4.REFRESH
ENDPROC
PROCEDURE Click &&单击“统计总平均成绩”按钮时的事件过程AVERAGE 高数 TO AA &&对所有记录的高数成绩求平均,并将平均值赋给变量AA AVERAGE 英语 TO BB &&对所有记录的英语成绩求平均,并将平均值赋给变量BB AVERAGE vfp TO CC &&对所有记录的VFP成绩求平均,并将平均值赋给变量CC STORE (AA+BB+CC)/3 TO DD &&将三门成绩的平均成绩和除3的总平均成绩赋给DD THISFORM.text6.value=DD &&将变量DD的值赋给文本框6
THISFORM.text6.REFRESH
ENDPROC
7、显示数据表单源代码(A:\显示.sct)
图6
PROCEDURE Command1.Click &&单击“上条”按钮的事件过程
IF NOT BOF()
SKIP -1
THISFORM.REFRESH
mand2.ENABLED=.t.
ELSE
WAIT WINDOW '已经是第一条记录了!'
ENDIF
ENDPROC
PROCEDURE Command2.Click &&单击“下条”按钮的事件过程
IF NOT EOF()
SKIP
THISFORM.REFRESH
mand1.ENABLED=.t.
ELSE
WAIT WINDOW '已经是最后一条记录了!'
ENDIF
ENDPROC
PROCEDURE Command3.Click &&单击“首条”按钮的事件过程
GO TOP
THISFORM.REFRESH
mand1.ENABLED=.f.
mand2.ENABLED=.t.
ENDPROC
PROCEDURE Command4.Click &&单击“末条”按钮的事件过程
GO BOTTOM
THISFORM.REFRESH
mand1.ENABLED=.t.
mand2.ENABLED=.f.
ENDPROC
PROCEDURE Command5.Click &&单击“返回”按钮的事件过程
THISFORM.RELEASE
ENDPROC
8、删除数据表单源代码(A:\删除.sct)
图7
PROCEDURE Click &&单击“显示”按钮的事件过程
IF EMPTY(bo1.VALUE)
=MESSAGEBOX("请选择学号!",48+0+0,"学生学籍管理系统") mand2.ENABLED=.f.
ELSE
mand2.ENABLED=.t.
ENDIF
AA=RECNO()
GO AA
THISFORM.txt学号.REFRESH
THISFORM.txt姓名.REFRESH
THISFORM.txt性别.REFRESH
THISFORM.txt出生年月.REFRESH
THISFORM.txt邮编.REFRESH
THISFORM.txt高数.REFRESH
THISFORM.txt英语.REFRESH
THISFORM.txtVfp.REFRESH
THISFORM.txt是否党员.REFRESH
THISFORM.txt电话.REFRESH
THISFORM.txt通信地址.REFRESH
THISFORM.edt备注.REFRESH
ENDPROC
PROCEDURE Click &&单击“删除”按钮的事件过程
SET DELETE ON
DELETE
YN=MESSAGEBOX('确实要删除这条记录?',4+32+256,'删除确认')
DO CASE
CASE YN=6
=TABLEUPDATE(.T.)
=MESSAGEBOX("记录已成功删除!",0+64+0,'学生学籍管理系统') mand2.ENABLED=.f.
bo1.DISPLAYVALUE="请选择"
GO TOP
CASE YN=7
RECALL
ENDCASE
THISFORM.REFRESH
ENDPROC
PROCEDURE Init &&删除数据表单的初始化过程
SET TALK OFF
mand2.ENABLED=.f.
ENDPROC
PROCEDURE Click
USE A:\XJ EXCLUSIVE
PACK
THISFORM.RELEASE
ENDPROC(未完)
VFP应用程序设计实例--学生学籍管理系统(4)电脑笔记2007-10-29 16:58:43 阅读3843 评论5 字号:大中小
9、导出数据表单源代码(A:\导出.sct)
图8
PROCEDURE Click &&单击“确定”按钮的事件过程
SET SAFETY OFF &&覆盖文件时不提示确认
USE A:\XJ
GO TOP
IF EMPTY(bo1.VALUE)
=MESSAGEBOX("请选择盘符!",48+0+0,"学生学籍管理系统")
ELSE
IF EMPTY(THISFORM.text1.VALUE)
=MESSAGEBOX("请输入文件名!",48+0+0,"学生学籍管理系统")
ELSE
IF RECC()>0 &&如果表记录大于0
DRIVER=BO1.DISPLAYVALUE &&将组合框1的值赋给变量DRIVER
FILENAME=ALLTRIM(THISFORM.TEXT1.TEXT) &&将去掉空格的文件名赋给变量
FILENAME
COPY TO &DRIVER\&FILENAME &&将系统表文件复制到选定的盘符和文件名中 =MESSAGEBOX("本系统所有数据已转出完毕!",48,"信息提示")
USE
THISFORM.RELEASE
ELSE
=MESSAGEBOX("没有任何数据,不能转出",48,"信息提示")
USE
THISFORM.RELEASE
ENDIF
ENDIF
ENDIF
ENDPROC
PROCEDURE Click &&单击“取消”按钮的事件过程
RELEASE THISFORM
ENDPROC
10、导入数据表单源代码(A:\导入.sct)
图9
PROCEDURE Click &&单击“确定”按钮的事件过程
SET SAFETY OFF
IF EMPTY(bo1.VALUE)
=MESSAGEBOX("请选择要导入的数据表所在的盘符!",48+0+0,"学生学籍管理系统")
THISFORM.text1.SETFOCUS
ELSE
IF EMPTY(THISFORM.text1.VALUE)
=MESSAGEBOX("请输入要导入的数据表名!",48+0+0,"学生学籍管理系统")
ELSE
DRIVER=bo1.VALUE
FILENAME=ALLTRIM(THISFORM.TEXT1.VALUE)
USE A:\XJ
? &&打印一空行
ON ERROR ? MESSAGE() &&发生找不到文件的错误时,打印错误信息
APPEND FROM &DRIVER\&FILENAME &&将选定的文件追加到系统表文件中 =MESSAGEBOX('数据表已成功导入原表!',0+64+0,'学生学籍管理系统')
USE
THISFORM.RELEASE
ENDIF
ENDIF
ENDPROC
11、打印数据表单源代码(A:\打印.sct)
图10
PROCEDURE Command1.Click
??CHR(7)
REPORT FORM A:\学生学籍管理表.frx NOEJECT NOCONSOLE TO PRINTER
ENDPROC
PROCEDURE Command2.Click
REPORT FORM A:\学生学籍管理表.frx PREVIEW
ENDPROC
PROCEDURE Command3.Click
THISFORM.RELEASE
ENDPROC
学生学籍管理系统的开发和应用,可以提高学校的管理水平。

学校办公效率可以有很大的提高,

学校的信息管理提供了一个良好的工具,化简了繁琐的工作模式,从而使得学校的管理更加合理

和科学化。

良好的管理信息系统节省了大量的人力和物力,也避免了大量重复性工作。

高效的管

信息系统也为工作人员提高自身的计算机水平提供了机会,每个人都应该适应社会高新技术的发
展,
努力追赶科技潮流。

在学生学籍管理系统的设计和开发工作中,也存在着诸如程序难免有一些错
误和
不足等,欢迎朋友们看过文章后能够提出宝贵的意见和建议.。

相关文档
最新文档