文章目录

  • 前言
  • 一、前期准备
  • 二、整体功能
  • 三、功能模块
  • 四、功能浅谈
    • 1、 AccountInfo 类
    • 2、收支明细
    • 3、登记收入/支出
    • 4、 查询账单
  • 五、收获
  • 六、总结

前言

学习完Java基础之后,狗子我便在网上(尚硅谷)寻找了这个练手案例并对其进行了一定的改进,从而达到能够加深对Java基础的印象以及掌握,在此将其在此记录和分享给大家伙们,奥里给(٩(눈౪눈)و)

一、前期准备


在开始搞事情之前得先准备好下面这些东西,其中 JDKIDE 不一定需要统一,这只是狗子我使用的版本而已。准备好之后带上我们的脑子就可以开搞啦

  1. 编程语言 : Java
  2. 运行环境 : JDK1.8
  3. IDE : IDEA 2020
  4. 储备知识 : 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) 进行删除

五、收获


在这里罗列一下这个花了一个晚上写的代码所得到的收获,毕竟刚进村,啥也不懂,收获也挺多的

  1. 封装有了深一丢丢的理解,尤其是在编写 Utility 类的时候,没有之前学C语言那样代码辣么臃肿,在工具类中有些方法进行了多次利用
  2. 了解了 ArrayList 的简单运用,但还没掌握,得多来几次,杀猪刀还没锋利
  3. 认识到了几个新类和方法,如Date类、SimpleDateFormat类、parseInt方法、parseDouble方法等
  4. 简单复习了一些异常处理,毕竟在这里面用的不多,因此这一块并没有什么感觉

六、总结


掉头发这件事情你得实践了才知道你掉的质量怎么样,在学习Java甚至是任何一门语言中,只学不敲,头发也就白掉了。

最后附上代码白嫖传送门----->白嫖走起

基于Java基础的家庭收支记账软件相关推荐

  1. Java项目:家庭收支记账软件

    目录 前言 一.任务要求 二.实现代码 总结 前言 最近花了一个星期看了JAVA经典书籍<Java核心技术卷I>,囫囵吞枣般看完,领略了其中大概内容,花时间看视频巩固一下,就去b站看了尚硅 ...

  2. Java开发一个家庭收支记账软件

    4.请开发一个家庭收支记账软件 界面及操作过程如下所示: -----------------家庭收支记账软件----------------- 1 收支明细 2 登记收入 3 登记支出 4 退 出 请 ...

  3. 用Java写一个家庭收支记账软件

    需要的内容有:收支明细.登记收入.登记支出和退出四个模块.并且能进入每个功能里面. 最好用的方式是用数组实现这个软件,可以是二维数组,也可以是一维数组,直接附上源码. import java.util ...

  4. java基础(家庭收支记账软件)

    家庭收支记账软件 目标 模拟实现一个基于文本界面的<家庭记账软件> 掌握初步的编程技巧和调试技巧 主要涉及以下知识点: 变量的定义 基本数据类型的使用 循环语句 分支语句 方法声明.调用和 ...

  5. java家庭收支记账软件

    说明: 这篇文章主要运用了一些java基础知识的一个综合运用 主要涉及以下知识点:  变量的定义  基本数据类型的使用  循环语句  分支语句  方法声明.调用和返回值的接收  简单的屏幕 ...

  6. 家庭收支记账软件--Java

    家庭收支记账软件–Java 需求描述: 模拟实现基于文本界面的<家庭记账软件>. 该软件能够记录家庭的收入.支出,并能够打印收支明细表. 项目采用分级菜单方式.主菜单如下: 需求说明: 假 ...

  7. Java实现家庭收支记账软件

    题目来自于尚硅谷基础项目1,其中没有使用项目提供的现成的方法 测试类 package test;import face.MainInterFace; import code.*; public cla ...

  8. 家庭收支记账软件(Java简易版)

    设计一个 家庭收支记账软件 需求说明 模拟实现基于文本界面的<家庭记账软件> 该软件能够记录家庭的收入.支出,并能够打印收支明细表. 项目采用分级菜单方式.主菜单如下: 分析 需要使用Sc ...

  9. eclipse编写的Java家庭收支记账软件

    eclipse编写的Java家庭收支记账软件 界面及操作过程如下所示: -----------------家庭收支记账软件----------------- 1 收支明细 2 登记收入 3 登记支出 ...

最新文章

  1. c语言保存后怎么打开文件,保存打开文件之后,怎么也不能在显示函数中出来。。...
  2. python语法学习第十天--魔法方法
  3. 带aidl文件的应用程序在android平台源码中的编译
  4. 自动驾驶 9-5: EKF 的局限性 Limitations of the EKF
  5. ADB 命令知多少?详细 ADB 命令大全来啦
  6. 什么软件测试情侣头像,即刻情侣头像配对器
  7. android xml 工具下载,安卓xml文件编辑器
  8. python程序下载腾讯企业邮箱附件_python批量下载邮件附件
  9. 团队管理6--管理风格
  10. 7-1 电话聊天狂人
  11. 腾讯云上攻防战事(一)| 云上听风,不战而屈人之兵
  12. Delphi - 对象构造和vmt系列
  13. Python可视化和动画模拟物理
  14. Window环境下进入MySQL命令窗口
  15. java ps old gen perm gen_Java 内存模型之堆内存管理
  16. 深入理解JVM(一)
  17. 【PM】从产品经理的角度探索游戏产品
  18. 决策树进阶——剪枝处理
  19. python 圆周率,用python计算圆周率π
  20. zabbix结合nginx、mysql、proxy、睿象云报警、API批量操作

热门文章

  1. PAT-A-1042 Shuffling Machine
  2. SQL常用查询语句汇总
  3. MyBatis-Plus入门
  4. 如何用PDCA做过程管理
  5. Oracle日志文件中状态为INVALID(原因分析)
  6. Invalid array length
  7. html5录音+百度语音实现语音识别
  8. 【MATLAB小游戏】青蛙吃苍蝇
  9. 再见,工资!2020年6月程序员工资统计,平均14404元,网友:又跌了!
  10. CSS第三章:13.布局:如何进行网页的经典布局,使用何种标签?让块元素从左到右自然排列如何设置?