表单综合实验.docx

上传人:b****0 文档编号:12546879 上传时间:2023-04-20 格式:DOCX 页数:22 大小:858.42KB
下载 相关 举报
表单综合实验.docx_第1页
第1页 / 共22页
表单综合实验.docx_第2页
第2页 / 共22页
表单综合实验.docx_第3页
第3页 / 共22页
表单综合实验.docx_第4页
第4页 / 共22页
表单综合实验.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

表单综合实验.docx

《表单综合实验.docx》由会员分享,可在线阅读,更多相关《表单综合实验.docx(22页珍藏版)》请在冰豆网上搜索。

表单综合实验.docx

表单综合实验

VisualFoxPro综合实验报告

学生姓名

学号

教学班

A34

密12n

实验项目

面向对象程序设计---表单设计与应用

实验地点

G301

实验最后完成时间

2010年12月25日

必修选修

指导教师

批阅教师电子稿记录

迟交(抄习)报告电子稿在此录[迟][抄]

指导教师评语及成绩:

红笔批阅:

成绩:

日期:

任课教师(批阅)签名:

打印稿记录

等级

迟交:

抄习:

一、实验综述

㈠实验目的及要求

在面向对象程序设计思想和理论的指导下,运用VisualFoxPro对面向对象方法的支持,使用表单设计、表单控件、数据环境设计器及常用的若干基本控件(命令按钮(组),标签,文本框,计时器控件,页框等),设计一个集登录、查询、修改、删除等功能的表单综合应用系统。

通过多功能表单的设计,一方面可以提高实验者的动手操作能力,另一方面,可以综合利用所学知识的能力。

实验者通过自己的设计和实验,进一步加深理解面向对象程序设计的基本理论和方法。

实验者在完成下列实验任务后,须认真总结实验心得,尽量用清晰简明的语言、步骤详实地记录实验过程,撰写通顺流畅的实验报告,以提高文档写作能力。

㈡实验仪器、设备或软件

VisualFoxpro6.0关系数据库软件。

网络环境,具备网络下载和上传。

㈢实验任务

Ⅰ.表单设计前的操作任务

在当前盘根文件夹下创建一个以姓氏拼写(或姓氏拼写加学号)的子文件夹(如舒驹Shu0092178),在该文件夹下创建一个以姓氏拼写(或姓氏拼写加学号)的数据库,数据库包含的表及表结构与关联情况如图a所示。

各表的结构和记录信息请实验者自己查看,并要求在表单设计前先用SQL语言中的insert语句(命令)在班级表class.dbf中增加一个班级号和班级名(自己设计,要求合理),然后在学生表student.dbf中至少增加3条记录(①实验者的姓名,②与实验者同姓不同名③名中有一个字与实验者的名中的字相同)到新增加的班级中。

在成绩表achievement.dbf增加若干条记录,保证每个新增的学生至少有3门功课的成绩。

也要求在课程表course.dbf中至少增加1门新课。

图a数据库shu0092178.dbc及表

Ⅱ.设计表单(功能与任务要求)

请设计一个管理学生信息的应用系统,功能与任务要求如下:

⑴计一个标题名(Caption)为“学生信息管理系统”的登录系统的表单,该表单首先是登录用户和密码,如果登录用户和密码正确,则可进入系统功能界面(系统功能界面包含五个功能:

信息查询、修改数据、删除数据、浏览信息及退出系统)。

⑵除“退出系统”功能外,其它4项功能分别进入到一个新的表单,完成与名称相符的功能。

表单最大外观尺寸800×600以内。

⑶信息查询功能(查询时不能修改或删除数据)以2个页面选项卡形式实现2种方式的查询:

①自动顺序地查询学生成绩信息(约3秒钟左右自动查询下一个学生),每屏只显示1个学生的信息;②手工输入学生学号进行查询。

查询时不能修改任何数据。

查询的内容包括学号,姓名,性别,出生日期,是否少数民族,课程代号,课程名称和成绩。

输入学号查询时,以实验者新增数据为例。

⑷进入修改界面前要求输入具有修改权限的用户和密码。

修改数据只能对学生表和成绩表进行,且学生学号和姓名不可修改(籍贯和照片暂不在考虑之列)。

修改数据前要求先确认修改对象,确认正确后才能真正修改数据。

输入学号修改数据时,以实验者新增数据为例。

⑸进入删除界面前要求输入具有删除权限的用户和密码。

删除数据要求在正式删除前提供详细的相关信息,待确认后方可删除。

删除时要求再次输入删除密码,并得到确认删除和正确删除密码后方可删除。

被删除的学生须将成绩表中的成绩记录一同删除。

为简化设计,特别地删除密码设定为被删除记录的学号。

输入学号删除时,以实验者新增数据为例。

⑹浏览学生信息要求输入学院名称或班级号后进行浏览。

浏览信息要求使用表格进行批量浏览。

要求以表格方式尽量在同一界面能显示多记录数据。

只考虑学号、姓名、性别、出生日期、班级号及入学成绩等6个字段。

检验浏览功能时以以实验者新增数据为例。

尽量在表单设计中运用更多的控件对象,开动大脑,发挥创造力,创建更多合理的功能,例如录入数据,或在查询时进行成绩统计等。

Ⅲ.设计一个管理学生信息的应用系统(技术要求):

⑴每个表单的Name属性须是实验者的姓氏(拼写),文件名则是Name属性名加编号。

例如学生舒驹,则表单文件名为Shu01(或Shu02等),表单的Name=shu。

⑵表单中所有命令按钮的Name属性须以实验者的姓拼写加名简拼再加序号构成。

例如学生舒驹,则第一个命令按钮的Name属性为shuj1,第二个命令按钮的Name属性为shuj2,……

⑶界面友好,美观大方,交互功能强。

 

二、实验过程(试验步骤、源程序代码)及相关结果

1、表单设计前的操作及结果内容

先从毕博上下载数据,在我的电脑中设置一个新文件夹名为‘huang0092163’再把文件解压,然后打开vf,在命令中输入setdefatoc:

\huang0092163再输入dir检查是否文件完整。

在建立数据库,在文件新建中数据库,然后改名字,点右键,设置add加上student,class,course,achievement表格,SQL语言是CREATEDATABASE,改名为huang0092163然后点击右键add,添加表单student等并建立链接,MODIFYDATABASE然后添加数据:

insertintoclass;

values("ICSOA34","信息管理08-34",;

"2008","胡建成","信息管理学院",0)

insertintostudent;

values("0092163","","女",{^1993/03/30},.f.,"ICSOA34","江西宜黄",;

550,"Memo","Gen")

OPENDATABASEc:

\huang0092163\huang0092163.dbcEXCLUSIVE

MODIFYDATABASE

insertintostudent;

values("0092162","黄彩丽","女",{^1992/08/30},.f.,"CPA0902","江西南昌",;

540,"Memo","Gen")

insertintostudent;

values("0092165","刘慧君","女",{^1991/12/30},.f.,"ICS1001","上海",;

540,"Memo","Gen")

insertintoachievement;

values("0092163","A0101",89)

insertintoachievement;

values("0092163","C3004",82)

insertintoachievement;

values("0092163","B1001",82)

insertintoachievement;

values("0092162","C3455",69)

insertintoachievement;

values("0092162","B1002",95)

insertintoachievement;

values("0092162","B1001",85)

insertintoachievement;

values("0092165","B1002",76)

insertintoachievement;

values("0092165","C3444",68)

insertintoachievement;

values("0092165","C3445",66)

insertintocourse;

values("B1008","货币银行学",2,02,17,4)

2、表单设计(设计步骤,属性与核心代码的设计)及效果

(1)欢迎界面:

首先打开文件菜单,点击新建,点击表(form),然后把表单设计器的name改为huang001.scx,把表单name=huanghj01,caption=“欢迎”,在其内添加两个标签和一个命令按钮,各控件的主要属性为label1.caption=“欢迎使用学生信息管理系统”,label1.fontsize=24,lebel2.caption="版本:

10-12-18版权所有黄慧君",label2.fontsize=14,huang01.caption=“登录”,command1.frontsize=22。

并输入命令

thisformset.huang02.visible=.t.

thisform.release

表单设计格式如下图所示:

登陆界面:

再在点击菜单中的表单-新建表单集,再点击表单-添加新表单,在name=huanghj02的表单中修改标题为“登录”,添加两个文本框,两个标签,两个按钮键,他们的fontsize均设为16,分别设置为“用户名”“密码”“登录”“关闭”密码文本框的passwordchar设置为“*”,起到保密作用。

再在huanghj22即登录中输入代码:

ifthisform.text1.value="jeck"andthisform.text2.value="123456"

*messagebox("登录成功!

",0,"提示")

thisformset.huanghj03.visible=.t.

thisform.release

else

denglucs=denglucs+1

ifdenglucs>=3

messagebox("连续3次用户名或密码错误,再见!

",0+48,"提示")

inkey

(1)

thisformset.release

else

messagebox("用户名或密码错误,请重输!

",0+48,"提示")

thisform.text1.value=""

thisform.text2.value=""

endif

endif

在huanghj02即关闭中输入代码:

thisform.release

并且把visible=.f.

表单排列如图所示:

系统功能界面:

再同样操作打开huanghj03.scx,设置其caption=系统功能界面,在其中设置五个按钮键,fontsize都为16,caption分别为“信息查询”“修改数据”“删除数据”“浏览信息”“退出系统”,在退出系统即huanghj03输入代码:

thisform.release

并且把visible=.f.

表单设计如图所示:

这样第一个单表设计器就设置完了。

(2)和上一步一样,首先打开文件菜单,点击新建,点击表(form),然后把表单设计器的name改为huang002.scx,表单name=huang04设置一个page页框和一个命令按钮,按钮键caption=”退出”,fontsize=16,输入代码:

thisform.release。

再把页框定为编辑状态,并设置为两页,分别为“自动查询”“手动查询”。

如图所示:

并且设置该表单的数据环境,在表单主区域内单击鼠标右键,在弹出的快捷菜单中选择‘数据环境’命令,并在‘添加表或视图’对话框中选择加入的三个表student,achievement,course,并建立链接.

如下图所示:

自动查询:

”自动查询”页添加两个command,一个表格一个计时器,再在空白处点击,dateenvironment在点击addstudent.Course.achievement等表格,链接好。

再把其sno,sname,sex,birthday,ifnation移到表中修改caption为中文,在huanghj10this.parent.timer1.enabled=.t.

在huanghj11his.parent.timer1.enabled=.f.

在开始设计计时器,首先把计时器的enabled=.f.,interval=3000即三秒并输入代码:

selectstudent

iffound()

skip1

ifeof()

gotop

endif

this.parent.refresh

selecto,cname,achievemen;

fromcoursea,achievementb;

whereo=o;

andb.sno=student.sno;

intocursorff

this.parent.grid1.columncount=-1

this.parent.grid1.recordsource="ff"

this.parent.refresh

else

messagebox('该学号记录不存在!

',0+48,'提示')

endif

如图所示:

自动查询页就此结束。

手工查询:

然后设计手工查询页。

在手工查询中添加三个对象,文本框。

再在空白处点击,dateenvironment在点击addstudent.Course.achievement等表格,链接好。

再把其sno,sname,sex,birthday,ifnation移到表中。

设置查询按钮,表格。

再在查询中输入:

selectstudent

locateforsno=this.parent.text1.value

iffound()

selecto,cname,achievemen;

fromcoursea,achievementb;

whereo=o;

andb.sno=student.sno;

intocursortt

this.parent.grid1.columncount=-1

this.parent.grid1.recordsource="tt"

this.parent.refresh

else

messagebox('该学号记录不存在!

',0+48,'提示')

endif

还要把文本框的maxlengh为7保证数据多少。

就此第二个单表设计器完成。

(3)重复动作,建立新的表单设置表单设计器的name为huang003,把form.caption=修改数据。

由于要设置修改数据的权限所以另外建一个表单,把另存为huang07.scx。

再把登录界面的排列复制过来:

并把登录键即huanghj19的代码改为:

ifthisform.text1.value='0092163'andthisform.text2.value='123456'

doformhuang003.scx

else

message("用户名密码错误!

",0+48,"提示")

Endif

Huanghj20的代码为:

thisform.release

再把huang07程lostfocus设置为thisform.release即在该表格失去焦点的时候自动关闭。

然后在设置修改数据的界面把上述信息查询表单中的手动查询复制粘贴过来:

再把grid1的属性中数据一项recordsource设置为achievement,并另外设置一个按钮键把huanghj15设置为退出,输入代码:

Thisform.release

Huanghj14.click输入代码:

selectstudent

locateforsno=this.parent.text1.value

ifnotfound()

messagebox('该学号记录不存在!

',0+48,'提示')

endif

this.parent.refresh

就此完成学生表和成绩表的查询,上设置了text1及查询按钮,修改数据前要求先确认修改对象,确认正确后才能真正修改数据。

(4)重复动作,首先打开文件菜单,点击新建,点击表(form),然后把表单设计器的name改为huang04.scx,把form的name=huang06,把huang06.caption=删除数据,并增加2个label,三个按钮键,两个文本框,再在空白处点击,dateenvironment在点击addstudent.Course.achievement等表格,链接好。

再把其sno,sname,sex,birthday,移到表中。

label分别为‘请输入学号’‘输入删除密码’,command分别为‘查询’‘删除’‘退出’,fontsize都设为16。

安排如图所示:

查询键输入代码:

selectstudent

locateforsno=this.parent.text1.value

iffound()

selecto,cname,achievemen;

fromcoursea,achievementb;

whereo=o;

andb.sno=student.sno;

intocursortt

this.parent.grid1.columncount=-1

this.parent.grid1.recordsource="tt"

this.parent.refresh

else

messagebox('该学号记录不存在!

',0+48,'提示')

endif

删除键输入代码:

ifthis.parent.text2.value=this.parent.text1.value

selectstudent

deletefromstudent;

wherestudent.sno=this.parent.text1.value

pack

selectachievement

deletefromachievement;

whereachievement.sno=this.parent.text1.value

pack

else

messagebox('删除密码错误!

',0+48,'提示')

endif

退出输入代码:

thisform.release

由于有要求进入删除界面前要求输入具有删除权限的用户和密码。

所以与上同,另外建一个表单,把另存为huang041.scx,并把表格thisform.name=huang005。

再把登录界面的排列复制过来:

并把登录键即huanghj08的代码改为:

ifthisform.text1.value='0092163'andthisform.text2.value='123456'

doformhuang004.scx

else

message("用户名密码错误!

",0+48,"提示")

Endif

Huanghj09输入代码:

Thisform.release

(5)重复动作,新建表单,另存为huang005,在其主区域内单击,将表单的caption=浏览信息,autocenter=.t.,其他不变。

在表单的左下方插入一个命令按钮,其caption属性为“退出”,fontsize=16,双击,输入代码:

thisform.release。

在表单主区域内单击鼠标右键,在弹出的快捷菜单中选择‘数据环境’命令,并在‘添加表或视图’对话框中选择加入的四个表class.,并建立链接.

在表单主区域内插入4种控件:

列表,组合,表格和标签控件,两个标签的对象caption属性分别为‘选择班级’和‘选择学生的学号’:

列表、组合、表格和标签对象的fontsize=16,并把grid1的columcount=-1,list1的rowsourcetype=‘6-字段’,rowsource=class.classname。

设置列表对象combol的rowsourcetype=‘6-字段’。

编写list1.click为

selectstudent.snofromstudentwherestudent.classno=class.classno;

Orderbystudent.snointocursorss

bo1.rowsource='ss.sno'

selectstudent.sno,sname,cname,achievemenfromstudent,achievement,course;

whereclass.classno=student.classnoandstudent.sno=achievement.sno;

ando=oorderbystudent.snointocursorttt

thisform.grid1.recordsourcetype=1

thisform.grid1.recordsource="ttt"

thisform.refresh

试着运行一下。

编写组合框combo1的click事件代码:

studn=bo1.value

select*fromtttwherettt.sno=studnintocursoryyy

thisform.grid1.recordsourcetype=1

thisform.grid1.recordsource="yyy"

thisform.refresh

Huanghj21输入代码:

Thisform.release

保存并运行表单

就此结束

(6)再次把七张表单联系起来,在huang001.huanghj03中,在“信息查询”处输入:

doformhuang002.scx

在“修改数据”中输入:

doformhuang031.scx

在“删除数据”中输入:

doformhuang041.scx

在“浏览信息”中输入:

doformhuang005.scx

在此,表格全部连起。

并把表单中所有的命令按钮的Name属性以huanghj加号码构成。

则第一个命令按钮的Name属性为huanghj1,第二个命令按钮的Name属性为huanghj2……

就此制作完成。

3、调试、运行表单及运行结果

调试运行程序,首先启动vf,在命令框里输入setdefatoc:

\huang0092163,然后打开MODIFYFORMc:

\huang0092163\huang001.scx

DOFORMc:

\huang0092163\huang001.scx

点击

开始运行。

欢迎界面:

登陆界面:

系统功能界面:

信息查询界面:

手工查询:

修改数据的界面:

进入后:

输入我的学号0092163:

修改数据后:

删除数据的界面:

进入后,输入密码,权限设置:

登录后,输入学号:

输入删除密码0092163后点击删除:

浏览信息的界面:

进入后:

点击我所在班级,信息管理08-34,选择学号0092163:

点击退出,运行,调试完成。

三、主要实验的设计与结果分析

这次的实验报告,主要让我们掌握表单的建立,编辑修改,运行和保存方法,同时要了解表单控件的常用属性以及数据环境与对象的关联。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1