数据库原理与应用实践报告.docx
《数据库原理与应用实践报告.docx》由会员分享,可在线阅读,更多相关《数据库原理与应用实践报告.docx(15页珍藏版)》请在冰豆网上搜索。
![数据库原理与应用实践报告.docx](https://file1.bdocx.com/fileroot1/2023-2/22/666f8da8-c833-40c6-adb6-b447e5122e7b/666f8da8-c833-40c6-adb6-b447e5122e7b1.gif)
数据库原理与应用实践报告
数据库原理及应用
实践报告
1数据库功能描述
基本实现学生信息的管理,包括系统的登录、学生信息的录入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除。
2数据库设计
2.1系统需求分析
通过设计一个简单学生成绩管理系统来方便成绩的管理,主要容是能够在学生表、教师表、班级表、课程表、成绩表等添加记录;能够查询到学生基本情况、全局情况(浏览表)、按学生查询、课程浏览、多项组合查询等功能;能够统计按个人统计成绩、按单科成绩统计成绩等;能够修改课程信息、学生信息、成绩信息等。
最后通过主表单或顶层表单的菜单等方法将各模块表单合理地连接,形成完整的系统。
整个系统中包含四个功能模块:
添加模块、查询模块、统计模块、修改模块。
2.2数据库逻辑结构设计
3数据库实施
3.1数据库架构图
3.2数据表生成脚本初始数据录入脚本
学生数据表如表1所示。
表1 学生数据表(student.dbf)
字段名
类型
宽度
索引
索引名
索引类型
索引表达式
学号
字符型
10
升序
学号
主索引
学号
字符型
8
性别
字符型
2
出生日期
日期型
8
班级
字符型
4
升序
班级
普通索引
班级
班级数据表如表2所示。
表2 班级数据表(classes.dbf)
字段名
类型
宽度
小数位
索引
索引名
索引类型
索引表达式
班级
字符型
4
升序
班级
主索引
班级
年级x
字符型
2
专业
字符型
10
系代码
字符型
1
学制
字符型
1
类型
字符型
4
教师数据表如表3所示。
表3 教师数据表(teacher.dbf)
字段名
类型
宽度
小数位
索引
索引名
索引
类型
索引
表达式
教师代码
字符型
6
升序
教师代码
主索引
教师代码
字符型
8
性别
字符型
2
出生日期
日期型
8
籍贯
字符型
6
技术职务
字符型
10
备注
备注型
4
课程数据表如表4示。
表4 课程数据表(course.dbf)
字段名
类型
宽度
小数位
索引
索引名
索引类型
索引表达式
课程代码
字符型
5
升序
课程代码
主索引
课程代码
课程名称
字符型
14
升序
课程名称
普通索引
课程名称
类别
字符型
4
教师代码
字符型
6
升序
教师代码
普通索引
教师代码
学习数据表如表5说示。
表5学习成绩数据表(score.dbf)
字段名
类型
宽度
小数位
索引
索引名
索引类型
索引表达式
学号
字符型
10
升序
学号
普通索引
学号
课程代码
字符型
5
升序
课程代码
普通索引
课程代码
成绩
数值型
4
1
升序
学号+课程
主索引
学号+课程代码
3.3初始录入脚本
4应用程序设计
表一:
登录
用户名和密码存放在数据表中,使用时不能连续输入错误3次的登录表单。
步骤为:
1、首先在项目管理器的界面中选择创建一个表单,命名为:
登陆.Scx
2、在空白表单界面上用常用工具绘制相应控件,属性如下图所示:
表单中对象的属性设置
对象名
属性
属性值
Form1
Caption
系统登录
Lable1
Caption
欢迎使用学生成绩管理系统
Lable2
Caption
用户名
Lable3
caption
密码
Command1
caption
登录
Command2
caption
重填
Command3
caption
退出
Combo1
RowSource
mm.yhm
Text1
passwordchar
*
其中需要在表单的数据环境中添加密码表。
密码表设有两个字段,YHM和MM。
3、为对象添加代码。
在form1的load 事件中添加
publicn
n=0
Command1的click事件
locateforalltrim(mm.yhm)==alltrim(bo1.value)
iffound()
ifalltrim(thisform.text1.value)==alltrim(mm.mm)
thisform.release
doform主控表单.scx
else
messagebox('你输入的密码不正确,请重新输入',48,'登录信息')
thisform.text1.value=''
n=n+1
ifn=3
messagebox('登录失败!
',16,'提示信息')
quit
endif
endif
else
messagebox('对不起,你不是合法用户')
endif
Command2的click事件
bo1.value=''
thisform.text1.value=''
Command3的click事件
answer=messagebox('确认退出吗?
',1+32+0,'确认退出')
ifanswer=1
thisform.release
quit
endif
表二:
以表单向导开发信息录入新表单。
按“新建”,弹出对话框,选择“表单向导”按钮。
选择第一种类型(单表表单),并点击“确定”按钮。
系统会打开相应的对话框,一步一步地向用户询问一些简单的问题,并根据用户的回答自己创建表单。
最后点击“完成”按钮出现保存表单的对话框。
最后运行一下表单。
表三:
1、首先在项目管理器的界面中选择创建一个表单,命名为:
修改.Scx
2、在空白表单界面上用常用工具绘制相应控件:
一个标签、一个页框(含有3页)、两个命令按钮。
其中学生页面上有一个Combo1,六个标签,五个文本框,课程页面上有一个Combo1,五个标签,四个文本框,成绩页面上有一个Combo1,四个标签,三个文本框。
为表单设置数据环境,为student.dbf、course.dbf、score.dbf 属性如下图所示:
表1 修改表单.scx中对象的属性设置
对象
属性
属性值
Form1
Caption
修改数据
Command1
caption
保存
Command2
caption
放弃
Page1
Caption
课程表
Page2
Caption
学生表
Page3
Caption
成绩表
表2page1中对象的属性设置
对象
属性
属性值
Combo1
rowsourcetype
6-字段
rowsource
student.学号
text1
controlsource
student.学号
Text2
controlsource
student.
Text3
controlsource
student.班级
Text4
controlsource
student.性别
Text5
controlsource
student.出生日期
表3Page2中对象的属性设置
对象
属性
属性值
Combo1
rowsourcetype
6-字段
rowsource
course.课程代码
text1
controlsource
course.课程代码
Text2
controlsource
course.课程名称
Text3
controlsource
course.类别
Text4
controlsource
course.教师代码
表4Page3中对象的属性设置
对象
属性
属性值
Combo1
rowsourcetype
6-字段
rowsource
score.学号
text1
controlsource
score.学号
Text2
controlsource
score.课程代码
Text3
controlsource
score.成绩
3、为对象添加代码。
combo1的interactivechange事件代码:
selestudent
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("确定修改?
")
ifa=1
selestudent
b=this.parent.text2.value
c=this.parent.text3.value
d=this.parent.text4.value
e=this.parent.text5.value
replacewithb
replace性别withd
replace出生日期withe
replace班级withc
MESSAGEBOX("记录修改成功!
")
Endif
page2中对象的事件设置:
combo1的interactivechange事件代码:
selecourse
this.parent.text1.value=课程代码
this.parent.text2.value=课程名称
this.parent.text3.value=类别
this.parent.text4.value=教师代码
thisform.refresh
command1的click事件的代码:
a=MESSAGEBOX("确定修改?
")
ifa=1
selecourse
b=this.parent.text2.value
c=this.parent.text3.value
d=this.parent.text4.value
replace课程名称withb
replace类别withc
replace教师代码withd
MESSAGEBOX("记录修改成功!
")
endif
page3中对象的事件设置:
combo1的interactivechange事件代码:
selescore
this.parent.text1.value=学号
this.parent.text2.value=课程代码
this.parent.text3.value=成绩
thisform.refresh
command1的click事件的代码:
a=messagebox("确定修改?
")
ifa=1
selescore
b=this.parent.text2.value
c=this.parent.text3.value
replace课程代码withb
replace成绩withc
messagebox("记录修改成功!
")
endif
5参考文献
[1]周玉萍,丽蓉,诚一.VisualFoxPro数据库应用教程[M].:
人民邮电,2008.
[2]王利.全国计算机等级考试二级教程VisualFoxPro程序设计[M].:
高等教育,2001.