一本糊涂账(Java 基础实战项目)
- 1. 项目简介
- 1. 需要知识
- 2. 设计思想
- 3. 模块功能
- 2. 开发流程
- 1. 表结构设计
- 2. entity类和dao类的实现
- 3. service 层的实现
- 3. 完整代码
1. 项目简介

1. 需要知识
- 面向对象、字符串数字、日期
- 异常、集合、JDBC、反射机制、I/O、Swing、利用 TableModel 更新数据、图形界面的皮肤
- 图标 chart 动态生成、数据库的备份与恢复、自定义圆形进度条
2. 设计思想
- 单例模式
- 面板类与监听器类松耦合
- Entity 层设计
- Service 层设计
3. 模块功能
消费一览
统计本月的消费总数,今日消费,日均消费,本月剩余,日均可用,距离月末有多少天。
同时使用一个环形进度条,这个环形进度条不是JDK自带的,需要自己设计,并且随着消费用度,颜色从绿色渐变为红色。

记一笔

消费分类管理

月度消费报表

设置预算和数据库路径
在设置页面,设置本月的预算金额。

备份数据


恢复数据

2. 开发流程
1. 表结构设计
在开始整个软件开发之前,一定是事先进行表结构设计。
把表有哪些字段搞清楚,表与表之间的关系理顺。
同时还要校验这样的表结构,是否能够支撑功能上的需要。
比如在消费一览中需要的各种数据,应该以什么样的方式去设计这些表,才能够支撑页面上的数据显示。
在专门的表结构设计章节里,会把每张表列出来,每个字段的意义,类型,限制。 表与表之间的关系,一对多关系,多对一关系如何确定与设计。主键约束,外键约束等等信息。
步骤 1 : 首先创建数据库
数据库名定为hutubill,在程序中的JDBC相关代码,都需要连接这个数据库名 hutubill
步骤 2 : 确定需要哪些表
根据业务上的需要,一共要3个表
- 配置表信息 config 用于保存每月预算和Mysql的安装路径( 用于备份还原用)
- 消费分类表 category 用于保存消费分类,比如餐饮,交通,住宿
- 消费记录表 record 用于存放每一笔的消费记录,并且会用到消费分类
步骤 3 : 配置信息表 config
配置信息表 config有如下字段
主键,每个表都有一个主键 类型是 int
配置信息按照键值对的形式出现 ,类型是varchar(255)
配置信息的值, 类型是 varchar(255)
- 键值对
进一步解释一下键值对,比如要存放每个月的预算,则需要在config表中增加一条记录,key=“budget” value=“500”,就表示预算是500. - varchar(255) 表示变长字符,如果实际存放只有30个字符,那么在数据库中只占用30的空间,最多占用255
- key 是关键字,不适合用于作为字段名,所以在key后面加了一个下划线 key_ 就不会有任何问题了,识别性一样很好,一眼就知道这个字段是干什么用的
- 有多种存储引擎,MyISAM和InnoDB是其中常用的两种, 他们之间的区别很多,如果要展开讲,就需要专门的章节了。 这里使用ENGINE=InnoDB 是因为后续要使用的外键约束只有在InnoDB中才生效。
- 表示该表按照UTF-8的编码存放中文
讯享网
步骤 4 : 消费分类表 category
消费分类表 category 有如下字段
主键,每个表都有一个主键 类型是 int
分类的名称,类型是varchar(255)
步骤 5 : 消费记录表 record
消费记录表 record 有如下字段:
主键,每个表都有一个主键 类型是 int
本次花费,类型是int
对应的消费分类表的中记录的id, 类型是int
备注,比如分类是娱乐,但是你希望记录更详细的内容,啪啪啪,那么就存放在这里。
日期,本次记录发生的时间。
讯享网
步骤 6 : 添加主键
每个表都应该有主键,主键约束自带非空和唯一性属性。
表示修改表category
增加约束
约束名称 pk 是primary key的缩写,category是表名, id表示约束加在id字段上。约束名称是可以自己定义的,你可以写成abc,但是尽量使用好的命名,使得一眼就能够看出来这个约束是什么意思。 能够降低维护成本。
约束类型是主键约束
表示约束加在id字段上
步骤 7 : 设置id为自增长
设置id为自增长是常用的插入数据策略。 换句话说,插入消费分类数据的时候,只用提供分类名称即可,不需要自己提供id, id由数据库自己生成。
表示修改表category
表示修改字段 id
修改后的id是 int类型,并且是auto_increment(修改之前仅仅是int类型,没有auto_increment)
步骤 8 : 外键
外键约束的作用是保持数据的一致性
比如增加一条消费记录,金额是500,cid是5。
但是cid=5在分类表category中找不到对应的数据,那么这就破坏了数据的一致性,会带来一系列的后续问题,比如根据分类进行统计,就会找不到这条数据。
修改表record
增加约束
约束名称fk_record_category,fk是foreign key的缩写, 表示是从record表指向category表的约束。 与主键一样,约束名称也是可以自己定义的,比如写成abc. 不过依然建议使用可读性好的命名方式。
约束类型,外键
本表record的字段 cid 指向category表的字段id
数据库表格的设计,也可以采用数据库管理工具的可视化面板直接进行设计
2. entity类和dao类的实现
以 category 为例
3. service 层的实现
service 主要是对 entity 类的业务进行封装
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/5965.html