第4章 Visual FoxPro数据库在项目中的应用.docx
- 文档编号:4025255
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:45
- 大小:670.60KB
第4章 Visual FoxPro数据库在项目中的应用.docx
《第4章 Visual FoxPro数据库在项目中的应用.docx》由会员分享,可在线阅读,更多相关《第4章 Visual FoxPro数据库在项目中的应用.docx(45页珍藏版)》请在冰豆网上搜索。
第4章VisualFoxPro数据库在项目中的应用
第4章VisualFoxPro数据库的应用
本章使用VisualFoxPro6.0数据库设计一个学生管理系统。
4.1系统总体设计
本学生管理系统的主要任务是用计算机对不同学生的各门功课成绩进行有序的管理,提高分析成绩的效率。
本系统基于高校学生基本成绩信息设计,可使用该系统实现增加、修改、删除、查询、统计、打印等功能。
4.1.1系统功能模块设计
(1)、系统功能设计
1.数据查询功能:
按学生的学号、姓名分别查询学生基本信息和学生成绩情况。
2.数据浏览功能:
按学生的学号,打印学生基本信息清单。
3.系统维护:
系统维护分为学生信息维护和学生成绩维护,包括增加、修改、删除、编辑、打印等功能。
4.系统设置:
系统设置分为口令设置,账户设置,系统日志,数据备份,数据恢复和退出系统。
(2)、系统模块设计
根据系统的功能分析,得到如图4-1所示的系统功能模块图。
图4-1系统功能模块图
4.1.2数据库的分析与设计
根据该系统的功能分析,需要制作4张数据表。
学生信息表、学生成绩表、口令表和新口令表。
学生信息表中包含学号、姓名、性别、出生年月、家庭住址和备注字段,如表4-1所示。
其中备注字段的类型为备注类型。
表4-1学生信息表
字 段
字段名
类 型
宽 度
小数位
索 引
排 序
Nulls
1
学号
字符型
8
升序
否
2
姓名
字符型
6
否
3
性别
字符型
2
否
4
出生年月
日期型
8
否
5
家庭住址
字符型
20
否
6
备注
备注型
10
否
学生成绩表包含学号、姓名、数据库、高数、英语和总分字段。
其中总分字段的值为数据库、高数、英语字段的和,并且在以学号字段为索引升序排列的同时,还要参考总分字段升序排列,总分字段在设计表时也要设置索引,如表4-2所示。
表4-2学生成绩表
字 段
字段名
类 型
宽 度
小数位
索引
排序
Nulls
1
学号
字符型
8
升序
否
2
姓名
字符型
6
否
3
数据库
数值型
5
1
否
4
高数
数值型
5
1
否
5
英语
数值型
5
1
否
6
总分
数值型
5
1
升序
否
口令表包含账户id和密码ps两个字段,在本实例中,口令表中初始录入的数据默认为管理员账户,后期添加进去的账户会保存在新口令表中,作为普通账户,只拥有普通账户权限。
表4-3口令表:
字 段
字段名
类 型
宽 度
小数位
索 引
排序
Nulls
1
id
字符型
8
升序
否
2
ps
字符型
12
否
新口令表包含账户id和密码ps两个字段,用来保存具备一般账户权限的普通用户。
表4-4新口令表
字 段
字段名
类 型
宽 度
小数位
索 引
排序
Nulls
1
id
字符型
8
升序
否
2
ps
字符型
12
否
4.2创建项目、数据库和表
由于本系统是一个基本完整的应用系统,因此可以采用VisualFoxPro6.0提供的项目管理器来管理整个系统的制作,利用项目管理器来开发项目可以使开发工作系统化、条理化。
4.2.1创建系统项目
1.建立保存系统项目文件的目录,将其设为默认目录。
一般建议选择默认安装VF文件夹,如D:
\vf,设置方法如下:
“工具”菜单->“选项”命令->“选项”对话框->“文件位置”选项卡->“默认目录”选项。
参照图4-2设置,单击“修改”按钮,在弹出的“更改文件位置”对话框中选择要设置的默认目录,如图4-3所示,单击“确定”按钮,返回上一级对话框,然后单击“设置为默认值”按钮,再单击“确认”按钮。
图4-2选项对话框
图4-3更改文件位置对话框
2.建立项目。
单击“文件”菜单,选择“新建”命令,在如图4-4所示的新建对话框中,选择“项目”单选按钮,然后“单击”新建按钮,在“创建”对话框中输入项目文件名“学生管理”并确定项目路径,单击“保存”按钮,启动项目管理器,如图4-5所示。
图4-4新建对话框
FoxPro6.0提供的项目管理器拥有强大的功能,它不仅能帮助用户组织、管理系统开发中的所有文件,使得应用程序的设修改和运行变得容易,还能在系统完成后,连编所有应用程序,使此应用变得更加简单。
因此,在系统设计之前应该先加你里一个项目,为接下来的程序开发提供良好的开发平台。
4.2创建数据库
单击“项目管理器”中的“数据”选项,选中数据库,单击“新建”按钮,在如图4-6示的“新建数据库”话框中单击“新建数据库”按钮,在“创建”对话框中输入数据库文件名“学生管理”并确定数据库路径D:
\vf,单击“保存”安妮,弹出“数据库设计器”对话框,如图4-7所示。
图4-5项目管理器
图4-6建数据库对话框
图4-7数据库设计器对话框
4.3创建数据表
单击“数据库设计器”中的第一个按钮或单击“项目管理器”中的“数据”选项,展开数据库,单击“表”选项,再单击“新建”按钮,在弹出的“新建表”对话框中,单击“新建表”按钮,输入数据表名称“学生信息表”,默认保存路径,如D:
\vf,单击“保存”按钮,弹出如图4-8所示的“表设计器”对话框。
按照相同的方式设计学生成绩表和口令表,相应字段的设置参照图4-9和图4-10。
设计完成,单击“确定”按钮,系统会提示是否现在录入数据,选择“是”,按照图4-11,图4-12,图4-13录入原始数据。
图4-8表设计器-学生信息表
图4-9表设计器-学生成绩表
图4-10表设计器-口令表
图4-11学生信息表
图4-12学生成绩表
图4-13口令表和新口令表
4.4建立主程序
在“项目管理器”中,单击“代码”选项,新建程序main.prg,用来控制系统进入主表单之前的流程,main.prg的程序代码如下:
Setdeleon&&隐藏带删除标记的记录
Settalkoff&&不显示输出结果
Setsafetyoff&&覆盖时不要确认
Setdateansi&&设置日期格式为:
yy.mm.dd形式
setcenton&&用四位数显示年份
Setpathto学生管理系统&&设置路径
Doform欢迎界面表单&&跳转到学生登录系统欢迎界面表单
Readevents&&相应用户操作事件
4.5创建表单
4.5.1创建“欢迎”表单
建立“系统欢迎”表单,如图4-14所示。
功能:
跳转到登录窗口。
图4-14学生管理系统欢迎界面
设置步骤如下:
1.在“项目管理器”的“文档”选项中选择“表单”,单击“新建”按钮,弹出“新建表单”对话框,单击“新建表单”按钮,弹出表单设计器。
2.在表单中添加1个标签,2个命令按钮。
各控件主要属性修改如下:
1)表单form1:
Caption属性:
学生管理系统;
2)标签Label1:
Caption属性:
欢迎使用学生管理系统;
Forecolor属性:
255,0,0;
Fontsize属性:
20;
Fontbold属性:
.T。
3)命令按钮command1:
Caption属性:
进入系统;
Fontsize属性:
16;
Fontbold属性:
.T。
4)命令按钮command2:
Caption属性:
退出系统;
Fontsize属性:
16;
Fontbold属性:
.T。
3.编写表单按钮代码。
1)进入系统按钮(command1)的click事件功能:
跳转到登录界面,代码:
doform学生管理系统登录窗口表单.scx
thisform.release
2)退出系统按钮(command2)的clic事件功能:
退出当前运行环境,代码:
ask=messagebox("确定要退出系统吗?
",4+32+256,"学生管理系统")
ifask=6
closeall
quit
else
endif
4.5.2创建“登录”表单
建立“登录系统”表单,如图4-15所示。
功能:
跳转到学生管理系统菜单。
图4-15学生管理系统登录窗口
设置步骤如下:
1.在“项目管理器”的“文档”选项中选择“表单”,单击“新建”按钮,弹出“新建表单”对话框,单击“新建表单”按钮,弹出表单设计器。
2.在表单中添加3个标签,2个文本框,2个命令按钮。
各控件主要属性修改如下:
1).表单form1:
Caption属性:
学生管理系统。
2).标签Label1:
Caption属性:
学生管理系统登录窗口;
Forecolor属性:
0,255,0;
Fontsize属性:
20;
Fontbold属性:
.T。
3).标签Label2:
Caption属性:
用户名:
;
Fontsize属性:
16;
Fontbold属性:
.T。
4).标签Label3:
Caption属性:
密码:
;
Fontsize属性:
16;
Fontbold属性:
.T。
5).命令按钮command1:
Caption属性:
确认;
Fontsize属性:
16;
Fontbold属性:
.T。
6).命令按钮command2:
Caption属性:
退出;
Fontsize属性:
16;
Fontbold属性:
.T。
7).文本框text1:
Fontsize属性:
16;
Fontbold属性:
.T。
8).文本框text2:
passwordchar属性:
*;
Fontsize属性:
16;
Fontbold属性:
.T。
3.编写表单的确认按钮(command1)的click事件功能:
跳转到登录界面,代码:
use新口令表
a=Thisform.text1.value
b=Thisform.text2.value
errornumber=0
ifa==""
n=messagebox("请输入用户名",4+32,"学生管理系统登陆")
docase
casen=6
thisform.text1.value=""
thisform.text1.setfocus
casen=7
thisform.release
endcase
else
ifb==""
n=messagebox("请输入密码",4+32,"学生管理系统登陆")
docase
casen=6
thisform.text2.value=""
thisform.text2.setfocus
casen=7
thisform.release
endcase
endif
endif
locateforalltrim(新口令表.Id)==alltrim(a)
iffound()
ifalltrim(新口令表.Ps)==alltrim(b)
do学生管理系统菜单.mpr
thisform.release
else
messagebox("密码错误,请重新输入",64,"学生管理系统登陆")
errornumber=errornumber+1
endif
else
messagebox("用户"+a+"不存在!
",64,"学生管理系统登陆")
errornumber=errornumber+1
endif
iferrornumber=3
messagebox("您已经输入3次错误,请按确定退出",64,"学生管理系统")
ask=messagebox("确定要退出吗?
",4+32+256,"学生管理系统")
ifask=6
closeall
quit
else
endif
endif
4.退出按钮(command2)的click件功能:
退出当前运行环境,代码:
ask=messagebox("确定要退出吗?
",4+32+256,"学生管理系统")
ifask=6
thisform.release
else
endif
4.5.3创建“数据查询”表单
建立“数据查询”表单,如图4-16所示。
功能:
按学号或姓名查询某位学生的基本信息或成绩信息。
图4-16数据查询窗口
设置步骤如下:
1.在“项目管理器”的“文档”选项中选择“表单”,单击“新建”按钮,弹出“新建表单”对话框,单击“新建表单”按钮,弹出表单设计器。
2.在表单中添加3个标签,1个文本框,5个编辑框,2个单选按钮组合框,2个命令按钮。
各控件主要属性修改如图4-17所示,修改属性值后,单击左边∨确认,其中文本框和编辑框不需要修改属性。
图4-17数据查询窗口设计
1).表单form1:
Caption属性:
数据查询。
如图4-18所示。
图4-18form1修改属性
2).标签Label1:
Caption属性:
数据查询;
Fontsize属性:
16;
Fontbold属性:
.T。
如图4-19所示:
图4-19label1标签修改属性
3).标签Label2修改属性如图4-20所示:
Caption属性:
查询方式;
Fontsize属性:
16;
Fontbold属性:
.T。
图4-20label2标签修改属性
4).标签Label3:
Caption属性:
输入查询值;
Fontsize属性:
16;
Fontbold属性:
.T。
如图4-21所示:
图4-21label3修改属性
5).命令按钮command1:
Caption属性:
确认;
Fontsize属性:
16;
Fontbold属性:
.T。
6).命令按钮command2:
Caption属性:
退出;
Fontsize属性:
16;
Fontbold属性:
.T。
7).选项按钮组optiongroup1通过属性窗口的下拉列表框选择其中要修改的单选按钮属性,如图4-22所示,分别选择option1和option2设置caption属性为相应文字选项,设置fontbold属性为.T,设置fontsize属性为9。
选项按钮组optiongroup2属性同上设置。
图4-22选项按钮组属性设置
3.编写表单的确认按钮(command1)的click事件代码:
no=alltrim(thisform.Text1.value)
ifthisform.optiongroup1.value=1
ifthisform.optiongroup2.value=1
ifempty(no)
messagebox("对不起,学号不能为空。
",16,"错误")
thisform.Text1.setfocus
return
endif
select学生信息表
locateforalltrim(学生信息表.学号)=no
ifnotfound()
messagebox("没有找到你输入的学号。
",16,"错误")
thisform.Text1.setfocus
return
endif
thisform.Edit1.value="学号"+""+学号
thisform.Edit2.value="姓名"+""+学生信息表.姓名
thisform.Edit3.value="性别"+""+学生信息表.性别
thisform.Edit4.value="出生年月"+""+dtoc(学生信息表.出生年月)
thisform.edit5.value="家庭住址"+""+学生信息表.家庭住址
thisform.Edit6.value="备注"+""+学生信息表.备注
return
endif
select学生信息表
locateforalltrim(学生信息表.姓名)=no
ifnotfound()
messagebox("没有找到您输入的姓名!
",16,"错误")
thisform.Text1.setfocus
return
endif
thisform.Edit1.value="学号"+""+学号
thisform.Edit2.value="姓名"+""+学生信息表.姓名
thisform.Edit3.value="性别"+""+学生信息表.性别
thisform.Edit4.value="出生年月"+""+dtoc(学生信息表.出生年月)
thisform.edit5.value="家庭住址"+""+学生信息表.家庭住址
thisform.Edit6.value="备注"+""+学生信息表.备注
else
ifthisform.optiongroup2.value=1
ifempty(no)
messagebox("对不起,学号不能为空!
",16,"错误")
thisform.Text1.setfocus
return
endif
select学生成绩表
locateforalltrim(学生信息表.学号)=no
ifnotfound()
messagebox("没有找到你输入的学号!
",16,"错误")
thisform.Text1.setfocus
return
endif
thisform.Edit1.value="学号"+""+学生成绩表.学号
thisform.Edit2.value="姓名"+""+学生成绩表.姓名
thisform.Edit3.value="数据库"+""+str(学生成绩表.数据库)
thisform.Edit4.value="高数"+""+str(学生成绩表.高数)
thisform.edit5.value="英语"+""+str(学生成绩表.英语)
thisform.Edit6.value="总分"+""+str(学生成绩表.总分)
else
ifempty(no)
messagebox("对不起,姓名不能为空!
",16,"错误")
thisform.Text1.setfocus
return
endif
select学生成绩表
locateforalltrim(学生成绩表.姓名)=no
ifnotfound()
messagebox("没有找到您输入的姓名!
",16,"错误")
thisform.Text1.setfocus
return
endif
thisform.Edit1.value="学号"+""+学生成绩表.学号
thisform.Edit2.value="姓名"+""+学生成绩表.姓名
thisform.Edit3.value="数据库"+""+str(学生成绩表.数据库)
thisform.Edit4.value="高数"+""+str(学生成绩表.高数)
thisform.edit5.value="英语"+""+str(学生成绩表.英语)
thisform.Edit6.value="总分"+""+str(学生成绩表.总分)
endif
endif
5.编写取消按钮command2的click事件代码:
thisform.release
4.5.4创建“数据浏览”表单
建立“数据浏览”表单,如图4-23,图4-24所示。
功能:
浏览每位学生的基本信息或成绩信息。
设置步骤如下:
1.在“项目管理器”的“文档”选项中选择“表单”,单击“新建”按钮,弹出“新建表单”对话框,单击“新建表单”按钮,弹出表单设计器。
2.在表单中添加3个“学生数据浏览”、“今日的日期是”、“当前时间是”标签;1个页框(包含2个页面),1个“退出”按钮;2个标签显示日期和时间;1个timer控件(显示系统时间)。
在学生成绩表页面中,包含:
“学号”、“姓名”、“数据库”、“高数”、“英语”、“总分”标签以及对应文本框(数据环境中选取),“首记录”、“上一条”、“下一条”、“尾记录”4个按钮,点击按钮时候,显示相应的学生成绩表中的记录。
学生信息表页面中,包含一个表格(数据环境中添加)。
需要特别注意的是,页框中page1“学生成绩表”中的控件需要选择page1后,单击右键选择编辑,从其他位置粘贴过来,如果直接在page1上创建控件,会由所有page页面共有该控件。
而表格需要从项目管理器中将表格环境用按住左键的方式拖到相应选中的page2“学生信息表”中,表格中的属性也需要从项目管理器中将相应属性用按住左键的方式拖到相应选中的page1“学生成绩表”中,如图4-25所示。
各控件主要属性修改如图4-25所示,修改属性值后,单击左边∨确认,其中文本框和编辑框不需要修改属性。
修改属性时,需要将各控件对齐,可按住shift键的同时,多重选中多个控件,选择格式菜单中的对齐命令对齐所选中控件。
图4-23学生成绩表浏览窗口
图4-24学生信息表浏览窗口
图4-25数据浏览窗口学生成绩表属性设置
1).表单form1属性修改如图4-25所示:
caption属性:
学生数据浏览
2).标签Label1:
caption属性:
数据浏览;
fontbold属性:
.T;
fontsize属性:
16;
3).计时器timer1:
interval属性:
1000
4).标签label2和标签label3的caption属性分别设置为“今日的日期是:
”和“当前的时间是:
”,label4和label5标签的caption属性清空。
按钮command1的caption属性修改为“退出”。
图4-25form1属性设置
5).页框pageframe1按照图4-26分别从下拉列表框中选择page1和page2设置其caption属性为“学生成绩表”和“学生信息表”,其中学生成绩表页面中的6个标签分别按照图4-24设置其caption属性,文本框无设置属性。
3.编写代码:
1).命令按钮command1的click事件代码:
Thisform.release
2).命令按钮command2的click事件代码:
gotop
Thisform.refresh
3).命令按钮command3的click事件代码:
skip-1
thisform.refresh
Ifbof()
Gotop
Thisform.refresh
endif
4).命令按钮command4的click事件代码:
Skip1
thisform.refresh
Ifeof()
Gobottom
Thisform.re
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 Visual FoxPro数据库在项目中的应用 FoxPro 数据库 项目 中的 应用