家庭财务管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1. 绪论 (1)
2. 总体设计 (1)
2.1. 数据流程分析图 (1)
2.2. 系统总体模块图 (1)
2.3. 安全性设计 (2)
3. 数据库设计 (2)
3.1. 需求分析 (2)
3.1.1. 任务概述 (2)
3.1.2. 系统功能需求 (2)
3.2. 概念结构设计 (2)
3.3. 逻辑结构设计 (3)
3.3.1. 建立关系模型 (3)
3.3.2. 确定函数依赖、属于第几范式 (3)
3.4. 物理结构设计 (4)
3.4.1. 表设计 (4)
3.4.2. 约束设计 (7)
3.4.3. 触发器设计 (7)
3.4.4. 视图设计 (7)
3.4.5. 索引设计 (7)
3.4.6. 存储过程设计 (7)
4. 数据库实施、运行 (8)
4.1. 创建表及约束 (8)
4.2. 触发器创建 (10)
4.3. 视图 (11)
4.4. 索引 (11)
4.5. 游标和存储过程 (11)
4.6. 数据录入 (12)
5. 结论 (13)
参考文献: (13)
致谢 (13)
1.绪论
21世纪的今天,已经成为信息化的时代,人们的生活已离不开计算机。
就在计算机业不断蓬勃发展的同时,也把人们的家庭理财上升到了一个全新的概念,随着信息化生活的不断深入,家庭理财系统也随之应运而生,由原来的简单计算变成了一个全新的图形化显示应用系统。
基于时代的发展,我设计了一套家庭理财系统的方案。
该系统以当前家庭理财方式为实例而设计的一种实用型管理系统。
本系统最大的特点是通用性、简单操作性,使固定资产管理系统真正实现多方操作,满足短期内对资产信息的采集,存储,处理,组织,管理和利用的需求,实现信息资源的集中管理和统一调度。
2.总体设计
总体设计即对有关系统全局问题的设计,也就是设计系统总的处理方案。
本阶段的设计就是进行家庭理财系统整体系统的概要设计。
针对本系统的总体设计从数据流程图入手,逐步完善系统中各个模块的设计,最终完善安全性设计来达到最终设计合理可行。
2.1.数据流程分析图
家庭理财系统顶层的功能:家庭成员通过家庭理财系统完成对现金账户和投资账户的管理,家庭理财系统记录银行理财产品的购入、卖出及现金的收支记录,同时能够进行相关银行信息的查询操作。
如图2-1。
图2-1 顶层数据流图
2.2.系统总体模块图
图2-2 系统总体模块图
2.3.安全性设计
本系统通过视图的建立隐藏部分银行信息,从而完善安全需求。
同时创建触发器保证数据库信息的统一性;创建存储过程隐藏部分操作,实现数据库的操作简化。
3.数据库设计
本阶段的设计决定了家庭理财系统数据库设计的可行性,通过需求分析、概念设计、逻辑结构设计分别做出了数据库的基础性设计。
最后物理结构设计给出了最终的数据库的设计方案,包括表设计、约束设计等完善了数据库的实施方案。
3.1.需求分析
3.1.1.任务概述
利用数据库相关技术,我对家庭理财系统进行了开发。
该系统解决了家庭理财中需要的部分功能,对于系统管理员来说,管理功能完备,操作方便。
因此本系统的目的是开发一个比较安全、简便的家庭理财系统。
3.1.2.系统功能需求
家庭理财管理系统通过日常的各项收入及开支进行统计处理,使用户对自己的经济情况一目了然。
本理财系统集合了权限登录、数据管理、打印等功能模块。
3.2.概念结构设计
图3-2 家庭理财系统E-R图
概念结构设计包括了实体设计及实体联系的设计,其中实体有7个,联系有2个。
从
登陆用户依附的家庭成员实体开始设计,逐步完善联系产生了后续的6个实体,最总通过多对多联系完善了全部概念结构设计。
3.3.逻辑结构设计
3.3.1.建立关系模型
1.实体部分
1)用户(用户名,家庭成员编号,用户密码)
主键:用户名。
外键:家庭成员。
2)家庭成员(家庭成员编号,成员姓名,成员身份)
主键:家庭成员编号。
3)银行账户(银行账户编号,银行编号,账户所有人编号,账户类型)
主键:银行账户编号。
外键:银行编号、账户所有人编号
4)银行(银行编号,银行名称,银行简称,银行位置)
主键:银行编号。
5)理财产品(理财产品编号,理财名称,预期利率,投资周期,周期单位,最低购
买金额,风险概述,违约说明,备注)
主键:理财产品编号。
6)理财账户(理财账户编号,银行账户编号,用户名,理财类型,备注)
主键:理财账户编号。
外键:银行账户编号,用户名。
7)现金账户(变更流水号,现金账户编号,银行账户编号,用户名,收支类型,现
金类型,变更金额,变更日期,备注)
主键:变更流水号。
外键:银行账户编号、用户名。
2.联系部分
1)理财产品交易(理财账户编号,理财产品编号,交易类型,交易金额,交易日期,
备注)
主键:理财账户编号,理财产品编号。
外键:理财产品编号。
之中交易类型为买入或卖出,交易日期必须在理财经营表中经营时间的范围内。
2)理财产品经营(银行编号,理财产品编号,经营开始时间,经营结束时间,备注)
主键:银行编号,理财产品编号。
3.3.2.确定函数依赖、属于第几范式
1.实体表
1)用户表(用户名,家庭成员编号,用户密码)
用户名→用户密码,用户名→家庭成员编号,没有部分依赖,没有传递依赖,
则此范式属于第三范式。
2)家庭成员表(家庭成员编号,成员姓名,成员身份)
家庭成员编号→成员姓名,家庭成员编号→成员身份,没有部分依赖,没有传
递依赖,则此范式属于第三范式。
3)银行账户表(银行账户编号,银行编号,账户所有人编号,账户类型)
银行账户编号→银行编号,银行账户编号→账户所有人编号,银行账户编号→
账户类型,没有部分依赖,没有传递依赖,则此范式属于第三范式。
4)银行表(银行编号,银行名称,银行简称,银行位置)
银行编号→银行名称,银行编号→银行简称,银行编号→银行位置,没有部分
依赖,没有传递依赖,则此范式属于第三范式。
5)理财产品表(理财产品编号,理财名称,预期利率,投资周期,周期单位,最
低购买金额,风险概述,违约说明,备注)
理财产品编号→理财名称,理财产品编号→预期利率,理财产品编号→投资周
期,理财产品编号→周期单位,理财产品编号→最低购买金额,理财产品编号
→风险概述,理财产品编号→违约说明,理财产品编号→备注,没有部分依赖,
没有传递依赖,则此范式属于第三范式。
6)理财账户表(理财账户编号,银行账户编号,用户名,理财类型,备注)
理财账户编号→银行账户编号,理财账户编号→用户名,理财账户编号→理财
类型,理财账户编号→备注,没有部分依赖,没有传递依赖,则此范式属于第
三范式。
7)现金账户表(变更流水号,现金账户编号,银行账户编号,用户名,收支类型,
现金类型,变更金额,变更日期,备注)
变更流水号→现金账户编号,变更流水号→银行账户编号,变更流水号→用户
名,变更流水号→收支类型,变更流水号→现金类型,变更流水号→变更金额,
变更流水号→变更日期,变更流水号→备注,没有部分依赖,没有传递依赖,
则此范式属于第三范式。
2.关系表
1)理财产品交易表(理财账户编号,理财产品编号,交易类型,交易金额,交易
日期,备注)
(理财账户编号,理财产品编号)→交易类型,(理财账户编号,理财产品编号)
→交易金额,(理财账户编号,理财产品编号)→交易日期,(理财账户编号,理
财产品编号)→备注,没有部分依赖,没有传递依赖,则此范式属于第三范式。
2)理财产品经营表(银行编号,理财产品编号,经营开始时间,经营结束时间,
备注)
(银行编号,理财产品编号)→经营开始时间,(银行编号,理财产品编号)→经
营结束时间,(银行编号,理财产品编号)→备注,没有部分依赖,没有传递依赖,则此范式属于第三范式。
3.4.物理结构设计
3.4.1.表设计
本系统共有9张表,包括实体表(7张):用户表、家庭成员表、银行账户表、银行表、理财产品表、理财账户表、现金账户表;关系表(2张):理财产品交易表、理财产品经营表。
1.实体表
表3-4-1 用户表
表3-4-2 家庭成员表
表3-4-3 银行账户表
表3-4-4 银行表
表3-4-5 理财产品表
表3-4-6 理财账户表
表3-4-7现金账户表
2.关系表
表3-4-8 理财产品交易表
表3-4-9理财产品经营表
3.4.2.约束设计
使用Check约束,约束理财产品表的投资周期为“日”、“月”或“年”;约束现金表的收支类型为“收入”或“支出”;约束理财产品交易表的交易类型为“买入”或“卖出”。
3.4.3.触发器设计
创建级联删除触发器,当银行表中的元组被删除时将触发银行账户表中对应元组的删除,之后会触发删除对应的理财账户、现金账户中对应元组的删除操作。
3.4.4.视图设计
创建理财产品基本信息视图,完善安全性,包括理财产品编号、理财产品名称及银行名称组成。
满足最基本的信息需求即可。
3.4.5.索引设计
创建理财产品编号的索引及银行简称的索引,方便信息查询、提高相关查询的效率。
3.4.6.存储过程设计
创建触发器实现查询特定现金账户在某一年的特定货币类型的收支情况,用以方便查询操作。
4.数据库实施、运行
数据库的实施完全按照数据库设计阶段给出的安全需求、性能要求等实施最终的数据库设计过程,包括了数据表及约束的创建,视图、触发器及存储过程的创建,最终录入数据完成数据库的运行。
4.1.创建表及约束
1.实体表
---家庭成员表
create table Family(
FNo nchar(10)primary key,
FName nchar(10)not null,
FStatus nchar(10)not null
)
---用户表
create table Account(
UserName nchar(10)primary key,
FNo nchar(10)not null,
UserPassWord nchar(20)not null,
foreign key(FNo)references Family(FNo)
)
---银行表
create table Bank(
BNo nchar(10)primary key,
BName nchar(10)not null,
BShort nchar(8)not null,
Bplace text not null
)
---银行账户表
create table Bank_Account(
BANo nchar(10)primary key,
BNo nchar(10)not null,
FNo nchar(10)not null,
AcType nchar(4)not null,
foreign key(FNo)references Family(FNo),
foreign key(BNo)references Bank(BNo),
CONSTRAINT CK_Bank_Account CHECK(AcType='投资'OR AcType='现金') )
---理财产品表
create table Finance_Product(
FMID nchar(10)primary key,
FMNAME nchar(10)not null,
FMIntertst nchar(10),
FMTime int not null,
TimeType nchar(4)not null,
FMSMoney money not null,
FMRisk text not null,
FMDefault text not null,
Memos text,
CONSTRAINT CK_Finance_Product CHECK(TimeType='天'OR TimeType='月'OR TimeType='年')
)
---现金账户表
create table Case_Account(
SeNo nchar(10) primary key,
CashNo nchar(10),
BANo nchar(10)not null,
UserName nchar(10)not null,
DType nchar(4)not null,
MType nchar(4)not null,
MSum money not null,
DDate datetime not null,
Memos text,
foreign key(BANo)references Bank_Account(BANo),
foreign key(UserName)references Account(UserName),
CONSTRAINT CK_Case_Account CHECK(DType='收入'OR DType='支出') )
---理财账户表
create table Finance_Account(
INo nchar(10)primary key,
BANo nchar(10)not null,
UserName nchar(10)not null,
Itype nchar(4)not null,
Memos text,
foreign key(BANo)references Bank_Account(BANo),
foreign key(UserName)references Account(UserName)
)
2.关系表
---理财产品交易表
create table Finance(
INo nchar(10),
FMID nchar(10),
DType nchar(4)not null,
MSum money not null,
DDate datetime not null,
Memos text,
primary key(INo,FMID),
foreign key(INo)references Finance_Account(INo),
foreign key(FMID)references Finance_Product(FMID),
CONSTRAINT CK_Finance CHECK(DType='买入'OR DType='卖出')
)
---理财产品经营表
create table Finance_Run(
BNo nchar(10),
FMID nchar(10),
RSDate datetime not null,
REDate datetime not null,
Memos text,
primary key(BNo,FMID),
foreign key(BNo)references Bank(BNo),
foreign key(FMID)references Finance_Product(FMID),
CONSTRAINT CK_Finance_Run CHECK(RSDate<REDate) )
4.2.触发器创建
---银行表级联删除
create trigger B_Dl
on Bank
for delete
as
begin
delete from Bank_Account
where BNo in
(select BNo from deleted)
end
---银行账户表级联删除
create trigger BA_Dl
on Bank_Account
after delete
as
begin
if((select AcType from deleted)='现金')
delete from Case_Account
where BANo
in(select BANo from deleted)
else
delete from Finance_Account
where BANo
in(select BANo from deleted)
end
---理财账户表级联删除
create trigger FiA_Dl
on Finance_Account
for delete
as
begin
delete from Finance
where INo in
(select INo from deleted)
end
4.3.视图
---创建理财产品基本信息视图
CREATE VIEW Fin_Pro AS
SELECT a.FMID as理财产品编号,a.FMNAME 理财产品名,c.BName 服务提供银行
FROM Finance_Product a,Finance_Run b,Bank c
WHERE a.FMID=b.FMID AND b.BNo=c.BNo;
4.4.索引
---创建理财产品索引
CREATE INDEX FinPro_index ON Finance_Product(FMID)
---创建银行索引
CREATE INDEX Bank_INDEX ON Bank(BShort)
4.5.游标和存储过程
---某现金账户某年特定货币类型的收支情况
create procedure Case_Sum(
@y datetime,
@CashID nchar(10),
@CashMType nchar(4)
)
as
begin
declare @CashInSum money,
declare @CashOutSum money
set @CashInSum=0
set @CashOutSum=0
---游标声明
declare S_DType cursor
for select CashNo,DType,MType,MSum,DDate from Case_Account ---打开游标
open S_Dtype
declare @CN nchar(10)
declare @DT nchar(4)
declare @MT nchar(4)
declare @MS money
declare @DD datetime
---读取游标
fetch next from S_DType into @CN,@DT,@MT,@MS,@DD
---循环读取
while@@fetch_status=0
begin
if(year(@y)=year(@DD)and @CashID=@CN and @CashMType=@MT) begin
if @DT='支出'set @CashOutSum=@CashOutSum+@MS
else set @CashInSum=@CashInSum+@MS
end
fetch next from S_DType into @CN,@DT,@MT,@MS,@DD
end
---关闭游标、删除游标
close S_DType
deallocate S_DType
select @CashInSum 收入,@CashOutSum 支出
end
4.6.数据录入
表3-5-6-1 家庭成员表
表3-5-6-2 用户表
表3-5-6-3 银行表
表3-5-6-4 银行账户表
表3-5-6-5 理财账户表
表3-5-6-6理财产品表
表3-5-6-7 现金账户表
表3-5-6-8理财产品交易表
表3-5-6-9 理财产品经营表
5.结论
此家庭理财系统功能不是很全面,有许多的地方要进行修改,但是基本实现了家庭理财的项目保存、更改、删除、查询的基本功能。
本系统基本包括了家庭理财的各种主要信息管理工作与综合更新管理工作,但在某些管理功能上需要继续细化。
由于系统开发工作量较大,开发工作中将功能实现放在了首位,因此在一些模块的界面设计的易用性方面仍需改进。
参考文献:
[1] 赵杰.毕业设计指导及案例剖析.数据库应用方向.北京:清华大学出版社,2005.
[2] 王珊, 萨师煊.数据库系统概论[M] .北京:高等教育出版社,2006.
[3] 壮志剑.数据库原理与SQL Server[M].北京:高等教育出版社,2006.
[4] 黄维通.SQL Server 数据库的技术与应用[M].北京:清华大学出版社,2011.
[5] 岳付强.SQL Server 2005 从入门到实践[M].北京:清华大学出版社,2009.
[6] 周爱武,汪海威,肖云.数据库课程设计[M] . 北京:机械工业出版社,2012.
[7] 吴治中,方金友. 家庭投资理财 1000 问[M]合肥:安徽科学技术出版社,2002.
[8] 王树进,包明宝. 投资理财新思维[M]. 北京:经济管理出版社,2001
[9] 李真文. SQL Server 2000 Developer’s Guide 开发人员指南[M] . 北京:希望电子出版社,2001.
致谢
在本次毕业设计中,我从指导老师冯春辉身上学到了很多东西。
老师认真负责的工作
态度,严谨的治学精神和深厚的理论实践水平都使我们深感敬佩。
无论是在理论上还是在实践中,都给予我很大的帮助,使我们得到不少的提高,尤其是她对我的关心所明了她的责任心和为人师表所具备的爱心,在这次课程设计表现无疑。
这对于我以后的学习和工作都是一种帮助,感谢她细心又耐心的辅导。