资源描述
数据库技术课程设计
题目: 财务管理系统
姓名: 冯燕
学号: 33
班级: 网络1002
时间: 2011 年 6 月 31 日
目 录
1. 需求分析 1
1.1财务功能管理系统的功能分析 1
1.2财务功能管理系统的功能图 1
2. 概念结构设计 1
3. 逻辑结构设计 3
4. 数据库设计 3
4.1数据库和各表的创建 3
4.1.1数据表结构设计 3
4.1.2创建数据表SQL脚本 3
4.1.3数据表快照 4
4.2系统功能实现 5
5. 设计总结 5
参考文献 6
财务管理系统
摘要:财务管理系统是利用互联网的管理系统。家庭和个人的用户使用此软件,可以方便的进行个人理财,投资管理。财务管理系统从生活实际出发,充分考虑到个人,家庭需要,秉承高效、实用、人性化的设计理念,财务系统通过对用户财务的管理,让用户可以轻松进行对财务的记录、查询、修改、删除和有效的分析财务的收支状况,用户可以将自己的每一笔收入和支出输入到数据库中。达到了对财务的透明、管理的重要要求。让本系统实现了对财务的有效管理。
关键词:财务、分析、管理、查询、美工。
1. 需求分析
本文主要介绍了财务管理系统的设计与实现。财务管理系统是一个基于网络的信息管理系统,它具有操作简单、成本低廉、效率高等优点,而且没有区域限制。
1.1财务管理系统的功能分析
通过对财务内容的分析和查阅会计资料基本知识理解,一个标准的财务系统应该具备以下功能:
1) 可以进行对用户的基本资料管理。
2) 可以在管理员的权限下进行对用户的管理。
3) 可以进行用户凭证管理。(用户权限)
4) 可以进行账簿管理。
5) 可以进行财务的收支管理。
6) 可以进行工资的管理。
7) 可以进行财务的分析管理。
8) 可以进行系统管理。(升级与维护)
1.2财务管理系统的功能图
根据以上需求分析,财务管理系统功能如图1-1所示。
个人财务管理系统
家庭管理员管理
用户管理
个人用户管理
用户成员管理
家庭成员账薄的浏览和分析
家庭账薄的浏览和分析
家庭日常开销的浏览和分析
家庭日常借贷的分析和管理
个人消费记录的实现
个人账簿浏览
家庭日常投资的管理和分析
家庭日常财务报表的分析
计算器功能
切换用户
个人银行存储管理
个人借代的管理
个人账户的管理
个人财务报表的分析
2. 概念结构设计
1)用户实体及属性E-R图:如图2-1
用户
用户名
密码
管理员
用户ID
2-1
2)账簿实体及属性E-R图:如图2-2所示
2-2
帐簿
帐簿说明
用户ID
帐簿类型
帐簿名
帐簿ID
3)支出实体及属性E-R图:如图2-3所示
2-3
支出表
支出类型
支出金额
收入类型
登记时间
登记说明
余额
账簿ID
收入金额
登记人
账单ID
4)借出实体及属性E-R图:如图2-4所示
2-4
借出表
借出ID
借出金额
账簿ID
借出人
归还时间
登记人
备注
5)投资实体及属性E-R图:如图2-5所示
投资表
账簿ID
银行资金
存储时间
银行名
存储账号
利率
登记人
投资ID
登记说明
2-5
6)借入实体及属性E-R图:如图2-6所示
借入表
登记人
登记时间
借入时间
借入人
借入金额
账簿ID
借入ID
备注
2-6
7)个人财务管理系统E-R图(各实体属性略去),如图2-7:
用户
借出
账簿
支出
借入
投资
使用
属于
属于
属于
属于
2-7
3.逻辑结构设计:
对个人财务管理系统E-R图分析,结合各实体属性E-R图,考虑…,本系统的逻辑关系结构…。(说明:“#”表示主键,下划线表示外键)
(1).用户表的逻辑关系模式:
Users(uid#,uname,pwd,admin)
(2) 账簿表中的逻辑关系模式:
Zb (zdid#,uid,zbname,ztype,,zbintro)
(3)支出表的逻辑关系:
Zc(zdid#,zbid, sj, sztype, zj, zjtype, djp, ditime, djre, lost)
(4)投资表中的逻辑关系:
Tzb(Zdid#,Zbid,Yhz,Zctime,Yname,Czm,Lllv,Djp,tzr)
(5)借出表中的逻辑关系:
Jc(jdid#,zbid,jj,jname,guihuantime,djtime,dengjiren,remark)
(6)借入表中的逻辑关系:
Jr(jdid#,zbid,jj,jname,jiejintime,djtime,denjiren,remark)
4.数据库设计
数据库管理系统选用SQL Server 2005,根据财务管理系统的功能及逻辑关系模式分析,建立相关联的表和视图,每张表通过外键连接,建立联系,还有增、删、改、更新表的存储过程,以便能方便的调用数据库中的数据,满足客户的需求。
4.1 数据库和各表的创建
4.1.1 数据表结构设计
1)jc(借出)表结构设计
列名
数据类型
长度及精度
是否允许空值
说明
Jdid
Int
x
与zbid联合主键,外键,参照jr表
Zbid
Int
X
与jdid联合主键,外键,参照jr表、tzb表、zc表
Jj
Int
Null
Jname
Varchar
20
Null
Guihuantime
Datetime
Null
Djtime
datetime
Null
Denjiren
Varchar
10
Null
Remark
Varchar
50
Null
2)jr(借入)表结构设计
列名
数据类型
长度及精度
是否允许空值
说明
Jdid
Int
X
与zbid联合主键,外键,参照jc表
Zbid
Int
X
与jdid联合主键,外键,参照jc表、tzb表、zc表
Jj
Int
Null
Jname
Varchar
20
Null
Jiejintime
Datetime
Null
djtime
datetime
Null
Denjiren
Varchar
10
Null
Remark
Varchar
50
X
Null
3)users(用户)表结构设计
列名
数据类型
长度及精度
是否允许空值
说明
uid
Int
X
主键
uname
Varchar
10
Null
pwd
Varchar
20
Null
admin
bit
Null
4)zb(账簿) 表结构设计
列名
数据类型
长度及精度
是否允许空值
说明
zid
Int
X
与uid联合主键,外键,参照jc表,jr表,tzb表
uid
Int
X
与zid联合主键,外键,参照user表
zbname
Varchar
20
Null
ztype
varchar
20
Null
zbintro
varchar
20
Null
5)tzb(投资)表结构设计
列名
数据类型
长度及精度
是否允许空值
说明
zdid
Int
x
与zbid联合主键,外键,参照jr表, zc表
Zbid
Int
X
与zdid联合主键,外键,参照zc表
yhz
Int
Null
zctime
datetime
20
Null
yname
varchar
Null
czm
int
Null
lllv
int
int
Null
dip
Varchar
20
Null
tzr
varchar
20
Null
6)zc(支出)表结构设计
列名
数据类型
长度及精度
是否允许空值
说明
zdid
Int
x
与zbid联合主键,外键,参照tzb表
Zbid
Int
X
与zdid联合主键,外键,参照jr表,tzb表,jc表
Sj
Int
Null
Sztype
Varchar
20
Null
Zj
Int
Null
Zjtype
Varchar
20
Null
Djp
Varchar
20
Null
Ditime
Varchar
50
Null
Djre
varchar
50
Null
Lost
Int
Null
4.1.2创建数据表SQL脚本
CREATE TABLE users
(
uid int IDENTITY(1,1) primary key,
uname varchar(10) NOT NULL,
pwd varchar(20) NOT NULL,
admi bit NULL
)
go
CREATE TABLE zb
(
zid int IDENTITY(1,1) primary key,
uid int NULL,
zbname varchar(20) NULL,
ztype varchar(20) NULL,
zbintro varchar(20) NULL
)
go
CREATE TABLE tzb
(
zdid int IDENTITY(1,1) primary key,
zbid int NULL,
yhz int NULL,
zctime datetime NULL,
yname varchar(20) NULL,
czm int NULL,
lllv int NULL,
djp varchar(20) NULL,
tzr varchar(20) NULL
)
go
CREATE TABLE zc
(
zdid int IDENTITY(1,1) primary key,
zbid int NOT NULL,
sj int NULL,
sztype varchar(20) NULL,
zj int NULL,
zjtype varchar(20) NULL,
djp varchar(20) NULL,
djre varchar(50) NULL,
lost int NULL
)
Go
CREATE TABLE jc
(
jdid int IDENTITY(1,1) primary key,
zbid int NULL,
jj int NULL,
jname varchar(20) NULL,
guihuantime datetime NULL,
dengjiren varchar(10) NULL,
remark varchar(50) NULL
)
Go
CREATE TABLE jr
(
Jdid int IDENTITY(1,1) primary key,
zbid int NULL,
jj int NULL,
jname varchar(20) NULL,
jiejintime datetime NULL,
dengjiren varchar(10) NULL,
remark varchar(50) NULL
)
Go
4.1.3数据表快照
上述脚本形成的表在SQL Server 2005,如下图所示:
4-1-3-01借出表快照
4-1-3-02用户表快照
4-1-3-03投资表快照
4-1-3-04帐薄表快照
4-1-3-05借出表快照
4-1-3-06借入表快照
各表间的关系如图:
4.2系统功能的实现:
如果想要实现财务系统里面的功能就必须建一些存储过程,这些存储过程的代码是实现如下:
1. 首先在users(用户表)表中的存储过程:
(1).增加用户的存储过程:
Create proc usersadd
(
@uname varchar,
@pwd varchar,
@admin varchar
)
As
Insert into users values(@uname,@pwd,@admin)
(2)查询用户的存储过程:
Create proc userss
As
Select * from users
(3)验证用户密码的存储过程:
Create proc selectj
(@name varchar,
@pwd varchar
)
as
select * from users where uname=@uname and pwd=@pwd
(4)删除用户表中的存储过程;
Create proc usersd
(
@uid int
)
Delete users where uid=@uid
(4)更新用户表中的存储过程:
Create proc usersup
(@uid uid ,
@uname varchar,
@pwd varchar,
@admin varhcar
)
Update usersup set uname=@uname ,pwd=@pwd,admin=@admin where uid =@uid
2. 在zb(账薄表)表中的存储过程:
(1) 查询账薄表中的存储过程:
Create proc ads
As
Select * from zb
(2) 根据条件选择查询的账薄表中的sql语句:
select * from zb where ‘’tj like ‘%zhi%’
(3)在账薄表中插入新的数据:
Create proc inzb
(
@uid int,
@zbname varchar,
@ztype varchar,
@zbintro varchar
)
As
Insert into zh values(@uid, @zbname, @ztype, @zbintro)
(4)在账薄表中删除旧的数据:
Create poc zbde
(
@uid int
)
Delete zb where uid=@uid
(5)更新账薄表中的数据:
Create proc zbup
(
@zbid int,
@uid int ,
@zbname varchar,
@ztype varchar,
@zbintro varchar
)
Update zb set uid=@uid,zbname=@zbname,ztype=@ztype,zbintro=@zbintro where zbid=@zbid
3. 在zc(日常消费表)表中的存储过程:
(1) 在日常消费表中插入数据:
Create proc zcin
(
@zbid int,
@sj int,
@sztype varchar,
@zj int,
@zjtype varchar,
@djp varhcar,
@ditime varcahr,
@djre varchar
@lost int
)
Insert into zc values(@zbid, @sj, @sztype, @zj, @zjtype, @djp, @ditime, @djre, @lost)
(2)日常消费表的的查询:
Create proc zcsl
As
Select * from zc
(3)日常消费表的条件查询:
Select * from where ‘tj’ like ‘%zhi%’
(4)日常消费表的删除:
Create proc zcde
(
@zdid int
)
As
Delete zc where zdid=@zdid
(5)日常消费表的更新数据:
Create proc zcupdate
(
@Zdid int,
@zbid int ,
@sj int,
@sztype varchar,
@zj int,
@zjtype varchar,
@djp varhcar,
@ditime varchar,
@djre varchar,
@lost int
)
Update zc set zbi@zbid ,sj=@sj, sztype=@sztype, zj=@zj, zjtype=@zjtype, djp=@djp, ditime=@ditime, djre=@djre, lost=@lost where zdid=@zdid
4. 在tzb(银行储存表)表中的存储过程:
(1) 银行存储表中的查询:
Create proc tzbsel
As
Select * from tzb;
(2) 银行存储表中的条件查询:
Select * from tzb where ‘tj’ like ‘%zhi%’
(3) 银行存储表中的插入数据:
Create proc tzbin
(
@Zbid,
@Yhz,
@Zctime,
@Yname,
@Czm,
@Lllv,
@Djp,
@tzr
)
Insert into tzb values(@Zbid,@Yhz,@Zctime,@Yname,@Czm,@Lllv,@Djp,@tzr)
(4)银行存储表中删除数据:
Create proc tzbd
(
@zdid int
)
Delete tzb where zdid=@zdid
(5).银行存储表中的更新数据:
Create proc tzbupdate
(
@Zdid,
@Zbid,
@Yhz,
@Zctime,
@Yname,
@Czm,
@Lllv,
@Djp,
@tzr
)
Update tzb set Zbid=@Zdid, Yhz=@Yhz, Zctime=@Zctime, Yname =@Yname,Czm=@Czm, Lllv=@Lllv, Djp=@Djp, tzr=@tzr
6.在jc(借出表)表中的存储过程:
(1) 增加支出的存储过程:
create proc addjc
( @jdid int,
@zbid int ,
@jj int ,
@jname varchar(20),
@guihuantime datetime,
@djtime dateetime,
@denjiren varchar(10),
@remark varchar(50)
)
As
Insert into jc vakues(@jdid,@zbid,@jj,@jname,@guihuantime,@djtime,@dengjiren,@remark)
(2) 删除借出记录的存储过程
create proc deletejc
@jdid int
As
Delete from jc where jdid=@jdid
(3) 查询借出记录
create proc selectjc
@jdid int,
As
Select * from jc where jdid=@jdid
(4)更新借出记录
create proc updatetjc
( @jdid int,
@zbid int ,
@jj int ,
@jname varchar(20),
@guihuantime datetime,
@djtime dateetime,
@denjiren varchar(10),
@remark varchar(50)
)
As
Update jc set
zbid=@zbid,
jj=@jj,
jname=@jname,
guihuantime=@guihuantime,
djtime=@djtime,
denjiren=@denjiren,
remark=@remark
where jdid=@jdid,
5. 在jr(借入表)表中的存储过程:
(1).增加借入记录的存储过程
Create proc addjr
(
@jdid int,
@zbid int,
@jj int,
@jname varchar(20),
@jiejintime datetime,
@djtime datetime,
@denjiren varchar(10),
@remark varchar(50)
)
Insert into jr values(@jdid,@zbid,@jj,@jname,@jiejintime,@djtime,@denjiren,@remark)
(2).删除借入记录的存储过程
Create proc deletejr
@jdid int
As
Delete from jr where jdid=@jdid
(3).更新借入记录的存储过程
Create proc updatejr
(
@jdid int,
@zbid int,
@jj int,
@jname varchar(20),
@jiejintime datetime,
@djtime datetime,
@denjiren varchar(10),
@remark varchar(50)
)
Update jr set
Zbid=@zbid,
Jj=@jj,
Jname=@jname,
Jiejintime=@jiejintime,
Djtime=@djtime,
Denjiren=@denjiren,
Remark=@remark
Where jdid=@jdid
(4).查询借入记录的存储过程
Create proc selectjr
@jdid int
As
Select * from jr where jdid=@jdid
5.设计总结
这次的数据库课程设计可以说是为我们这一学期的数据库学习的一次练兵。看起来很简单的财务管理系统的设计做起来真的是困难重重。做这个系统的初衷是因为财务管理系统对于任何一家企业、公司和单位甚至个人的发展都是不可缺少的,企业的生存和发展很大程度上依赖于财务活动所涉及的不同利益主体之间的协调、平衡。而企业管理目标就是企业价值最大化,加强企业财务管理的各环节的实施有助于正确地制定理财策略。而我们这个设计主要是针对主要是小资产阶级的财务个人管理。
经过这次的数据库设计,我们深刻的领会到做一个简单的系统,里面有很多知识我们都没怎么接触过,去图书馆查阅资料时,我们发现现阶段我们很多知识学的仅仅是皮毛,还有很多需要我们去挖掘,就算看完一本书,我们还是会发现很多知识没有吃透,还是需要我们不断地去实践,去努力学习,去发现问题继而思考解决问题。
经过一段时间的学习与实践,我们的系统在同学还有老师的帮助中,成功的完成了。在这些日子当中,我们学习到了很多书本上没有的知识,也使我们这个团队更加的有凝聚力。这个财务管理系统具备了1.登记日常的流水账2.管理个人用户的日常借贷3.管理个人在银行的存储或贷款4,实现对个人账务的报表分析等功能。经过大家的总结发现在这个系统中还需要一些完善的地方1业务最后的逻辑分析不是很到位;2功能模块的实现不是很完整;3还有自己在技术上的掌握不是很牢固。
经过这次的数据库设计,我们得到一个结论,人如果没有自信,没有目标,没有信心就不能把事情做好。在困难面前勇于尝试,这是这次设计给我们的最大感想。
6.参考文献
[1]何勇、郑文钟:《财务管理信息系统的原理方法及应用》,浙江大学出版社,2005年第1版,第21-79页。
[2] (美)本-甘,(美)萨卡,(美)沃尔特 著,赵立东 译,电子工业出版社,《Microsoft SQL Server 2005 技术内幕:T-SQL程序设计》,2007年8月第1版。
[3] 徐绪松:《财务信息系统原理》,科学出版社,2006年第1版,第200-272页。
[4] 朱志强:《财务管理信息系统——原理、开发及应用》,复旦大学出版社,2007年第1版,第109-194页。
[5]甘容、李明东:“财务管理信息系统——个人工资信息查询模块的实现”, 《甘肃科技》,2007年第03期。
展开阅读全文