数据库原理及应用
实践报告
1 数据库功能描述
基本实现学生信息的管理,包括系统的登录、学生信息的录入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除。
2 数据库设计
2.1 系统需求分析
通过设计一个简单学生成绩管理系统来方便成绩的管理,主要内容是能够在学生表、教师表、班级表、课程表、成绩表等添加记录;能够查询到学生基本情况、全局情况(浏览表)、按学生查询、课程浏览、多项组合查询等功能;能够统计按个人统计成绩、按单科成绩统计成绩等;能够修改课程信息、学生信息、成绩信息等。
最后通过主表单或顶层表单的菜单等方法将各模块表单合理地连接,形成完整的系统。
整个系统中包含四个功能模块:添加模块、查询模块、统计模块、修改模块。
2.2 数据库逻辑结构设计
3 数据库实施
3.1 数据库架构图
3.2 数据表生成脚本初始数据录入脚本
学生数据表如表1所示。
表1学生数据表(student.dbf)
字段名类型宽度索引索引名索引类型索引表达式学号字符型10 升序学号主索引学号姓名字符型8
性别字符型 2
出生日期日期型8
班级字符型 4 升序班级普通索引班级
表2班级数据表(classes.dbf)
字段名类型宽度小数位索引索引名索引类型索引表达式班级字符型 4 升序班级主索引班级年级x 字符型 2
专业字符型10
系代码字符型 1
学制字符型 1
类型字符型 4
表3教师数据表(teacher.dbf)
表4课程数据表(course.dbf)
表5 学习成绩数据表(score.dbf)
3.3初始录入脚本
4 应用程序设计
表一:登录
用户名和密码存放在数据表中,使用时不能连续输入错误3次的登录表单。
步骤为:
1、首先在项目管理器的界面中选择创建一个表单,命名为:登陆.Scx
2、在空白表单界面上用常用工具绘制相应控件,属性如下图所示:
表单中对象的属性设置
其中需要在表单的数据环境中添加密码表。
密码表设有两个字段,YHM和MM。
3、为对象添加代码。
在form1的load事件中添加
public n
n=0
Command1的click事件
locate for alltrim(mm.yhm)==alltrim(bo1.value)
if found()
if alltrim(thisform.text1.value)==alltrim(mm.mm)
thisform.release
do form 主控表单.scx
else
messagebox('你输入的密码不正确,请重新输入',48,'登录信息')
thisform.text1.value=''
n=n+1
if n=3
messagebox('登录失败!',16,'提示信息')
quit
endif
endif
else
messagebox('对不起,你不是合法用户')
endif
Command2的click事件
bo1.value=''
thisform.text1.value=''
Command3的click事件
answer=messagebox('确认退出吗?',1+32+0,'确认退出')
if answer=1
thisform.release
quit
endif
表二:
以表单向导开发信息录入新表单。
按“新建”,弹出对话框,选择“表单向导”按钮。
选择第一种类型(单表表单),并点击“确定”按钮。
系统会打开相应的对话框,一步一步地向用户询问一些简单的问题,并根据用户的回答自己创建表单。
最后点击“完成”按钮出现保存表单的对话框。
最后运行一下表单。
表三:
1、首先在项目管理器的界面中选择创建一个表单,命名为:修改.Scx
2、在空白表单界面上用常用工具绘制相应控件:一个标签、一个页框(含有3页)、两个命令按钮。
其中学生页面上有一个Combo1,六个标签,五个文本框,课程页面上有一个Combo1,五个标签,四个文本框,成绩页面上有一个Combo1,四个标签,三个文本框。
为表单设置数据环境,为student.dbf、course.dbf、score.dbf 属性如下图所示:
表1修改表单.scx中对象的属性设置
表2 page1中对象的属性设置
表3 Page2中对象的属性设置
表4 Page3中对象的属性设置
3、为对象添加代码。
combo1的interactivechange事件代码:
sele student
this.parent.text1.value=学号
this.parent.text2.value=姓名
this.parent.text3.value=班级
this.parent.text4.value=性别
this.parent.text5.value=出生日期thisform.refresh
command1的click事件的代码:
a=MESSAGEBOX("确定修改?")
if a=1
sele student
b=this.parent.text2.value
c=this.parent.text3.value
d=this.parent.text4.value
e=this.parent.text5.value
replace 姓名with b
replace 性别with d
replace 出生日期with e
replace 班级with c
MESSAGEBOX("记录修改成功!") Endif
page2中对象的事件设置:
combo1的interactivechange事件代码:sele course
this.parent.text1.value=课程代码
this.parent.text2.value=课程名称
this.parent.text3.value=类别
this.parent.text4.value=教师代码thisform.refresh
command1的click事件的代码:
a=MESSAGEBOX("确定修改?")
if a=1
sele course
b=this.parent.text2.value
c=this.parent.text3.value
d=this.parent.text4.value
replace 课程名称with b
replace 类别with c
replace 教师代码with d
MESSAGEBOX("记录修改成功!") endif
page3中对象的事件设置:
combo1的interactivechange事件代码:sele score
this.parent.text1.value=学号
this.parent.text2.value=课程代码
this.parent.text3.value=成绩
thisform.refresh
command1的click事件的代码:
a=messagebox("确定修改?")
if a=1
sele score
b=this.parent.text2.value
c=this.parent.text3.value
replace 课程代码with b
replace 成绩with c
messagebox("记录修改成功!")
endif
5 参考文献
[1] 周玉萍,李丽蓉,张诚一.Visual FoxPro数据库应用教程[M]. 北京:人民邮电出版社,2008.
[2] 王利.全国计算机等级考试二级教程Visual FoxPro 程序设计[M]. 北京:高等教育出版社,2001.
- 10 -。