数据库课程设计—某自来水公司收费系统.doc
《数据库课程设计—某自来水公司收费系统.doc》由会员分享,可在线阅读,更多相关《数据库课程设计—某自来水公司收费系统.doc(20页珍藏版)》请在冰豆网上搜索。
数据库课程设计—某自来水公司收费系统
LT
某自来水公司收费管理系统
目录:
1.问题描述
2.需求分析
2.1需求分析
2.2系统功能结构
2.3数据流图
3.逻辑结构设计
3.1局部E—R图
3.2全局E—R图
3.3数据字典
4.物理结构设计
5.代码
6.小结
1.问题描述(某自来水公司收费管理系统)
l实现客户信息、用水类型(类别号、类别名、水价)及业务员管理;
l实现客户用电信息管理(客户号、月份、用水类别号、用水量);
l实现客户费用管理(客户号、月份、费用、收费标志),收费标志的默认值为‘未收’;
实现收费登记(客户、月份、应收费用、实收费用、业务员),并自动修改收费标志(用触发器实现);
l创建触发器,实现收费时自动更加应收费用和实收费用,计算本次结余,然后修改客户信息表中的结余金额;
l创建存储过程统计指定月份应收费用和实收费用;
l创建存储过程查询指定月份未交费的用户信息,以便崔费;
l创建规则使得月份符合格式“××××年××月”,并邦定到表中相应字段;
l建立表间关系。
2.需求分析
2.1需求分析
随着人们生活水平的提高,传统的人工记录已经跟不上时代的发展,信息化的世界即将覆盖人们生活的点点滴滴。
针对各地供水公司的水费缴费在状况,设计了能够符合适应大多数城市的水费缴费系统,采用了分布式管理的模式,能够实现数据管理以及日常维护任务,
3.2全局E-R图
3.3数据字典
名字:
客户
描述:
自来水公司的客户,使用者
定义:
客户=客户号+客户名+地址+联系方式
名字:
员工
描述:
负责收缴客户的水费
定义:
员工=员工号+员工名+联系方式+性别
名字:
用水类型
描述:
不同用途的水价不同
定义:
用水类型=类型号+类型名+水价
名字:
客户用水信息
描述:
每一位客户的具体信息
定义:
客户用水信息=客户号+月份+类型号+用水量
名字:
客户费用管理
描述:
每一个客户费用的具体信息
定义:
客户费用管理=费用编号+费用+收费标志
名字:
收费登记
描述:
每一位用户收费的具体信息
定义:
收费登记=收费编号+月份+实收费用+应收费用
4.物理结构设计
(1)图:
(2)表格清单
(1)客户表
字段名
数据类型
可否为空
键引用
备注
客户号
Number(8)
否
主键
客户号
客户名
Char(20)
否
客户名
地址
varchar2(50)
否
地址
联系方式
number(11)
否
联系方式
(2)用水类型表
字段名
数据类型
可否为空
键引用
备注
类型号
number(4)
否
主键
类型号
类型名
char(20)
否
类型名
水价
char(10)
否
水价
(3)员工表
字段名
数据类型
可否为空
键引用
备注
员工号
Number(8)
否
主键
员工号
员工名
Char(20)
否
员工名
性别
char(10)
否
性别
联系方式
number(11)
否
联系方式
(4)客户用水信息表
字段名
数据类型
可否为空
键引用
备注
客户号
Number(8)
否
主键/外键
客户号
类型号
number(4)
否
主键/外键
类型号
月份
char(20)
否
主键
月份
用水量
char(10)
否
用水量
(5)客户费用管理
字段名
数据类型
可否为空
键引用
备注
费用编号
Number(4)
否
主键
费用编号
费用
number(4)
否
费用
收费标志
char(20)
否
收费标志
(6)收费登记
字段名
数据类型
可否为空
键引用
备注
收费编号
Number(4)
否
主键
收费编号
月份
char(20)
否
主键
月份
应收费用
Char(10)
否
外键
所属专业
实收费用
Char(10)
否
外键
所属学院
5.代码
1.客户表
createtable客户表(
客户号number(8)constraintp_cprimarykey,
客户名char(20),
地址varchar2(50),
联系方式number(11));
插入数据:
insertinto插入数据:
insertinto客户表
values(20130001,'张三','东北林业大学',00001);
insertinto客户表
values(20130002,'张三','东北林业大学',00002);
insertinto客户表
values(20130003,'小红','东北林业大学',00003);
insertinto客户表
values(20130004,'小明','东北林业大学',00004);
2.用水类型
createtable用水类型(
类型号number(4)constraintp_wprimarykey,
类型名char(20),
水价char(10));
插入数据:
insertinto用水类型values(01,'学校','0.5');
insertinto用水类型values(02,'个人','1.0');
insertinto用水类型values(03,'商店','2.0');
insertinto用水类型values(04,'食堂','1.5');
3.员工表
createtable员工表(
员工号number(10)constraintp_sprimarykey,
员工名char(20),
性别char(10),
联系方式number(11));
插入数据:
insertinto员工表values(0001,'小白','男',04510001);
insertinto员工表values(0002,'小白','女',04510002);
insertinto员工表values(0003,'小兰','女',04510003);
insertinto员工表values(0004,'小黑','男',04510004);
4.客户用水信息
createtable客户用水信息(
客户号number(8)constraintfk_c1references客户表(客户号),
类型号number(4)constraintfk_w1references用水类型(类型号),
月份char(20),
用水量char(10),
primarykey(客户号,类型号,月份));
5.客户费用管理
createtable客户费用管理(
费用编号number(4)primarykey,
费用number(4),
收费标志char(20)default('未收')
);
6.收费登记
createtable收费登记(
收费编号number(4)primarykey,
月份char(20),
应收费用char(10),
实收费用char(10)
);
触发器1:
计算收费
createorreplacetrigger
count
before
insertorupdateordelete
on收费登记foreachrow
begin
ifinsertingorupdating
then:
new.结余费用=:
new.实收费用-:
new.应收费用;
endif;
end;
触发器2:
未收标志
createtriggerchange1
before
updateon客户费用管理
begin
update客户费用管理set收费标志='未收';
end;
触发器3:
计算结余费用
createorreplacetriggerJYcharge
Before
updateon收费登记foreachrow
begin
insertintoJYcharge(实收费用,应收费用,JYcharge)
values(:
old.实收用,:
old.应收费用,:
old.实收费用-:
old.应收费用);
end;
过程函数1:
统计应收费用和实收费用
CREATEORREPLACEPROCEDURETJ
as
begin
executeimmediate'createtableJYcharge(应收费用number(10),实
收费用number(10))';
executeimmediate'insertintocony_emp
values(:
old.应收费用,:
old.实收费用)';
commit;
endTJ;
/
过程函数2.未交费
createorreplaceprocedureWJF(Fnooutnumber)
is
begin
select收费编号into费用编号from收费登记
where收费登记.实收费用=0and收费编号=费用编号;
endWJF;
6.小结
通过本次实习,我更加了解了利用数据库设计系统的流程,此次实习综合运用了《数据库系统原理》的理论知识和技能,深入理解《数据库系统原理》相关的理论知识,有了初步分析实际问题的能力。
初步掌握了用《数据库系统原理》的知识设计计算机应用课题的思想和方法。
虽然我自己还不能很熟悉的完成整个系统的设计,但是这使我对这门课程有了更深入的理解,在今后的学习中我会加强理论与实践的结合,争取做到可以独立完成设计!