某公司自来水收费管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、课程设计的目的和要求
(1)培养学生运用所学课程《数据库系统原理》的理论知识和技能,深入理解《数据库系统原理》课程相关的理论知识,学会分析实际问题的能力。
(2)培养学生掌握用《数据库系统原理》的知识设计计算机应用课题的思想和方法。(3)培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。
(4)通过课程课程设计的训练,要求学生在教师的指导下,独立完成大作业要求的相关内容,包括:
①通过调查研究和运用Internet,收集和调查有关资料、最新技术信息。
②基本掌握撰写小论文的基本步骤和写作方法。
③根据课题的要求基本理解和掌握E-R 图的设计方法和关系模式的转换。
④根据课题的要求基本理解和掌握数据流图(DFD)和数据字典(DD)的设计方法。
⑤根据ER 图生成数据库表。
⑥数据库完整性、安全性保证措施
⑦数据库实施维护计划
二、课程设计题目要求:
(1)每组学生(最多两人一组,不允许多组同选一个题目)从下面题目中任选一个作为课程设计,调查分析一个具体的或模拟的实例。选好题目后发给班长或学习委员,产生选题冲突时,由班长和学习委员协调解决;
(2)描述该实例的业务信息和管理工作的要求;
(3)列出实体、联系;
(4)指出实体和联系的属性;
(5)画出E-R 图;
(6)将E-R 图转换成关系模式,并注明主码和外码;
(7)建立数据字典;
(8)创建数据库;
(9)根据题目的要求写查询、存储过程、触发器等。
某自来水公司收费管理系统实现客户信息、用水类型(类别号、类别名、水价)及业务员管理;实现客户用电信息管理(客户号、月份、用水类别号、用水量);实现客户费用管理(客户号、月份、费用、收费标志),收费标志的默认值为…未收‟;实现收费登记(客户、月份、应收费用、实收费用、业务员),并自动修改收费标志(用触发器实现);创建触发器,实现收费时自动更加应收费用和实收费用,计算本次结余,然后修改客户信息表中的结余金额;创建存储过程统计指定月份应收费用和实收费用;创建存储过程查询指定月份未交费的用户信息,以便崔费;创建规则使得月份符合格式“××××年××月”,并邦定到表中相应字段;建立表间关系。
一、问题描述
自来水公司收费管理系统实现客户信息、用水类型及业务员管理;
实现客户用电信息管理;
实现客户费用管理;
实现收费登记并自动修改收费标志(用触发器实现);
创建触发器,实现收费时自动更加应收费用和实收费用,计算本次结余,然后修改客户信息表中的结余金额;
创建存储过程统计指定月份应收费用和实收费用;
创建存储过程查询指定月份未交费的用户信息,以便崔费;
创建规则使得月份符合格式“××××年××月”,并邦定到表中相应字段;建立表间关系。
二、概念模型设计
1、自来水收费管理系统我设计了4张表
I、用水类型(类别号、类别名、水价)。
II、客户用水信息(客户、月份、用水类别号、用水量);
III、客户费用(客户号、月份、费用、收费标志)
IV、收费登记(客户、月份、应收费用、实收费用、业务员)
2、表之间对应的E-R图
2、所有表之间的关系图
创建用水类型表
CREATE TABLE Leixing ( shuijia Number(5),
Leibie V ARCHAR(20), Leiming VARCHAR(20)
);
创建用电信息表
CREATE TABLE Ydxinxi ( Kehao Number(10),
mouth Int(2),
LeibieV ARCHAR(20), Shuiliang V ARCHAR(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 Varchar(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 = (select 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 begin print"余额不足"; else update Khfeiyong set Feiyong=Feiyong-kehumoney where Kehao=@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 where 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