基于Java基础的家庭收支记账软件
文章目录
- 前言
- 一、前期准备
- 二、整体功能
- 三、功能模块
- 四、功能浅谈
- 1、 AccountInfo 类
- 2、收支明细
- 3、登记收入/支出
- 4、 查询账单
- 五、收获
- 六、总结
前言
学习完Java基础之后,狗子我便在网上(尚硅谷)寻找了这个练手案例并对其进行了一定的改进,从而达到能够加深对Java基础的印象以及掌握,在此将其在此记录和分享给大家伙们,奥里给(٩(눈౪눈)و)
一、前期准备
在开始搞事情之前得先准备好下面这些东西,其中 JDK 和 IDE 不一定需要统一,这只是狗子我使用的版本而已。准备好之后带上我们的脑子就可以开搞啦
- 编程语言 : Java
- 运行环境 : JDK1.8
- IDE : IDEA 2020
- 储备知识 : Java基础
二、整体功能
说简单吧,也确实简单,毕竟只是一个用于巩固加深 Java基础 的一个小案例,因此,功能上我也没有做多大改动,都是一些基本功能·
三、功能模块
为了增加可读性(装13),下面的这些方法都被我封装到了 Utility
类里面去了,主要是模仿了尚硅谷的做法
| 功能名称 | 说明 | 返回值 |
|–|–|–|–|
| readMenuSelection(int maxSelection) | 用于界面菜单的选择。 | int selection
|
| readExpenseAccount(String type) | 用于用户输入限定长度为6的开销金额。 | double incomeAccount
|
| readExpenseDescription() | 用于用户输入长度不多于8的开销描述。 | String
|
| queryAccountInfo(ArrayList accountInfoList) | 用于通过开销描述查找目标账单。 | int index
|
| readConfirmSelection() | 用于退出界面的确定选择。 | boolean
|
| readKeyBoard(int limit) |用于接收键盘输入的不大于限制长度为 limit 的字符串。 | String str
|
同时附上演示过程的一小撮截图(背景不是重点)
四、功能浅谈
1、 AccountInfo 类
这是我自己封装的一个账单信息类,用来存在账单里面存在的一些字段
public class AccountInfo {public AccountInfo() {this.expensesAmount = 0;this.expenseDescription = "无";}public AccountInfo(String expensesType) {this.expensesType = expensesType;}private String expensesType; //开销种类private double expensesAmount; //开销金额private String expenseDescription; //开销说明private String expenseDate; //开销时间
}
2、收支明细
在写的时候有想过用一个固定大小的数组来对数据进行记录的,但是作为掉头发的跟班人怎么能就用这么随便的方法呢。因此便去查了一下 ArrayList
的基本用法并用其来记录账单数据,而这个模块也只是对数据的简单遍历打印(类似线性表)
System.out.println("收支明细");System.out.println("-----------------------------------------------------");System.out.println("收支\t\t收支金额\t\t收支说明\t\t开销时间");System.out.println("-----------------------------------------------------");for (int i = 0; i < accountInfoList.size(); i++) {System.out.println(accountInfoList.get(i).getExpensesType() + "\t\t¥" + accountInfoList.get(i).getExpensesAmount() + "\t\t" + accountInfoList.get(i).getExpenseDescription() + "\t\t" + accountInfoList.get(i).getExpenseDate());}System.out.println("-----------------------------------------------------");System.out.println("总开销为:¥" + totalCost);
3、登记收入/支出
这两块可以说是一个东西来的,毕竟实现的代码基本一致,由于是基本功能,所以就谈谈在这里我用到的一些不太一样的东西。
- Date类:用来记录创建账单的时间,其返回的是1970年到当前时间已经过了多少多少毫秒( Long型 )
- SimpleDateFormat类:用来格式化日期,要不然一长串数字太难看了
System.out.println("登记收入");AccountInfo accountInfo = new AccountInfo("收入");//收入金额System.out.print("请输入收入金额:");accountInfo.setExpensesAmount(Utility.readExpenseAccount("收入"));totalCost += accountInfo.getExpensesAmount();//收入描述System.out.print("请输入收入描述:");accountInfo.setExpenseDescription(Utility.readExpenseDescription());accountInfo.setExpenseDate(new SimpleDateFormat("yyyy年MM月dd日 HH:mm").format(date));//插入ArrayListaccountInfoList.add(0, accountInfo);System.out.println("登记成功!");
支出模块的类似我就不放上来了,想查看的可以到文章八月十五(屁股)那里白嫖源码查看
4、 查询账单
在查询这一块用到了自己写的 queryAccountInfo
方法,对输入账单说明进行了遍历对比,返回匹配的下标进行打印账单信息
System.out.println("查询账单");if(accountInfoList.size() == 0) {System.out.println("没有检测到数据");System.out.println("先登记账单哦");break;}System.out.print("请输入需要查到的收支说明:");int index = Utility.queryAccountInfo(accountInfoList);if(index == -1) {System.out.println("查询失败");System.out.println("请检查是否输入有误");} else{System.out.println("收支\t\t收支金额\t\t收支说明\t\t开销时间");System.out.println("-----------------------------------------------------");System.out.println(accountInfoList.get(index).getExpensesType() + "\t\t¥" + accountInfoList.get(index).getExpensesAmount() + "\t\t" + accountInfoList.get(index).getExpenseDescription() + "\t\t" + accountInfoList.get(index).getExpenseDate());}
删除的模块由于运用了查询模块进行查找删除的账单,因此两个模块基本一样,唯一不同的就是删除的需要用到
ArrayList
中的remove(int index)
进行删除
五、收获
在这里罗列一下这个花了一个晚上写的代码所得到的收获,毕竟刚进村,啥也不懂,收获也挺多的
- 对封装有了深一丢丢的理解,尤其是在编写
Utility
类的时候,没有之前学C语言那样代码辣么臃肿,在工具类中有些方法进行了多次利用 - 了解了 ArrayList 的简单运用,但还没掌握,得多来几次,杀猪刀还没锋利
- 认识到了几个新类和方法,如Date类、SimpleDateFormat类、parseInt方法、parseDouble方法等
- 简单复习了一些异常处理,毕竟在这里面用的不多,因此这一块并没有什么感觉
六、总结
掉头发这件事情你得实践了才知道你掉的质量怎么样,在学习Java甚至是任何一门语言中,只学不敲,头发也就白掉了。
最后附上代码白嫖传送门----->白嫖走起
基于Java基础的家庭收支记账软件相关推荐
- Java项目:家庭收支记账软件
目录 前言 一.任务要求 二.实现代码 总结 前言 最近花了一个星期看了JAVA经典书籍<Java核心技术卷I>,囫囵吞枣般看完,领略了其中大概内容,花时间看视频巩固一下,就去b站看了尚硅 ...
- Java开发一个家庭收支记账软件
4.请开发一个家庭收支记账软件 界面及操作过程如下所示: -----------------家庭收支记账软件----------------- 1 收支明细 2 登记收入 3 登记支出 4 退 出 请 ...
- 用Java写一个家庭收支记账软件
需要的内容有:收支明细.登记收入.登记支出和退出四个模块.并且能进入每个功能里面. 最好用的方式是用数组实现这个软件,可以是二维数组,也可以是一维数组,直接附上源码. import java.util ...
- java基础(家庭收支记账软件)
家庭收支记账软件 目标 模拟实现一个基于文本界面的<家庭记账软件> 掌握初步的编程技巧和调试技巧 主要涉及以下知识点: 变量的定义 基本数据类型的使用 循环语句 分支语句 方法声明.调用和 ...
- java家庭收支记账软件
说明: 这篇文章主要运用了一些java基础知识的一个综合运用 主要涉及以下知识点: 变量的定义 基本数据类型的使用 循环语句 分支语句 方法声明.调用和返回值的接收 简单的屏幕 ...
- 家庭收支记账软件--Java
家庭收支记账软件–Java 需求描述: 模拟实现基于文本界面的<家庭记账软件>. 该软件能够记录家庭的收入.支出,并能够打印收支明细表. 项目采用分级菜单方式.主菜单如下: 需求说明: 假 ...
- Java实现家庭收支记账软件
题目来自于尚硅谷基础项目1,其中没有使用项目提供的现成的方法 测试类 package test;import face.MainInterFace; import code.*; public cla ...
- 家庭收支记账软件(Java简易版)
设计一个 家庭收支记账软件 需求说明 模拟实现基于文本界面的<家庭记账软件> 该软件能够记录家庭的收入.支出,并能够打印收支明细表. 项目采用分级菜单方式.主菜单如下: 分析 需要使用Sc ...
- eclipse编写的Java家庭收支记账软件
eclipse编写的Java家庭收支记账软件 界面及操作过程如下所示: -----------------家庭收支记账软件----------------- 1 收支明细 2 登记收入 3 登记支出 ...
最新文章
- c语言保存后怎么打开文件,保存打开文件之后,怎么也不能在显示函数中出来。。...
- python语法学习第十天--魔法方法
- 带aidl文件的应用程序在android平台源码中的编译
- 自动驾驶 9-5: EKF 的局限性 Limitations of the EKF
- ADB 命令知多少?详细 ADB 命令大全来啦
- 什么软件测试情侣头像,即刻情侣头像配对器
- android xml 工具下载,安卓xml文件编辑器
- python程序下载腾讯企业邮箱附件_python批量下载邮件附件
- 团队管理6--管理风格
- 7-1 电话聊天狂人
- 腾讯云上攻防战事(一)| 云上听风,不战而屈人之兵
- Delphi - 对象构造和vmt系列
- Python可视化和动画模拟物理
- Window环境下进入MySQL命令窗口
- java ps old gen perm gen_Java 内存模型之堆内存管理
- 深入理解JVM(一)
- 【PM】从产品经理的角度探索游戏产品
- 决策树进阶——剪枝处理
- python 圆周率,用python计算圆周率π
- zabbix结合nginx、mysql、proxy、睿象云报警、API批量操作