1、数据库原理及应用课程设计报告题目: 家庭理财专家 班级: 1020562 学号: 20 姓名: 武普泉 指导老师: 刘宇君 提交时间: 2012-12-30 一、 需求分析1. 系统需求与功能分析a). 课题背景: 近几年来,随着我国城乡居民收入的增加和生活水平的提高,家庭理财已成为人们居家过日子的重要内容。社会学家细心的观察到,时下家庭的财务管理比之计划经济年代,开始发生微妙的变化。现在的城乡家庭生活发生了明显的变化,人们的收入逐渐拉开档次,消费水平也高了。大多数家庭关注的是提高生活质量,一方面精打细算,量入为出,把钱用在刀刃上;另一方面保证适当的娱乐活动、社会交际、智力开发等方面的开支。为
2、此,不少家庭就有中长期财务预算,有基本建设规划。总的来说,家庭收入必须以量入为出为原则,以财产保值增值为目标,处理好积累与消费的关系。因此,开发一个家庭财务管理系统具有很强的实用性,能够达到对家庭财务合理有效的管理。b). 用户功能: 用户登录,进入本系统,弹出密码对话框,提示用户输入密码,登录本系统。 类别维护,用户可以增加日常收入、日常支出的类别,并且可以删除相应的类别。 日常收入,用户可以按照日常收入日期、金额、类别、备注进行数据的增加。 日常支出,用户可以按照日常支出日期、金额、类别、备注进行数据的增加。 收入支出统计,按照一定的数据查询条件,用户可以对数据进行统计。 计算器,可以对活
3、期存款、定期存款进行相应的计算,求其增长值。 收入查询,用户可以输入相应的查询条件进行数据查询,并且可以删除相应的数据。 支出查询,支出查询类似于收入查询,同样可以进行查询、删除操作。 个人信息,用户可以增加自己的个人信息,同时可以修改登录密码。2. 数据库需求和分析a). 数据结构(数据库中表的设计)收入类别信息(收入类别,收入类别说明)收入信息(收入编号,收入类别,日期,金额,备注)支出类别信息(支出类别,支出类别信息)支出信息(支出编号,支出类别,日期,金额,备注)家庭成员信息(称呼,姓名,密码,用户名,生日)b).数据项具体设置(建议放到数据库实施中)编号 标识符 类型 长度 所属表名
4、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
5、10 支出信息16 支出金额 int * 支出信息17 支出说明 vchar 50 支出信息二、 概念结构设计1. 流程图(系统功能模块图)家 庭 理 财 专 家验 证 密 码收 入 支 出 统 计 存 款 计 算 器 收 入 支 出 查 询收 入 支 出 插 入 个 人 信 息类 别 维 护收入类别维护支出类别维护收入插入数据收入统计活期存款计算器收入查询支出插入数据支出统计定期存款计算器支出查询个人信息维护2. 数据库概念结构设计(E-R 模型:注意标出是哪种联系)a).收入类别信息: 收入类别信息收入类别 收入类别说明b).收入信息: 收入信息收入编号收入类别日期金额备注c).支出类别信
6、息: 支出类别信息支出类别 支出类别说明d).支出信息: 支出信息支出编号支出类别日期金额备注e).家庭成员信息: 家庭成员信息称呼姓名密码用户名生日f). 综合以上 E-R 图模型,得出整个系统的 E-R 关系图:收入类别信息 支出类别信息查询收入信息查询支出信息管理 管理用户信息 管理活期账户信息管理定期账户信息用户信息活期存取款信息用户信息管理管理管理 管理三、 逻辑结构设计1. 由 E-R 图转化的关系模式为:收入类别信息(收入类别,收入类别说明)收入信息(收入编号,收入类别,日期,金额,备注)支出类别信息(支出类别,支出类别信息)支出信息(支出编号,支出类别,日期,金额,备注)家庭成
7、员信息(称呼,姓名,密码,用户名,生日)2. 对关系模式进行规范化在收入类别信息表中,收入类别为码,收入类别说明完全依赖于码,不存在部分依赖和传递依赖,达到第三范式;收入信息表中,收入编号为码,其他信息完全依赖于码,不存在部分依赖和传递依赖,达到第三范式;在支出类别信息表中,支出类别为码,支出类别说明完全依赖于码,不存在部分依赖和传递依赖,达到第三范式;支出信息表中,支出编号为码,其他信息完全依赖于码,不存在部分依赖和传递依赖,达到第三范式;家庭成员信息表中,用户名为码,其他信息完全依赖于码,不存在部分依赖和传递依赖,达到第三范式;3. 数据库的完整性和安全性作何考虑?安全性:有两种角色:老妈
8、和普通家庭成员。其中,老妈可以查看和修改任何表,拥有所有权限;普通家庭成员可以修改自己的信息,其他表只有查询功能。完整性:按照表间的关系做了完整性约束、触发器和存储过程。四、 物理结构设计1.数据库设计: 首先需要对整个系统的数据库进行设计,本系统总共包括 5 张表,分别为收入类别信息表、支出类别信息表、收入信息表、支出信息表以及家庭成员信息表。a).收入类别信息表: 用于记录日常收入类别的相关信息,主要字段有日常收入类别名称、日常收入类别的说明信息,具体设计如图:b).收入信息表: 用于记录日常收入数据的相关信息,主要字段有:日常收入日期、金额、类别、备注,具体设计如图:c).支出类别信息表
9、: 用于记录日常支出类别的相关信息,主要字段有:日常支出类别名称、日常支出类别的说明信息,具体设计如图:d).支出信息表: 用于记录日常支出数据的相关信息,主要字段有:日常支出日期、金额、类别、备注,具体设计如图:e).家庭成员信息表: 用于记录用户个人信息数据的相关信息,主要字段有:用户名、称呼、姓名、密码、生日,具体设计如图:五、 数据实施和维护1. 数据库的代码-建表-收入类别信息表create table IncomeCate(Icategory varchar(10) primary key,say varchar(50)-收入信息表create table Income(id in
10、t 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 =2400select * from
11、 Expense order by imoney desc-视图-为收入类别中的补助类建立视图create view BuZhu_Incomeasselect icategory,imoney,idate,isayfrom Incomewhere icategory=补助select * from BuZhu_Income-视图-为收入类别中的补助类建立视图create view BuZhu_Incomeasselect icategory,imoney,idate,isayfrom Incomewhere icategory=补助select * from BuZhu_Income-为支出类
12、别中的学习类建立视图(在左侧视图文件夹下完成)select * from Study_Expense-约束use LiCaicreate table PersonalInfo(Id int,Isex char(2)constraint C1 check(Isex in(男,女),Ibirthday varchar(10)constraint C2 check(Ibirthday like %-%-%),Iage intconstraint C3 check(Iage0 and Iage0)alter table PersonalInfoadd constraint sex_default de
13、fault 男 for Isex-触发器create trigger cate_delete on IncomeCatefor delete asdeclare BIcategory varchar(10)print使用delete触发器级联删除Income表中相关的行select BIcategory=Icategory from deletedprint 删除的类别:+BIcategorydelete Income where Income.icategory=BIcategorygo-测试delete from IncomeCate where Icategory=小费create tr
14、igger ex_cate_delete on ExpenseCatefor delete asdeclare BIcategory varchar(10)select BIcategory=Icategory from deletedprint 删除的类别:+BIcategorydelete Expense where Expense.icategory=BIcategory-存储过程create procedure P_BuZhu asselect icategory,imoney,idate,isayfrom Income where icategory=补助exec P_BuZhu-在
15、Expense数据库中,建立一个存储过程,统计消费大于等于的记录个数create procedure P_Expense nint outputasselect n=COUNT(*) from Expense where imoney=100declare n intexec P_Expense n outputprint convert(varchar(5),n)2. 系统模块a).收入和支出类别维护: b).添加收入和支出信息: c).定期和活期存款计算: d).收入记录查询: e).支出记录查询: 六、 总结和建议本课程设计是利用 Android 开发的,系统功能已经基本实现。但同时也存
16、在很多不足的地方,比如整个系统还可以添加更多功能,外观上可以做进一步调整和修饰,以及用户资料的保密性和安全性还没有考虑周全。这次课程设计,由于自己在知识、经验方面都存在着很多不足;另外,在整个过程中忙于复习,没有充足的时间来跟老师和同学沟通。因此,系统必然会存在一些缺陷和不足。因为对家庭财务管理的整个流程不太熟悉,在需求分析时未能做到完全满足用户的需求,以致缺少了一些必要功能。经过这次课程设计,我深刻体会到要做好一件完整的事情,需要有系统的思维方式和方法,对待一个新的问题,要有耐心,善于运用已有的资源来充实自己。同时我也深刻地认识到,对待一个新事物时,一定要从整体考虑,完成一部之后再做下一步,这样对于系统而言才更加有效。通过这次设计,我不仅对 Android 和 SQL Server 2008 有了深刻的认识,积累了使用软件工程的思想来开发软件的经验,最重要的是摸索出了一套考虑问题和解决问题的方法,这对于我将来走上工作岗位受益匪浅。实践出真知,这次课程设计使我得以将数据库、软件工程课程中所学的理论知识得以充分运用。理论和实践相结合,动手能力得以很大的提高。开发一个良好的系统需要丰富的知识,由于水平有限,系统不够完善,期待进一步改进。七、 参考文献1.数据库系统概论 2.Android 应用案例开发大全