家庭理财系统数据库课程设计报告.docx
《家庭理财系统数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《家庭理财系统数据库课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
家庭理财系统数据库课程设计报告
数据库原理及应用
课程设计报告
题目:
家庭理财专家
班级:
1020562
学号:
20
*************
*******
提交时间:
2012-12-30
一、需求分析
1.系统需求与功能分析
a).课题背景:
近几年来,随着我国城乡居民收入的增加和生活水平的提高,家庭理财已成为人们居家过日子的重要内容。
社会学家细心的观察到,时下家庭的财务管理比之计划经济年代,开始发生微妙的变化。
现在的城乡家庭生活发生了明显的变化,人们的收入逐渐拉开档次,消费水平也高了。
大多数家庭关注的是提高生活质量,一方面精打细算,量入为出,把钱用在刀刃上;另一方面保证适当的娱乐活动、社会交际、智力开发等方面的开支。
为此,不少家庭就有中长期财务预算,有基本建设规划。
总的来说,家庭收入必须以量入为出为原则,以财产保值增值为目标,处理好积累与消费的关系。
因此,开发一个家庭财务管理系统具有很强的实用性,能够达到对家庭财务合理有效的管理。
b).用户功能:
●用户登录,进入本系统,弹出密码对话框,提示用户输入密码,登录本系统。
●类别维护,用户可以增加日常收入、日常支出的类别,并且可以删除相应的类别。
●日常收入,用户可以按照日常收入日期、金额、类别、备注进行数据的增加。
●日常支出,用户可以按照日常支出日期、金额、类别、备注进行数据的增加。
●收入支出统计,按照一定的数据查询条件,用户可以对数据进行统计。
●计算器,可以对活期存款、定期存款进行相应的计算,求其增长值。
●收入查询,用户可以输入相应的查询条件进行数据查询,并且可以删除相应的数据。
●支出查询,支出查询类似于收入查询,同样可以进行查询、删除操作。
●个人信息,用户可以增加自己的个人信息,同时可以修改登录密码。
2.数据库需求和分析
a).数据结构(数据库中表的设计)
收入类别信息(收入类别,收入类别说明)
收入信息(收入编号,收入类别,日期,金额,备注)
支出类别信息(支出类别,支出类别信息)
支出信息(支出编号,支出类别,日期,金额,备注)
家庭成员信息(称呼,姓名,密码,用户名,生日)
b).数据项具体设置(建议放到数据库实施中)
编号
标识符
类型
长度
所属表名
1
用户名
vchar
15
家庭成员
2
密码
vchar
20
家庭成员
3
称呼
vchar
10
家庭成员
4
姓名
vchar
10
家庭成员
5
生日
char
10
家庭成员
6
收入类别
vchar
10
收入类别信息,收入信息
7
收入类别说明
vchar
50
收入类别信息
8
收入编号
int
*
收入信息
9
收入日期
char
10
收入信息
10
收入金额
int
*
收入信息
11
收入说明
vchar
50
收入信息
12
支出类别
vchar
10
支出类别信息,支出类别
13
支出类别说明
vchar
50
支出类别信息
14
支出编号
int
*
支出信息
15
支出日期
char
10
支出信息
16
支出金额
int
*
支出信息
17
支出说明
vchar
50
支出信息
二、概念结构设计
1.流程图(系统功能模块图)
2.数据库概念结构设计(E-R模型:
注意标出是哪种联系)
a).收入类别信息:
b).收入信息:
c).支出类别信息:
d).支出信息:
e).家庭成员信息:
f).综合以上E-R图模型,得出整个系统的E-R关系图:
三、逻辑结构设计
1.由E-R图转化的关系模式为:
收入类别信息(收入类别,收入类别说明)
收入信息(收入编号,收入类别,日期,金额,备注)
支出类别信息(支出类别,支出类别信息)
支出信息(支出编号,支出类别,日期,金额,备注)
家庭成员信息(称呼,姓名,密码,用户名,生日)
2.对关系模式进行规范化
在收入类别信息表中,收入类别为码,收入类别说明完全依赖于码,不存在部分依赖和传递依赖,达到第三范式;
收入信息表中,收入编号为码,其他信息完全依赖于码,不存在部分依赖和传递依赖,达到第三范式;
在支出类别信息表中,支出类别为码,支出类别说明完全依赖于码,不存在部分依赖和传递依赖,达到第三范式;
支出信息表中,支出编号为码,其他信息完全依赖于码,不存在部分依赖和传递依赖,达到第三范式;
家庭成员信息表中,用户名为码,其他信息完全依赖于码,不存在部分依赖和传递依赖,达到第三范式;
3.数据库的完整性和安全性作何考虑?
安全性:
有两种角色:
老妈和普通家庭成员。
其中,老妈可以查看和修改任何表,拥有所有权限;普通家庭成员可以修改自己的信息,其他表只有查询功能。
完整性:
按照表间的关系做了完整性约束、触发器和存储过程。
四、物理结构设计
1.数据库设计:
首先需要对整个系统的数据库进行设计,本系统总共包括5张表,分别为收入类别信息表、支出类别信息表、收入信息表、支出信息表以及家庭成员信息表。
a).收入类别信息表:
用于记录日常收入类别的相关信息,主要字段有日常收入类别名称、日常收入类别的说明信息,具体设计如图:
b).收入信息表:
用于记录日常收入数据的相关信息,主要字段有:
日常收入日期、金额、类别、备注,具体设计如图:
c).支出类别信息表:
用于记录日常支出类别的相关信息,主要字段有:
日常支出类别名称、日常支出类别的说明信息,具体设计如图:
d).支出信息表:
用于记录日常支出数据的相关信息,主要字段有:
日常支出日期、金额、类别、备注,具体设计如图:
e).家庭成员信息表:
用于记录用户个人信息数据的相关信息,主要字段有:
用户名、称呼、姓名、密码、生日,具体设计如图:
五、数据实施和维护
1.数据库的代码
--建表
--收入类别信息表
createtableIncomeCate
(Icategoryvarchar(10)primarykey,
sayvarchar(50)
)
--收入信息表
createtableIncome
(idintprimarykey,
idatechar(10),
icategoryvarchar(10),
imoneyint,
isayvarchar(50),
foreignkey(icategory)referencesIncomeCate(Icategory)
)
--增删改查
deletefromIncomewhereisaylike'大一下学期%'
insertintoIncomevalues(6,'2011-05-17','补助',2400,'大一下学期助学金')
updateIncomesetimoney=1200whereimoney=2400
select*fromExpenseorderbyimoneydesc
--视图
--为收入类别中的补助类建立视图
createviewBuZhu_Income
as
selecticategory,imoney,idate,isay
fromIncome
whereicategory='补助'
select*fromBuZhu_Income
--视图
--为收入类别中的补助类建立视图
createviewBuZhu_Income
as
selecticategory,imoney,idate,isay
fromIncome
whereicategory='补助'
select*fromBuZhu_Income
--为支出类别中的学习类建立视图(在左侧视图文件夹下完成)
select*fromStudy_Expense
--约束
useLiCai
createtablePersonalInfo
(Idint,
Isexchar
(2)
constraintC1check(Isexin('男','女')),
Ibirthdayvarchar(10)
constraintC2check(Ibirthdaylike'%-%-%'),
Iageint
constraintC3check(Iage>0andIage<100),
Ibloodvarchar(5)
constraintC4check(Ibloodin('A型','B型','O型','AB型')),
Iprovincevarchar(20),
Icityvarchar(20),
Iemailvarchar(30)
constraintC5check(Iemaillike'%@%'),
Ioldpwdvarchar(10)
constraintC6notnull,
constraintPInfoKeyprimarykey(Id)
)
altertablePersonalInfo
dropconstraintC3
altertablePersonalInfo
addconstraintC3check(Iage>0)
altertablePersonalInfo
addconstraintsex_defaultdefault'男'forIsex
--触发器
createtriggercate_deleteonIncomeCate
fordeleteas
declare@BIcategoryvarchar(10)
print'使用delete触发器级联删除Income表中相关的行'
select@BIcategory=Icategoryfromdeleted
print'删除的类别:
'+@BIcategory
deleteIncomewhereIncome.icategory=@BIcategory
go
--测试
deletefromIncomeCatewhereIcategory='小费'
createtriggerex_cate_deleteonExpenseCate
fordeleteas
declare@BIcategoryvarchar(10)
select@BIcategory=Icategoryfromdeleted
print'删除的类别:
'+@BIcategory
deleteExpensewhereExpense.icategory=@BIcategory
--存储过程
createprocedureP_BuZhuas
selecticategory,imoney,idate,isay
fromIncomewhereicategory='补助'
execP_BuZhu
--在Expense数据库中,建立一个存储过程,统计消费大于等于的记录个数
createprocedureP_Expense@n
intoutput
as
select@n=COUNT(*)fromExpense
whereimoney>=100
declare@nint
execP_Expense@noutput
printconvert(varchar(5),@n)
2.系统模块
a).收入和支出类别维护:
b).添加收入和支出信息:
c).定期和活期存款计算:
d).收入记录查询:
e).支出记录查询:
六、总结和建议
本课程设计是利用Android开发的,系统功能已经基本实现。
但同时也存在很多不足的地方,比如整个系统还可以添加更多功能,外观上可以做进一步调整和修饰,以及用户资料的保密性和安全性还没有考虑周全。
这次课程设计,由于自己在知识、经验方面都存在着很多不足;另外,在整个过程中忙于复习,没有充足的时间来跟老师和同学沟通。
因此,系统必然会存在一些缺陷和不足。
因为对家庭财务管理的整个流程不太熟悉,在需求分析时未能做到完全满足用户的需求,以致缺少了一些必要功能。
经过这次课程设计,我深刻体会到要做好一件完整的事情,需要有系统的思维方式和方法,对待一个新的问题,要有耐心,善于运用已有的资源来充实自己。
同时我也深刻地认识到,对待一个新事物时,一定要从整体考虑,完成一部之后再做下一步,这样对于系统而言才更加有效。
通过这次设计,我不仅对Android和SQLServer2008有了深刻的认识,积累了使用软件工程的思想来开发软件的经验,最重要的是摸索出了一套考虑问题和解决问题的方法,这对于我将来走上工作岗位受益匪浅。
实践出真知,这次课程设计使我得以将数据库、软件工程课程中所学的理论知识得以充分运用。
理论和实践相结合,动手能力得以很大的提高。
开发一个良好的系统需要丰富的知识,由于水平有限,系统不够完善,期待进一步改进。
七、参考文献
1.数据库系统概论
2.Android应用案例开发大全