财务管理系统.docx
《财务管理系统.docx》由会员分享,可在线阅读,更多相关《财务管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
财务管理系统
课程设计说明书
课程设计名称:
数据库课程设计
课程设计题目:
家庭财务管理系统
学院名称:
信息工程学院
专业:
计算机应用与技术班级:
一、数据库需求分析:
对于"家庭财务管理系统"而言,整个系统就是一个加工"家庭财务管理"。
从用户的需求描述可知,"管理员"是数据的源点,"普通用户"是数据的终点。
另外,管理员需要录入用户信息、理财信息和日常管理信息,说明"用户信息"、"理财信息"和"日常管理信息"是数据流;同样,"统计请求"和"统计结果"也是数据流。
根据上述分析,得到如图所示的第1层DFD。
根据第1层DFD图绘制下一层数据流图时,细化第1层的加工"家庭财务管理",从而描述系统的主要功能。
从第1层DFD得知,"用户信息"是管理员需要录入的一个信息,因此加入一个加工"录入用户信息",同样得到"录入理财项目信息"、"录入日常管理信息"两个加工。
另外,数据流"统计报告请求"和"统计报告结果"应该由加工"统计报告"来完成。
这样,我们用"录入用户信息"、"录入理财项目信息"、"录入日常管理信息"和"统计报告"四个加工代替第1层的"家庭财务管理",同时增加这些数据流对应的数据存储,即"用户"、"理财"和"日常管理",最后得到如图所示的第2层DFD。
继续进行分解,分析第2层DFD中的加工"统计报告"。
用户统计报告时需要提供合法性检查,因此,"统计报告"可以分解为"合法性检查"和"统计"两个处理步骤,从而形成如图所示的第3层DFD。
数据字典
(一)、数据项
1数据项名:
编号;数据类型:
int;数据长度:
4;
2数据项名:
姓名;数据类型:
nvarchar;数据长度:
50;
3数据项名:
备注;数据类型:
nvarchar;数据长度:
50;
4数据项名:
收入来源;数据类型:
nvarchar;数据长度:
50;
5数据项名:
支出类型;数据类型:
nvarchar;数据长度:
50;
6数据项名:
收入日期;数据类型:
datetime;数据长度:
8;
7数据项名:
收入人员;数据类型:
int;数据长度:
4;
8数据项名:
收入金额;数据类型:
float;数据长度:
16;
9数据项名:
支出日期;数据类型:
datetime;数据长度:
8;
10.数据项名:
支出人员;数据类型:
int;数据长度:
4;
11数据项名:
支出金额;数据类型:
float;数据长度:
16;
12数据项名:
账户编号;数据类型:
int;数据长度:
4;
13数据项名:
日期;数据类型:
datetime;数据长度:
8;
14数据项名:
经手人;数据类型:
nvarchar;数据长度:
50;
15数据项名:
存入金额;数据类型:
float;数据长度:
16;
16数据项名:
支出金额;数据类型:
float;数据长度:
16;
17数据项名:
初始金额;数据类型:
float;数据长度:
16;
18数据项名:
余额;数据类型:
float;数据长度:
16;
19数据项名:
预还日期;数据类型:
datetime;数据长度:
8;
20数据项名:
借出日期;数据类型:
datetime;数据长度:
8;
21数据项名:
开户银行;数据类型:
nvarchar;数据长度:
50;
22数据项名:
开户日期;数据类型:
datetime;数据长度:
8;
(二)、数据结构
23数据结构名:
用户;组成:
编号+姓名+备注;
24数据结构名:
收入来源;组成:
编号+收入来源;
25数据结构名:
支出类型;组成:
编号+支出类型;
26数据结构名:
日常收入;组成:
编号+收入日期+收入人员+收入来源+收入金额+备注;
27数据结构名:
日常支出组成:
编号+支出日期+支出人员+支出类型+支出金额+备注;
28数据结构名:
活期账户;组成:
编号+账户编号+日期+经手人+存入金额+支出金额+备注;
29数据结构名:
定期账户;组成:
编号+账户编号+日期+经手人+存入金额+支出金额+备注;
30数据结构名:
借入款;组成:
编号+借入日期+预还日期+借入人+出借人+借入金额+备注;
31数据结构名:
借出款;组成:
编号+借出日期+预还日期+出借人+借贷人+借出金额+备注;
32数据结构名:
活期银行账户;组成:
编号+账号+账户类型+卡号+账户户主姓名+初始金额+余额+开户银行+开户日期;
33数据结构名:
定期银行账户;组成:
编号+账号+账户类型+卡号+账户户主姓名+初始金额+余额+开户银行+开户日期;
(三)、数据流
34数据流名:
家庭成员信息;数据流来源:
户主;数据流去向:
家庭成员信息表
35数据流名:
收入信息;数据流来源:
户主;数据流去向:
家庭成员信息表
36数据流名:
支出信息;数据流来源:
户主;数据流去向:
家庭成员信息表
37数据流名:
统计报告请求;数据流来源:
户主;数据流去向:
统计报告
38数据流名:
统计报告结果;数据流来源:
统计报告;数据流去向:
户主
家庭成员信息包括的数据项由:
编号,姓名,备注。
家庭成员收入来源信息,包括的数据项有:
编号,收入来源。
家庭成员支出类型信息,包括的数据项有:
编号,支出类型。
收入来源信息,包括的数据项有:
编号,收入日期,收入人员,收入来源,收入金额,备注。
支出类型信息,包括的数据项有:
编号,支持日期,支出人员,支出类型,支出金额,备注。
活期账户信息,包括的数据项有:
编号,账户编号,日期,经手人,存入金额,支出金额,备注。
定期账户信息,包括的数据项有:
编号,账户编号,日期,经手人,存入金额,支出金额,备注。
借入款信息,包括的数据项有:
编号,借入日期,预还日期,借入人,出借人,借入金额,备注。
借出款信息,包括的数据项有:
编号,借出日期,预还日期,出借人,借贷人,借出金额,备注。
活期银行账户信息,包括的数据项有:
编号,账号,账户类型,卡号,账户户主姓名,初始金额,余额,开户银行,开户日期。
定期银行账户信息,包括的数据项有:
编号,账号,账户类型,卡号,账户户主姓名,初始金额,余额,开户银行,开户日期。
二、数据库概念结构设计
数据库概念结构设计就是在以上数据项和数据结构的前提下,设计出满足用户需求的实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。
概念模型最常用的描述方法是E-R图(“实体-联系”图)描述法,E-R图主要有3个要素:
实体:
实体是以矩形表示。
实体就是数据库数据中具有实际意义的主体,如在前文分析的实体就是“消费人员”和“消费品”。
属性:
属性用椭圆表示。
就是实体所拥有的特性,如果是在面向对象程序设计中,可以将“实体”和“属性”对应为“对象”和“对象中的数据成员”的关系。
联系:
联系用菱形表示。
联系是实体与实体之间发生的动作、从属或其他依赖关系。
本软件规划出的实体有:
用户信息实体,收入来源信息实体,支出类型信息实体,日常收入信息实体,日常支出信息实体,活期银行账户信息实体,定期银行账户信息实体。
概念模型就是对信息世界的抽象建模,狭义的信息世界可以专指数据库中的数据,那么概念模型就可以理解为对数据库数据的抽象建模。
各个实体具体的描述E-R图如下:
E-R总图:
三、数据库逻辑结构设计
逻辑关系:
家庭成员信息(编号,姓名,备注);
家庭成员收入来源(编号,收入来源)
家庭成员支出类型(编号,支出类型);
活期银行账户(编号,帐号,账户类型,卡号,账户户主姓名,初始金额,余额,开户银行,开户日期);
定期银行账户(编号,帐号,账户类型,卡号,账户户主姓名,初始金额,余额,开户银行,开户日期);
日常收入信息(编号,收入日期,收入人员,收入类型,收入金额,备注};
日常支出信息(编号,支出日期,支出人员,支出类型,支出金额,备注);
活期账户信息(编号,账户编号,日期,经手人,存入金额,支出金额,备注);
定期账户信息(编号,账户编号,日期,经手人,存入金额,支出金额,备注);
借出款信息(编号,借出日期,预还日期,出借人,借贷人,借出金额,备注);
借入款信息(编号,借入日期,预还日期,借入人,出借人,借入金额,借入金额);
根据以上的信息实体E-R图和逻辑关系,本小型家庭财务管理软件数据库中的各个表格的设计结构如下面的表:
表4-1家庭成员表Family
字段名
字段说明
数据类型
字段长度
必填字段
主键
FamilyID
编号
int
4
是
是
FamilyName
姓名
nvarchar
50
是
否
FamilyPwd
密码
nvarchar
50
是
否
FamilyType
权限
int
4
是
否
FamilyBZ
备注
nvarchar
50
否
否
表4-2收入来源表IncomeType
字段名
字段说明
数据类型
字段长度
必填字段
主键
IncomeTypeID
编号
int
4
是
是
IncomeTypeType
收入来源
nvarchar
50
是
否
IncomeTypeDate
收入日期
nvarchar
50
是
否
IncomeTypeMember
收入人员
nvarchar
50
是
否
IncomeTypeSum
收入金额
int
4
是
否
IncomeBZ
备注
nvarchar
50
否
否
表4-3支出类型表OutputType
字段名
字段说明
数据类型
字段长度
必填字段
主键
OutputTypeID
编号
int
4
是
是
OutputTypeType
支出类型
nvarchar
50
是
否
OutputTypeDate
支出日期
nvarchar
50
是
否
OutputTypeMember
支出人员
nvarchar
50
是
否
OutputTypeSum
支出金额
int
4
是
否
OutputBZ
备注
nvarchar
50
否
否
表4-4活期银行账户表LiveBank
字段名
字段说明
数据类型
字段长度
必填字段
主键
LiveBankID
编号
int
4
是
是
LiveBankNo
帐号
nvarchar
50
是
否
LiveBankType
账户类型
nvarchar
50
是
否
LiveBankKa
卡号
nvarchar
50
是
否
LiveBankName
账户户主姓名
nvarchar
50
是
否
LiveBankChu
初始金额
float
8
是
否
LiveBankYu
余额
float
8
是
否
LiveBankBank
开户银行
nvarchar
50
是
否
LiveBankDate
开户日期
datetime
8
是
否
表4-5定期银行账户表FixBank
字段名
字段说明
数据类型
字段长度
必填字段
主键
FixBankID
编号
int
4
是
是
FixBankNo
帐号
nvarchar
50
是
否
FixBankType
账户类型
nvarchar
50
是
否
FixBankKa
卡号
nvarchar
50
是
否
FixBankName
账户户主姓名
nvarchar
50
是
否
FixBankChu
初始金额
float
8
是
否
FixBankYu
余额
float
8
是
否
FixBankBank
开户银行
nvarchar
50
是
否
FixBankDate
开户日期
datetime
8
是
否
表4-6日常收入表DailyIncome
字段名
字段说明
数据类型
字段长度
必填字段
主键
DailyIncomeID
编号
int
4
是
是
DailyIncomeDate
收入日期
datetime
8
是
否
DailyIncomeName
收入人员
int
4
是
否
DailyIncomeType
收入来源
int
4
是
否
DailyIncomeNum
收入金额
float
16
是
否
DailyIncomeBZ
备注
nvarchar
50
否
否
表4-7日常支出表DailyOutput
字段名
字段说明
数据类型
字段长度
必填字段
主键
DailyOutputID
编号
int
4
是
是
DailyOutputDate
支出日期
datetime
8
是
否
DailyOutputName
支出人员
int
4
是
否
DailyOutputType
支出类型
int
4
是
否
DailyOutputNum
支出金额
float
8
是
否
DailyOutputBZ
备注
nvarchar
50
否
否
表4-8活期账户操作表LiveAction
字段名
字段说明
数据类型
字段长度
必填字段
主键
LiveActionID
编号
int
4
是
是
LiveActionNo
账户编号
int
4
是
否
LiveActionDate
日期
datetime
8
是
否
LiveActionName
经手人
int
4
是
否
LiveActionCun
存入金额
float
8
否
否
LiveActionQu
支出金额
float
8
否
否
LiveActionBZ
备注
nvarchar
50
否
否
该表中,LiveActionCun与LiveActionQu的默认值设为0。
表4-9定期账户操作表FixAction
字段名
字段说明
数据类型
字段长度
必填字段
主键
FixActionID
编号
int
4
是
是
FixActionNo
账户编号
int
4
是
否
FixActionDate
日期
datetime
8
是
否
FixActionName
经手人
int
4
是
否
FixActionCun
存入金额
float
8
是
否
FixActionQu
支出金额
float
8
是
否
FixActionBZ
备注
nvarchar
50
否
否
该表中,FixActionCun与FixActionQu的默认值设为0。
表4-10借出款LendMoney
字段名
字段说明
数据类型
字段长度
必填字段
主键
LendMoneyID
编号
int
4
是
是
LendMoneyDateOut
借出日期
datetime
8
是
否
LendMoneyDateIn
预还日期
datetime
8
是
否
LendMoneyNameOut
出借人
int
4
是
否
LendMoneyNameIn
借贷人
nvarchar
50
是
否
LendMoneyNum
借出金额
float
8
是
否
LendMoneyBZ
备注
nvarchar
50
否
否
表4-11借入款BorrowMoney
字段名
字段说明
数据类型
字段长度
必填字段
主键
BorrowMoneyID
编号
int
4
是
是
BorrowMoneyDateOut
借入日期
datetime
8
是
否
BorrowMoneyDateIn
预还日期
datetime
8
是
否
BorrowMoneyNameOut
借入人
int
4
是
否
BorrowMoneyNameIn
出借人
nvarchar
50
是
否
BorrowMoneyNum
借入金额
float
8
是
否
BorrowMoneyBZ
备注
nvarchar
50
否
否
综合上述的E-R图和信息表,得到如下所示的数据库整体关系图:
数据库整体关系图
四、系统功能设计
功能模块图:
本系统主要的功能包括:
对家庭财务管理系统。
对理财项目可以进行编辑。
收入和支出管理包括成员日常收入来源和成员日常支出类型,活期银行账户和定期银行账户。
相关信息分别存在“收入来源表”、“支出类型表”、“活期银行账户表”和“定期账户操作表”中,均可以实现添加、删除、修改功能。
收入、支出管理,包括日常收入、日常支出,即记录下成员的日常收入、日常的支出。
银行账户管理,包括活期银行账户和定期银行账户,即记录下对银行账户的存取款记录。
债务管理,包括借入款和借出款,即记录下借出钱或借入钱的记录。
收支统计,对以往债务可以进行查询和统计,同时实现了分类查询。
1.创建名为student的数据库。
*/
createdatabasestudent
2.向student数据库里创建.11张表,表名分别为:
家庭成员表family、收入来源表incometype、支出类型表outcometype、活期银行账户表livebank、定期银行账户表fixbank、日常收人表daiyincome、日常支出表daiyoutput、活期账户操作表liveaction、定期账户操作表fixaction、借出款lendmoney、借入borrowmoney*/
3.创建一个带有查询语句的简单过程,该存储过程返回所有家庭成员的编号,姓名
,备注。
*/
createprocstu_info
asFamilyID,FamilyName,FamilyBZ
select
fromFamily
go
创建一个存储过程,该存储过程时,其参数值作为数据添加到DailyIncome中。
*/
createprocinsertdata
@param1int(4),
@param2datetime(8),
@param3int(4),
@param4int(4)
@param5float(16)
@param6nvarchar(50)
as
begin
insertintosc(DailyIncomeID,DailyIncomeDate,DailyIncomeName,DailyIncomeType,DailyIncomeNum,DailyIncomeBZ)
values(@param1,@param2,@param3,@param4,@param5,@param6)
end
go
创建存储过程usp_Select_Student,查询家庭成员的信息,
创建存储过程
createprocusp_select_student
@departnvarchar(50),
@avg_ageintoutput,
@max_ageintoutput
as
select*fromfamily
wherefamilyID=@depart
4.创建触发器
1.CREATETRIGGERinsert_family
ONfamily
AFTERINSERT
AS
INSERTINTOfamilyVALUES('02','李晓莉','妻子')
PRINT'数据插入成功'
2.CREATETRIGGERdelete_family
ONfamily
AFTERINSERT
AS
DELETEfamily
FROMfamily
WHEREfamilyID='02'
PRINT'数据删除成功'
3.CREATETRIGGERupdate_family
ONfamily
AFTERINSERT
AS
UPDATEfamily
SETfamilyID=familyID+10
WHEREfamilynamelike‘李晓莉’
4.CREATETRIGGERselect_family
ONfamily
AFTERINSERT
AS
SELECT*FROMfamily
五、结论
本家庭财务管理系统,主要使用于家庭对家庭成员资料的管理及对系统权限的管理、对理财项目的编辑和管理、对日常财务的管理、对银行账户的管理、对债务的管理、日常明细和收支的统计等等。
本家庭财务管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
本系统针对的人群结构为同一个家庭的不同成员,虽然如此仍然设置了权限控制,由于权限控制的实现,导致要将相关内容分割在几个表中,这样就造成了表之间字段的依赖。
该系统是面向小型家庭的,相对来说功能要求不多,因此总体的结构也比较简单,这样的优点是操作比较的简单、容易上手,很适合即学即用。
总之,现在的人门开始关注财务管理,只有在有条理的管理好家庭财务的前提下,才能过上更有质量的生活。
参考文献
1、王珊、萨师煊、《数据库系统概论》、高等教育出版社、2005年第4版
2、钱雪忠、陈国俊、《数据库原理及应用指导》、北京邮电大学出版社、2007年第二版
3、王长松、秦琴、余健、《数据库应用课程设计案例精编》、清华大学出版社、2009年版
4、路游、于玉宗、《数据库系统课程设计》、清华大学出版社、2009年版
5、余金山、冯星红、李肖.PowerBuilder数据开发高级实例[M].北京:
科学出版社.2005年版
6、黄浩、赵宏杰.PowerBuilder9.0精彩编程百例[M].中国水利水电出版社.2004年版