《VFP程序设计与应用》实训报告
实训名称:专 业:班 级:学 号:姓 名:指导教师:
年月日
实训成绩
考核、评价项目 考核内容 得分 实训表现与对实训期间的出勤情况、实训职业素质、实训态度、效率观念、态度 态度、安全意识、职业道德素 协作精神 (20分) 质评定成绩 实训操作过根据学生实训操作的过程进程 行考核,评定成绩 (40分) 实训评价 根据学生在实训操作过程中的知识掌握情况、程序设计方法和技巧、基本操作技能、知识应用能力、 分析问题和解决问题的能力,以及创新能力进行考核。 实训考核 (30分) 根据学生实训,程序设计的结根据实训项目任务要求,对程序设 果进行考核,评定成绩 计的结果,分模块进行测试考核 实训文档 (10分) 实训日记、实训报告等评定成表达能力、文档写作能力、文档的 绩 规范性 总分
一、实训目的
1. 运用数据库管理技术,初步形成对实际问题科学评价的能力; 2. 熟练掌握建立、查询系统、维护关系数据库;
3. 完成一个完整的数据库应用系统,提高运用计算机技术的素质; 4. 培养学生开展研究与合作的能力。
二、课程设计报告内容
1.实训内容
VFP数据库采用了可视化、面向对象的程序设计方法,大大的简化了应用系统的开发过程,并提升了系统的模块性和紧凑性,引进和完善了关系数据库的实体完整性、参照完整性和用户定义完整性,是快速掌握面向对象的程序设计、运用计算机解决常用数据处理问题的最佳入门语言。
1) 理解关系数据库系统的作用,明确数据库基本知识。
2) 学会建立、查询系统、维护关系数据库,包括菜单设计、表单设计、面向对象编程的基本
方法等。;
3) 掌握关系数据库中的库、表、字段、记录等概念,理解关系所表达的意义。 4) 了解结构化查询语言SQL。
2. 系统运行环境
硬件: PC兼容机,128以上内存,彩显。
软件: WINDOWS操作系统,Visual FoxPro 6.0 。
3. 软件功能分析
1) 用户界面友好,操作简单。
2) 完成数据的录入和修改,并提交数据库保存。
3) 实现信息查询,主要包括学生信息查询、成绩信息查询等。
4) 实现数据的删除功能:对数据进行删除操作。系统能够通过用户给出的条件查找出所要删
除的信息,并提示用户确认是否删除。若确定,则把相关信息从数据库中删除。
4. 系统总体框架图
学生信息管理系统
N
密码正确? 用户登录 Y
5. 模块功能分析
根据题目要求,将题目分解成子模块,从而设计完整系统功能流程。
学生信息浏览 新生不及格查询 三好学生统计 成 绩 查 询 系统主界面 三、结论
本实训项目通过分析并实现了学生信息管理系统。本系统的设计让大家了解如何根据实际问题,分析功能需求,将复杂的问题分析成子问题,达到模块化设计系统功能的目标。同时,理解了关系数据库系统作用及所表达的意义,明确了数据库基本知识,掌握了关系数据库中的库、表、字段、记录等概念,此外,本次实训培养了我们学习VFP的思维能力,让我们对VFP数据库有了更深层次的学习与理解,通过两周的实训可以去完成一个完整的数据库应用系统,并对其出现的错误能以与改正和讨论的同时,也对以前自己朦胧而不解的问题有了很好的理解,对VFP数据库的理论学习有了更深的学习,同时也可以运用本次的实训设置一些简单的系统,
VFP作为数据库和开发工具,其操作都比较简单,学习起来都比较入门。窗口的操作界面,都比较简单,但是功能却非常强大,所开发出来的项目,基本能满足日常工作的需要。学习了VFP,让我更深的了解到,什么是数据库,什么是程序,让我从最基本的OFFICE的学习中,直接从次底层认识了什么是计算机。VFP是小型的数据库,尽管其开发非常灵活,功能强大,得究其本质而已,数据库文件没有任何的安全性,因为,只要别人直接设计打开DBF数据表文件,就可以浏览里面的所有记录了。
总之,本次实训让我们受益匪浅,给了我们更深的认识。
四、结束语
VFP虽然由于太过简单和过时以至于没有多少企业在实际应用中使用它,但是数据库的概念和
对数据库管理的知识和信息化管理的理念是在任何工作中都会用得到的。通过两周的实训学习,除了学到数据库的基本知识外,我还掌握了分析解决问题的能力。只要努力与用心学了,就会有收获。学习过程中让我对自己的智力更加有了信心。学习VFP,坚定了我努力提高英语水平的决心,在学习过程中发现不懂英语要搞懂那些命令真是难上加难,再一次体会英语的无处不在。 VFP里面包含了丰富的数学思维和逻辑思维的影子,对我们培养逻辑思维还是大有好处的。
五、附录:(源程序清单)
表:
字段名 学号 姓名 性别 出生年月 政治面貌 简历 籍贯 表1.学生原始档案表 数据类型及宽度 是否允许为空 字符型(7) × 字符型(6) × 字符型(2) √ 日期型(8) √ 逻辑性(1) √ 备注型(4) √ 通用型(4) √ 备注 主索引 T表示团员
字段名 学号 姓名 班级 语文 数学 英语 体育 表2.学生成绩表 数据类型及宽度 是否允许为空 字符型(7) × 字符型(6) × 字符型(5) × 数值型(2,0) √ 数值型(2,0) √ 数值型(2,0) √ 数值型(2,0) √ 备注 普通索引 普通索引 普通索引 普通索引 普通索引
字段名 学号 姓名 班级 平均成绩 干部 表3.三好生表 数据类型及宽度 是否允许为空 字符型(7) × 字符型(6) × 字符型(5) × 数值型(2,0) √ 逻辑型(1) √ 备注 普通索引 普通索引 T是干部
字段名 系代码 系名 表4.系代码表 数据类型及宽度 是否允许为空 字符型(2) √ 字符型(10) × 备注 主索引
字段名 系名 专业 专业简称 表5.码表 数据类型及宽度 是否允许为空 字符型(10) × 字符型(10) × 字符型(10) × 备注 普通索引 主索引
码 数值型(1) √ 字段名 系别 专业 班级 表6.班级情况表 数据类型及宽度 是否允许为空 字符型(10) × 字符型(10) × 字符型(5) ×
备注 普通索引 主索引 字段名 用户名 口令
表7.口令表 数据类型及宽度 是否允许为空 字符型(6) × 字符型(3) ×
备注 可用*显示 表单:
进入 do form 用户登录
thisform.release 退出 quit
确定public i
i=0
取消thisform.Combo1.value=\"\"
thisform.text1.value=\"\" thisform.text1.setfocus thisform.refresh 退出thisform.release
close data quit
浏览do form 学生信息浏览 查询 do form 新生不及格查询 统计do form 三好学生统计 排序do form 成绩排序
首记录go top
with thisform.commandgroup1 .command1.enabled=.f.
.command2.enabled=.f.
endwith
thisform.refresh
上一条skip -1
with thisform.commandgroup1 .command3.enabled=.t. .command4.enabled=.t. endwith if bof()
=messagebox(\"已经是第一条记录!\提醒\") go top
with thisform.commandgroup1 .command1.enabled=.f. .command2.enabled=.f. endwith endif
thisform.refresh
下一条skip
with thisform.commandgroup1 .command1.enabled=.t. .command2.enabled=.t. .command3.enabled=.t. .command4.enabled=.t. endwith if eof()
=messagebox(\"已经是最后一条记录\"+chr(13)+\"返回第一条记录\提醒\") go top
with thisform.commandgroup1 .command1.enabled=.f. .command2.enabled=.f. endwith endif
thisform.refresh 末纪录go bottom
with thisform.commandgroup1 .command1.enabled=.t. .command2.enabled=.t. .command3.enabled=.f. .command4.enabled=.f. endwith
thisform.refresh
添加with thisform.commandgroup1
.command1.enabled=.t. .command2.enabled=.t. .command3.enabled=.t. .command4.enabled=.t. endwith
append blank
thisform.text1.setfocus thisform.refresh
删除with thisform.commandgroup1
.command1.enabled=.t. .command2.enabled=.t. .command3.enabled=.t. .command4.enabled=.t. endwith
yn=messagebox(\"真的要删除吗?\警告\") if yn=6 delete pack endif
thisform.refresh 退出thisform.release
查询if thisform.optiongroup1.value=1
set filter to 学生成绩表.语文<60.and.学生成绩表.班级=thisform.combo3.value endif
if thisform.optiongroup1.value=2
set filter to 学生成绩表.数学<60.and.学生成绩表.班级=thisform.combo3.value endif
if thisform.optiongroup1.value=3
set filter to 学生成绩表.英语<60.and.学生成绩表.班级=thisform.combo3.value endif
if thisform.optiongroup1.value=4
set filter to 学生成绩表.体育<60.and.学生成绩表.班级=thisform.combo3.value endif
thisform.grid1.refresh 退出thisform.release
统计if empty(thisform.combo1.value)
set filter to
else
set filter to 三好生表.班级=thisform.combo1.value endif
thisform.refresh
thisform.grid1.setfocus
退出thisform.release
升序if thisform.optiongroup1.value=1
select 学号,姓名,语文 from 学生成绩表 order by 语文 asc endif
if thisform.optiongroup1.value=2
select 学号,姓名,数学 from 学生成绩表 order by 数学 asc endif
if thisform.optiongroup1.value=3
select 学号,姓名,英语 from 学生成绩表 order by 英语 asc endif
if thisform.optiongroup1.value=4
select 学号,姓名,体育 from 学生成绩表 order by 体育 asc endif
if thisform.optiongroup1.value=5
select 学号,姓名,总成绩 from 学生成绩表 order by 总成绩 asc endif
thisform.grid1.refresh
降序if thisform.optiongroup1.value=1
select 学号,姓名,语文 from 学生成绩表 order by 语文 desc endif
if thisform.optiongroup1.value=2
select 学号,姓名,数学 from 学生成绩表 order by 数学 desc endif
if thisform.optiongroup1.value=3
select 学号,姓名,英语 from 学生成绩表 order by 英语 desc
endif
if thisform.optiongroup1.value=4
select 学号,姓名,体育 from 学生成绩表 order by 体育 desc endif
if thisform.optiongroup1.value=5
select 学号,姓名,总成绩 from 学生成绩表 order by 总成绩 desc endif
thisform.grid1.refresh 退出thisform.release
数
据
库
:
菜单: