当前位置:文档之家› 家庭财务管理系统DOC

家庭财务管理系统DOC

目录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)致谢 (14)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.概念结构设计L密码 用户 1归属1家庭成员 家庭成员编号账户1现金账户编号 变更流水号 现金类型 1成员姓名变更日期管理N现金账户变更类型 备注变更金额拥有理财账户编号理财类型 备注N理财账户11 属于1N 银行账户M账户类型 银行账户编号 M服务1银行编号 银行名称交易金额 交易时间 交易类型 备注交易 理财产品编号理财产品N备注 违约说明银行M经营银行地址 银行简称 经营开始时间 经营结束时间 备注理财产品名称最低购买金额风险概述预期利率 投资周期图 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_Dlon Bankfor deleteasbegindelete from Bank_Accountwhere BNo in(select BNo from deleted)end---银行账户表级联删除create trigger BA_Dlon Bank_Accountafter deleteasbeginif((select AcType from deleted)='现金')delete from Case_Accountwhere BANoin(select BANo from deleted)elsedelete from Finance_Accountwhere BANoin(select BANo from deleted)end---理财账户表级联删除create trigger FiA_Dlon Finance_Accountfor deleteasbegindelete from Financewhere INo in(select INo from deleted)end4.3.视图---创建理财产品基本信息视图CREATE VIEW Fin_Pro ASSELECT a.FMID as理财产品编号,a.FMNAME理财产品名,c.BName服务提供银行FROM Finance_Product a,Finance_Run b,Bank cWHERE 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))asbegindeclare@CashInSum money,declare@CashOutSum moneyset@CashInSum=0set@CashOutSum=0---游标声明declare S_DType cursorfor select CashNo,DType,MType,MSum,DDate from Case_Account ---打开游标open S_Dtypedeclare@CN nchar(10)declare@DT nchar(4)declare@MT nchar(4)declare@MS moneydeclare@DD datetime---读取游标fetch next from S_DType into@CN,@DT,@MT,@MS,@DD---循环读取while@@fetch_status=0beginif(year(@y)=year(@DD)and@CashID=@CN and@CashMType=@MT) beginif@DT='支出'set@CashOutSum=@CashOutSum+@MSelse set@CashInSum=@CashInSum+@MSendfetch next from S_DType into@CN,@DT,@MT,@MS,@DDend---关闭游标、删除游标close S_DTypedeallocate S_DTypeselect@CashInSum收入,@CashOutSum支出end4.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.结论此家庭理财系统功能不是很全面,有许多的地方要进行修改,但是基本实现了家庭理财的项目保存、更改、删除、查询的基本功能。

相关主题