数据库原理及应用
实践报告
1 数据库功能描述
基本实现学生信息的管理,包括系统的登录、学生信息的录入、学生信息
的浏览、学生信息的查询、学生信息的修改和学生信息的删除。
2 数据库设计
2.1 系统需求分析
通过设计一个简单学生成绩管理系统来方便成绩的管理,主要容是能够在学生表、教师表、班级表、课程表、成绩表等添加记录;能够查询到学生基本情况、全局情况(浏览表)、按学生查询、课程浏览、多项组合查询等功能;能够统计按个人统计成绩、按单科成绩统计成绩等;能够修改课程信息、学生信息、成绩信息等。最后通过主表单或顶层表单的菜单等方法将各模块表单合理地连接,形成完整的系统。整个系统中包含四个功能模块:添加模块、查询模块、统计模块、修改模块。
2.2 数据库逻辑结构设计
学生 教师 课程 成绩
3 数据库实施
3.1 数据库架构图
页脚.
.
3.2 数据表生成脚本初始数据录入脚本
学生数据表如表1所示。
表1 学生数据表(student.dbf)
字段名 学号 性别 出生日期 班级 类型 字符型 字符型 字符型 日期型 字符型 宽度 10 8 2 8 4 索引 升序 升序 索引名 学号 班级 索引类型 主索引 普通索引 索引表达式 学号 班级 班级数据表如表2所示。 表2 班级数据表(classes.dbf)
字段名 班级 年级x 专业 系代码 学制 类型 类型 字符型 字符型 字符型 字符型 字符型 字符型 宽度 4 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)
字段名 学号 课程代码 成绩 数值型 4 1 升序 学号+课程 主索引 学号+课程代码 类型 字符型 字符型 宽度 10 5 小数位 索引 升序 升序 索引名 学号 索引类型 普通索引 索引表达式 学号 课程代码 课程代码 普通索引
3.3初始录入脚本
页脚.
.
页脚.
.
页脚.
.
4 应用程序设计
表一:登录
用户名和密码存放在数据表中,使用时不能连续输入错误3次的登录表单。 步骤为:
1、首先在项目管理器的界面中选择创建一个表单,命名为:登陆.Scx 2、在空白表单界面上用常用工具绘制相应控件,属性如下图所示: 表单中对象的属性设置
页脚.
.
对象名 Form1 Lable1 Lable2 Lable3 Command1 Command2 Command3 Combo1 Text1 属性 Caption Caption Caption caption caption caption caption RowSource passwordchar 属性值 系统登录 欢迎使用学生成绩管理系统 用户名 密码 登录 重填 退出 mm.yhm *
其中需要在表单的数据环境中添加密码表。密码表设有两个字段,YHM和MM。
3、为对象添加代码。 在form1的load 事件中添加
public n n=0
Command1的click事件
locate for alltrim(mm.yhm)==alltrim(thisform.combo1.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事件 thisform.combo1.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中对象的属性设置
页脚.
.
对象 Form1 Command1 Command2 Page1 Page2 Page3 属性 Caption caption caption Caption Caption Caption 表2 page1中对象的属性设置
属性值 修改数据 保存 放弃 课程表 学生表 成绩表
对象 Combo1 属性 rowsourcetype rowsource 属性值 6-字段 student.学号 student.学号 student. student.班级 student.性别 student.出生日期 text1 Text2 Text3 Text4 Text5 controlsource controlsource controlsource controlsource controlsource
表3 Page2中对象的属性设置
对象 Combo1 属性 rowsourcetype rowsource 属性值 6-字段 course.课程代码 course.课程代码 course.课程名称 course.类别 course.教师代码 text1 Text2 Text3 Text4 controlsource controlsource controlsource controlsource 表4 Page3中对象的属性设置
对象 Combo1 属性 rowsourcetype rowsource 属性值 6-字段 score.学号 score.学号 score.课程代码 score.成绩 text1 Text2 Text3 controlsource controlsource controlsource
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.
页脚.
因篇幅问题不能全部显示,请点此查看更多更全内容