你好我是辰兮,很高兴你能来阅读,本篇文章来和你谈谈家庭财务管理系统的设计与实现。项目基于Springboot开发,利用了Layui的前端框架和Echarts图表。很好的实现了家庭收入和开支的记录,及家庭一段时间内财务的展示。本编是设计思路阐述。
文章目录 一、摘要二、系统总体需求三、模块详情分析四、 项目小结 一、摘要随着国民经济的提高,理财成为了我们必不可少的一部分,而家庭财务系统的出现恰恰就是为了解决国民理财困难,不知财政去向,不知家庭整体的经济支出等问题。理财系统不仅可以帮助每一个家庭成员记录自己的财政状况,更进一步反应了家庭的整体营收情况。了解自己当前的收入,对未来进行合理的投资十分重要。
项目基于Springboot开发,数据库MySQL 二、系统总体需求分享心得
(1) 从系统角色分析
1、 在家庭财务管理系统设计了三个角色,其中包括系统管理员,家主,普通用户 2、系统管理员拥有最高的权限可以看到系统所有家庭所有的收入情况,财务支出情况,并且设有报表进行对比统计,同时我们还应该设置查询功能,供系统的用户查询某一个阶段的详细收支状况,用图表进行统计对比,系统管理员还可以查看到本系统所有的用户的个人信息,同时可以进行家庭角色管理等,即可以适应更复杂的家庭成员组成。 3、每一个家主和普通用户都对应唯一的家庭的id,家主也可以对家庭成员进行管理等操作。 4、普通用户只能看到和记录自己的信息,财务的增删查改。用户即家庭的成员。
ps:参考思维导图,三个角色功能相似,只是家主要能管理自己家庭成员收支情况,系统管理员能看到所有家庭的收支情况,并进行管理,同时可以实现角色管理。
(2)模块需求分析
简单的说就是: 1、收入模块和支出模块,收入支出模块要对财务进行增删改查,用表格记录。 2、主页模块和报表模块就是用Echarts图表展示,更加动态漂亮。 3、系统信息管理,系统管理员可以角色管理和信息管理,家主可以家庭信息管理。
(3)数据库的设计
在本家庭财务系统中一共设计了八张数据表。
根据财务模块设计了如上三张表 (1)type财务类型表,分为收入和支出。 (2)bill账单表 主要有账单标题,主键id,钱财,用户类型,备注,支付方式,记录时间等六个字段。 (3)Payway 支付方式类型表,为了符合现在消费场景,其中支付方式设计有支付宝,微信,银联,现金,其他等五种类别。
根据用户模块设计了五张表 (1)role 角色表 主要分为系统管理员,家主,用户等三个身份。 (2)Privilege表 主要分为 支出管理,支出详情,收入管理,收入与详情,统计报表,家庭成员管理,系统管理,用户官,角色管理,家庭成员信息等。 (3)roleprivilieges 主要是设计角色对应的权限。 (4)User 用户表 主要填写用户的账号密码,用户对应的角色,真实姓名等。 (5)House表,每个家庭有自己的家庭编号,这个系统适用于所有家庭。
三、模块详情分析(1)主页模块
为了让用户更加直观的看到情况收支情况百分比,我们这里引入了Echarts图表,做了两个相关功能,第一个是引入的是饼状图,我们从数据库中取出数据,根据对应函数计算出收支的百分比,导入饼状图中显示。第二个同样的我们取出收支状况,用折线柱状图显示对应的财务状况。这样更直观和清晰的呈现给我们用户。
首先系统会显示出你的姓名,身份(系统管理员等),登陆时间,然后会依次显示出本月收入,本月消费,本月净收入,支出方式等。这里后台的实现逻辑是,当我们登陆的时候首先会进行判断是否存在这个用户,如果存在我们会将用户的信息分别存入session和cookie。 同时我们在cookie中设置了过期时间。这样的好处也是保障用户的安全。
(2)财务支出模块
我们可以根据自己的需求,按时间,按姓名,按标题,支付方式,备注,等多个模块进行查询。这里我们运用到了Mybatis的动态SQL来实现。我们的设计思路是将要查询的东西封装成对象来进行查询。
select *, type.name type from bill left join type on bill.typeid = type.id left join payway on paywayid = payway.id left join user on bill.userid = user.id and bill.id = #{id} and userid in (select id from user where houseid = #{houseid}) and typeid = #{type} and userid = #{userid} and title = #{title} and realname = #{realname} and paywayid = #{paywayid} and time >= #{startTime} and time