家庭理财系统数据库课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库原理及应用课程设计报告
题目:家庭理财专家
班级: 1020562
学号: 20
:武普泉
指导老师:宇君
提交时间: 2012-12-30
一、需求分析
1.系统需求与功能分析
a).课题背景:
近几年来,随着我国城乡居民收入的增加和生活水平的提高,家庭理财已成为人们居家过日子的重要容。
社会学家细心的观察到,时下家庭的财务管理比之计划经济年代,开始发生微妙的变化。
现在的城乡家庭生活发生了明显的变化,人们的收入逐渐拉开档次,消费水平也高了。
大多数家庭关注的是提高生活质量,一方面精打细算,量入为出,把钱用在刀刃上;另一方面保证适当的娱乐活动、社会交际、智力开发等方面的开支。
为此,不少家庭就有中长期财务预算,有基本建设规划。
总的来说,家庭收入必须以量入为出为原则,以财产保值增值为目标,处理好积累与消费的关系。
因此,开发一个家庭财务管理系统具有很强的实用性,能够达到对家庭财务合理有效的管理。
b).用户功能:
●用户登录,进入本系统,弹出密码对话框,提示用户输入密码,登录本系统。
●类别维护,用户可以增加日常收入、日常支出的类别,并且可以删除相应的
类别。
●日常收入,用户可以按照日常收入日期、金额、类别、备注进行数据的增加。
●日常支出,用户可以按照日常支出日期、金额、类别、备注进行数据的增加。
●收入支出统计,按照一定的数据查询条件,用户可以对数据进行统计。
●计算器,可以对活期存款、定期存款进行相应的计算,求其增长值。
●收入查询,用户可以输入相应的查询条件进行数据查询,并且可以删除相应
的数据。
●支出查询,支出查询类似于收入查询,同样可以进行查询、删除操作。
●个人信息,用户可以增加自己的个人信息,同时可以修改登录密码。
2.数据库需求和分析
a).数据结构(数据库中表的设计)
收入类别信息(收入类别,收入类别说明)
收入信息(收入编号,收入类别,日期,金额,备注)
支出类别信息(支出类别,支出类别信息)
支出信息(支出编号,支出类别,日期,金额,备注)
家庭成员信息(称呼,,密码,用户名,生日)
b).数据项具体设置(建议放到数据库实施中)
二、概念结构设计
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.数据库的代码
--建表
--收入类别信息表
create table IncomeCate
(Icategory varchar(10)primary key,
say varchar(50)
)
--收入信息表
create table Income
(id int primary key,
idate char(10),
icategory varchar(10),
imoney int,
isay varchar(50),
foreign key (icategory)references IncomeCate(Icategory)
)
--增删改查
delete from Income where isay like'大一下学期%'
insert into Income values(6,'2011-05-17','补助',2400,'大一下学期助学金') update Income set imoney=1200 where imoney=2400
select*from Expense order by imoney desc
--视图
--为收入类别中的补助类建立视图
create view BuZhu_Income
as
select icategory,imoney,idate,isay
from Income
where icategory='补助'
select*from BuZhu_Income
--视图
--为收入类别中的补助类建立视图
create view BuZhu_Income
as
select icategory,imoney,idate,isay
from Income
where icategory='补助'
select*from BuZhu_Income
--为支出类别中的学习类建立视图(在左侧视图文件夹下完成)
select*from Study_Expense
--约束
use LiCai
create table PersonalInfo
(Id int,
Isex char(2)
constraint C1check(Isex in('男','女')),
Ibirthday varchar(10)
constraint C2check(Ibirthday like'%-%-%'),
Iage int
constraint C3check(Iage>0 and Iage<100),
Iblood varchar(5)
constraint C4check(Iblood in('A型','B型','O型','AB型')), Iprovince varchar(20),
Icity varchar(20),
Iemail varchar(30)
constraint C5check(Iemail like'%@%'),
Ioldpwd varchar(10)
constraint C6not null,
constraint PInfoKey primary key(Id)
)
alter table PersonalInfo
drop constraint C3
alter table PersonalInfo
add constraint C3check(Iage>0)
alter table PersonalInfo
add constraint sex_default default'男'for Isex
--触发器
create trigger cate_delete on IncomeCate
for delete as
declare@BIcategory varchar(10)
print'使用delete触发器级联删除Income表中相关的行'
select@BIcategory=Icategory from deleted
print'删除的类别:'+@BIcategory
delete Income where Income.icategory=@BIcategory
go
--测试
delete from IncomeCate where Icategory='小费'
create trigger ex_cate_delete on ExpenseCate
for delete as
declare@BIcategory varchar(10)
select@BIcategory=Icategory from deleted
print'删除的类别:'+@BIcategory
delete Expense where Expense.icategory=@BIcategory
--存储过程
create procedure P_BuZhu as
select icategory,imoney,idate,isay
from Income where icategory='补助'
exec P_BuZhu
--在Expense数据库中,建立一个存储过程,统计消费大于等于的记录个数
create procedure P_Expense@n
int output
as
select@n=COUNT(*)from Expense
where imoney>=100
declare@n int
exec P_Expense@n output
print convert(varchar(5),@n)
2.系统模块
a).收入和支出类别维护:
b).添加收入和支出信息:
c).定期和活期存款计算:
d).收入记录查询:
e).支出记录查询:
六、总结和建议
本课程设计是利用Android开发的,系统功能已经基本实现。
但同时也存在很多不足的地方,比如整个系统还可以添加更多功能,外观上可以做进一步调整和修饰,以及用户资料的性和安全性还没有考虑周全。
这次课程设计,由于自己在知识、经验方面都存在着很多不足;另外,在整个过程中忙于复习,没有充足的时间来跟老师和同学沟通。
因此,系统必然会存在一些缺陷和不足。
因为对家庭财务管理的整个流程不太熟悉,在需求分析时未能做到完全满足用户的需求,以致缺少了一些必要功能。
经过这次课程设计,我深刻体会到要做好一件完整的事情,需要有系统的思维方式和方法,对待一个新的问题,要有耐心,善于运用已有的资源来充实自己。
同时我也深刻地认识到,对待一个新事物时,一定要从整体考虑,完成一部之后再做下一步,这样对于系统而言才更加有效。
通过这次设计,我不仅对Android 和SQL Server 2008有了深刻的认识,积累了使用软件工程的思想来开发软件的经验,最重要的是摸索出了一套考虑问题和解决问题的方法,这对于我将来走上工作岗位受益匪浅。
实践出真知,这次课程设计使我得以将数据库、软件工程课程中所学的理论知识得以充分运用。
理论和实践相结合,动手能力得以很大的提高。
开发一个良好的系统需要丰富的知识,由于水平有限,系统不够完善,期待进一步改进。
七、参考文献
1.数据库系统概论
2.Android应用案例开发大全。