项目源码
密码:1111
1、项目要求
设计一个图像化界面来完成基本消费记录。要求要有以下几个模块。
- 消费一览:统计本月的消费总数,今日消费,日均消费,本月剩余,日均可用,距离月末有多少天。同时使用一个环形进度条,这个环形进度条不是JDK自带的,需要自己设计,并且随着消费用度,颜色从绿色渐变为红色。
- 记一笔:记录本日的消费额度, 分类下拉框从 消费分类数据中读取,并且把经常消费的分类放在前面。日期默认选中今天,也可以手动指定日期。
- 消费分类管理:对消费进行经典的CRUD 增删改查管理,同时显示一个分类下的消费次数。这里涉及到多表关系:消费记录和消费分类是多对一关系。
- 月度消费报表:使用第三方chart类生成柱状报表,显示本月的消费趋势。
- 设置预算和数据库路径:在消费一览中需要显示本月可能多少金额,都是建立在预算的基础上的。在设置页面,设置本月的预算金额。后续的还原和备份,都需要用到数据库的命令mysql和mysqldump,需要在这里配置mysql的安装目录 。
- 备份数据:把数据库中的所有数据,备份到.sql文件中 。
- 恢复数据:根据.sql文件还原数据库 。
2、基本思想
创建一个JFrame,在JFrame中上面添加一个工具条,中间添加一个工作面板。把上面的每个模块设计分别设计为一个JPanel,通过点击工具条上的相应按钮,将相对应的JPanel显示到工作面板中。
* 消费一览:通过数据库中的数据计算后显示到标签,环进度条布局,统计消费进度
* 记一笔:JTextField、JComboBox设计表单,JButton提交表单
* 消费分类管理:通过数据库数据统计出不同分类的次数,JTable 2列来显示数据,JButton新增按钮添加新的分类
* 月度消费报表:调用chart包生成统计图
* 设置预算和数据库路径:表单,指定本月预算和mysql的安装目录,JButton提交表单
* 备份数据:JButton触发事件,备份数据库的数据
* 恢复数据:JButton触发事件,恢复数据
3、环进度条
继承JPanel然后重写paint方法,通过drawArc方法实现环形进度条,drawString实现环形进度条中百分之多少。
将传入的paint方法的参数Graphics转为Graphics2D调用
setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
开启抗锯齿。
4、统计图
调用了com.objectplanet.chart
jar包实现的条形统计图
5、数据库设计
6、工作面板中切换当前显示的面板
每点击工具条上的按钮就调用工作面板的show方法,show后在调用update方法从数据库中获取最新的数据,显示到面版上。
public void show(JComponent p) {
this.c = p; //记录当前显示在工具面板中的面板
Component[] cs = getComponents();//获取此容器中的所有组件
for (Component c : cs) {
remove(c);//移除此容器中的所有组件
}
add(p);添加到面板
if (p instanceof WorkingPanel)
((WorkingPanel) p).updateData();
this.updateUI();
}