SQL 系统实例家庭理财2226666.docx

上传人:b****4 文档编号:24630406 上传时间:2023-05-29 格式:DOCX 页数:20 大小:135.17KB
下载 相关 举报
SQL 系统实例家庭理财2226666.docx_第1页
第1页 / 共20页
SQL 系统实例家庭理财2226666.docx_第2页
第2页 / 共20页
SQL 系统实例家庭理财2226666.docx_第3页
第3页 / 共20页
SQL 系统实例家庭理财2226666.docx_第4页
第4页 / 共20页
SQL 系统实例家庭理财2226666.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

SQL 系统实例家庭理财2226666.docx

《SQL 系统实例家庭理财2226666.docx》由会员分享,可在线阅读,更多相关《SQL 系统实例家庭理财2226666.docx(20页珍藏版)》请在冰豆网上搜索。

SQL 系统实例家庭理财2226666.docx

SQL系统实例家庭理财2226666

家庭理财管理

目录

一.需求分析2

㈠、调查用户需求2

家庭收入的基本信息2

㈡,用户对系统的要求2

1.信息要求2

2.处理要求3

3.安全性与完整性要求3

㈢、系统功能的设计和划分3

㈣,数据流图4

㈤,数据字典6

二.概念结构设计8

三.数据库结构设计10

四.逻辑及物理设计11

关系模式11

数据库相关语句:

12

数据库的存储14

触发器的建立…….….…………….………………………………………………………13

五.总结17

六.参考资料18

一.需求分析:

㈠、调查用户需求

本系统的最终用户为以家庭为单位的个人。

根据我们日常生活中的经验,结合自己对父母或其他家庭成员的咨询与调查,得出用户的下列实际要求:

用户以家庭为单位注册一个家庭财务信息管理系统的账号,同为一个家庭的家庭成员只要知道本家庭的账号及账号密码,便可登录使用该系统。

家庭收入的基本信息

每个用户都有一个唯一的家庭财务信息管理系统账号,登录之后,每次收入记录都有唯一的收入编号,并且将同时记录下收入的日期,收款人等相关信息。

1.家庭支出的基本信息

每条支出记录都有唯一的编号,用户填入付款人,日期、金额等信息后,将记录到支出资产状况登记表中,并且显示出经过统计之后同一天内的支出合计总额。

㈡,用户对系统的要求

1.信息要求:

用户能查询到上面提到的家庭财务的所有相关信息,包括单独的家庭收入信息、支出信息,还可以多表联查,以得出总的财产状况。

家庭收入和家庭支出的登记和核算,并能够完成相应的统计处理。

在登记过程中要家庭成员如实进行填报,不能越级填报,不能越权填报,但所有家庭成员都能够查询一段时间内的家庭总收入、家庭总支出和家庭现有资金情况。

在统计过程中主要完成:

支出项目的分项汇总统计,同期对比分析等比较过程。

2.处理要求:

系统在用户进行登录时,能根据用户输入的账号和密码与用户信息登记表中的数据进行配对,配对成功即可登录到系统页面中,配对不成功则提示该账号不存在或密码错误,请重新输入。

当用户发现过去输入的收支记录有错误时,可以对其进行添加、修改以及删除,例如某账号中,李明今天发了3000元工资,则可在收入模块中添加记录,填写好日期、收款人为李明、项目为工资、金额3000元。

 

3.安全性与完整性要求

安全性要求:

(1)系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用。

完整性要求:

(1)各种信息记录的完整性;

(2)各种数据间相互的联系的正确性;

(3)相同的数据在不同记录中的一致性。

㈢、系统功能的设计和划分

根据如上得到的用户需求,我们将本系统按照所能完成的功能分成以下几个模块:

1.处理用户登录

2.用户可以记录家庭收入信息

3.用户可以记录家庭支出信息

4.用户可以对以上信息进行查询并查询总的财务状况

㈣,数据流图

收入分数据流图

用户在登录家庭财务管理系统之后,点击增加按钮,选择收入栏,便会弹出对话框,用户将收入信息(日期、收入金额、收款人、项目)填写好,点击确认,收入信息将自动存入收入资产登记表中。

用户可以点击收入按钮,即提出收入查询请求,系统则会将数据库中的收入资产信息显示给用户。

收入分数据流图:

用户在登录家庭财务管理系统之后,点击增加按钮,选择支出栏,便会弹出对话框,用户将支出信息(日期、支出金额、付款人、项目)填写好,点击确认,支出信息将自动存入支出资产登记表中。

用户可以点击左侧的支出按钮,即提出支出查询请求,系统则会将数据库中的支出资产信息显示给用户。

如图2-2

支出分数据流图:

支出查询请求

支出信息

 

总数据流图:

 

登录信息

登录情况

用户信息

 

㈤,数据字典

1.数据项

 

 

 

 

家庭收入数据字典

 

 

 

 

属性名

存储代码

类型

长度

备注

收入编号

收入编号

char

5

同一天以内的收入编号

项目

项目

char

10

收入来源

收入金额

收入金额

int

20

收入金额

日期

日期

char

15

收入的时间

家庭支出数据字典

 

 

 

 

属性名

存储代码

类型

长度

备注

支出编号

支出编号

char

5

同一天以内的支出编号

项目

项目

char

10

支出去向

支出金额

支出金额

int

20

支出金额

日期

日期

char

15

支出的时间

用户数据字典

 

 

 

 

属性名

存储代码

类型

长度

备注

编号

编号

char

8

登录者编号

姓名

姓名

char

20

登录者姓名

性别

性别

char

20

登录者性别

生日

生日

datetime

20

登录者的出生年月日

身份

身份

char

20

登录者再次家庭中的身份

账号

账号

char

20

登录账号

密码

密码

char

20

登录密码

2.数据结构

 

数据结构名

组成

家庭收入信息

收入编号,项目,金额,日期

家庭支出信息

支出编号,项目,金额,日期

用户信息

编号,姓名,性别,生日,身份,账号,密码

3.数据流

 

 

 

数据流名

数据流来源

数据流去向

组成

收入登记信息

用户

收入资产状况登记表

收入信息

收入查询信息

收入状况登记表

用户

收入信息

收入查询请求

用户

收入查询

收入查询请求

支出登记信息

用户

支出资产状况登记表

支出信息

支出查询信息

支出状况登记表

用户

支出信息

支出查询请求

用户

支出查询

支出查询请求

登录信息

用户

用户登录

登录信息

用户信息

用户信息登记表

用户登录

用户信息

登录情况

用户登录

用户

登录情况

4.数据存储

 

 

 

数据存储名

输入的数据流

输出的数据流

组成

收入资产状况登记表

收入信息

收入信息

收入信息

支出资产状况登记表

支出信息

支出信息

支出信息

用户信息登记表

用户信息登录信息

登录情况

用户信息登录信息登录情况

5.处理过程

 

 

处理过程名

输入数据流

输出数据流

收入登记

收入信息

收入信息

收入查询

收入信息查询请求

收入信息

支出登记

支出信息

支出信息

支出查询

支出信息查询请求

支出信息

用户登录

登录信息用户信息

登录情况

二.概念结构设计

收入ER图:

如下图所示,家庭收入这个实体共有两个属性,分别是收入金额以及收入的项目(来源),其与实体用户的联系:

收入,又有两个属性,分别是日期和编号。

支出ER图:

如图下所示,家庭支出这个实体共有两个属性,分别是支出金额以及支出的项目(去向),其与实体用户的联系:

支出,又有两个属性,分别是日期和编号

总的ER图:

 

三.数据库结构设计

家庭成员

属性名

数据类型

可否为空

含义

完整性约束

jno

char

编号

主码

jname

varchar(10)

姓名

jsex

char

(1)

性别

jbirth

datetime

生日

jshenfen

varchar(10)

身份

jnumber

char(20)

账户

jpassword

char(20)

密码

收入

属性名

数据类型

可否为空

含义

完整性约束

jno

char(6)

收入编号

主码

srdate

datetime

日期

srtype

char(18)

项目

srmoney

Money

可以

金额

属性名

数据类型

可否为空

含义

完整性约束

jno

char(6)

支出编号

主码

zcdate

datetime

日期

zctype

varchar(10)

项目

zcmoney

Money

可以

金额

支出

四.逻辑及物理设计

关系模式:

家庭成员(编号,姓名,生日,性别,身份,账号,密码)

家庭收入(收入编号,日期,收款人,项目,金额)

家庭支出(支出编号,日期,付款人,项目,金额)

(下划线标注的属性为主码)

数据库相关语句:

--创建数据库

createdatabasejtlicai

--创建家庭成员情况表

createtablejt_xx

jnochar(8)primarykey,

jnamevarchar(10)notnull,

jbirthdatetimecheck(jbirth>='1900'andjbirth<='2100'),

jsexchar

(2)check(jsex='男'orjsex='女'),

jshenfenchar(4)check(jshenfen='爸爸'orjshenfen='妈妈'orjshenfen='儿子'orjshenfen='女儿'),

jnumberchar(20),

jpasswordchar(20),

--在家庭信息表中插入数据成员

insertintojt_xxvalues('01','李**','1957-03-03','男','爸爸','000000','000000')

insertintojt_xxvalues('02','葛**','1957-3-3','女','妈妈','111111','111111')

insertintojt_xxvalues('03','李沫','1988-5-8','男','儿子','222222','222222')

insertintojt_xxvalues('04','李丽','1990-1-3','女','女儿','333333','333333')

--查看家庭成员情信息表

select*fromjt_xx运行结果实际操作哦。

--创建家庭收入情况表

createtablejt_sr

srtypechar(18),

srmoneymoneynull,

srdatedatetimecheck(srdate>='1900'andsrdate<='2100'),

jnochar(8)notnullreferencesjt_xx(jno),

--foreingekey(jno)referencesjt_xx(jno),

primarykey(srtype,jno)

--在jt_sr信息表中插入数据成员

select*fromjt_sr

insertintojt_srvalues('基本月工资',5000,'2011-12-3','01')

insertintojt_srvalues('基本月工资',5000,'2011-12-3','02')

insertintojt_srvalues('基本月工资',0000,'2011-12-3','03')

insertintojt_srvalues('基本月工资',0000,'2011-12-3','04')

--查看家庭收入情况表

select*fromjt_sr运行结果实际操作哦。

droptablejt_sr--删除家庭收入情况表

--创建家庭支出情况表

createtablejt_zc

zctypechar(18),

zcmoneymoneynull,

zcdatedatetimecheck(zcdate>='1900'andzcdate<='2100'),

jnochar(8)notnullreferencesjt_xx(jno),

--foreingekey(jno)referencesjt_xx(jno),

primarykey(zctype,jno)

--在jt_zc信息表中插入数据成员

insertintojt_zcvalues('烟酒',50,'2011-6-2','01')

insertintojt_zcvalues('基本消费',30,'2011-6-2','02')

insertintojt_zcvalues('生活费',150,'2011-6-1','03')

insertintojt_zcvalues('购物',150,'2011-6-1','04')

--查看家庭支出情况表

select*fromjt_zc运行结果实际操作哦。

droptablejt_zc

--创建一个全集视图

createviewjt_shitu

as

selecta.jno,a.jname,a.jbirth,a.sex,a.shenfen,srtype收入方式,srmoney收入多少,srdate收入日期,zctype支出方式,zcmoney支出多少,zcdate支出日期

fromjt_xxa,jt_srb,jt_zcc

wherea.jno=b.jnoandb.jno=c.jnoanda.jno=c.jno

select*fromjt_shitu--显示视图

dropviewjt_shitu--删除全局试图代码

--创建计算家庭成员中任意一个人的月收入金额的函数

createfunctiondbo.f1(@mint)

returnsmoney

as

begin

declare@resultmoney

set@result=(selectsum(srmoney)fromjt_sr

wheresrmoney=@m)

return@result

end

selectdbo.f1(5000)--显示月收入金额

--利用相同上面的方法,创建计算家庭成员中任意一个人的月支出金额的函数

Createfunctiondbo.f2(@mint)

Returnsmoney

As

Begin

Declare@resultmoney

Set@result=(selectsum(zcmoney)fromjt_zc

Wherezcmoney=@m)

return@result

end

selectdbo.f1(5000)

数据库的存储

--创建一个全部的存储过程

createprocproc1

@jnochar

(2)

as

selecta.*,srtype收入方式,srmoney收入多少,srdate收入日期,zctype支出方式,zcmoney支出多少,zcdate支出日期,

@jnofromjt_xxa,jt_srb,jt_zcc

wherea.jno=b.jnoanda.jno=c.jnoanda.jno=@jno

execproc1'05'

05是新增的成员,注意这里不能是家庭信息表里不存在的成员

--统计家庭中的总收入

createprocproc2

@aint

as

ifnotexists(select*fromjt_sr

wheresrmoney=null)

begin

selectsum(srmoney)fromjt_sr

wheresrmoney=@a

end

else

print'统计收入不成功'

execproc25000

--创建插入新数据成员的存储过程

在上述表中插入一个数据我们用的是简单的语句insertintojt_srvalues('基本月工资',5000,'2011-2-3','01'),但是我们要在插入的同时存储个记录,这样我们的工作就更难了,两种方式对比,我们更需要的是在插入的同时存储该数据或者数据库,所以我们要利用数据库变量的方法来实现。

下面我们在家庭收入表中插入新数据成员的存储过程:

createprocproc4

@srtypechar(18),@srmoneymoney,@srdatedatetime,@jnochar

(2)

as

ifnotexists(select*fromjt_srwheresrmoney=@srmoneyandsrdate=@srdateandjno=@jno)

insertintojt_sr(srtype,srmoney,srdate,jno)

values(@srtype,@srmoney,@srdate,@jno)

else

print'存在相同的记录,插入不成功'

execproc4'奖金',3000,'2011-4-6','01'

select*fromjt_sr

触发器的建立

触发器是一种特殊的存储过程,该存储过程响应特定的事件,触发器的执行是自动的,可以通过数据库中相关的表进行层叠更改,也可以强制限制可以使用check约束所定义的,与check约束不同的引用其他表中的列。

下面我们就利用这些属下做一个简单的例子:

如果用户删除了家庭信息表(jt_xx)的某个成员,在其他两个表(jt_sr,jt_zc)中应用了它中的jno列属性,而引发了触发器delete,家庭收入(jt_sr)和支出表(jt_zc)中该成员的所有记录也相映的跟着删除.

-创建delete触发器

createtriggerdeletecaonjt_xx

fordelete

as

declare@jnovarchar

(2)

select@jno=jnofromdeleted

deletefromjt_zcwherejt_zc.jno=@jno

go

select*fromjt_xx

deletefromjt_xxwherejt_xx.jno=01

select*fromjt_zc

五.总结

通过本次的课程设计,让我更熟练地掌握了数据库,让我了解了什么是SQL Sever 数据库,以及怎么去见SQL Sever数据库,在数据库中要注意的事项,像表的建立和视图的建立,它们可以用SQL Sever企业管手工操作,也可以用SQL语句在查询分析器里操作,但我们主要的实现后者并掌握;还有我们学到了多种数据的添加,通过语句两种不听方式的插入:

一种是在表中利用insertinto表明values(参数)简单的的插入数据信息,另一种是在存储的过程插入数据成员信息。

还有我们应当注意的是数据库用户之间的权限以及设置,有的用户只能看不能操作,有的用户可有操作却打不开数据,这些都是没有注册情况下设置用户的属性,即建立书库用户登入里设置。

还有数据的还原以及存储,都是非常重要的操作,让我增长了许多知识。

熟悉了一个管理系统的运用和操作,能够用SQL语言创建基本表和增加信息,删除信息,修改信息,查询信息。

我面对编程过程中出现错误的程序没有退缩和放弃,而是更加努力地寻找解决方法,虚心请教老师和同学,这也给了我很大的动力。

总之,这次课程设计为我们提供了一个相互学习的平台,为更好地学习这门课程提供了环境和基础,使我们更加全身心的投入了一次设计,能学以致用,对我们来说是意义非凡的。

我所选择的是设计一个家庭理财管理系统,对家庭各成员的财务收入、支出,进行增加、删除、修改、查询。

这对我来说是一次尝试与创新的过程,也可以说是一个挑战的过程,毕竟以前没有作过,缺少经验。

现在利用自己学到的知识设计并制作一个家庭理财管理系统,这本身就是一个知识转化为生产力的过程,所以大家都很兴奋。

在具体的设计与实施中,我看到并感受到了一个管理系统从无到有的过程,对具体的设计步骤、思路、方法、技巧都有了进一步的了解,并感受深刻。

在设计中我们基本能按照规范的方法和步骤进行,首先对现有的系统进行调查,并查阅有关资料,最后确定设计方案,然后设计并制作,实施过程中我们深刻的认识到认真执行管理系统软件标准的重要性,我们由于对管理系统软件相关的标准和规范不太了解,缺少行为操作准则,所以在设计中手法比较生硬,主与次也没能很好把握住,这些方面通过这次我们都要加强了解。

六.参考资料

[1]王珊,萨师煊.数据库系统概论(第四版).北京:

高等教育出版社,2006.05

[2]罗运模.完全掌握SQLServer2000.北京:

人民邮电出版社,2001

[3]白尚旺.PowerDesigner软件工程技术.北京:

电子工业出版社,2004

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1