数据库系统综合设计案例:学生宿舍水电费管理系统设计与开发
设计目标与初步调研
设计目标:
设计一个学生宿舍水电费管理数据库(系统),实现如下功能:
1、自动计算水电费交费额度。
2、查询、打印各班级各宿舍水、电费使用情况和应交纳的费用。
系统分析与设计步骤:
一、确定数据库的目的:
1、有关部门可以输入水电表原始数据并由计算机自动计算结果、查看和打印每一个班
各宿舍水电使用量和应交水电费。
2、每一宿舍按水电交费单查询水电使用量并交费。
二、已知条件:
1、假设每学期抄水电表一次,期末结算一次。
2、水电定额使用,超用量要付费,节约用量可返还水电费。
三、经调研,主要表格如下:
交水电费通知单
班级:
期:
日
用水量 用水定额
节水量
用电量 用电定额
节电量
实交水电费
注:每人用水定额
吨/月,用电定额
度/月
合计
四、规划数据库中的表,确定表中的字段。
1、从收集到的“交水电费通知单”中可直接得出有关数据项:
班级、日期、房号、人数、用水量、用水定额、超水量、用电量、用电定额、超电量、
实交水电费、每人用水定额、水价、电价费、每人用电定额、合计。共 16 项。
数据库系统综合设计案例:学生宿舍水电费管理系统设计与开发
分析原始数据
[日期:2005-08-10]
来源: 作者:
9
2、把以上的 16 个数据项(或称为属性)细分为最小的数据项(即最小的信息单位),
并用表格表示。
属性简写
属性含义
属性的数据来源
最小信息单位?拆分?
班级
日期
房号
人数
班级
房号
抄表日期或打印日期
本学期该宿舍住宿总人数
Y
Y
Y
Y
用水量
该宿舍本学期总用水量
本次水表-上次水表
本次水表、上次水表
用水定额
该宿舍本学期总用水定额
人数×水定额
人数、水定额
超水量
该宿舍本学期总超用水量,负数
用水量-用水定额
N
为节约水量
用电量
该宿舍本学期总用电量
本次电表-上次电表
本次电表、上次电表
用电定额
该宿舍本学期总用电定额
人数×电定额
人数、电定额
超电量
该宿舍本学期总超用电量,负数
用电量-用电定额
N
为节约电量
水电费
该宿舍本学期总实交水电费,负
超水量×水价+超电量×
水价、电价
数为返还水电费
电价
水定额
电定额
水价
电价
合计
每人每学期用水定额
每人每学期用电定额
每吨水的单价
每度电的单价
该班级本学期所有宿舍水电费
该班级所有宿舍水电费
总计,负数为返还水电费
之和
Y
Y
Y
Y
N
3、列出不包含推导或计算结果的最小信息单位(即属性):
班级、日期、房号、人数、本次水表、上次水表、本次电表、上次电表、水定额、电
定额、水价、电价。共 12 个。
4、找出它们的完全函数依赖关系:
房号→(班级,人数)。
(房号+日期)→(本次水表,上次水表,本次电表,上次电表,收费编号)。
收费编号→(水定额,电定额,水价,电价)
5、优化设计
对以上的关系进行优化,使它们满足 3NF,即每一个关系既是完全函数依赖关系,关
系中又不存在传递函数依赖关系。
以上关系均满足 3NF。
6、规划数据库中的表,确定表中的字段
数据库系统综合设计案例:学生宿舍水电费管理系统设计与开发
规划和设计表
[日期:2005-08-10]
来源: 作者:
9
五、确定表中字段的属性(数据类型、长度等)和主键
1、住宿表字段属性
类型
长度
格式
字段
名
房号
班级
人数
文本
文本
长整型
10
20
主键:房号
2、水电费表字段属性
字段名
类型
房号
日期
文本
日期
本次水表
长整型
长
度
10
准
则
例
东 3201
2000 高职电子商务 1 班
标准
>0
10
格式
默认值
例
yyyy-mm-dd
Date()
2002-1-18
东 3201
556
上次水表
本次电表
上次电表
收费编号
长整型
长整型
长整型
长整型
556
667
556
1
1
主键:无,因为本表记录不同日期同一房号的水电费,房号和日期均有
可能重复。
3、水电定额及单价表字段属性
字段名
类型
格式
小数位数
默认
例
收费编号
水定额
电定额
水价
电价
长整型
单精度
单精度
货币
货币
主键:收费编号
六、确定表之间的关系
标准
标准
货币
货币
2
2
2
2
值
1
1
3.5
5
¥0.50
¥1.00
基本表
相关表
关联字段
住宿表
水电费
房号
表
水电定额及单价表
水电费
收费编号
表
是否级联更新和删除
是
级联更新不删除
N 对
N
1 对
多
1 对
多
七、创建“水电费”数据库,创建以上的表和表间关系。
八、创建窗体用于输入原始数据和每次抄表数据。
1、住宿表数据录入与修改
房号
东 3301
东 3302
班级
2000 高职电子商务 1 班
2000 高职电子商务 1 班
人数
5
6
房号
东 3303
东 4201
特点:
班级
2000 高职电子商务 1 班
2000 高职电子商务 2 班
人数
12
8
(1)、本表数据只在初次使用系统时录入一次,除非有数据变更,否则
日常工作中不用重新输入和修改,因此应单独建立窗体进行输入。
(2)、当此表中的“房号”数据修改时,水电费表也应相应自动被修改,
所以,上面的第四步中要建立两表关系并级联更新和删除。
此窗体建立方法有多种,因人而异,只要能完成增加、删除、修
改的功能就可以了。示例可参考:住宿表数据录入与修改 1,2,3 三个
窗体。
数据库系统综合设计案例:学生宿舍水电费管理系统设计与开发
创建相关对象
[日期:2005-08-10]
来源: 作者:
9
2、水电定额及单价数据输入
收费编号
水定额
电定额
水价
电价
1
5.00
5.00
1.00
0.50
特点:
(1)、本表与水电费表通过收费编号联系,用于计算宿舍每月
用水(电)定额和应交水电费。
(2)、本表收费编号被修改时,水电费表相应的收费编号应自
动修改(通过关系的级联更新实现)。同时,在水电费表中出现
过的收费编号,在此表中不能删除,否则数据也不一致。
3、建立输入每学期末抄水(电)表的数据的窗体。因为,水电
费表中存放的是每学期的水电表数据 ,所以:
(1)、当学期末要输入用水(电)数据前,首先要追加记录,
即把住宿表中的数据追加到水电费表中,见示例中的“输入水电
使用数据前追加查询”,追加到水电费表中的数据包括住宿表的
房号和日期(DATE())。
(2)、要输入和修改本学期水电使用数据,如下图示。
房号
日期
本
次
水
表
上
次
水
表
东
2002-11-18
660
550
3301
本
次
电
表
66
上
次
电
表
40
东
2002-11-18
440
430
78
49
3302
收
费
编
号
1
1
如果直接通过水电表的字段产生以上窗体,由于当追加
记录后住宿表增加房号等数据时,水电表没有自动增加,因此不
能输入新增房号的水电数据,所以,上图中的房号应取住宿表中
的房号,先建立上图的查询(示例中的“水电使用数据输入”查
询),由此查询再建立窗体(示例中的“水电使用数据输入 1,
2*”)
九、创建查询。
1、住宿情况查询
(1)、全部查询:见示例的“住宿情况查询”。
房号
班级
人数
东 3301
2001 高职电子商务 1 班
东 3302
2001 高职电子商务 1 班
东 3303
2001 高职电子商务 1 班
8
8
8
(2)、按班级查询:见示例的“住宿情况查询(按班级)”
2、水电定额及单价数据查询
见示例中的:水电定额及单价查询
3、水电费查询
(1)、水电费综合查询(全部):水电费综合查询
(2)、水电费综合查询(按日期):水电费综合查询(按日期)
(3)、水电费综合查询(按房号):水电费综合查询(按房号)
(4)、水电费综合查询(按班级):水电费综合查询(按班级)
还可以建立仅用于水费或电费的查询。
注意:所有查询的“查询属性”都应把“记录集类型”设置“快
照”。
十、创建报表。
1、打印水电费交费通知单
本通知单数据包括三个表的数据和由它们计算得来的结
果,先建立一个包含通知单数据的查询(见示例中的“报表相关”
查询),再由此查询建立报表,见示例中的报表:水电费通知单。
2、可以通过本系统打印要使用的空表格,如住宿登记表、水电
费抄表用的表格等。
九、系统合成。除了例题和课后练习中介绍的主切换面板和自建
菜单可以进行系统合成外,还可以使用下面的方法:
建立一个“主界面窗体”,在此窗体上建立若干个命令
按钮,每个按钮对应于一个宏,这些宏与有关的窗体、查询、报
表对应。或者,通过向导建立打开窗体的命令按钮。
建立一个自动宏(即宏名为 AUTOEXC),这个宏包含打
开“主界面窗体”的操作,这样,打开水电费数据库时自动进入
主界面窗体,用户可在主界面窗体上选择相应的按钮进行水电费
管理了
数据库系统综合设计案例:学生宿舍水电费管理系统设计与开发
结束语
[日期:2005-08-10]
来源: 作者:
9
数据库设计既要遵循一定的规律,比如表和表中字段的
设计,又可以溶入个性化的设计思想,比如输入界面(窗体)的
设计是因人而异的。
设计的过程是一个不断完善的过程,设计之初,可能考
虑问题不是很周到,到后面才发现前面的设计有问题或不完善,
此时再回头进行修改。