VFP经典有趣小程序 -
VFP应用程序设计实例

VFP应用程序设计实例--学生学籍管理系统(1)电脑笔记2007-10-29 16:43:36 阅读2795 评论5 字号:大中小图1MIS是英文Management Information System的英文缩写,意思是信息管理系统,该系统可用于中小型企事业单位业务处理和信息交流,从而大大提高了企业运作的效率。
微软公司的VisualFoxPro可视化面向对象的编程软件是一个设计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 ALLCLEAR ALLCLEARSET SYSMENU OFFSET SYSMENU TOSET TALK OFFSET SAFETY OFFSET STATUS BAR OFF &&关闭Visual Foxpro的状态栏DO FORM A:\封面.SCX &&调用系统登录“封面”表单READ EVENT &&响应用户输入DO A:\菜单.MPX &&运行系统菜单READ EVENTSET SYSMENU TO DEFAULT &&恢复Visual Foxpro的系统菜单的默认值SET SYSMENU ON &&显示Visual Foxpro的系统菜单SET STATUS BAR ON &&显示Visual Foxpro的状态栏CLOSE ALL &&关闭所有文件CLEAR ALLRETURN &&返回2、封面表单源代码(A:\封面.sct)PROCEDURE Click &&确定按钮的单击事件过程SET EXACT ON &&设置精确比较命令IF THISFORM.text1.VALUE="8888" &&如果文本框的值是8888THISFORM.RELEASE &&那么释放封面表单DO A:\菜单.MPX &&运行菜单程序ELSE &&否则THISFORM.NO=THISFORM.NO+1 &&将自定义属性NO的值由0加1IF THISFORM.NO>=3 &&如果自定义属性NO的值为3=MESSAGEBOX("密码三次输错,您不能使用本系统!",0+16+0,"学生学籍管理系统") &&那么弹出内容为“密码三次输错,您不能使用本系统!”的对话框QUIT &&结束程序的运行ELSE &&否则=MESSAGEBOX("密码错误!",48+0+0,"警告") &&弹出内容为“密码错误!”的对话框THISFORM.text1.VALUE="" &&设置文本框的内容为空THISFORM.text1.SETFOCUS &&并将光标定位到文本框中THISFORM.REFRESH &&刷新封面表单ENDIFENDIFSET EXACT OFF &&设置关闭精确比较命令ENDPROCPROCEDURE Click &&取消按钮的单击事件过程THISFORM.RELEASE &&释放封面表单CLOSE ALL &&关闭所有文件CLEAR EVENTquitENDPROC (未完)VFP应用程序设计实例--学生学籍管理系统(2)电脑笔记2007-10-29 16:54:06 阅读3360 评论0 字号:大中小图23、录入数据表单源代码(A:\录入.sct,如图2所示)PROCEDURE Init &&录入数据表单的初始化事件过程SET TALK OFFmand4.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. &&设置备注编辑框为不可用状态ENDPROCPROCEDURE Load &&录入数据表单的加载事件过程CLOSE DATA &&关闭所有数据库USE A:\XJ存 &&打开A盘中的XJ.DBF表文件SET MULTILOCKS ON &&设置锁定一组记录=CURSORSETPROP('buffering',5,'XJ') &&打开开放式表缓冲ENDPROCPROCEDURE InteractiveChange &&录入数据表单的交互改变事件过程REPL 出生年月 WITHbo2.displayvalue+"."+bo3.displayvalue+"."+ bo4.displayvalue &&用组合框的值替换出生年月字段THISFORM.REFRESH &&刷新录入数据表单ENDPROCPROCEDURE 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学号.SETFOCUSENDPROCPROCEDURE Command2.Click &&单击命令按钮2的事件过程SET DELETE ON &&设置打开删除命令DELETE &&删除当前记录YN=MESSAGEBOX('确实要删除这条记录?',4+32+256,'删除确认') &&弹出内容为“确实要删除这条记录?”的对话框DO CASE &&运行条件判断语句CASE YN=6 &&当单击“是”按钮时=TABLEUPDATE(.T.) &&执行更新表函数,删除当前记录CASE YN=7 &&当单击“否”按钮时RECALL &&恢复已作了删除标记的当前记录ENDCASETHISFORM.REFRESHENDPROCPROCEDURE Command3.Click &&单击命令按钮3的事件过程mand1.ENABLED=.f.mand2.ENABLED=.f.mand3.ENABLED=.f.mand4.ENABLED=.t.mand5.ENABLED=.t.mand6.ENABLED=.f.ENDPROCPROCEDURE Command4.Click &&单击命令按钮4的事件过程=TABLEUPDATE(.T.)mand1.ENABLED=.t.mand2.ENABLED=.t.mand3.ENABLED=.t.mand4.ENABLED=.f.mand5.ENABLED=.f.mand6.ENABLED=.t.ENDPROCPROCEDURE Command5.Click &&单击命令按钮5的事件过程=TABLEREVERT(.T.)mand1.ENABLED=.t.mand2.ENABLED=.t.mand3.ENABLED=.t.mand4.ENABLED=.f.mand5.ENABLED=.f.mand6.ENABLED=.t.ENDPROCPROCEDURE Command6.Click &&单击命令按钮6的事件过程SELE 1 &&选择1号工作区USE A:\XJ EXCLUSIVE 打开A盘中的XJ.DBF数据表PACK &&彻底删除已作了删除标记的记录THISFORM.RELEASE &&释放录入数据表单ENDPROCPROCEDURE InteractiveChangeREPL 是否党员 WITH bo5.DISPLAYVALUE &&用组合框的值替换是否党员字段THISFORM.REFRESHENDPROC4、修改数据表单源代码(A:\修改.sct)图3PROCEDURE Command1.ClickIF NOT BOF() &&如果记录指针没有到记录的开头SKIP –1 &&向上跳转一个记录THISFORM.REFRESHmand2.ENABLED=.t.ELSEWAIT WINDOW '已经是第一条记录了!' &&系统给出内容为“已经是第一条记录了!”提示窗口ENDIFENDPROCPROCEDURE Command2.ClickIF NOT EOF() &&如果记录指针没有到记录的结尾SKIP &&向下跳转一个记录THISFORM.REFRESH mand1.ENABLED=.t.ELSEWAIT WINDOW '已经是最后一条记录了!'ENDIFENDPROCPROCEDURE Command3.ClickGO TOP &&将记录指针移到记录的开头THISFORM.REFRESH mand1.ENABLED=.f. mand2.ENABLED=.t.ENDPROCPROCEDURE Command4.ClickGO BOTTOM &&将记录指针移到记录的结尾THISFORM.REFRESH mand1.ENABLED=.t. mand2.ENABLED=.f.ENDPROCPROCEDURE 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.ENDPROCPROCEDURE 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.ENDPROCPROCEDURE Command7.ClickUSE A:\XJ EXCLUSIVEPACKTHISFORM.RELEASEENDPROCPROCEDURE ClickIF EMPTY(bo1.VALUE) &&如果组合框1的值为空=MESSAGEBOX("请选择学号!",48+0+0,"学生学籍管理系统") &&系统给出内容为“请选择学号!”的对话框ENDIFAA=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 字号:大中小图23、录入数据表单源代码(A:\录入.sct,如图2所示)PROCEDURE Init &&录入数据表单的初始化事件过程SET TALK OFFmand4.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. &&设置备注编辑框为不可用状态ENDPROCPROCEDURE Load &&录入数据表单的加载事件过程CLOSE DATA &&关闭所有数据库USE A:\XJ存 &&打开A盘中的XJ.DBF表文件SET MULTILOCKS ON &&设置锁定一组记录=CURSORSETPROP('buffering',5,'XJ') &&打开开放式表缓冲ENDPROCPROCEDURE InteractiveChange &&录入数据表单的交互改变事件过程REPL 出生年月 WITHbo2.displayvalue+"."+bo3.displayvalue+"."+ bo4.displayvalue &&用组合框的值替换出生年月字段THISFORM.REFRESH &&刷新录入数据表单ENDPROCPROCEDURE 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学号.SETFOCUSENDPROCPROCEDURE Command2.Click &&单击命令按钮2的事件过程SET DELETE ON &&设置打开删除命令DELETE &&删除当前记录YN=MESSAGEBOX('确实要删除这条记录?',4+32+256,'删除确认') &&弹出内容为“确实要删除这条记录?”的对话框DO CASE &&运行条件判断语句CASE YN=6 &&当单击“是”按钮时=TABLEUPDATE(.T.) &&执行更新表函数,删除当前记录CASE YN=7 &&当单击“否”按钮时RECALL &&恢复已作了删除标记的当前记录ENDCASETHISFORM.REFRESHENDPROCPROCEDURE Command3.Click &&单击命令按钮3的事件过程mand1.ENABLED=.f.mand2.ENABLED=.f.mand3.ENABLED=.f.mand4.ENABLED=.t.mand5.ENABLED=.t.mand6.ENABLED=.f.ENDPROCPROCEDURE Command4.Click &&单击命令按钮4的事件过程=TABLEUPDATE(.T.)mand1.ENABLED=.t.mand2.ENABLED=.t.mand3.ENABLED=.t.mand4.ENABLED=.f.mand5.ENABLED=.f.mand6.ENABLED=.t.ENDPROCPROCEDURE Command5.Click &&单击命令按钮5的事件过程=TABLEREVERT(.T.)mand1.ENABLED=.t.mand2.ENABLED=.t.mand3.ENABLED=.t.mand4.ENABLED=.f.mand5.ENABLED=.f.mand6.ENABLED=.t.ENDPROCPROCEDURE Command6.Click &&单击命令按钮6的事件过程SELE 1 &&选择1号工作区USE A:\XJ EXCLUSIVE 打开A盘中的XJ.DBF数据表PACK &&彻底删除已作了删除标记的记录THISFORM.RELEASE &&释放录入数据表单ENDPROCPROCEDURE InteractiveChangeREPL 是否党员 WITH bo5.DISPLAYVALUE &&用组合框的值替换是否党员字段THISFORM.REFRESHENDPROC4、修改数据表单源代码(A:\修改.sct)图3PROCEDURE Command1.ClickIF NOT BOF() &&如果记录指针没有到记录的开头SKIP –1 &&向上跳转一个记录THISFORM.REFRESHmand2.ENABLED=.t.ELSEWAIT WINDOW '已经是第一条记录了!' &&系统给出内容为“已经是第一条记录了!”提示窗口ENDIFENDPROCPROCEDURE Command2.ClickIF NOT EOF() &&如果记录指针没有到记录的结尾SKIP &&向下跳转一个记录THISFORM.REFRESH mand1.ENABLED=.t.ELSEWAIT WINDOW '已经是最后一条记录了!'ENDIFENDPROCPROCEDURE Command3.ClickGO TOP &&将记录指针移到记录的开头THISFORM.REFRESH mand1.ENABLED=.f. mand2.ENABLED=.t.ENDPROCPROCEDURE Command4.ClickGO BOTTOM &&将记录指针移到记录的结尾THISFORM.REFRESH mand1.ENABLED=.t. mand2.ENABLED=.f.ENDPROCPROCEDURE 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.ENDPROCPROCEDURE 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.ENDPROCPROCEDURE Command7.ClickUSE A:\XJ EXCLUSIVEPACKTHISFORM.RELEASEENDPROCPROCEDURE ClickIF EMPTY(bo1.VALUE) &&如果组合框1的值为空=MESSAGEBOX("请选择学号!",48+0+0,"学生学籍管理系统") &&系统给出内容为“请选择学号!”的对话框ENDIFAA=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)图4PROCEDURE ClickIF EMPTY(bo1.VALUE)=MESSAGEBOX("请选择学号!",48+0+0,"学生学籍管理系统")ENDIFAA=RECNO()GO AATHISFORM.txt学号.REFRESHTHISFORM.txt姓名.REFRESHTHISFORM.txt性别.REFRESHTHISFORM.txt出生年月.REFRESHTHISFORM.txt邮编.REFRESHTHISFORM.txt高数.REFRESHTHISFORM.txt英语.REFRESHTHISFORM.txtVfp.REFRESHTHISFORM.txt是否党员.REFRESHTHISFORM.txt电话.REFRESHTHISFORM.txt通信地址.REFRESHTHISFORM.edt备注.REFRESHENDPROC6、统计数据表单源代码(A:\统计.sct)图5PROCEDURE Click &&单击“统计记录总数”按钮时的事件过程COUNT TO AA FOR 是否党员="是" &&对党员计数,并将计数结果赋给变量AA THISFORM.text5.value=AA &&将变量AA的值赋给文本框5THISFORM.text5.REFRESHENDPROCPROCEDURE Click &&单击“统计英语平均成绩”按钮时的事件过程AVERAGE 英语 TO AA &&对所有记录的英语成绩求平均,并将平均值赋给变量AA THISFORM.text3.value=AA &&将变量AA的值赋给文本框3THISFORM.text3.REFRESHENDPROCPROCEDURE Click &&单击“统计VFP平均成绩”按钮时的事件过程AVERAGE vfp TO AA &&对所有记录的VFP成绩求平均,并将平均值赋给变量AA THISFORM.text4.value=AA &&将变量AA的值赋给文本框4THISFORM.text4.REFRESHENDPROCPROCEDURE 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的值赋给文本框6THISFORM.text6.REFRESHENDPROC7、显示数据表单源代码(A:\显示.sct)图6PROCEDURE Command1.Click &&单击“上条”按钮的事件过程IF NOT BOF()SKIP -1THISFORM.REFRESHmand2.ENABLED=.t.ELSEWAIT WINDOW '已经是第一条记录了!'ENDIFENDPROCPROCEDURE Command2.Click &&单击“下条”按钮的事件过程IF NOT EOF()SKIPTHISFORM.REFRESHmand1.ENABLED=.t.ELSEWAIT WINDOW '已经是最后一条记录了!'ENDIFENDPROCPROCEDURE Command3.Click &&单击“首条”按钮的事件过程GO TOPTHISFORM.REFRESHmand1.ENABLED=.f.mand2.ENABLED=.t.ENDPROCPROCEDURE Command4.Click &&单击“末条”按钮的事件过程GO BOTTOMTHISFORM.REFRESHmand1.ENABLED=.t.mand2.ENABLED=.f.ENDPROCPROCEDURE Command5.Click &&单击“返回”按钮的事件过程THISFORM.RELEASEENDPROC8、删除数据表单源代码(A:\删除.sct)图7PROCEDURE Click &&单击“显示”按钮的事件过程IF EMPTY(bo1.VALUE)=MESSAGEBOX("请选择学号!",48+0+0,"学生学籍管理系统") mand2.ENABLED=.f.ELSEmand2.ENABLED=.t.ENDIFAA=RECNO()GO AATHISFORM.txt学号.REFRESHTHISFORM.txt姓名.REFRESHTHISFORM.txt性别.REFRESHTHISFORM.txt出生年月.REFRESHTHISFORM.txt邮编.REFRESHTHISFORM.txt高数.REFRESHTHISFORM.txt英语.REFRESHTHISFORM.txtVfp.REFRESHTHISFORM.txt是否党员.REFRESHTHISFORM.txt电话.REFRESHTHISFORM.txt通信地址.REFRESHTHISFORM.edt备注.REFRESHENDPROCPROCEDURE Click &&单击“删除”按钮的事件过程SET DELETE ONDELETEYN=MESSAGEBOX('确实要删除这条记录?',4+32+256,'删除确认')DO CASECASE YN=6=TABLEUPDATE(.T.)=MESSAGEBOX("记录已成功删除!",0+64+0,'学生学籍管理系统') mand2.ENABLED=.f.bo1.DISPLAYVALUE="请选择"GO TOPCASE YN=7RECALLENDCASETHISFORM.REFRESHENDPROCPROCEDURE Init &&删除数据表单的初始化过程SET TALK OFFmand2.ENABLED=.f.ENDPROCPROCEDURE ClickUSE A:\XJ EXCLUSIVEPACKTHISFORM.RELEASEENDPROC(未完)VFP应用程序设计实例--学生学籍管理系统(4)电脑笔记2007-10-29 16:58:43 阅读3843 评论5 字号:大中小9、导出数据表单源代码(A:\导出.sct)图8PROCEDURE Click &&单击“确定”按钮的事件过程SET SAFETY OFF &&覆盖文件时不提示确认USE A:\XJGO TOPIF EMPTY(bo1.VALUE)=MESSAGEBOX("请选择盘符!",48+0+0,"学生学籍管理系统")ELSEIF EMPTY(THISFORM.text1.VALUE)=MESSAGEBOX("请输入文件名!",48+0+0,"学生学籍管理系统")ELSEIF RECC()>0 &&如果表记录大于0DRIVER=BO1.DISPLAYVALUE &&将组合框1的值赋给变量DRIVERFILENAME=ALLTRIM(THISFORM.TEXT1.TEXT) &&将去掉空格的文件名赋给变量FILENAMECOPY TO &DRIVER\&FILENAME &&将系统表文件复制到选定的盘符和文件名中 =MESSAGEBOX("本系统所有数据已转出完毕!",48,"信息提示")USETHISFORM.RELEASEELSE=MESSAGEBOX("没有任何数据,不能转出",48,"信息提示")USETHISFORM.RELEASEENDIFENDIFENDIFENDPROCPROCEDURE Click &&单击“取消”按钮的事件过程RELEASE THISFORMENDPROC10、导入数据表单源代码(A:\导入.sct)图9PROCEDURE Click &&单击“确定”按钮的事件过程SET SAFETY OFFIF EMPTY(bo1.VALUE)=MESSAGEBOX("请选择要导入的数据表所在的盘符!",48+0+0,"学生学籍管理系统")THISFORM.text1.SETFOCUSELSEIF EMPTY(THISFORM.text1.VALUE)=MESSAGEBOX("请输入要导入的数据表名!",48+0+0,"学生学籍管理系统")ELSEDRIVER=bo1.VALUEFILENAME=ALLTRIM(THISFORM.TEXT1.VALUE)USE A:\XJ? &&打印一空行ON ERROR ? MESSAGE() &&发生找不到文件的错误时,打印错误信息APPEND FROM &DRIVER\&FILENAME &&将选定的文件追加到系统表文件中 =MESSAGEBOX('数据表已成功导入原表!',0+64+0,'学生学籍管理系统')USETHISFORM.RELEASEENDIFENDIFENDPROC11、打印数据表单源代码(A:\打印.sct)图10PROCEDURE Command1.Click??CHR(7)REPORT FORM A:\学生学籍管理表.frx NOEJECT NOCONSOLE TO PRINTERENDPROCPROCEDURE Command2.ClickREPORT FORM A:\学生学籍管理表.frx PREVIEWENDPROCPROCEDURE Command3.ClickTHISFORM.RELEASEENDPROC学生学籍管理系统的开发和应用,可以提高学校的管理水平。
VFP小程序

给VFP做一个智能日期识别控件出处:网络1、新建一个类,派生于TextBox,取类名如InputDate。
2、对InputDate的LostFocus 和GotFocus 分别写入如下代码:LostFocus:IF !EMPTY(THIS.V ALUE)cY ear=allt(str(year(date())))cMonth=allt(str(month(date())))nPoint=0cInput=allt(this.value)nLenInput=len(cInput)if left(cInput,1)=="."cInput=right(cInput,nLenInput-1)nLenInput=Len(cInput)endifif right(cInput,1)=="."cInput=left(cInput,nLenInput-1)nLenInput=Len(cInput)endifn=1DO WHILE n<=nLenInputcChar=subst(cInput,n,1)if cChar=='.'nPoint=nPoint+1endifn=n+1ENDDODO CASECASE nPoint=0cOutPut=cY ear+'.'+cMonth+'.'+cInputCASE nPoint=1cOutPut=cY ear+'.'+cInputCASE nPoint=>2cOutPut=cInputENDCASEdOutPut=ctod(cOutPut)if empty(dOutput)??chr(7)this.value="日期错误!"elsethis.value=dOutPutendifENDIFGotFocus:if type('this.value')='D'this.value=dtoc(this.value)endif3、对InputDate的属性设置如下:SelectOnEntry=.T.Century=1 - 开DateFormat=14 - 汉语4、注意事项,因以上代码必须设置:Set date ansiSet cent on如果绑定其数据源ControlSource时,运行会出错,可以根据具体情况改写上述两段代码,如果提示是“日期错误!”则数据类型是字符型的,如果给出正确的日期,则数据类型是日期型的。
VFP趣味编程

(一)古代一个王国的公主爱上了花匠。
公主要出嫁按传统要用抛绣球的方式选择附马。
花匠就给公主献了个对策。
婚日来临,人群拥挤,主持人叫求婚者排成一行,花匠在队列外数了数,共有101个人,于是他找了个适当的位置也站在了队伍中。
主持人喊1、2,1、2地报数,报单数的退出场外;余下的人靠拢又成一行,再重新1、2,1、2地报数,报单数的退出场外;如此下去最后只剩一下,公主便嫁给谁。
当然,最后剩下的是花匠。
请问花匠站在原队伍中的哪一个位置?算法分析:求婚的总人数是102人;第一遍报数后,退出场的是1,3,5,7...共51人,也就是2的0次方分别乘以1,3,5...;第二遍报数后,退出场的是原队伍中的2,6,10.. 即2的1次方分别乘1,3,5;第三遍报数后,退出场的就是2的2次方分别乘以1,3,5.. 所以,源程序ex11_1.prg如下:SET TALK OFFCLEACLEA ALLrs=102DIME a(rs)FOR i=1 TO rsa(i)=iENDFORSTOR 0 TO ip,NDO WHILE .T.k=0FOR i=1 TO rsIF a(i)=0LOOPENDIFk=k+1IF k=INT(k/2)*2LOOPENDIFm=a(i)a(i)=0N=N+1ENDFORIF N=rs? "共报了"+STR(ip)+ ;"次数,花匠站在原队伍第"+ ;STR(m)+"个位置"RETUENDIFip=ip+1ENDDORETU(二)任意一个大于10的自然数,减去它的各位数之和,在所得的差中,随意圈去某位不等于零的数字,只告诉你没有被圈去的数字,就能知道被圈去数字是几。
分析:以四位数为例,设四位数abcd用多项式来表示为1000a+100b+10c+d;减去各位数之和,即减去a+b+c+d;所得的差是999a+99b+9c=9(111a+11b+c),所以这个差一定是9的倍数。
小时候经典游戏用VB编的编写实例教程大全全!

这些游戏以前玩过吧,快下载看它们是怎么编写的!目录:·编写趣味撞球小游戏·用VB6.0设计简易赛车游戏·Visual Basic小游戏:猜英雄·VB游戏写作技巧(1)秀图篇·VB游戏写作技巧(2)网络篇·VB 贪吃蛇单人版游戏(一)·VB 贪吃蛇单人版游戏(二)·VB 贪吃蛇单人版游戏(三)·VB 贪吃蛇单人版游戏(四)·用VB开发即时战略游戏正文:编写趣味撞球小游戏文章来源:沐风经典文章作者:佚名Visual Basic是一个功能强大的工具,它有一大特点就是易学易用,下面我们就通过写一个“趣味撞球”的程序来初步体会一下。
首先启动VB5,新建一个标准的EXE工程。
此时可以看到,工程包括一个Form1框体。
在Form1边框的右下角按住鼠标左键不放,拖动鼠标把Form1的面积改为适当大小,比如6930×4320。
再在属性框中把Form1的ScaleMode 属性改为3-Pixel,表明我们将以像素为我们的坐标计算单位,把Form1的StartUpPosition 属性设为2-CenterScreen,使运行时窗体出现在屏幕正中。
现在,在控件面板上选取CommandButton(命令按钮)控件,为Form1添加Command1和Command2两个按钮控件,把它们的大小设为121×25,再在属性框中把Command1的Caption填为“&GO”,把Command2的Caption填为“&QUIT”,并把Command1放到框体的右上角,把Command2放到框体的右下角。
然后,在控件面板上选取Timer(时钟)控件,为Form1添加一个Timer1时钟控件。
再在属性框中把它的Enabled属性改为False,Interval属性改为50,前一个值表示该时钟控件是否激活,后一个值决定该时钟控件产生Timer事件的间隔时间,我们将用它来控制小球的移动频率。
VFP实例小程序图文教程—10秒倒计时

VFP实例小程序图文教程—10秒倒计时
(1)在表单的init过程中编写程序,如下:
thisform.timer1.enabled=.f.
public t
t=10
作用:init表示初始化
程序的第一行的作用是设定表单初始的时候,定时器控件,不被启用。
程序的第二行的作用是设定一个公用变量t
程序的第三行的作用是对t赋一个初值30
(2)对定时器控件time1的timer过程编写程序,如下:
if t<=0
bel4.caption="时间到"
else
bel2.caption=str(t,8)
endif
t=t-1
对timer过程的编程是为了让电脑每过一个interval间隔就自动执行一次定时器控件time1的timer程序。
对time1的interval属性设定为1000,注意:interval表示间隔,单位是毫秒,1000毫秒=1秒.
t=t-1表示:减一个间隔,一个间隔,就是interval设定的值1000
(3)对command1按纽的caption属性设定为“开始计时”
对它的click过程编程为:
thisform.timer1.enabled=.T.
表示:计时器控件可以启用
(4)对command2按纽的caption属性设定为“复位”
对它的click过程编程为:
T=10
版权所有:. .
1。
Vfp常用实例

Vfp常用实例◆文字滚动的效果在表单添加一个计时器,把计时器INTERV AL设为30如要走动的文字在标签1也就是LABLE1,在计时器的timer里写下如果代码:if bel1.left+bel1.width=0bel1.left=thisform.widthelsebel1.left=bel1.left-1endif此时,LABLE1的文字将从右到左不停的走动,这时,如果要加一些效果,比如说是文字让它变颜色,一直闪烁的话。
可以再加“文字闪烁的效果”里的代码,两者结合,效果很好。
◆文字闪烁的效果假设要闪烁的标签文字在Label1上。
在表单添加一个计时器设Interval的值为30。
在表单的Alwaysontop也就是表单属性的第一个值里声明变量,代码为:Public II=0在计时器Timer1的Timer写下代码i=i+10if i>=255*2thisform.timer1.enabled=.t.i=0endifif i>=255bel1.forecolor=RGB(255*2-i,50,110)elsebel1.forecolor=RGB(i,80,170)endif打开表单,就会出现文字闪烁了,如果你有兴趣,试试看◆密码的设置在表单中添加两个文本框,text1为用户名;text2为密码,添加两个命令按钮,设为确定和取消,数据表的结构两个字段:(name *用于存放用户名)和(mm *用于存放密码)在确定按钮的click事件写入if thisform.text1.value="".or.thisform.text2.value=""=messagebox ("用户名或密码不能为空!",0+48,"警告!")elsesele 1use shujubiao\yonfu.dbfif name=allt(thisform.text1.value).and.mm=all(thisform.text2.value)usethisform.text1.value=" "thisform.text2.value=" "wait"登陆成功,正在加载数据,等稍等" time 2 windowsthisform.visible=.f.thisform.releaseclose alldo form zym.scx *写入您要执行的表单elseusemessagebox("用户名或密码错误,请重新输入!",0+48,"警告!")thisform.text1.value=" "thisform.text2.value=" "endifendif在取消按钮的click写入close allthisform.release确记啊,不能把“确定”按钮设为Enter的模式,如果设定后,启动表单时,可是不用输入密码直接按确定就可以进入了。
《VisualFoxPro9.0项目开发案例教程》第02章

报表生成
1
报表设计器
VisualFoxPro9.0提供了强大的报表设
查询与过滤
2
计器,支持多种样式和布局类型、不 同的数据源和多个页类型等。
报表生成的核心在于数据的准确性,
用户可以基于SQL语句进行数据筛选
和排序,进而生成相应的报表。
Байду номын сангаас
3
导出与打印
报表生成后,用户可以选择将其导出 为不同的格式,如Word、Excel和 PDF等。也可以直接打印到打印机或 PDF文件中。
语法基础
1
变量类型
VisualFoxPro9.0支持不同的变量类
运算符
2
型,包括字符型、数值型、日期型和 逻辑型等。每种类型对应的取值范围
VisualFoxPro9.0提供了丰富的运算
和运算规则都不同。
符支持,例如算数运算符、关系运算
符、逻辑运算符和位运算符等。还可
以通过自定义函数扩展运算。
3
控制语句
常见问题解答
常见错误解决
VisualFoxPro9.0常见错误解决是解决常见的维 护问题,解决后将为您的工作效率提升一个层 次。
速度优化
VisualFoxPro9.0运行速度对于处理大数据的应 用有很大的影响,快速运行速度可以节约大量 的时间,提高开发效率。
实际案例
企业员工管理系统
该系统基于VisualFoxPro9.0教程,结合企业管理流程需要进行开发,收到了广泛应用。
未来发展前景
VisualFoxPro9.0以面向对象和精细化的开发思 路,赢得了越来越多的用户的青睐和认可。在 未来,随着应用范围的不断扩大, VisualFoxPro9.0也会越来越受到关注和创新。
用VFP编写一个Flash播放器

用VFP编写一个Flash播放器一复习FLash控件参数详解1、Visual Foxpro 缩写(VFP6.0 VFP7.0 VFP8.0 VFP9.0)2、VFP命令:用来执行一定功能的单词或者短语?:用来在屏幕上显示常量、变量、运算结果例如:显示当前日期?date()显示当前时间?time()计算并显示结果:? 7+8+9+10Quit::关闭所有VFP文档,并退出VFP=:赋值命令把等号右边的数据存储到左边的变量中Cfile=getfile()命令的使用方法:在命令窗口中输入命令,然后敲回车键3、VFP函数:用来完成一定功能的程序段Date():日期函数time()时间函数getfile():打开文件对话框函数函数的使用1)函数一般不能单独使用,而是在命令中使用2)函数名后面一定要带有一对英文的括号3)函数可以带参数或不带参数?int (123.456)?abs(-2345)二.编写一个Flash播放器以播放Flash文件Flash文件非常多,网上有许多小游戏是flash,还有许多的MV是Flash Flash文件的扩展名是SWF,这样的文件Windows不能直接打开播放自己可以到网上找一些FlashMV或Flash小游戏下载下来。
……1、下载Flash文档打开浏览器缓存把下载的Flash文档文件保存到D:\SWF文件夹中(如果没有,就自己创建)下面我们用VFP编写一个小程序来播放SWF文件2、启动VFP,新建一个项目项目保存在”D:\SWF”文件夹,项目的名字为“Flash播放器”什么是“项目”所谓项目,简单地说,就是为实现某种目的而相互联系的一次性工作任务。
简单说,就是我用VFP编制一个数据库软件就是一个项目。
你要做一个什么软件,这就是一个项目。
3、项目的组成VFP的一个项目,可以包含多个不同用途、不同类型的文件1)数据:包含一个或几个数据库以及自由表等数据库:一个工程(项目)可以包含一个或多个数据库,也可以没有自由表:不属于人员数据库的表格查询:对数据库或自由表进行筛选2)文档:包含程序用到的表单(窗口、对话框):用来放置程序中用到的各种按钮,表格等报表:用来把数据库中数据按一定格式打印出来标签:用来把数据库中数据按一定格式打印出来类库:VFP提供的或用户自己编写的具有特定功能的组件3)代码:程序:把有关的命令按照一定的顺序组合起来就成为一个程序。
C语言经典小程序和C语言编写的小游戏,带注释 (自动保存的)

C语言经典小程序和C语言编写的小游戏,带注释1、写一个定时关机的小程序,可以立即关闭计算机,也可以一段时间后关闭计算机。
#include<stdio.h>#include<windows.h>#include<string.h>#include<stdlib.h>int main(){char cmd[20] = "shutdown -s -t ";//远程关机,系统在一定时间之后关机char t[5] = "0";//将输入的时间初始化为0int c;system("title C语言关机程序"); //设置cmd窗口标题system("mode con cols=48 lines=25"); //窗口宽度高度system("color f0"); //可以写成 red 调出颜色组,这里f0是调亮白色system("date /T");//输出系统当前日期system("TIME /T");//输出系统当前时间printf("----------- C语言关机程序 -----------\n");printf("1.实现10分钟内的定时关闭计算机\n");printf("2.立即关闭计算机\n");printf("3.注销计算机\n");printf("0.退出系统\n");printf("-------------------------------------\n");scanf("%d", &c);//对输入的数值进行判断循环switch (c){case 1:printf("您想在多少秒后自动关闭计算机?(0~600)\n");scanf("%s", t);system(strcat(cmd, t)); //将输入的时间连接上已经调用的命令break;case 2:system("shutdown -p");//立即关闭计算机break;case 3:system("shutdown -l");//注销计算机break;case 0:system("pause");break;default:printf("Error!\n");}system("pause");return 0;}2、这是一个简单的猜拳游戏(剪刀、石头、步),让你与电脑对决。
VFP命令大全

作用:分别是打开表文件的同时打开索引文件、打开索引文件和改变主索引。
格式:USE <表文件名> INDEX <索引文件名表>
SET INDEX TO [<索引文件名表>]
作用:显示表(.dbf)的内容、结构或状态。
格式:LIST|DISPLAY [OFF] [<范围>] [FIELDS] <表达式表> [WHILE <条件>] [FOR <条件> [TO PRINT|TO FILE <文件>
LIST|DISPLAY STRUCTURE TO PRINT|TO FILE <文件>
LIST|DISPLAY STATUS [TO PRINT|TO FILE <文件>
说明:命令带OFF参数表示不显示记录号,范围指定对哪些记录进行操作,范围包括:
RECORD n 第几号记录、
NEXT n 当前记录开始的几个记录、
REST 自当前记录开始至文件末尾的所有记录、
INDEX ON <关键字表达式> TAG <标识名> [OF <文件名>] [FOR <条件>]
说明:第1个命令中,/A按字段名升序排序,/D按字段名降序排序,/C忽略大小写,针对字符型关键字而言,ASCENDING和DESCENDING分别表示升序和降序。第1个命令建立.dbf表文件,第2个命令建立.idx单一索引文件,第3个命令建立.cdx复合索引文件(Compound Index)。
VFP常见编程实例

VFP常见编程实例1、1-100的累加** 求1到100的累加值CLEARs=0i=1DO WHILE i<=100s=s+ii=i+1 &&一定记住先累加后循环ENDDOsRETURN2、阶乘** 求5的阶乘CLEARj=1i=1DO WHILE i<=5j=j*ii=i+1ENDDOjRETURN3、求阶乘和** 求1至5的阶乘和CLEARs=0i=1j=1DO WHILE i<=5j=j*i s=s+ji=i+1ENDDO?sRETURN4、条件定位** 查询定位记录指针在赵伟上CLEARUSE 学生LOCATE FOR 姓名="赵伟"IF FOUND()DISPLAYELSECANCELENDIFCONTINUE5、用scan语句查询定位** 用scan语句查询定位记录在赵伟上CLEARSCAN FOR 姓名="赵伟"DISPLAYENDSCANRETURN6、用scan语句扫描符合条件的记录,并显示出来** 把年龄小于30岁的人显示出来CLEARSCAN FOR 年龄<30DISPLAYENDSCANRETURN7、查找男性职工** 查找男性职工CLEARLOCATE FOR 性别="男"DO WHILE FOUND()DISPLAYCONTINUEENDDORETURN** 查找男性职工CLEARLOCATE FOR 性别="男"DO WHILE NOT EOF()DISPLAYCONTINUEENDDORETURN** 查找男性职工CLEARUSE 职员基本信息表LOCATE FOR 性别="男"DO WHILE .t.IF FOUND() thenDISPLAYELSE&&记住最后一个ELSE语句后面不需要条件表达式CANCELENDIFCONTINUEENDDO** 查找男性职工set talk offclearopen database 家庭成员管理.dbcuse stu.dbfscan for not eof()if xb="女"skipelsedisplayskipendifendscanclose databaseuseset talk onreturn8、新值换旧值** 有一对新生的兔子,从第三个月开始,每个月出生一对兔子,请问到第十二个月共出生多少对兔子?clearstore 1 to a,bi=3do while i<=12c=a+ba=bb=ci=i+1enddo"一年共出生兔子:",creturn9、多位整数各个位数相加** 求多位整数各个位数之和CLEARs=0input "请输入一个多位整数:" to aDO WHILE a<>0s=s+MOD(a,10) &&将a取余正好是个位上的数a=INT(a/10) &&将a除10取整正好是除个位之后的数ENDDO?"这个整数的各个位数之和是:",sRETURN10、找100-999之间的“水仙花数”CLEARFOR i=100 TO 999a=INT(i/100)b=INT((i-100*a)/10)c=i-INT(i/10)*10IF i=a^3+b^3+c^3?iENDIFENDFORRETURN11、判断一个大于3的数是否为素数CLEARinput "请输入一个数(>=3):" to sf=0i=2DO WHILE i<=INT(SQRT(s))IF MOD(s,i)<>0i=i+1LOOPELSEf=1EXITENDIFENDDOIF f=0?str(s,3)+"是素数"ELSE f=1&&这个表达式可有可无,为了省事完全省略也可以。
VFP趣味程序设计

5.舍罕王的失算set talk offinput[请输入n:]to nt=1s=1for i=2 to nt=t*2s=s+tendforv=s/1.42e8h=(9/3.14159*v)^(1/3)?"总麦粒数约为:"+str(s,10,3)+"粒."?"折合体积约为:"+ltrim(str(v,15))+"立方米" ?"堆成正圆锥高约为:"+str(h,5)+"米"return程序运行结果与说明请输入n:64总麦粒数约为:1.845e+019折合体积约为129906648406立方米堆成正圆维高约为7193米5-1失算的另一名题:买马灯input"请输入n:" to nt=1s=1for i=2 to nt=t*2s=s+tendfor?"共需花费"+ltrim(str(s,16))+"个包卢斯卡." ?"合约"+str(s/400,10,4)+"卢卡."return程序运行结果与点评请输入n:24共需花费1677215个外包卢斯卡合约41943.0375卢布6分数不等式?"求n<1+1/2+1/3+1/4+...+1/m<n+1的正整数m" set talk offset deci to 14input "请输入n:"to ni=0s=0do while s<ni=i+1s=s+1/ienddoc=ido while s<n+1i=i+1s=s+1/ienddod=i-1?"满足不等式的m为:"+ltrim(str(c,10))+"<m<"+ltrim(str(d,10)) return程序运行结果:求n<1+1/2+1/3+1/4….+1/m<n+1的正整数m请输入n:10满足不等式的m为:12367<m<33616请输入n:15满足不等式的m为:1835421<m<49891907阶乘与阶乘和数set talk off?"三位阶乘和数有:"for m=100 to 999a=int(m/100)b=mod(int(m/10),10)c=mod(m,10)if m=jc(a)+jc(b)+jc(c) ??mendifendforreturnfunc jcpara xp=1for i=1 to xp=p*iendforreturn p程序运行结果:三位阶乘和数有:145可见145是唯一的三位阶乘和数8综合高精度计算cleardime a(500)a=0?" 1:计算阶乘n!"?" 2:计算乘方m^n"?" 3:计算排列数A(n,m)"input "选择(1-3): "to zinput " 请输入正整数n:" to nif z#1input" 请输入正整数m (m<=n):" to m endifd=500t=1if z=3t=n-m+1endifa(1)=1for i=t to nif z=2b=melseb=iendiff=0for j=1 to dx=a(j)*b+ff=int(x/10)a(j)=x%10 endforendforj=ddo while a(j)=0 j=j-1enddof=jdo casecase z=1? str(n,8)+"!="case z=2? str(m,6)+"^"+ltrim(str(n))+"="case z=3? "A("+ltrim(str(n))+","+ltrim(str(m))+")="endcased=0for j=f to 1 step -1d=d+1?? str(a(j),1)if d%50=0?space(10)endifendfor?" 所得结果共"+ltrim(str(f))+"位"return运行程序,选择3,输入n=100,m=90,得A(100,90)=25718203109552511210785724993459738891841922471445552653382099838849 647264448279213222405196251245118566385009463028434334174412800000000000000000 0000000所得结果共152位。
创意编程小程序实例

创意编程小程序实例随着科技的发展,编程已经成为一种必备的技能。
编程不仅可以帮助我们解决问题,还可以开发各种有趣的小程序。
本文将为大家介绍几个创意的编程小程序实例,希望能够激发大家对编程的兴趣。
1. 闹钟小程序这个小程序可以帮助我们设置闹钟,并在设定的时间到达时发出提醒。
相比于普通的闹钟,这个小程序还可以根据不同的时间段播放不同的音乐,让我们在每天的早晨都能以美妙的音乐开始新的一天。
2. 健康小程序这个小程序可以帮助我们记录每天的运动情况,并根据我们的身体指标提供合适的健康建议。
它还可以设置定时提醒我们休息,并提供一些简单的健身操视频,让我们在工作学习之余也能保持身体健康。
3. 美食小程序这个小程序可以根据我们的口味和食材,为我们提供各种美食的菜谱。
它还可以根据我们的喜好推荐一些新的菜品,让我们在烹饪的过程中充满乐趣。
4. 旅行小程序这个小程序可以帮助我们规划旅行路线,并提供各种旅游景点的介绍和推荐。
它还可以根据我们的出行时间和预算,为我们提供合适的旅行方案,并帮助我们预订机票和酒店。
5. 学习小程序这个小程序可以帮助我们制定学习计划,并提供各种学习资源和学习方法。
它还可以根据我们的学习情况进行智能推荐,帮助我们更高效地学习。
以上只是几个创意编程小程序实例的简单介绍,实际上,编程的可能性是无限的。
通过编程,我们可以开发出各种有趣的小程序,满足我们的各种需求。
编程不仅可以培养我们的逻辑思维和问题解决能力,还可以帮助我们创造出有趣的东西。
通过编程,我们可以将自己的创意变成现实,让我们的生活更加便捷和有趣。
如果你对编程感兴趣,不妨尝试学习一些编程语言,如Python、Java等。
通过学习编程,你将能够掌握一种强大的工具,为自己的创意找到最好的表达方式。
创意编程小程序是一种有趣而有意义的创作方式。
通过编程,我们可以创造出各种有趣实用的小程序,满足我们的各种需求。
希望本文能够给大家带来一些灵感,激发大家对编程的兴趣和创造力。
VFP让你的程序始终悬停在桌面上

VFP让你的程序始终悬停在桌面上转载自 myvfp最终编辑 lianwuyi一般情况下,一个程序的窗体可以最小化到系统的任务栏上,一般可以通过程序本身的最小化代码或者系统热键和‘显示桌面’按钮等等,但有时候为了使程序或者程序的某些提示性界面达到始终悬浮的效果,如金山词霸的悬浮工具条等等,这时候就需要界面始终停悬在桌面上,即使使用WINDOWS热键也无法最小化,其实实现这样的功能并不复杂,只需要将需要悬停的窗口嵌入到桌面里并把它置顶即可!有空再给大家写个可以在桌面图标层下工作的桌面播放器!VFP CODE:Public _Form1_Form1=CreateObject("Form1")_Form1.showRETURNDEFINE CLASS Form1 AS formHeight = 32Width = 297ShowWindow = 2ShowInTaskBar = .T.DoCreate = .T.Caption = "行者示例-悬停窗体"MaxButton = .F.MinButton = .F.TitleBar = 1WindowState = 0BackColor =RGB( 221,177,226)PROCEDURE Initthis.AddObject("Label1","Classname")DECLARE INTEGER FindWindow IN user32;STRING lpClassName,;STRING lpWindowNameDECLARE INTEGER GetWindow IN user32;INTEGER hwnd,;INTEGER wFlagDECLARE INTEGER SetWindowPos IN user32;INTEGER hwnd,;INTEGER hWndInsertAfter,;INTEGER x,;INTEGER y,;INTEGER cx,;INTEGER cy,;INTEGER wFlagsDeclare integer SetParent in user32 integer hWndChild , integer hWndNewParent*-----------------------------------------------------------------**-VFP应用程式算法群:12787940 行者孙:310727570-**-----------------------------------------------------------------*uHwnd = FindWindow('ProgMan',NULL)fHwnd = getWindow(_screen.hwnd,5)SetParent(fHwnd,uHwnd)SetWindowPos(this.hwnd, -1, 0, 0, 0,0, 1)ENDPROCPROCEDURE UnloadquitENDPROCENDDEFINEDEFINE CLASS Classname AS labelVisible=.T.AutoSize = .T.FontSize = 14BackStyle = 0Caption = "我就停在这里了,怎么着吧你?!" Height = 24Left = 16Top = 6Width = 287ForeColor =RGB( 255,0,0)ENDDEFINE。
VFP实例小程序—猜页码小游戏

VFP实例小程序图文教程——猜页码小游戏所需要运用的知识:一、表单基本知识1.textbelmand二、IF语句格式:If <条件><语句1>Else<语句2>endif二、随机函数Rand()为0到1之间的随机小数,保留二位。
如你要获得一个3位数的随机整数变量,则可设a=int(rand()*1000)猜页码小游戏的VFP表单界面外观设计猜页码小游戏的VFP表单编程设计表单中各个控件名称在上面全部都标注出来了。
设计各个控件(1)Label4在属性中设定label4的caption为“猜页码小游戏”,并设置一下字体大小,颜色等。
尽量美观一点(2)label1在属性中设定label1的caption为空(3)label3在属性中设定label3的caption为“总页码数为:”(4)label2在属性中设定label2的caption为“结果显示区”(5)text1在属性中设定text1的value为“=str(int(rand()*1000),8)”,并且设置它为隐藏属性(6)text2在属性中设定text2的value为“=str(int(rand()*10+2),8)”,并且设置它为隐藏属性(7)text3在属性中设定text2的value为空(8)command1在属性中设定command1的caption为“再来一盘”对它的click过程编程为:a=rand()a1=a*1000a2=a1/3+2a11=int(a1)a21=int(a2)thisform.text1.value=str(a11,8)thisform.text2.value=str(a21,8)mand4.caption="答案提示"thisform.text3.value="请重新猜"bel1.caption=thisform.text1.value(9)command2在属性中设定command2的caption为“开始游戏”对它的click过程编程为:bel1.caption=thisform.text1.value(10)command3在属性中设定command3的caption为“猜一猜”对它的click过程编程为:m0=val(thisform.text2.value)r=val(thisform.text3.value)if r<m0if r=m0bel2.caption="你真聪明,猜对了"bel2.fontsize=25bel2.forecolor=rgb(255,0,255)elsebel2.caption="太小了"endifelseif r=m0bel2.caption="你真聪明,猜对了"bel2.fontsize=25bel2.forecolor=rgb(255,0,255)elsebel2.caption="太大了"endifendif(11)command4在属性中设定command4的caption为“提示答案”对它的click过程编程为:mand4.caption=thisform.text2.value游戏玩游戏介绍:1、先点“开始游戏”2、然后根据提示的总页码数来猜页码,并将页码输入到文本框中,然后点击“猜一猜”按纽。
五个Python迷你版小程序附代码

五个Python迷你版⼩程序附代码⼀、⽯头剪⼑布游戏⽬标:创建⼀个命令⾏游戏,游戏者可以在⽯头、剪⼑和布之间进⾏选择,与计算机PK。
如果游戏者赢了,得分就会添加,直到结束游戏时,最终的分数会展⽰给游戏者。
提⽰:接收游戏者的选择,并且与计算机的选择进⾏⽐较。
计算机的选择是从选择列表中随机选取的。
如果游戏者获胜,则增加1分。
import randomchoices = ["Rock", "Paper", "Scissors"]computer = random.choice(choices)player = Falsecpu_score = 0player_score = 0while True:player = input("Rock, Paper or Scissors?").capitalize()# 判断游戏者和电脑的选择if player == computer:print("Tie!")elif player == "Rock":if computer == "Paper":print("You lose!", computer, "covers", player)cpu_score+=1else:print("You win!", player, "smashes", computer)player_score+=1elif player == "Paper":if computer == "Scissors":print("You lose!", computer, "cut", player)cpu_score+=1else:print("You win!", player, "covers", computer)player_score+=1elif player == "Scissors":if computer == "Rock":print("You lose...", computer, "smashes", player)cpu_score+=1else:print("You win!", player, "cut", computer)player_score+=1elif player=='E':print("Final Scores:")print(f"CPU:{cpu_score}")print(f"Plaer:{player_score}")breakelse:print("That's not a valid play. Check your spelling!")computer = random.choice(choices)⼆、随机密码⽣成器⽬标:创建⼀个程序,可指定密码长度,⽣成⼀串随机密码。
VFP程序设计典范例题汇总

clear
input "Enter year number please!" to y
if y%4=0 and y%100<>0 or y%400=0
? y,"is a leap year!"
else
? y,"is not leap year."
Endif
&&运行前单击教学管理数据库
(x<1)
(1≤x<10)
2.有一函数:
编写程序,输入 x,输出 y 的值。
clear
input "Enter x please!" to x
if x<1
y=x
else
if x<10
y=2*x-1
else
y=3*x-11
,x,'y=',y
y= 2x-1
x
3x-11 (x≥10)
3.编写程序,从键盘输入一个年份,判断它是否闰年。
4.编写程序,输入一个百分制成绩,要求输出成绩等级“A”、“B”、“C”、“D”、 “E”。90 分以上为“A”,80~89 分为“B”,70~79 分为“C”,60~69 分为 “D”,60 分以下为“E”。
clear input “请输入一百分制成绩” to cj do case
case cj>=90 ?” A”
Visual FxoPro 程序设计题
1.编写程序,从键盘输入一个日期,查询 STUDENT 表中该日期以后出生的学
生信息并显示在浏览窗口中。
use student
input “请输入某日期:” to rq
*输入时有提示,或 input to rq 输入时无提示,输{^1987-01-01}
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VFP经典有趣小程序
中国地质大学(武汉)胡小强制作
一、超级有趣
clea
set talk off
do while .t.
clea
do while .t.
input space(10)+"请任意输入3-9的数字,然后按回车键"to s
if s>9 .OR. s<3
loop
else
exit
endif
enddo
i=6
p=60
for a=s to 1 step-1
n=p
for b=1 to 2*a-1
@i,p+1 say alltrim(str(a))
p=p-1
next
i=i+1
p=n-1
next
p=p+1
for a=1 to s
n=p
for b=1 to 2*a-1
@i,p+1 say alltrim(str(a))
p=p+1
next
i=i+1
p=n-1
next
wait space(20)+"您要继续吗Y/N"to d
if upper(d)<>"Y"
clear
@10,40 say "谢谢!"
wait " " time(2)
return
else
loop
endif
enddo
Return
二、别出心裁的图形
do while .t.
clear
input"请输入2-8之间的任意一个数n:"to n
do while n>8 or n<=1
"输入的数字不在2和8之间,请重新输入!!!" input"请输入2-8之间的任意一个数n:"to n enddo
i=6
p=29
q=31
@i,p+1 say 1 pict "9"
for m=2 to n
i=i+1
@i,q say m pict "9"
@i,p say m pict "9"
p=p-1
q=q+1 endfor
p=p+2
q=q-2
for m=n-1 to 2 step-1
i=i+1
@i,p say m pict "9"
@i,q say m pict "9"
p=p+1
q=q-1
endfor
@i+1,p say 1 pict "9"
?
wait space(20)+"您要继续吗Y/N"to n
if upper(n)="Y" .or. upper(n)<>"N"
loop
else
exit
endif
enddo
Return
三、缘分测试
?"测试一下你们的缘分吧!"
input"请输入你的姓名笔画数:"to a
input"请输入他或她的姓名笔画数:"to b
i=1
do while i<500
clea
x=rand(
y=100*x
z=int(y)
?"缘分指数"
??z
??"%"
i=i+1
enddo
if z>80
?"胡小强建议:哇!你们很有缘哦!把握机会!" else
if z<50
?"胡小强建议:不要灰心哦,还需努力啊!" else
?"胡小强建议:还是有希望哦,多多努力!" endif
endif
?
?"再确认你们婚姻指数吧!"
input"请输入你的出生日期(如20130508):"to a input"请输入他或她的出生日期:"to b
i=1
do while i<500
clea
x=rand()
y=100*x
z=int(y)
?"缘分指数"
??z
??"%"
i=i+1
enddo
?
?
?"哈哈,这你都相信!"
?"笑死我了,哈哈哈哈哈!"
?"不要打我........"
四、奇异造型
g=-1
gkz=2
FOR i=1 TO 5
IF i<=3
gkz=2
ELSE
gkz=-2
ENDIF
g=g+gkz
REPLICATE("囧", g) at 10-g
ENDFOR
五、字体渐变(一)
i=11
do while i<127
"胡小强"
_screen.fontsize=i
i=i+1
Enddo
六、乘法口诀
"乘法口诀"
i=1
j=1
for i=1 to 9
for j=1 to i
str(i,1)+"*"+str(j,1)+"="+str(i*j,2)+" " endfor
endfor
七、一元二次方程的解
input"请输入a的值:"to a
input"请输入b的值:"to b
input"请输入c的值:"to c
t=b*b-4*a*c
if t>0
x1=(-b+sqrt(t))/(2*a)
x2=(-b-sqrt(t))/(2*a)
x1,x2
else
if t=0
x=(-b)/(2*a)
x
else
"无解"
endif
endif
八、字体渐变(二)
i=127
do while i>11
"胡小强"
_screen.fontsize=i
i=i-1
Enddo
九、运气测试
_screen.fontsize=20
"测试一下你今天的运气吧吧!"
_screen.fontsize=12
input"请输入你的姓名笔画数:"to a
input"请输入你的出生日期:"to b
i=1
do while i<500
clea
x=rand() y=100*x
z=int(y)
_screen.fontsize=20
?"你今天的:"
?
_screen.fontsize=12
?" 桃花运概率"
??z
??"%"
if z>50
??" 今天可能有艳遇哦!"
else
??" 今天不会有艳遇的!"
endif
h=rand()
m=100*h
j=int(m)
?"考试通过概率"
??j
??"%"
if j>50
??" 今天可能超长发挥哦!"
else
??" 今天考试会很郁闷的!"
endif
o=rand()
p=100*o
q=int(p)
?"表白成功概率"
??q
??"%"
if q>50
??" 今天很有可能成功哦!"
else
??" 今天有可能被拒绝!"
endif
i=i+1
l=rand()
n=100*l
r=int(n)
?"彩票中奖概率"
??r
??"%"
if r>50
??" 快去买彩票吧!"
else
??" 今天别买彩票!"
endif
L=rand()
N=100*L
R=int(N)
?"走路摔跤概率"
Q=RAND()*10
S=INT(Q)
??S
??"%"
??" 今天很安全哦"
?"生命危险概率"
U=RAND()
??U
??"%"
??" 今天很安全哦"
Enddo
------------更多有趣小程序,请加QQ:1113847281--------------- -------------------【版权所有,翻版必究】-------------------。