数据库设计
一、需求分析
设计和开发应用系统的第一步就是进行需求分析,了解用户对数据库系统的基本要求。例如,教学管理人员及教师通过该系统可以对全校教师信息、系部信息、课程信息和学生信息进行添加、删除、修改和查询等操作,教师通过该系统可以对所教课程进行成绩的登记管理;另外,通过该系统还可以对学生选课情况进行汇总分析、产生报表等。
系统主界面如图:
二、概念结构设计
三、逻辑结构设计
ER 图转换成数据库关系模型需要5个表(四个实体,一个关系) 1、“系部”表:系号、系名、系主任 2、“教师”表:教师编号、姓名、性别、出生日期、系号、职称、电话号码、E-mail 、简历、照片 3、“学生”表:学号、姓名、性别、出生日期、系号、班级、货款否、简历、照片 4、“课程”表:课程号、课程名、学分、教师编号、开课学期 5、“选课”表:学号、课程号、成绩
课程 授课
系部
学生
选课
教师
管理 n 包含
1 1
n
m
n
n 1
成绩
表格1 “系部”表
表格2 “教师”表
表格3 “学生”表
表格4 “课程”表
四、代码设计
五、信息输入模块设计
该模块主要通过窗体完成对数据库中各个表的记录的输入和编辑
(1)“教师”表信息输入:教师表中的信息较多,设计为单个窗体样式,其中,“系号”组合框使用向导生成,“职称”组合框的“行来源类型”使用值列表,
在“教师编号”文本框中输入要查找的教师编号后,单击“查找”按钮,可以在当前窗体中显示相应的教师信息,以便于修改数据;单击“全选”按钮,可以取消筛选,恢复显示所有的教师记录。这两个命令按钮的功能用宏实现。
(a)教师窗体界面(共有命令按钮10个)
(b)“查找”按钮对应的宏:findTno查找
(C)“全选”按钮对应的宏:selAll全选
(d)其他8个命令按钮均使用命令按钮向导完成
第一条:记录导航→转至第一项记录
上一条:记录导航→转至前一项记录
下一条:记录导航→转至下一项记录
最后一条:记录导航→转至最后一项记录
增加:记录操作→添加新记录
删除:记录操作→删除记录
保存:记录操作→保存记录
退出:窗体操作→关闭窗体
(2)“学生”表信息输入:该窗体的设计与“教师”窗体类似
(3)“系部”表和“课程”表信息输入,这两个表的信息较少,可以设计为表格样式的窗体。
例如,选择“系部”表,单击“创建”选项卡→“窗体”组→“其他窗体”下拉按钮,选择“数据表”保存“系部”窗体。
(4)“选课”表信息输入:该表中的记录采用以班级和课程为单位的方式进行编辑,其界面
六、信息查询模块设计
该模块主要通过窗体完成查询参数的输入和查询结果的输入。
(1)教师信息查询:该窗体界面
选择某个教师编号后,单击“教师基本情况”按钮,可打开“教师基本情况”窗体,显示该教师的详细情况;单击“教师授课情况”按钮,可打开“教师授课情况”窗体,显示该教师讲授的所有课程。
“教师基本情况”窗体与输入信息的窗体很相似,只是将“系号”换成了“系名”,并增加了一项年龄信息,该文本框为计算机文本框,其“控件来源”为“=(year(date())-year([出生日期]))
(a)首先建立“教师信息查询”窗体;
(b)建立“教师基本情况查询”和“教师授课情况查询”;
与此相对应的SQL语句为:
SELECT DISTINCT 教师.教师编号, 教师.姓名, 系部.系名, 教师.职称, 课程.课程号, 课程.课程名AS 授课课程, 学生.班级AS 授课班级
FROM 学生INNER JOIN (系部INNER JOIN ((教师INNER JOIN 课程ON 教师.教师编号=课程.教师编号) INNER JOIN 选课ON 课程.课程号=选课.课程号) ON 系部.系号=教师.系号) ON 学生.学号=选课.学号
WHERE (((教师.教师编号)=[forms]![教师信息查询]![教师编号]));
(c)建立与以上两个查询对应的窗体:“教师基本情况”窗体和“教师授课情况”窗体;
(d)建立与“教师信息查询”窗体上两个命令按钮“教师基本情况”和“教师授课情
况”相对应的宏:“打开教师基本情况窗体”和“打开教师授课情况窗体”
(e)建立命令按钮与事件(宏)的对应关系
(2)学生信息查询:该窗体界面
选择学号,单击“查询”按钮,可以显示该学生的详细情况。选择班级,单击“查询”按钮,可以打开“按班级浏览学生记录”窗体,显示该班级所有学生的情况,并统计总人数。
创建“按班级浏览学生记录”窗体时,“创建”选项卡→“窗体”组中“其他窗体”下拉箭头,选择“多个项目”后输入某学生的学生号即可创建。然后在创建的窗体基础上进行手工设计。
到目前为止一共有4个查询、6个窗体和4个宏
(3)课程信息查询:该窗体界面,可以按开课学期查询课程情况
“开课学期”组合框的“更改”事件属性设置为一个宏,其中包含一个ApplyFilter操作,它的“Where条件”参数为
[课程].[开课学期]=[Forms]![按学期浏览开课情况][开课学期]
涉及一个表,所以不需要创建查询
创建“按学期浏览开课情况”窗体时,“创建”选项卡→“窗体”组中“其他窗体”下拉箭头,选择“多个项目”然后在创建的窗体基础上进行手工设计。
由此增加一个窗体和一个宏
(4)选课信息查询
(a)创建“选课情况查询”
(b)创建“选课情况查询”窗体
(c)创建“按学号查询选课情况”查询
(d)创建“按学号查询选课情况”窗体
(e)创建“打开按学号查询选课情况窗体”宏,并将“选课情况查询”窗体中的“查询”
按钮(本例中使用默认名:Command15)的“单击”事件属性设置为该宏。
(f)创建“按课程查询选课情况”查询
(g)以“按课程查询选课情况”为数据源创建“按课程查询选课情况子窗体”
然后输入“101”、“60”、“90”(本例)转“设计视图”修饰
(h)建立主窗体,无记录源,在该窗体中插入“按课程查询选课情况子窗体”,其中“分数下限值”文本框的名称为txtLow,“分数上限值”文本框的名称为txtHigh,这两个控件名称在“按课程查询选课情况”查询条件中被引用。保存该对象,命名为“按课程查询选课情况主窗体”。
(i)创建“按课程查询选课情况”宏,并将“选课情况查询”窗体中的“查询”按钮(本例中使用默认名:Command18)的“单击”事件属性设置为该宏。
到目前为止:五个表,七个查询,11个窗体,七个宏
七、信息汇总和分析模块设计
该模块主要利用报表对数据库信息进行统计和汇总,并根据需要选择是否打印输出。(1)教师授课情况:将所有教师的授课情况汇总在一起。
(a)建立“教师授课情况汇总”查询
(b)选择“教师授课情况汇总”查询,单击“创建”选项卡“报表”组中的“报表向导”按钮,
注:为了形象地说明报表的汇总功能,将原“课程”表中的102课程的讲授人由原来的505001改为506001