批注家庭理财系统.docx
《批注家庭理财系统.docx》由会员分享,可在线阅读,更多相关《批注家庭理财系统.docx(16页珍藏版)》请在冰豆网上搜索。
![批注家庭理财系统.docx](https://file1.bdocx.com/fileroot1/2022-11/24/a9aa84bc-d717-476d-994f-1db7c9d4a93a/a9aa84bc-d717-476d-994f-1db7c9d4a93a1.gif)
批注家庭理财系统
《数据库课程设计》
家庭理财系统
学生姓名:
学 号:
系别:
班级:
专业:
计算机科学与技术
指导教师:
陈林
2010年6月16日
目录
第一章引言1
第二章需求分析2
2.1数据流图2
2.2数据字典3
第三章概念结构设计7
3.1局部概念结构设计7
3.2全局概念结构设计7
第四章逻辑结构设计9
4.1E-R图向关系模型的转换9
4.2数据模型的优化9
第五章物理结构设计11
5.1索引的建立11
5.2数据库的存储结构11
第六章数据实施和维护12
6.1建立数据库12
6.2建立表12
6.2.1建立用户信息表12
6.2.2建立财务表13
6.2.3建立收支关系表13
6.3基本功能的实现13
6.3.1建立存储过程命名为sfinance,用于插入finance表数据的存储过程:
13
6.3.2建立存储过程someone用于查询按一定时间单个成员的收入情况:
14
6.3.3建立存储过程allusers用于查询按一定时间全体成员的收入情况:
14
6.3.4建立存储过程maxin目的查询按一定时间收入金额最多的成员信息:
14
6.3.5建立存储过程minin目的查询按一定时间收入金额最少成员信息:
15
6.4授权15
6.4.1用户用密码登陆系统15
6.4.2给admin用户授权16
6.5建立索引16
6.5.1在成员表的多个字段建立索引16
6.5.2在财务表的多个字段建立多个索引16
总结17
参考文献18
致谢18
第一章引言
家庭和企业是社会的细胞,就所看到的情况来看,我们一向对企业的财务与金融给予相当的相当的重视,家庭则被忽略。
但是,随着家庭收入和财富的增长以及市场的各种不确定性越来越大并且越来越影响到家庭的各种行为,家庭理财(储蓄与投资)变得受重视了。
而且,人人都知道,在现代社会里要维持一个家庭并不容易,尤其是能使一个家庭过上好日子更不容易。
因为过日子不可避免地要涉及必要的经济负担,一个家庭若没有起码的经济能力以负担各种家庭的需求,家庭势必解体,家庭成员也无法在家庭内生存下去。
如何管理好家庭经济,是维系一个家庭及过好日子的至关重要问题,因此,家庭理财是摆在每个家庭面前不可忽视的重要课题。
多年以来,人们都使用传统的方式记录或管理家庭或自己的财务情况。
这种管理和记录方式不仅不便于长期保存,也存在着不可避免的缺点,如效率太低、保密性太差。
时间一长,伴随着居民收入水平的提高和居民各种消费和收入的多样性,家庭理财所需要的信息就会越来越多,就会产生大量的文件和数据,这样就会对查阅、更新、保存等方面都产生不少的困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已经逐渐被人们认识并掌握。
如果使用计算机对家庭理财信息进行管理具有传统手工管理所无法比拟的优点。
如:
统计方便、查询容易、可靠性高、保密性好、更新方便等。
这些优点能极大地提高家庭理财管理的效率,大大降低居民在信息管理精力上的投入,更加合理地分配手中的财产。
因此,开发一个能够管理家庭内部各种财务信息的家庭理财系统是一件十分必要的事情。
第二章需求分析
随着社会的发展,人们对理财观念的提升,现在绝大多数家庭都想通过一种科学的方法,将自己的剩余资金组织起来,以便应对即将发生的突发事件,如:
生病,子女上学,买房等大项目的开支!
然而,人们发现往往计划赶不上变化,有限的资金总在不经意间被花掉。
人们如何控制手中有限的资金不被用在一次次不必要的消费上呢?
因此家庭理财软件应运而生,用户通过家庭理财系统,可以了解自己或整个家庭的收入及消费情况,从中可以直观的看到有哪些是是不必要的支出,从而达到理财的目的。
此次我所做的课题是家庭理财系统,它将实现以下几个功能:
●家庭财务总监负责家庭各成员信息管理及密码管理,以及家庭财务总监本人的收入、支出等管理。
●家庭各成员身份验证后负责其自身的收入、支出等帐务管理,包括时间信息、金额、来源或用途等信息。
●家庭各成员均可以按时间等条件查看全家或某成员的收入、支出、余额等统计信息,可以按时间查看收入、支出、余额最多和最少的成员信息。
2.1数据流图
数据流图(DDF)是表达数据和处理之间的关系的方法,如图2.1所示。
图2.1数据流图
数据流图表达了数据和处理之间的关系,数据字典则是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。
2.2数据字典
数据字典(DD)通常包括数据项、数据结构、数据流、数据存储和处理过程5个部分。
其中数据项是数据的最小组成单位,若干个数据项可以组成一个数据结构,数据字典通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容。
表2.1数据项的组成
数据项名
数据项含义说明
数据类型
数据长度
id
家庭成员的身份证号
char
20
username
家庭成员的姓名
char
10
password
密码
char
10
ch
家庭成员的称呼
char
8
call
家庭成员的电话号码
char
20
cbirth
家庭成员的生日
char
10
zjno
资金编号
char
10
data
资金流入、流出时间
char
10
mone
流通金额
varchar
50
typ
收支类型
char
4
way
获得或使用资金的方式
char
10
表2.2数据结构的组成
数据结构名
含义
组成
users
家庭成员信息表
家庭成员的身份证号、姓名、称呼、电话号码、生日、密码
finance
财务表
记账号码、资金编号、身份证号码、流入流出时间、金额、收支类型
shouzhi
收支表
记账号码、名称、收支类型
表2.3数据流的组成
数据流名
说明
数据流来源
数据流去向
登入系统
核对用户名和密码
家庭用户
功能分配
查询数据
按照用户的选择进入查询模块
功能分配
查询分类
查询支出
按照时间查询出某人或全部成员的支出
查询分类
支出清单
查询收入
按照时间查询出某人或全部成员的收入
查询分类
收入清单
查询信息库
按照时间查询出某人或自己的信息
查询分类
信息库
选择支出
进入支出模块
功能分配
写入支出
输入支出数据
输入支出清单
写入支出
支出清单
选择收入
进入收入模块
功能分配
写入收入
输入收入数据
输入收入清单内
写入收入
收入清单
信息修改
按照用户的选择进入信息修改模块
功能分配
信息修改
修改数据
将自己的信息修改后存入信息库
信息修改
信息库
家庭总监功能
只有家庭总监才能进入
功能分配
成员创建、删除
录入成员数据
将成员创建或删除
成员创建、删除
信息库
表2.4数据存储的组成
数据存储名
输入数据流
组成
支出清单
查询支出和输入支出数据
资金的编号、流出时间、金额、用途、使用方式、家庭成员的编号
收入清单
查询收入和输入收入数据
资金的编号、流入时间、金额、来源、家庭成员的编号
信息库
修改数据、录入或删除成员数据
家庭成员的身份证号、姓名、称呼、号码、生日
表2.5处理过程
处理过程名
输入
输出
处理
查询分类
查询数据
查询支出、收入、自己的信息
按照时间查出相应的结果
写入支出
选择支出功能
输入支出数据
将支出的数据存入支出清单中
写入收入
选择收入功能
输入收入数据
将收入的数据存入收入清单中
信息修改
信息修改功能
修改数据
将信息库内原有的数据进行修改
成员变动
财务总监功能
添加或删除成员数据
添加新成员或删除旧成员的数据
第三章概念结构设计
3.1局部概念结构设计
图3.1家庭成员实体属性图
图3.2财务实体属性图
3.2全局概念结构设计
每一个家庭成员都有属于自己的账户,通过对账户的“收支”来进行账户的管理。
收支中和家庭成员中的身份证号发生冲突,消除冗余;而收支和账务中的记账号码发生冲突,同理消除。
将局部概念设计的E-R图进行分析,最终得到图3.3的家庭理财系统E-R图。
m
图3.3家庭理财系统E-R图
第四章逻辑结构设计
4.1E-R图向关系模型的转换
关系模型的逻辑结构是一组关系模式的集合。
将图3.1所示的E-R图,转换为关系模型,关系的码用下划线标出。
家庭成员(身份证号,生日,姓名,称呼,电话号码,密码)
此为家庭成员对应的关系模式。
收支(记账号码,身份证号,时间,金额)
此为收支与成员之间的关系模式,主码为记账号码,身份证号,外码为记账号码,身份证号。
财务(记账号码,身份证号,收支类型,用途,金额)
此为账务的关系模式,主码为记账号码,外码为身份证号码,该关系模式包含了联系“收支”所对应的关系模式。
4.2数据模型的优化
为了进一步提高数据库应用系统的性能,还应该根据应用需要适当地修改、调整数据库的结构,这就是数据模型的优化。
对于成员的关系模式,可以将其转换为关系模式的属性集合为:
U={id,username,cbirth,ch,call,password}
根据现实世界的事实告诉我们
(1)一个身份证号码对应一个人的姓名,生日,称呼,电话,密码;
(2)一个人姓名可以对应多个身份证;
(3)一个生日可以有几个人;
(4)一个称呼对应一个身份证;
(5)一个电话对应一个身份证;
(6)一个密码对应一个身份证;
所以F={id->username,id->cbirth,id->ch,id->call,ch->id,call->id,password->id}
因为既不存在部分依赖,也不存在传递依赖,所以属于3NF,但是因为call->id因为call是非主属性,所以不属于BCNF;
对于收支的关系模式,可以将其转换为关系模式的属性集合为:
U={id,jzno,data}
根据题目要求:
F={(id,jzno)->data,(id,jzno)->mone}
因为即不存在部分依赖,也不存在传递依赖,不存在非主码依赖主码,所以属于BCNF。
对于财务的关系模式,可以将其转换为关系模式的属性集合为:
U={id,jzno,type,way}
根据题目要求:
F={}
因为即不存在部分依赖,也不存在传递依赖,所以属于3NF。
但是因为call->id,call是非主属性所以不属于BCNF。
第五章物理结构设计
数据库的物理设计通常分为两步:
1确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构。
2对物理结构进行评价,评价的重点是时间和空间效率。
5.1索引的建立
索引的选择:
①如果一个属性经常在查询条件中出现,要考虑在这个属性上建立索引。
②如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引。
5.2数据库的存储结构
选择在SQLSERVER2005上实现数据库后台设计。
MicrosoftSQLServer2005是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。
自定义窗体收集信息。
数据表示图可以使数据库一目了然,还提供了排序功能。
MicrosoftSQLServer2005也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。
根据掌握的知识,设计了一些存储过程,这些都为数据库的功能实现提供了很好的帮助,这些功能将在数据实施和维护段详细说明。
第六章数据实施和维护
用SQLSERVER2005建立数据库结构,此数据库我取名为:
familyfinance,加载(测试/虚拟)数据,能体现对数据库的保护(安全性和完整性控制等)。
实现各种查询、链接应用程序,并能对数据库做简单的维护操作。
6.1建立数据库
createdatabasefamilyfinance
6.2建立表
6.2.1建立用户信息表
createtableadmin
(adminnamechar(10)primarykey,
passwordchar(10)
)
createtableusers
(idchar(20)primarykey,
usernamechar(20),
passwordchar(10),
chchar(8),
callchar(20),
cbirthchar(10)
)
将默认的家庭财务总监admin输入到admin表中,便于今后管理员登录。
insert
intoadmin
values('admin','admin')
6.2.2建立财务表
createtablefinance
(zjnochar(10)primarykey,
datachar(10),
monevarchar(50),
typchar(4),
waychar(10)
)
6.2.3建立收支关系表
createtableshouzhi
(zjnochar(10),
idchar(20),
datachar(10),
monevarchar(50),
primarykey(zjno,id),
foreignkey(zjno)referencesfinance(zjno),
foreignkey(id)referencesusers(id)
)
6.3基本功能的实现
6.3.1建立存储过程命名为sfinance,用于插入finance表数据的存储过程:
createproceduresfinance
@zjnochar(10),
@datachar(10),
@monevarchar(50),
@typchar(4),
@waychar(10)
as
insert
intofinance
values(@zjno,@data,@mone,@typ,@way)
go
6.3.2建立存储过程someone用于查询按一定时间单个成员的收入情况:
createproceduresomeone
@datachar(10),
@usernamechar(20)
as
selectusername,ch,typ,data,mone
fromusers,finance,shouzhi,someone
wherefinance.jzno=shouzhi.jznoandusers.id=shouzhi.idandfinance.typ='收入'andshouzhi.data=@dataandusers.username=@username
6.3.3建立存储过程allusers用于查询按一定时间全体成员的收入情况:
createprocedureallusers
@datachar
as
selectusername,ch,typ,data,mone
fromusers,finance,shouzhi,allusers
wherefinance.jzno=shouzhi.jznoandusers.id=shouzhi.idandfinance.typ='收入'andshouzhi.data=@data;
6.3.4建立存储过程maxin目的查询按一定时间收入金额最多的成员信息:
createproceduremaxin
@datachar
as
selectusers.*
fromusers,finance,shouzhi,maxin
whereshouzhi.id=users.idandshouzhi.jzno=finance.jznoandfinance.typ='收入'andshouzhi.data=@dataand
shouzhi.mone=(selectmax(mone)
fromshouzhi,finance
whereshouzhi.jzno=finance.jznoand
finance.typ='收入');
6.3.5建立存储过程minin目的查询按一定时间收入金额最少成员信息:
createprocedureminin
@datachar
as
selectusers.*
fromusers,finance,shouzhi,minin
whereshouzhi.id=users.idandshouzhi.jzno=finance.jznoandfinance.typ='收入'andshouzhi.data=@data
andshouzhi.mone=(selectmin(mone)
fromshouzhi,finance,minin
whereshouzhi.jzno=finance.jznoand
finance.typ='收入')
6.4授权
6.4.1用户用密码登陆系统
createproceduredl
@usernamechar(8),
@passwordchar(10)
as
selectid
fromusers
whereid=@usernameandpassword=@password
6.4.2给admin用户授权
execsp_addlogin'mytest','123'
execsp_adduser'mytest'
grantupdate,delete
onusers
tomytest
6.5建立索引
6.5.1在成员表的多个字段建立索引
createuniqueindexidonusers(id)
6.5.2在财务表的多个字段建立多个索引
createuniqueindexdataonfinance(data)
createuniqueindexmoneonfinance(moneDESC)
总结
时光飞逝,转眼间课程设计将要结束,回想这段时间的经历,虽然很疲劳,但是我觉得很充实,很有意义,学到很多以前没有接触的知识,懂得很多以前不明白的东西。
这次课程设计是对我一学期以来所学知识的一次总结,也是一次检验,更是我对于《数据库系统概论》的一次系统的学习。
通过这次课程设计,我更进一步地学习了SQLServer2005数据库,并独立完成了本系统的构思、设计、调试及其完善,这个设计可以基本满足家庭和个人理财的需要,基本满足了用户对添加,修改删除和查询的需要。
我个人认为现在好多的理财软件都做的太复杂了,对于一般的家庭其常用到的无非就是收支记帐,所以我做的这个软件可以很好的满足他们的需要,当然我的设计中也存在着一些不足之处,比如用户的权限还不是很完善。
在课程设计中,我遇到了很多的困难。
从无从下手到思路清晰,从不断出错到正常运行,从失败到成功,我一步一个脚印,从无到有,学会了很多很多。
我想说只有不断实践才是成功的关键!
以上是我课程设计过程中取得的成绩及不足之处的总结。
通过这次课程设计,我对程序设计有了更深刻的体会,主要是要把握全局性。
参考文献
[1]《数据库系统概论》(第四版)王珊萨师煊著
[2]《SQLSERVER2000课程设计案例精编》李昆主编
致谢
本次课程设计是在指导老师陈林老师的悉心指导下完成的,在程序和实验报告册的修改上给了我很大的帮助。
陈老师知识渊博且治学严谨,对我严格要求使我受益匪浅。
他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高。
这对于我以后的学习将会有一种巨大的帮助,感谢他的耐心辅导。
感谢身边的同学们,在整个设计过程中的各个阶段给予一些意见和建议,使系统的界面更加完美,功能更加完善。
至此,本课题圆满完成,感谢**学院给予了这个学习机会,让我体会到了软件开发的乐趣。
感谢老师们尤其是我的指导老师的认真负责的教导,感谢我的同学们给予的帮助。
是这个温暖的集体成就了此系统,这将是我人生路上又一个崭新的起点。