1、一、课程设计的目的和要求 (1)培养学生运用所学课程《数据库系统原理》的理论知识和技能,深入理 解《数据库系统原理》课程相关的理论知识,学会分析实际问题的能力。 (2)培养学生掌握用《数据库系统原理》的知识设计计算机应用课题的思想 和方法。 (3)培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能 力。 (4)通过课程课程设计的训练,要求学生在教师的指导下,独立完成大作业 要求的相关内容,包括: ① 通过调查研究和运用 Internet,收集和调查有关资料、最新技术信息。 ② 基本掌握撰写小论文的基本步骤和写作方法。 ③ 根据课题的要求基本理解和掌握 E-R 图的设计
2、方法和关系模式的转换。 ④ 根据课题的要求基本理解和掌握数据流图(DFD)和数据字典(DD)的设计方法。 ⑤ 根据 ER 图生成数据库表。 ⑥ 数据库完整性、安全性保证措施 ⑦ 数据库实施维护计划 二、课程设计题目 要求: (1)每组学生(最多两人一组,不允许多组同选一个题目)从下面题目中任选一个作为课程设计,调查分析一个具 体的或模拟的实例。选好题目后发给 班长或学习委员,产生选题冲突时,由班长和学习委员协调解决; (2)描述该实例的业务信息和管理工作的要求; (3)列出实体、联系; (4)指出实体和联系的属性; (5)画出 E-R 图; (6)将 E-R 图转换成关系
3、模式,并注明主码和外码; (7)建立数据字典; (8)创建数据库; (9)根据题目的要求写查询、存储过程、触发器等。 某自来水公司收费管理系统 实现客户信息、用水类型(类别号、类别名、水价)及业务员管理; 实现客户用电信息管理(客户号、月份、用水类别号、用水量); 实现客户费用管理(客户号、月份、费用、收费标志),收费标志的默 认值为‘未收’; 实现收费登记(客户、月份、应收费用、实收费用、业务员),并自动 修改收费标志(用触发器实现);创建触发器, 实现收费时自动更加应收费用和实收费用, 计算本次结余, 然后修改客户信息表中的结余金额; 创建存储过程统计指定月份应收费用和实收
4、费用; 创建存储过程查询指定月份未交费的用户信息,以便崔费; 创建规则使得月份符合格式“××××年××月”,并邦定到表中相应 字段; 建立表间关系。 一、问题描述 自来水公司收费管理系统 实现客户信息、用水类型及业务员管理; 实现客户用电信息管理; 实现客户费用管理; 实现收费登记并自动 修改收费标志(用触发器实现); 创建触发器, 实现收费时自动更加应收费用和实收费用, 计算本次结余, 然后修改客户信息表中的结余金额; 创建存储过程统计指定月份应收费用和实收费用; 创建存储过程查询指定月份未交费的用户信息,以便崔费; 创建
5、规则使得月份符合格式“××××年××月”,并邦定到表中相应 字段; 建立表间关系。 二、概念模型设计 1、自来水收费管理系统我设计了4张表 I、用水类型(类别号、类别名、水价)。 II、客户用水信息(客户、月份、用水类别号、用水量); III、客户费用(客户号、月份、费用、收费标志) IV、收费登记(客户、月份、应收费用、实收费用、业务员) 2、表之间对应的E-R图 类别名 类别号 水价 用水类型 月份 用水类型号
6、客户号 收费标志 费用 月份 客户号 客户费用 客户用电信息 用水量 业务员 月份 收费登记 实收费用 应收费用 客户 2、所有表之间的关系图 创建 用水类型表 CREATE TABLE Leixing ( shuijia Number(5), Leibie VARCHAR(20), Leiming VARCHAR(20)
7、 ); 创建用电信息表 CREATE TABLE Ydxinxi ( Kehao Number(10), mouth Int(2), LeibieVARCHAR(20), Shuiliang VARCHAR(5), ); 创建客户费用 CREATE TABLE Khfeiyong ( Kehao Number(10), mouth Int(2), Feiyong Number(5), Biao bool(1) ); 创建收费登记表: CREATE TABLE Dji ( Kehao Number(10), mouth Int(2), Yewu Varc
8、har(10), Yshou Number(5), Sshou Number(5), ); 自动修改客户费用 create trigger auto_update after insert on Dji for each ROW begin declare @kehao varchar(20), declare @mou int, declare @remoney int declare @hekumoney int set @kehao =(select Feiyong from inserted); set @mou = (selec
9、t mouth from tickets where Khfeiyong=@kehao);
set @remoney= (select Sshou from Dji where Kehao=@kehao);
set @kehumoney = (select Feiyong from Khfeiyong where kehao=@kehao);
if(@remonry 10、kehao;
end;
end;
根据用水的类型修改收费标准
create trigger shoufeibiaozhun after insert on Dji for each ROW
begin
declare @kehao varchar(20),
declare @mou int,
declare @remoney int
declare @hekumoney int
set @kehao =(select Feiyong from inserted);
set @mou = (select mouth from tickets wh 11、ere Khfeiyong=@kehao);
set @remoney= (select Sshou from Dji where Kehao=@kehao);
set @kehumoney = (select Feiyong from Khfeiyong where kehao=@kehao);
update Khfeiyong set Feiyong=Feiyong-kehumoney where Kehao=@kehao;
end;
创建存储过程统计指定月份应收费用和实收费用
create PROCEDURE FeiY(
in mou int
in true int
out should int
out true int )
begin
select sum(Feiyong) from khfeiyong where mouth=mou;
select truemoney from khfeiyong where mouth=mou;
end;






