当前位置:文档之家› 个人记账系统

个人记账系统

数据库课程设计报告课程设计题目:个人记账管理系统学生姓名:付鹏亮 专 班 学 业:软件工程 软件工程 级:10211113 号:1021111305指导教师:邓薇 邓薇2011 年 11 月 25 日4东华理工大学个人记账管理系统数据库的设计与实现 实验时间:2011.11.21实验时间:2011.11.21-2011.11.25 实验地点: 实验地点:软件楼 306 室 实验目的: 实验目的:通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决并能设计一个实际问题, 进一步掌握数据库原理的 相关理论和数据库的设计实现过程, 进一步提高学生的分析问题和解 决问题的能力以及学生的动手能力。

实验要求: 实验要求:1.对各个系统进行系统功能需求分析 2. 数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的设计,画出 数据库的 E-R 图(局部和整体 E-R 图) 3. 设计出详细的逻辑数据库结构, 将各个实体和联系转化为相应的二维表即关系模式, 指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定 4. 通过企业管理器或是查询分析器实现各个二维关系(建议最好用 SQL 代码实现), 要求建立相关的索引 5. 根据系统功能需求设计相应的查询视图 6. 要求根据系统功能需求建立存储过程 7. 根据功能需求建立相应的触发器以保证数据的一致性 8. 通过建立用户和权限分配实现数据库一定的安全性,考虑数据库的备份与恢复(此 内容选作)实验思路: 实验思路:一.个人记账管理系统需求分析 个人记账管理系统需求分析本系统具有如下功能模块: 本系统具有如下功能模块: (1). 系统管理模块:支出信息和收入信息查询。

支出信息以表格的形式展 示,输入要查询的时间段,表内就会展示该时间段内的支出信息。

收入信息查询 与支出信息查询类似。

(2). 基本信息管理模块:对家庭成员、支出、收入信息进行管理,可以进 行添加、修改和删除基本信息。

3(3). 收支统计模块:对收支信息进行管理,可以结算所求时间段的收入和 支出总额,同时可以计算出余额。

Ⅰ.需求分析阶段的目标. 需求分析阶段的目标.1.录入家庭成员信息; 2.给定家庭成员姓名,显示每位成员的收入情况; 3.给定家庭成员姓名,显示每位成员的支出情况; 4.对家庭人员信息进行维护;5.对支出和收入项目进行维护。

Ⅱ.需求分析阶段的任务. 需求分析阶段的任务. 1.处理对象 1.处理对象系统要处理的对象包括家庭成员信息、收入信息、支出信息、 汇总收支信息四个方面,各个信息包括如下信息 1) 家庭成员信息:包括 家庭人员、年龄、职业、政治面貌,可以方便家庭成员信息的维护; 2) 收入信息:包括收入日期、收入项目、收入金额、收入人员, 可以方便收入信息的维护; 3) 支出信息:包括支出日期、支出项目、支出金额、支出人员, 可以方便支出信息的维护。

4) 汇总收支信息:包括登录时间、收支金额、收支项目、收支 人员,可以方便收入和支出明细。

2.处理功能要求 2.处理功能要求系统主要完成以下几个功能: 1.家庭人员信息维护;32.支出和收入项目维护; 3. 家庭人员的支出明细; 4. 家庭人员的收入明细;3.安全性和完整性要求 3.安全性和完整性要求安全性先通过试图机制,不同的用户只能访问系统授权的视图, 这样可以满足系统数据一定程度上的安全性,在通过用户授权机制, 用用户登入来识别用户级,根据这个级别来分配用户权限,达到更高 层次的安全保密功能。

安全性要求用于描述学生基本信息、课程基本信息及教师基本 信息的数据项能否为 NULL,以及一些用户自定义是否符合实际要求。

实验过程: 实验过程:概念设计阶段. 二.概念设计阶段. ⒈学分管理系统的实体关系图及 E—R 图.3politeageprofpersoFamilytime收 入支 出timeitemitemmoneIncomeoutcomemoneRela 输 入 输 入RelapersopersotimeAccountitemType 计 算 Relamoneperso逻辑设计阶段. 三.逻辑设计阶段.3图转换为关系模型: 将 E-R 图转换为关系模型: family:( person,age,polite,prof) Account:(iotime,iomoney,ioitem,ioperson) outcome:(time,money,item,person) income: (time,money,item,person)income(收入信息表) income(收入信息表) 收入信息表time 2011.11.2 1 2011.11.2 2 2011.11.2 3 item 工资 money 200 person 父母 父母 父母工资和卖垃圾 250 工资和奖金 400outcome(支出信息表) outcome(支出信息表) 支出信息表time 2011-11-21 2011-11-22 2011-11-23 item 家用 家用和买书 家用和游玩 mone y 80 120 200 person 母亲 母亲和儿子 父母和儿子family(家庭成员信息表) family(家庭成员信息表) 家庭成员信息表Person 父亲 母亲 儿子 age 40 37 14 polite 党员 党员 团员 Prof 教师 教师 学生3Account(汇总收支信息表) Account(汇总收支信息表) 汇总收支信息表iotime ioitem iomeney ioperson 3000 3500 3400 父母 父母和儿子 父母2011-11-21 工资和家用 2011-11-22 工资和游玩 2011-11-23 工资和奖金2011-11-24 工资和买书3200父母和儿子数据库实施阶段. 四.数据库实施阶段.1.创建表: 1.创建表: 创建表create table family ( person char(20), age int, polite char(20), prof char(20)) create table account ( iotime char(20), iomoney int, ioitem char(20), ioperson char(20)) create table outcome ( time char(20), money int, item char(20), person char(20)) create table income ( time char(20), money int, item char(20), person char(202.创建触发器,保证数据一致性: 2.创建触发器,保证数据一致性: 创建触发器4create trigger de_outcome on outcome for delete as declare @new_time char(20) declare @new_item char(20) declare @new_money int declare @new_person char(20) select @new_time=time from deleted select @new_item=item from deleted select @new_money=money from deleted select @new_person=person from deleted delete from account where iotime=@new_time and ioitem=@new_item and iomoney=@new_money and ioperson=@new_person exec sp_help de_outcome create trigger in_out on outcome for insert as declare @new_time char(20) declare @new_item char(20) declare @new_money int declare @new_person char(20) select @new_time=time from deleted select @new_item=item from deleted select @new_money=money from deleted select @new_person=person from deleted insert into account(time,money,item,person) values (@new_time,@new_money,@new_item,@new_person) exec sp_help in_outcome create trigger up_outcome on outcome for update as declare @new_time char(20) declare @new_item char(20) declare @new_money int declare @new_person char(20) declare @old_time char(20) declare @old_item char(20)declare @old_money int declare @old_person char(20) update account set iotime=@new_time where iotime=@old_time update account set iomoney=@new_money where iomoney=@old_money update account set ioitem=@new_item where ioitem=@old_item update account set ioperson=@new_person where ioperson=@old_person exec sp_help up_outcome create trigger de_income on income for delete as declare @new_time char(20) declare @new_item char(20) declare @new_money int declare @new_person char(20) select @new_time=time from deleted select @new_item=item from deleted select @new_money=money from deleted select @new_person=person from deleted delete from account where iotime=@new_time and iomoney=@new_money and ioitem=@new_item and ioperson=@new_person exec sp_help de_income create trigger in_in on income for insert as declare @new_time char(20) declare @new_item char(20) declare @new_money int declare @new_person char(20) select @new_time=time from inserted select @new_item=item from inserted select @new_money=money from inserted select @new_person=person from inserted insert into account(iotime,iomoney,ioitem,ioperson) values(@new_time,@new_money,@new_item,@new_person) exec sp_help in_income create trigger up_incomeon income for update as declare @new_time char(20) declare @new_item char(20) declare @new_money int declare @new_person char(20) declare @old_time char(20) declare @old_item char(20) declare @old_money int declare @old_person char(20) select @old_time=time from deleted select @old_item= item from deleted select @old_money=money from deleted select @old_person=person from deleted select @new_time=time from inserted select @new_item=item from inserted select @new_money=money from inserted select @new_person=person from inserted update account set iotime=@new_time where iotime=@old_time update account set iomoney=@new_money where iomoney=@old_money update account set ioitem=@new_item where ioitem=@old_item update account set ioperson=@new_person where ioperson=@old_person exec sp_help up_income create trigger up_family on family for update as declare @new_person char(20) declare @old_person char(20) select @new_person=person from inserted select @old_person=person from deleted update income set person=@new_person where person=@old_person update outcome set person=@new_person where person=@old_person exec sp_help up_family3.创建存储过程,实现功能要求: 3.创建存储过程,实现功能要求: 创建存储过程create procedure in_outcome ( @new_time char(20), @new_item char(20),@new_money int, @new_person char(20)) as insert into outcome values(@new_time,@new_item,@new_money,@new_person)exec in_outcome @new_time='2011.11.24',@new_item= 资,@new_money=200,@new_person='父母'工create procedure in_income ( @new_time char(20), @new_item char(20), @new_money int, @new_person char(20)) as insert into income values(@new_time,@new_item,@new_money,@new_person)exec in_income @new_time='2011.11.24',@new_item= 资,@new_money=200,@new_person='父母'工4.创建视图 4.创建视图create view sub_T as select time,item,money,person from income select * from sub_T5.创建索引: 5.创建索引:create index S on outcome(time,item,money,person)select * from outcome实验总结: 实验总结:通过这次课程设计的实际调查与操作,我了解了目前记账管理的现 状,学习并掌握了记账管理系统的设计思路,以及相应 SQL 语言的编 写,同时,可以熟练运用流程控制语句来完成一些较为复杂的设计, 存储过程和触发器也基本掌握, 视图和索引的功能也有了相当程度的了解。

相关主题