1、数据库课程设计 课程设计报告 题目:家庭财务管理系统学生姓名:鲍海仁学 号:201320181203班 级:1321812指导教师:李荣 2015年 月 日目录第一章绪论11。1课题简介11。2设计目的11。3设计内容1第二章需求分析。12.1 需求分析的任务12。2 需求分析的过程12.3数据字典与流程图2第三章概念结构设计43.1 概念结构设计的方法与步骤43。2 数据抽象与局部视图设计43。3视图的集成7第四章逻辑结构设计94.1 E-R图向关系模型的转换94。2 数据库的结构94.3触发器的设计114.4视图的设计12第五章数据库的实施155。1表的建立与数据的载入185.2数据库的运
2、行23数据库课程设计第一章绪论1.1课题简介经过一年半的学习,我对计算机方面的知识有了很大的提升,本着理论联系实际的宗旨,通过学校提供的这次课程设计实践的机会,在指导教师的帮助下,历经两周时间,我自行设计一套家庭财务管理系统,在下面的各章中,我将以这套家庭财务管理系统为例,谈谈其开发过程和所涉及到的问题。1。2设计目的实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识、DB2的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础.1
3、.3设计内容选择课题并且对课题的相关信息有一定的了解,对于我选的课题来说,我必须了解家庭财务管理系统的构造以及收入支出的信息还有银行的相关信息。将这些信息输入到数据库中,使之能够进行查询、修改、删除并且与家庭财务管理系统执行相同的操作.在需求分析阶段,需要完成家庭财务管理系统的具体分类和实施过程流图.概念设计阶段要完成数据抽象与局部视图设计以及视图的集成。逻辑结构设计阶段要把ER图转化为关系模式.最后是数据库的实施和运行。第二章需求分析2。1 需求分析的任务调查家庭财务管理系统应用领域涉及的内容,对涉及到领域的各个应用的信息要求和操作要求进行详细分析,形成需求分析说明书.最重要的是调查、收集信
4、息、分析家人作为管理员登陆供其他家人进行查阅流程.处理要求、数据的安全性与完整性要求。要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机(即查阅人)的界面要简单明了,易于操作,服务器程序利于维护。2。2 需求分析的过程为方便其他家人查阅家庭财务信息,需开发一个财务管理系统。包括登录时间、存取信息、存取的金额、收支差、管理员编号,输入家庭财务管理系统的客户端程序,系统经过处理后,为其他家人提供更新后的数据。相对于银行,本系统与银行管理系统和资产账户系统保持一致.如果本系统出现问题,家人可以凭借银行提供的账户单更改.要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机
5、的界面要简单明了,易于操作,服务器程序利于维护。2.3数据字典与流程图1业务流程分析经过可行性分析和初步需求调查,抽象出该系统业务流程图,结合该实例具体情况,给出家庭成员,管理员信息、家庭财务信息和银行账户参考信息的具体需求。 调查家庭成员需求 管理家庭成员需求l 查询功能:每个家庭成员对应一组个人基本信息 成员编号 个人姓名 个人性别 密码 设置家庭财务管理员需求l 登陆功能: 分配给每个家庭成员各自的管理员编号 输入账号登陆财务管理系统 输入密码登陆财务管理系统 更新查阅家庭财务信息需求l 记录功能: 记录更新财务信息的登陆时间l 更新功能 录入存取信类型 录入存取金额 根据假设的每个人月
6、收入5000元更改当月收支差l 查询功能 根据登陆时间查询相关财务信息 查询每组财务信息对应的管理员编号,进一步了解管理员编号对应的家庭成员财务信息的情况 银行管理需求l 查询功能: 查询银行编号 查询银行名称 查询银行的缩写简称 资产账户参照需求l 查询功能 查询该笔资产的编号 查询有关银行账号 查询该笔资金的类型 查询开户人的编号 查询与资产编号和银行账号相对应的成员编号l 更新功能 根据假设的每个家庭成员原资产总额为10000元修改变化后的资产总额,并供修改财务信息时参考2系统模块分析在调查完了家庭成员需求之后,就要开始分析家庭成员需求。在此,我们采用自顶向下的结构化分析方法(SA方法)
7、。首先,定义全局概念结构的框架,3数据字典将所有子系统全部细化。将所有用户需求分析完毕之后,就要开始构造数据字典了.经分析之后,本系统要用到五个基本表:家庭成员表,管理员,财务信息表,银行表,资产账户表。数据结构定义如表所示。数据结构定义数据结构名含义说明组成家庭成员定义了家庭成员的有关信息成员编号,姓名,性别,出生日期,手机,工作单位,管理员编号管理员定义了管理员的有关信息管理员编号,登陆账户,登陆密码财务信息定义了财务信息的有关信息存取类型,时间,金额,收支差,管理员编号银行定义了银行的有关信息银行编号,名称,简称,管理员编号资产账户定义了资产账户的有关信息成员编号,银行账号,资金类型,开
8、户人编号,开户日期,存款类型,资金总额第三章 概念结构设计3。1概念结构设计的方法与步骤概念设计阶段我也采用自顶向下的方法,即自顶向下的进行需求分析,然后再次自顶向下的进行概念结构设计。对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式.3。2 数据抽象与局部视图设计按照家庭财务管理系统总框架图,设计实体属性图以及局部ER图.成员编号家庭成员实体属性图:姓名性别家庭成员出生日期管理员编号手机工作单位管理员实体属性图:管理员编号管理员登陆账户登陆密码登录时间财务信息实体属性图:财务信息存取类型金额管理员编号收支差银行实体属性图:银行编号银行名称管理员编号简称资产账户实体属性图:成
9、员编号资产账户资金总额银行账号存款类型开户人账号资金类型开户日期3。3视图的集成经过逐步细化再进行每两个一集成初步形成一个ER图,最后得到家庭财务管理总体概念结构ER图。存取类型登录时间管理员编号金额收支差财务信息 n n管理员编号成员编号查看管理性别登陆账户姓名n 1登录管理员家庭成员 n 1手机出生日期管理登陆密码工作单位 1管理员编号 n银行编号成员编号 n银行查看名称银行账号 n资产账户简称资金类型资金总额管理员编号开户人账号存款类型开户日期第四章 逻辑结构设计4。1 ER图向关系模型的转换将图3.4总体概念结构ER图转化成关系模型。将转化的关系模式进行优化,最终达到第三范式.(至少包
10、括5张表,每个表都有主键,设必要的外键。)家庭成员表(成员编号,姓名,性别,出生日期,手机,工作单位,管理员编号)管理员表(管理员编号,登陆账户,登陆密码)财务信息表(时间,存取,金额,收支是否平横,管理员编号)银行表(银行编号,名资称,简称,管理员编号)资产账户表(编号,银行账号,资金类型,开户人编号,开户日期,存款类型,资金总额)4。2 数据库的结构 根据总体结构图设计各表的结构,其相应表的定义如下:家庭成员表的结构(member)字段名数据类型长度是否为空主/外键描述nochar2否主成员编号namevarchar50否姓名sexvarchar50否性别birthdatedate否出生日
11、期phonenumberdecimal否手机workplacevarchar50否工作单位administratornumberdecimal否外管理员编号管理员表的结构(administrator)字段名数据类型长度是否为空主/外键描述administratornumberdecimal否主管理员编号lognamevarchar50否登录账户passworddecimal否登陆密码财务信息表的结构(finance)字段名数据类型长度是否为空主/外键描述logtimetimestamp否主时间depositandwithdrawalvarchar50否存取moneydecimal否金额gapd
12、ecimal否收支差administratornumberdecimal否外管理员编号银行表的结构(bank)字段名数据类型长度是否为空主/外键描述banknumberdecimal否主银行编号banknamevarchar50否名称nicknamevarchar50否简称administratornumberdecimal否外管理员编号资产账户表的结构(asset)字段名数据类型长度是否为空主/外键描述nodecimal否主、外成员编号bankaccountdecimal否银行账号capitaltypevarchar50否资金类型openernumberdecimal否开户人账号openda
13、tedate否开户日期savingtypevarchar50否存款类型Totalcapitaldecimal否资金总额4.3触发器的设计根据应用要求,设计3个触发器,写出SQL语句。(1)-财务信息表插入触发器gocreatetriggerinsert_financeonfinanceafterinsertasifexists(select*frominsertedwhereadministratornumberin(selectadministratornumberfrommember))print添加成功!elsebeginprint家庭成员表中没有该成员的基本信息,拒绝插入!rollba
14、cktransactionend(2)-资产账户表修改触发器gocreatetriggerupdate_assetonassetafterupdateasifexists(selectfromupdatedwherenoin(selectnofrommember)print修改成功!elsebeginprint家庭成员表中没有该成员的基本信息,拒绝修改!rollbacktransactionend(3)家庭成员删除触发器gocreatetriggerdelete_memberonmemberafterdeleteasdeletefromassetwhereasset.noin(selectno
15、fromdeleted)Go4。4视图的设计根据应用要求,至少设计4个视图,写出SQL语句。创建视图V1createviewV1asselectmember。no,name,bankaccount,totalcapitalfrommember,assetwheremember。no=asset.no创建视图V2createviewV2asselectadministrator。administratornumber,logname,banknumber,gapfromadministrator,bank,financewhereadministrator.administratornumber
16、=bank。administratornumberandbank。administratornumber=finance.administratornumber创建视图V3createviewV3asselectno,name,administratornumberfrommember创建视图V4createviewV4asselectno,bankaccount,savingtype,totalcapitalfromasset第五章 数据库的实施5。1表的建立与数据的载入建立设计好的表,触发器、视图和约束。每个基本表一个抓图。 家庭成员表(member)创建的SQL语句:createtabl
17、emember(nochar(2)NOTNULL,namevarchar(50)NOTNULL,sexvarchar(50)NOTNULL,birthdatedateNOTNULL,phonenumberdecimal(30,0)NOTNULL,workplacevarchar(50)NOTNULL,administratornumberdecimal(30,0)NOTNULLprimarykey(no),foreignkey(administratornumber)referencesadministrator(administratornumber));表数据键入的SQL语句:insert
18、intomembervalues(1,李力,男,1970-11,13807081230,中国移动,10001)insertintomembervalues(2,李好,男,19712-14,13807081231,中国联通,10002)insertintomembervalues(3,王芳,女,1973416,13807081232,中国石化,10003)insertintomembervalues(4,张雪,女,197581,13807081233,中国电信,10004)insertintomembervalues(5,李兰,女,1992513,13807081234,南昌二中,10005)i
19、nsertintomembervalues(6,李广,男,1991-7-8,13807081235,中国石油,10006)家庭成员表(member)表收录了6位家庭成员的个人信息,包括成员编号,姓名,性别,出生日期,手机号,工作单位,管理员编号.管理员表(administrator)创建的SQL语句:createtableadministrator(administratornumberdecimal(30,0)NOTNULL,lognamevarchar(50)NOTNULL,passworddecimal(30,0)NOTNULL,primarykey(administratornumbe
20、r),constraintpassword_checkcheck(password=1 andpassword=9999));表数据键入的SQL语句:insertintoadministratorvalues(10001,张三,123)insertintoadministratorvalues(10002,李四,111)insertintoadministratorvalues(10003,王五,222)insertintoadministratorvalues(10004,赵明,333)insertintoadministratorvalues(10005,黄涛,444)insertinto
21、administratorvalues(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(logt
22、ime),foreignkey(administratornumber)referencesadministrator(administratornumber));表数据键入的SQL语句:insertintofinancevalues(2015-11 12:30:00,存款,5000,5000,10001)insertintofinancevalues(201512 11:30:00,取款,10000,-10000,10002)insertintofinancevalues(201513 13:30:00,存款,3000,3000,10003)insertintofinancevalues(2
23、015-14 15:30:00,取款,2000,-2000,10004)insertintofinancevalues(20151-5 10:30:00,存款,4000,4000,10005)insertintofinancevalues(2015-1-5 9:30:00,取款,1000,1000,10006)财务信息表(finance)收录了6位家庭成员最近的财务信息,包括登陆时间,存取类型,金额,收支差,管理员编号。 银行表(bank) 创建的SQL语句createtablebank(banknumberdecimal(30,0)NOTNULL,banknamevarchar(50)NOT
24、NULL,nicknamevarchar(50)NOTNULL,administratornumberdecimal(30,0)NOTNULL,primarykey(banknumber),foreignkey(administratornumber)referencesadministrator(administratornumber);表数据键入的SQL语句:insertintobankvalues(1,中国银行,CB,10001)insertintobankvalues(2,中国工商银行,ICBC,10002)insertintobankvalues(3,中国农业银行,ABC,10003
25、)insertintobankvalues(4,中国建设银行,CBC,10004)insertintobankvalues(5,中国招商银行,CMBC,10005)insertintobankvalues(6,中国民生银行,CMSB,10006)银行表(bank) 收录了最近交易过的6间银行的信息(可重复),包括银行编号,名称,简称,管理员编号。 资产账户表(asset)创建的SQL语句:createtableasset(nochar(2)NOTNULL,bankaccountdecimal(30,0)NOTNULL,capitaltypevarchar(50)NOTNULL,openernu
26、mberdecimal(30,0)NOTNULL,opendatedateNOTNULL,savingtypevarchar(50)NOTNULL,totalcapitaldecimal(30,0)NOTNULL,primarykey (no),foreignkey(no)referencesmember(no));表数据键入的SQL语句:insertintoassetvalues(1,10001000,RMB,60001000,201411,活期,10000)insertintoassetvalues(2,10001000,RMB,60001001,201412,定期,50000)inser
27、tintoassetvalues(3,10001001,RMB,60001002,201413,活期,20000)insertintoassetvalues(4,10001001,RMB,60001003,201414,定期,100000)insertintoassetvalues(5,10001002,RMB,60001004,2014-15,活期,30000)insertintoassetvalues(6,10001002,RMB,60001005,2014-16,定期,80000)资产账户表(asset) 收录了最近6笔在不同银行交易过的资产账户信息,包括成员编号,银行账号,资金类型,开户人账号,开户日期,存款类型,资金总额.5.2数据库的运行插入操作:插入操作insertintobankvalues(7,中国建设银行,CBC,10005)(2) 查询操作:(3) 更新操作:更新操作updateadministratorsetpassword=888whereadministratornumber=10002(4) 删除操作:删除操作deletefrombankwherebankname=中国建设银行14