数据库原理与应用实践报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库原理及应用
实践报告
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