1、课程设计报告课程设计题目:家庭财务管理系统专业:信息工程班级:13学号:2014学生姓名 : 指导教师 : 一、需求分析a)背景分析近几年来,随着我国城乡居民收入的增加和生活水平的提高,家庭理财已成为人们居家过日子的重要内容。社会学家细心的观察到,时下家庭的财务管理比之计划经济年代,开始发生微妙的变化。现在的城乡家庭生活发生了明显的变化,人们的收入逐渐拉开档次,消费水平也高了。大多数家庭关注的是提高生活质量,一方面精打细算,量入为出,把钱用在刀刃上;另一方面保证适当的娱乐活动、社会交际、智力开发等方面的开支。为此,不少家庭就有中长期财务预算,有基本建设规划。总的来说,家庭收入必须以量入为出为原
2、则,以财产保值增值为目标,处理好积累与消费的关系。因此,开发一个家庭财务管理系统具有很强的实用性,能够达到对家庭财务合理有效的管理。b)功能分析据功能分析图得出需要设计的表:(1)用户基本信息:用户编号,用户姓名,性别,出生日期,职业;(2)收入基本信息:用户编号,用户姓名,记录日期,收入类型,收入金额,备注;(3)支出基本信息:用户编号,用户姓名,记录日期,支出类型,支出金额,备注。二、数据库设计与实施a)流程图b)数据字典数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。利用 SQL Server 2008 建立“FcManage ”数据库,
3、其基本表清单及表结构描述如下:数据库中用到的表:数据库表名 关系模式名称 备注YHB 用户表 用户信息表SR 收入表 收入信息表ZC 支出表 支出信息表YHB 基本情况数据表,结构如下:字段名 字段类型 Not Null 说明ID Char Primary key,Not Null 用户编号Name char Not Null 用户姓名Sex char Not Null 性别bithdate char Not Null 出生日期zhy char Not Null 职业SR 数据表,结构如下:字段名 字段类型 约束控制 说明ID Char Not Null 用户编号Name char Not N
4、ull 用户姓名b_Date char not null 时间Type char null 收入类型Amount money null 收入金额Comment char null 备注ZC 情况数据表,结构如下:字段名 字段类型 约束控制 说明ID char Not Null 用户编号Name char Not Null 用户姓名b_Date char not null 时间Type char null 支出类型Amount money null 支出金额Comment char null 备注c)ER 图d)创建数据库及相关sql 代码如下1.数据库CREATE DATABASE FcMan
5、ageONPRIMARY(NAME=FcManage_DATA,FILENAME=D: FcManage_DATA.mdf,size=10MB,MAXSIZE=50MB,FILEGROWTH=5)LOG ON(NAME=FcManage_log,FILENAME=D: FcManage_log.ldf,size=5MB,MAXSIZE=25MB,FILEGROWTH=5)2.表use FcManagegocreate table SR(ID nchar(20) not null,Name nchar(15) not null,b_Date nchar(15) not null,Type nch
6、ar(15) null,Amount money null,Comment nchar(50) null)create table YHB(ID nchar(20) not null,Name nchar(15) not null,Sex nchar(2) null,birthday money null,zhy nchar(10) null)create table ZC(ID nchar(20) not null,Name nchar(15) not null,b_Date nchar(15) not null,Type nchar(15) null,Amount money null,C
7、omment nchar(50) null)3.视图use FcManagegocreate view zzcasselect SUM(Amount) as 总支出from ZC ,YHB WHERE YHB.ID =ZC .ID use FcManagegocreate view zsrasselect SUM(Amount) as 总收入from SR ,YHB WHERE YHB.ID =SR .ID use FcManagegocreate view YEasselect 总收入 -总支出 as 余额from zzc ,zsr use FcManagegocreate view YHS
8、Rasselect YHB.ID ,YHB .Name,SR.b_Date ,SR.Type ,SR.Amount ,SR.Comment from YHB,SR WHERE YHB.ID =SR.ID use FcManagegocreate view YHZCasselect YHB.ID ,YHB .Name,ZC.b_Date ,ZC.Type ,ZC.Amount ,ZC.Comment from YHB,ZC WHERE YHB.ID =ZC.ID4.索引Use FcManagegocreate index aaon SR(b_Date)Use FcManagegocreate i
9、ndex bbon ZC(b_Date)5.存储Use FcManagegocreate procedure getSRdata(ID nchar(20) ,Name nchar(15) ,b_Date nchar(15) ,Type nchar(15) ,Amount money,Comment nchar(50)=无 )ASInsert into SR values(ID,Name,b_Date,Type,Amount,Comment)create procedure getZCdata( ID nchar(20) ,Name nchar(15),b_Date nchar(15),Type
10、 nchar(15),Amount money,Comment nchar(50)=无)ASInsert into ZC values(ID,Name,b_Date,Type,Amount,Comment)create procedure getYHBdata( ID nchar(20),Name nchar(15),Sex nchar(2),birthday money,zhy nchar(10)=无)ASInsert into YHB values(ID,Name,Sex,birthday,zhy)CREATE PROCEDURE deleteYHBdata( ID nchar(20)As
11、Delete from YHB where ID=ID6.触发器保证在SR表中添加新数据时, YHB表中存在该IDcreate trigger wheninsertSRdataon SRafter insertasif exists( select * from inserted where ID in (select ID from YHB)Print 添加成功!ElseBeginPrint 用户表中没有该成员的基本信息,拒绝插入! Rollback transactionEnd保证在ZC表中添加新数据时,YHB表中存在该IDcreate trigger wheninsertZCdataon
12、 ZCafter insertasif exists( select * from inserted where ID in (select ID from YHB)Print 添加成功!ElseBeginPrint 用户表中没有该成员的基本信息,拒绝插入! Rollback transactionEnd删除 YHB 中数据时,SR 表中对应数据也被删除create trigger whendeleteYHBdataSRon YHBafter deleteasdelete from IDwhere SR.IDin (select ID from deleted)删除 YHB 中数据时,ZC 表
13、中对应数据也被删除create trigger whendeleteYHBdataZCon YHBafter deleteasdelete from IDwhere ZC.IDin (select ID from deleted)7.备份Backup Database FcManageTo disk=d:FcManage_full.bakBackup Log FcManageTo disk=d:FcManage_Log.bak三、总结通过本次课程设计发现这其中需要的一些知识都是我们没有接触过的,去图书馆查资料的时候才发现我们前面所学到的仅仅是皮毛,还有很多需要我们掌握的东西我们根本不知道。同时
14、也发现很多已经学过的东西我们没有理解到位,不能灵活运用与实际,不能很好的用来解决问题,这就需要我们不断的大量实践,通过不断的自学,不断的发现问题,思考问题,进而解决问题。在这个过程中我们将深刻理解所学知识,同时也可以学到不少很实用的东西。很多东西都没有那么简单,尤其是看起来简单的东西往往越麻烦,我们能做到的就是好好设计细心操作,因为在程序开发过程中,往往已经设计好的程序得到结果不是自己想要的,只好抛弃从头开始,也有是因为自己敲错了一个代码,导致程序出现问题,反反复复修改半天才发现原来就是那么一定小毛病,而就是这点小毛病花费了自己半天时间。所以在程序开发的时候,我们要做的是好好的规划,根据需求一步步设计好程序,按照自己的设计来开发程序,同时在程序开发过程中要注重细心,稳重,出现错误也不要慌,认认真真的该,错误总会有消除的时候,不是有句话说好的软件都是一步一步修改出来的吗?一周时间很快就过去了,本次数据库课程设计也快结束了,我们也有了各自的劳动成果,我们不仅仅是有自己的设计成果,还提高了本分设计能力。同时也有部分不足,在以后的学习生活中一步步将这些不足解决掉。