资源描述
数据库课程设计
课程设计报告
题目:家庭财务管理系统
学生姓名:鲍海仁
学 号:201320181203
班 级:1321812
指导教师:李荣
2015年 月 日
目录
第一章绪论1
1。1课题简介1
1。2设计目的1
1。3设计内容1
第二章需求分析。1
2.1 需求分析的任务1
2。2 需求分析的过程1
2.3数据字典与流程图2
第三章概念结构设计4
3.1 概念结构设计的方法与步骤4
3。2 数据抽象与局部视图设计4
3。3视图的集成7
第四章逻辑结构设计9
4.1 E-R图向关系模型的转换9
4。2 数据库的结构9
4.3触发器的设计11
4.4视图的设计12
第五章数据库的实施15
5。1表的建立与数据的载入18
5.2数据库的运行23
数据库课程设计
第一章绪论
1.1课题简介
经过一年半的学习,我对计算机方面的知识有了很大的提升,本着理论联系实际的宗旨,通过学校提供的这次课程设计实践的机会,在指导教师的帮助下,历经两周时间,我自行设计一套家庭财务管理系统,在下面的各章中,我将以这套家庭财务管理系统为例,谈谈其开发过程和所涉及到的问题。
1。2设计目的
实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识、DB2的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础.
1.3设计内容
选择课题并且对课题的相关信息有一定的了解,对于我选的课题来说,我必须了解家庭财务管理系统的构造以及收入支出的信息还有银行的相关信息。将这些信息输入到数据库中,使之能够进行查询、修改、删除并且与家庭财务管理系统执行相同的操作.在需求分析阶段,需要完成家庭财务管理系统的具体分类和实施过程流图.概念设计阶段要完成数据抽象与局部视图设计以及视图的集成。逻辑结构设计阶段要把E—R图转化为关系模式.最后是数据库的实施和运行。
第二章需求分析
2。1 需求分析的任务
调查家庭财务管理系统应用领域涉及的内容,对涉及到领域的各个应用的信息要求和操作要求进行详细分析,形成需求分析说明书.最重要的是调查、收集信息、分析家人作为管理员登陆供其他家人进行查阅流程.处理要求、数据的安全性与完整性要求。
要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机(即查阅人)的界面要简单明了,易于操作,服务器程序利于维护。
2。2 需求分析的过程
为方便其他家人查阅家庭财务信息,需开发一个财务管理系统。包括登录时间、存取信息、存取的金额、收支差、管理员编号,输入家庭财务管理系统的客户端程序,系统经过处理后,为其他家人提供更新后的数据。相对于银行,本系统与银行管理系统和资产账户系统保持一致.如果本系统出现问题,家人可以凭借银行提供的账户单更改.
要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。
2.3数据字典与流程图
1.业务流程分析
经过可行性分析和初步需求调查,抽象出该系统业务流程图,结合该实例具体情况,给出家庭成员,管理员信息、家庭财务信息和银行账户参考信息的具体需求。
⑴ 调查家庭成员需求
① 管理家庭成员需求
l 查询功能:
每个家庭成员对应一组个人基本信息
² 成员编号
² 个人姓名
² 个人性别
² 密码
② 设置家庭财务管理员需求
l 登陆功能:
² 分配给每个家庭成员各自的管理员编号
² 输入账号登陆财务管理系统
² 输入密码登陆财务管理系统
③ 更新查阅家庭财务信息需求
l 记录功能:
² 记录更新财务信息的登陆时间
l 更新功能
² 录入存取信类型
² 录入存取金额
² 根据假设的每个人月收入5000元更改当月收支差
l 查询功能
² 根据登陆时间查询相关财务信息
² 查询每组财务信息对应的管理员编号,进一步了解管理员编号对应的家庭成员财务信息的情况
④ 银行管理需求
l 查询功能:
² 查询银行编号
² 查询银行名称
² 查询银行的缩写简称
⑤ 资产账户参照需求
l 查询功能
² 查询该笔资产的编号
² 查询有关银行账号
² 查询该笔资金的类型
² 查询开户人的编号
² 查询与资产编号和银行账号相对应的成员编号
l 更新功能
² 根据假设的每个家庭成员原资产总额为10000元修改变化后的资产总额,并供修改财务信息时参考
2.系统模块分析
在调查完了家庭成员需求之后,就要开始分析家庭成员需求。在此,我们采用自顶向下的结构化分析方法(SA方法)。首先,定义全局概念结构的框架,
3.数据字典
将所有子系统全部细化。将所有用户需求分析完毕之后,就要开始构造数据字典了.经分析之后,本系统要用到五个基本表:家庭成员表,管理员,财务信息表,银行表,资产账户表。数据结构定义如表所示。
数据结构定义
数据结构名
含义说明
组成
家庭成员
定义了家庭成员的有关信息
成员编号,姓名,性别,出生日期,手机,工作单位,管理员编号
管理员
定义了管理员的有关信息
管理员编号,登陆账户,登陆密码
财务信息
定义了财务信息的有关信息
存取类型,时间,金额,收支差,管理员编号
银行
定义了银行的有关信息
银行编号,名称,简称,管理员编号
资产账户
定义了资产账户的有关信息
成员编号,银行账号,资金类型,开户人编号,开户日期,存款类型,资金总额
第三章 概念结构设计
3。1概念结构设计的方法与步骤
概念设计阶段我也采用自顶向下的方法,即自顶向下的进行需求分析,然后再次自顶向下的进行概念结构设计。对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式.
3。2 数据抽象与局部视图设计
按照家庭财务管理系统总框架图,设计实体属性图以及局部E—R图.
成员编号
家庭成员实体属性图:
姓名
性别
家庭成员
出生日期
管理员编号
手机
工作单位
管理员实体属性图:
管理员编号
管理员
登陆账户
登陆密码
登录时间
财务信息实体属性图:
财务信息
存取类型
金额
管理员编号
收支差
银行实体属性图:
银行编号
银行
名称
管理员编号
简称
资产账户实体属性图:
成员编号
资产账户
资金总额
银行账号
存款类型
开户人账号
资金类型
开户日期
3。3视图的集成
经过逐步细化再进行每两个一集成初步形成一个E—R图,最后得到家庭财务管理总体概念结构E—R图。
存取类型
登录时间
管理员编号
金额
收支差
财务信息
n n
管理员编号
成员编号
查看
管理
性别
登陆账户
姓名
n 1
登录
管理员
家庭成员
n 1
手机
出生日期
管理
登陆密码
工作单位
1
管理员编号
n
银行编号
成员编号
n
银行
查看
名称
银行账号
n
资产账户
简称
资金类型
资金总额
管理员编号
开户人账号
存款类型
开户日期
第四章 逻辑结构设计
4。1 E—R图向关系模型的转换
将图3.4总体概念结构E—R图转化成关系模型。将转化的关系模式进行优化,最终达到第三范式.(至少包括5张表,每个表都有主键,设必要的外键。)
家庭成员表(成员编号,姓名,性别,出生日期,手机,工作单位,管理员编号)
管理员表(管理员编号,登陆账户,登陆密码)
财务信息表(时间,存取,金额,收支是否平横,管理员编号)
银行表(银行编号,名资称,简称,管理员编号)
资产账户表(编号,银行账号,资金类型,开户人编号,开户日期,存款类型,资金总额)
4。2 数据库的结构
根据总体结构图设计各表的结构,其相应表的定义如下:
家庭成员表的结构(member)
字段名
数据类型
长度
是否为空
主/外键
描述
no
char
2
否
主
成员编号
name
varchar
50
否
姓名
sex
varchar
50
否
性别
birthdate
date
否
出生日期
phonenumber
decimal
否
手机
workplace
varchar
50
否
工作单位
administratornumber
decimal
否
外
管理员编号
管理员表的结构(administrator)
字段名
数据类型
长度
是否为空
主/外键
描述
administratornumber
decimal
否
主
管理员编号
logname
varchar
50
否
登录账户
password
decimal
否
登陆密码
财务信息表的结构(finance)
字段名
数据类型
长度
是否为空
主/外键
描述
logtime
timestamp
否
主
时间
depositandwithdrawal
varchar
50
否
存取
money
decimal
否
金额
gap
decimal
否
收支差
administratornumber
decimal
否
外
管理员编号
银行表的结构(bank)
字段名
数据类型
长度
是否为空
主/外键
描述
banknumber
decimal
否
主
银行编号
bankname
varchar
50
否
名称
nickname
varchar
50
否
简称
administratornumber
decimal
否
外
管理员编号
资产账户表的结构(asset)
字段名
数据类型
长度
是否为空
主/外键
描述
no
decimal
否
主、外
成员编号
bankaccount
decimal
否
银行账号
capitaltype
varchar
50
否
资金类型
openernumber
decimal
否
开户人账号
opendate
date
否
开户日期
savingtype
varchar
50
否
存款类型
Totalcapital
decimal
否
资金总额
4.3触发器的设计
根据应用要求,设计3个触发器,写出SQL语句。
(1)-—财务信息表插入触发器
go
createtriggerinsert_financeonfinance
afterinsert
as
ifexists
(select*frominsertedwhereadministratornumberin(selectadministratornumberfrommember))
print’添加成功!’
else
begin
print'家庭成员表中没有该成员的基本信息,拒绝插入!'
rollbacktransaction
end
(2)--资产账户表修改触发器
go
createtriggerupdate_assetonasset
afterupdate
as
ifexists
(select*fromupdatedwherenoin(selectnofrommember))
print’修改成功!’
else
begin
print’家庭成员表中没有该成员的基本信息,拒绝修改!’
rollbacktransaction
end
(3)——家庭成员删除触发器
go
createtriggerdelete_memberonmember
afterdelete
as
deletefromasset
whereasset.no
in(selectnofromdeleted)
Go
4。4视图的设计
根据应用要求,至少设计4个视图,写出SQL语句。
——创建视图V1
createviewV1
asselectmember。no,name,bankaccount,totalcapital
frommember,asset
wheremember。no=asset.no
——创建视图V2
createviewV2
asselectadministrator。administratornumber,logname,banknumber,gap
fromadministrator,bank,finance
whereadministrator.administratornumber=bank。administratornumberandbank。administratornumber=finance.administratornumber
——创建视图V3
createviewV3
asselectno,name,administratornumber
frommember
——创建视图V4
createviewV4
asselectno,bankaccount,savingtype,totalcapital
fromasset
第五章 数据库的实施
5。1表的建立与数据的载入
建立设计好的表,触发器、视图和约束。
每个基本表一个抓图。
⑴ 家庭成员表(member)
创建的SQL语句:
createtablemember
(nochar(2)NOTNULL,
namevarchar(50)NOTNULL,
sexvarchar(50)NOTNULL,
birthdatedateNOTNULL,
phonenumberdecimal(30,0)NOTNULL,
workplacevarchar(50)NOTNULL,
administratornumberdecimal(30,0)NOTNULL
primarykey(no),
foreignkey(administratornumber)
referencesadministrator(administratornumber));
表数据键入的SQL语句:
insertintomember
values(1,’李力',’男',’1970-1—1',13807081230,’中国移动’,10001)
insertintomember
values(2,'李好’,’男',’1971—2-14’,13807081231,'中国联通’,10002)
insertintomember
values(3,'王芳','女’,’1973—4—16’,13807081232,’中国石化’,10003)
insertintomember
values(4,'张雪',’女','1975—8—1’,13807081233,’中国电信’,10004)
insertintomember
values(5,’李兰’,'女’,’1992—5—13’,13807081234,'南昌二中’,10005)
insertintomember
values(6,’李广’,’男',’1991-7-8',13807081235,’中国石油',10006)
家庭成员表(member)表
收录了6位家庭成员的个人信息,包括成员编号,姓名,性别,出生日期,手机号,工作单位,管理员编号.
⑵管理员表(administrator)
创建的SQL语句:
createtableadministrator
(administratornumberdecimal(30,0)NOTNULL,
lognamevarchar(50)NOTNULL,
passworddecimal(30,0)NOTNULL,
primarykey(administratornumber),
constraintpassword_checkcheck(password〉=1 andpassword<=9999));
表数据键入的SQL语句:
insertintoadministrator
values(10001,’张三',123)
insertintoadministrator
values(10002,’李四’,111)
insertintoadministrator
values(10003,'王五’,222)
insertintoadministrator
values(10004,'赵明',333)
insertintoadministrator
values(10005,’黄涛’,444)
insertintoadministrator
values(10006,’陈博’,555)
管理员表(administrator)
收录了6位家庭成员的管理员信息,包括管理员编号,登录账户,登陆密码。
⑶ 财务信息表(finance)
创建的SQL语句:
createtablefinance
(logtimevarchar(50)NOTNULL,
depositandwithdrawalvarchar(50)NOTNULL,
moneydecimal(30,0)NOTNULL,
gapdecimal(30,0)NOTNULL,
administratornumberdecimal(30,0)NOTNULL,
primarykey(logtime),
foreignkey(administratornumber)
referencesadministrator(administratornumber));
表数据键入的SQL语句:
insertintofinance
values('2015-1—1 12:30:00’,’存款',5000,5000,10001)
insertintofinance
values('2015—1—2 11:30:00','取款',10000,-10000,10002)
insertintofinance
values('2015—1—3 13:30:00’,'存款',3000,3000,10003)
insertintofinance
values('2015-1—4 15:30:00’,'取款’,2000,-2000,10004)
insertintofinance
values(’2015—1-5 10:30:00’,’存款’,4000,4000,10005)
insertintofinance
values('2015-1-5 9:30:00’,'取款’,1000,—1000,10006)
财务信息表(finance)
收录了6位家庭成员最近的财务信息,包括登陆时间,存取类型,金额,收支差,管理员编号。
⑷ 银行表(bank)
创建的SQL语句
createtablebank
(banknumberdecimal(30,0)NOTNULL,
banknamevarchar(50)NOTNULL,
nicknamevarchar(50)NOTNULL,
administratornumberdecimal(30,0)NOTNULL,
primarykey(banknumber),
foreignkey(administratornumber)referencesadministrator(administratornumber));
表数据键入的SQL语句:
insertintobank
values(1,'中国银行',’CB',10001)
insertintobank
values(2,’中国工商银行’,’ICBC',10002)
insertintobank
values(3,'中国农业银行’,'ABC’,10003)
insertintobank
values(4,’中国建设银行’,’CBC’,10004)
insertintobank
values(5,'中国招商银行’,’CMBC’,10005)
insertintobank
values(6,’中国民生银行','CMSB’,10006)
银行表(bank)
收录了最近交易过的6间银行的信息(可重复),包括银行编号,名称,简称,管理员编号。
⑸ 资产账户表(asset)
创建的SQL语句:
createtableasset
(nochar(2)NOTNULL,
bankaccountdecimal(30,0)NOTNULL,
capitaltypevarchar(50)NOTNULL,
openernumberdecimal(30,0)NOTNULL,
opendatedateNOTNULL,
savingtypevarchar(50)NOTNULL,
totalcapitaldecimal(30,0)NOTNULL,
primarykey (no),
foreignkey(no)referencesmember(no));
表数据键入的SQL语句:
insertintoasset
values(1,10001000,’RMB’,60001000,'2014—1—1',’活期',10000)
insertintoasset
values(2,10001000,'RMB’,60001001,'2014—1—2',’定期’,50000)
insertintoasset
values(3,10001001,'RMB’,60001002,’2014—1—3',’活期’,20000)
insertintoasset
values(4,10001001,’RMB',60001003,’2014—1—4’,’定期’,100000)
insertintoasset
values(5,10001002,’RMB',60001004,'2014-1—5’,’活期’,30000)
insertintoasset
values(6,10001002,’RMB',60001005,’2014-1—6’,’定期’,80000)
资产账户表(asset)
收录了最近6笔在不同银行交易过的资产账户信息,包括成员编号,银行账号,资金类型,开户人账号,开户日期,存款类型,资金总额.
5.2数据库的运行
⑴插入操作:
——插入操作
insertintobank
values(7,’中国建设银行','CBC',10005)
(2) 查询操作:
(3) 更新操作:
——更新操作
updateadministrator
setpassword=888
whereadministratornumber=10002
(4) 删除操作:
——删除操作
delete
frombank
wherebankname=’中国建设银行'
14
展开阅读全文