家庭收支记账软件–Java

需求描述:

  • 模拟实现基于文本界面的《家庭记账软件》。
  • 该软件能够记录家庭的收入、支出,并能够打印收支明细表。
  • 项目采用分级菜单方式。主菜单如下:

需求说明:

  • 假设家庭起始的生活基本金为10000元。
  • 每次登记收入(菜单2)后,收入的金额应累加到基本金上,并记
    录本次收入明细,以便后续的查询。
  • 每次登记支出(菜单3)后,支出的金额应从基本金中扣除,并记
    录本次支出明细,以便后续的查询。
  • 查询收支明细( 菜单1)时,将显示所有的收入、支出名细列表

工具类描述:

将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节。在 Utility.java 工具类中提供了以下静态方法:

  • public static char readMenuSelection() :用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。
  • public static int readNumber() :用于收入和支出金额的输入。该方法从键盘读取一个不超过 4 位长度的整数,并将其作为方法的返回值。
  • public static String readString() :用于收入和支出说明的输入。该方法从键盘读取一个不超过 8 位长度的字符串,并将其作为方法的返回值。
  • public static char readConfirmSelection() :用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值
注意:这些方法都是 public static 修饰的,因此使用这些方法可以通过“类名.方法”直接使用

工具类代码:

package com.project.project01;import java.util.Scanner;/*** @author: LYM Email:18902675969@163.com* @description 工具类:将不同的功能封装为方法* @version: V1.0* @date: 2022/2/26 22:53*/
public class Utility {private  static Scanner scanner=new Scanner(System.in);/*** @author LYM Email:18902675969@163.com* @description* @date 2022/2/26* @param limit* @return java.lang.String*/public static String readKeyBoard(int limit){String line="";while (scanner.hasNext()){line=scanner.nextLine();if(line.length()<0||line.length()>limit){System.out.println("输入长度(不大于" + limit + ")错误,请重新输入:");//跳过本次循环continue;}//通过break来结束循环break;}return line;}/*** @author LYM Email:18902675969@163.com* @description 用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。* @date 2022/2/26* @param* @return char*/public static char readMenuSelection(){char c;for(;;){String str=readKeyBoard(1);c=str.charAt(0);if(c != '1' && c != '2' && c != '3' && c != '4'){System.out.println("输入错误,请重新输入!");}break;}return c;}/*** @author LYM Email:18902675969@163.com* @description 用于收入和支出金额的输入。该方法从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。* @date 2022/2/26* @param* @return int*/public static int readNumber(){int n;for(;;){String str=readKeyBoard(4);try {//通过Integer类实现String类型转换为int类型n=Integer.parseInt(str);break;}catch (NumberFormatException e){System.out.println("数字输入错误,请重新输入:");}}return n;}/*** @author LYM Email:18902675969@163.com* @description 用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值。* @date 2022/2/26* @param* @return java.lang.String*/public static String readString(){String info;info=readKeyBoard(8);return info;}/*** @author LYM Email:18902675969@163.com* @description 用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。* @date 2022/2/26* @param* @return char*/public static char readConfirmSelection(){char c;for(;;){String str=readKeyBoard(1).toUpperCase();c=str.charAt(0);if(c=='Y'||c=='N'){break;}else {System.out.println("选择错误,请重新输入:");}}return c;}}

主程序代码:

package com.project.project01;/*** @author: LYM Email:18902675969@163.com* @description 家庭收支记账系统* @version: V1.0* @date: 2022/2/26 22:46*/
public class FamilyAccount {public static void main(String[] args) {//设置收支明细表头String details = "收支\t账户金额\t收支金额\t说    明\n";//设置账户基本金额int balance = 10000;//设置Boolean类型循环标志变量loopFlagBoolean loopFlag=true;while (loopFlag){//设置系统首页显示System.out.println("\n-----------------家庭收支记账软件-----------------\n");System.out.println("                   1 收支明细");System.out.println("                   2 登记收入");System.out.println("                   3 登记支出");System.out.println("                   4 退    出\n");System.out.print("                   请选择(1-4):");System.out.println();//接受用户的选择char key=Utility.readMenuSelection();switch (key){case '1'://收支明细System.out.println("-----------------当前收支明细记录-----------------");System.out.println(details);System.out.println("--------------------------------------------------");break;case '2'://登记收入System.out.print("请输入本次收入金额:");int addMoney=Utility.readNumber();System.out.print("请输入本次收入说明:");String desc=Utility.readString();//处理balance变化balance+=addMoney;//记录收入明细details+="收入\t" + balance + "\t\t" +addMoney + "\t\t" + desc + "\n";System.out.println("---------------------登记完成---------------------");break;case '3'://登记支出System.out.print("请输入本次支出金额:");int outMoney=Utility.readNumber();System.out.print("请输入本次支出说明:");String desc1=Utility.readString();//处理balance变化balance-=outMoney;details+="支出\t" + balance + "\t\t" +outMoney + "\t\t" + desc1 + "\n";System.out.println("---------------------登记完成---------------------");break;case '4'://退出操作System.out.print("确认是否退出(Y/N):");char end=Utility.readConfirmSelection();if (end == 'Y') {loopFlag=false;}break;}}}
}

效果展示:
在这里插入图片描述




家庭收支记账软件--Java相关推荐

  1. java家庭收支记账软件-day01

    import java.util.Scanner; public class itemfamily {public static void main(String[] args) {Scanner s ...

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

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

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

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

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

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

  5. java家庭收支记账软件

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

  6. Java项目一(案例):家庭收支记账软件

    Java项目一(案例):家庭收支记账软件 项目概述 软件功能 项目说明 涉及Java知识点 软件需求说明 程序代码示例 FamilyAccount.class文件 自定义Utility.class工具 ...

  7. Java实现家庭收支记账软件及编写过程中的注意事项

    一.思路 1.明确需求 总需求也就是家庭收支记账软件要实现的功能,要能实现记录家庭的收入与支出,并打印收支明细表. 2.实现步骤 第一步要展示程序的主界面,内容要包含四个菜单选项. 第二步实现根据用户 ...

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

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

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

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

最新文章

  1. PIL 学习笔记(3)
  2. 渗透测试---数据库安全: sql注入数据库原理详解
  3. 白话Elasticsearch55-数据建模之对每个用户发表的博客进行分组 (Top Hits Aggregation)
  4. mysql外键引用语法_mysql – 外键语法
  5. DOS 批量修改文件名
  6. unity gizmo_GitLab的新功能,沃尔玛的OneOps,《纽约时报》的Gizmo以及更多新闻
  7. Linux面试题100道
  8. html标签acronym没用,acronym_废弃 | Obsolete_HTML_参考手册_非常教程
  9. zencart后台修改首页meta_title、meta_keywords、meta_description
  10. 10个高效的摸鱼神器,你错过几个?
  11. UVA11082 行列模型
  12. 思想交锋:证券业数字化转型实践
  13. 图像识别深度学习主流方案平台比较
  14. 磁力计椭球拟合使用篇 IMU 加速度、电子罗盘校准
  15. 《IPD:华为研发之道》读书介绍
  16. iOS----------Apple id如何关闭双重认证?
  17. Android 应用进程启动流程
  18. html中阳历生日转换成农历,公历转农历生日查询器,公历农历换算器?
  19. Lpms-B2 IMU数据采源码分析 及 TCP/IP握手简单分析
  20. C#Task执行线程及其相关问题

热门文章

  1. 微信公众号推送天气(最近超火的小玩意)
  2. 【WIN10】 改用microsoft账户登录 闪退,且内置账户无法运行Win10应用
  3. cosx绝对值的积分
  4. FRAM芯片扩展在低功率应用中的耐力
  5. 解除应用计算机仿真,语音识别中计算机仿真的应用
  6. WebRTC 拥塞控制 | Trendline 滤波器
  7. web网页设计实例作业 ——古典中国风工艺美术(9页) html+css+javascript网页设计实例
  8. (2018干货系列八)最新VR学习路线整合
  9. 腾讯云域名证书哪里下载_备案域名证书获取方法
  10. 微信隐藏/显示右上角菜单接口