您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Visual Foxpro编程实例
实验五VisualFoxpro编程实践一.实验目的与要求掌握利用VisualFoxpro编制开发自己的应用程序的实践知识,并学会在程序调试中自行发现问题和修改程序代码,最终完成应用程序的无错运行。二.相关知识利用VisualFoxpro自行开发编制应用程序的步骤: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中存在输入的用户名和密码信息,则调用主窗口(如果是管理员则不但调用主窗口,还允许执行主窗口的修改功能),否则提示输入错误。程序清单:privatekl,yh,stst='密码不正确,请重新输入!'useuserkl=alltrim(thisform.text1.value)yh=alltrim(thisform.combo1.value)*将用户输入的用户名和密码的值分别保存在yh和kl变量中locateforalltrim(thisform.combo1.value)==alltrim(user.用户名)*在user表中查找是否有与yh和kl匹配的记录iffound()andalltrim(user.密码)==kl*正确的用户名和密码thisform.visible=.f.closetablesalldoformmain.scxifyh=='admin'*如果是超级用户管理员,则允许他使用main表单中的第三组按钮(即修改模块)main.optiongroup1.option3.enabled=.t.endifthis.parent.text1.value=''else*错误的用户名和密码,系统给出提示,延迟2秒waitwindowsttimeout2thisform.text1.value=''thisform.text1.setfocusendif(2)Command2中的Click事件功能:退出学生成绩管理系统程序清单:cleareventsquit(3)Form1的Destroy事件功能:意外关闭程序窗口时的处理程序清单:clearevents2.2主界面模块功能描述:主要是提供本系统各功能模块的入口.界面设计:表单名称:main文件名:main.scx数据环境:无对象设置:对象属性值Form1Caption学生成绩管理系统Lable1Caption欢迎使用学生成绩管理系统Lable2Caption请选择要操作的内容:Optiongroup1ButtonCount6Optiongroup1.Option1Caption添加记录Optiongroup1.Option2Caption查询记录Optiongroup1.Option3Caption修改记录Optiongroup1.Option3Enabled.F.Optiongroup1.Option4Caption统计数据Optiongroup1.Option5Caption打印报表Optiongroup1.Option6Caption退出系统函数与方法声明:(1)Optiongroup1中的IntelactiveChange事件:功能:根据Optiongroup1中的选择单击按钮,调用各重要功能模块.程序清单:docasecasethis.value=1doform添加casethis.value=2doform查询casethis.value=3doform修改casethis.value=4doform统计casethis.value=5doform打印casethis.value=6thisform.releasequitendcase(2)Optiongroup1中的每一个Option的Click事件:功能:与(1)中不同,(1)是指在Optiongroup中的各个Option切换时才触发的程序,仅这样还不够,还要编写每个Option被单击时触发的程序才完整。程序清单:对应Optiongroup1.Option1的Click事件:doform添加……(其余类推)2.3数据添加模块功能描述:用户通过5个不同的页面来完成对学生信息表、教师信息表、班级表、课程表和成绩表的数据添加操作。界面设计:表单名称:添加文件名:添加.scx数据环境:student.dbf,class.dbf,score.dbf,teacher.dbf,course.dbf对象设置:对象属性值说明Form1Caption添加PageFrame1PageCount5Command1Caption返回主菜单主表单中的Command1Page1Caption学生表Page2Caption教师表Page3Caption班级表Page4Caption课程表Page5Caption成绩表Command1Caption添加与上面的Command1不同,这是在各个页面中的Command1Command2Caption清空函数与方法声明:因为添加表单中对于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)setexactondocasecasenum1=''messagebox('学号不能为空!',0+48,'系统提示!')thisform.pageframe1.page1.text1.setfocuscasenum2=''messagebox('姓名不能为空!',0+48,'系统提示!')thisform.pageframe1.page1.text2.setfocuscasenum3=''messagebox('性别不能为空!',0+48,'系统提示!')thisform.pageframe1.page1.text3.setfocuscasenum4=''messagebox('班级编号不能为空!',0+48,'系统提示!')thisform.pageframe1.page1.text4.setfocuscasenum5=''messagebox('出生日期不能为空!',0+48,'系统提示!')thisform.pageframe1.page1.text5.setfocusotherwisea=messagebox('确认添加么?',1+64+0,'系统提示!')ifa=1selectstudentgobottominsertintostudent(学号,姓名,性别,班级编号,出生日期)values(num1,num2,num3,num4,ctod(num5))messagebox('添加成功!')elsethisform.pageframe1.page1.text1.setfocusendifendcase(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.page
本文标题:Visual Foxpro编程实例
链接地址:https://www.777doc.com/doc-6148859 .html