控制台实现简单的家庭收支记录软件

简介: 控制台实现简单的家庭收支记录软件

1、工具类的实现

import java.util.Scanner;
/**
Utility工具类:
将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节。
*/
public class Utility {
    private static Scanner scanner = new Scanner(System.in);
    /**
  用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。
  */
  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.print("选择错误,请重新输入:");
            } else break;
        }
        return c;
    }
  /**
  用于收入和支出金额的输入。该方法从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。
  */
    public static int readNumber() {
        int n;
        for (; ; ) {
            String str = readKeyBoard(4);
            try {
                n = Integer.parseInt(str);
                break;
            } catch (NumberFormatException e) {
                System.out.print("数字输入错误,请重新输入:");
            }
        }
        return n;
    }
  /**
  用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值。
  */
    public static String readString() {
        String str = readKeyBoard(8);
        return str;
    }
  /**
  用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。
  */
    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.print("选择错误,请重新输入:");
            }
        }
        return c;
    }
    private static String readKeyBoard(int limit) {
        String line = "";
        while (scanner.hasNext()) {
            line = scanner.nextLine();
            if (line.length() < 1 || line.length() > limit) {
                System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
                continue;
            }
            break;
        }
        return line;
    }
}

2、FamilyAccount类的实现

public class FamilyAccount{
  public static void main(String[] args){
    //初始化金额
    int balance=10000;
    //保存收支明细
    String details="收支\t账户金额\t收支金额\t说明\n";
    //c初始化flag为true,保证下面前三个操作之后会再次运行循环体
    boolean flag=true;
    do{
    //初始化的菜单
      System.out.println("----------------家庭收支记录软件------------\n");
    System.out.println("    1 收支明细             ");
    System.out.println("    2 登记收入             ");
    System.out.println("    3 登记支出             ");
    System.out.println("    4 退出                \n");
    System.out.print("    请选择(1-4):");
    //判断输入的数字
    char key=Utility.readMenuSelection();
    switch(key){
      case '1':
        System.out.println("--------------当前的收支明细-------------");
        //打印收支明细
        System.out.println(details);
        break;
      case '2':
        System.out.print("请输入本次收入金额数:");
        int amount=Utility.readNumber();
        System.out.print("请输入本次收入说明:");
        String str=Utility.readString();
        balance+=amount;
        details+="收\t"+balance+"\t\t"+amount+"\t\t"+str+"\n";
        break;
      case '3':
        System.out.print("请输入本次支出金额数:");
        int amount1=Utility.readNumber();
        System.out.print("请输入本次支出说明:");
        String str2=Utility.readString();
        balance-=amount1;
        details+="支\t"+balance+"\t\t"+amount1+"\t\t"+str2+"\n";
        break;
      case '4':
        System.out.print("确定要退出吗?(Y/N?)");
        char c=Utility.readConfirmSelection();
        //当输入为y或者Y时,把flag设置为false,就会跳出循环
        if(c=='Y'){
          flag=false;
          System.out.print("谢谢您的使用");
        }
        break;
    }
    }while(flag);
  }
}

3、运行截图

1、展示菜单

ceb2fa9490884f168907a0e1febf633e.png

2、登记收入

6d833c7a63fb481a972507280e9d1535.png

3、登记支出

a1a1bdfc228f468aaccce6ba019ee9a2.png

4、收支明细

c8cef07a087f471ab20ce2a8cd966c6e.png

5、退出

31f2221d2fa940f3a1edfcde766dc5f3.png

6、总结:本次实现很简单,没有数据库存储一次运行的数据,利用合适的字符串来存储数据的。主要是考验大家对流程控制的小考验啦。

相关文章
|
4月前
|
小程序
大中型医院线上预约挂号系统源码,对接HIS,支持预约挂号、预约记录、在线支付、医保支付、医保信息、电子报告、住院每日清单查看等功能
预约挂号管理系统具备后台管理端和用户使用端,用户使用端包括:微信公众号、支付宝小程序。 技术架构:C#+.net+uni-app+ SqlServer 2012+ VS2019 ,自主研发,自主版权,多家三甲医院应用案例,有演示。
大中型医院线上预约挂号系统源码,对接HIS,支持预约挂号、预约记录、在线支付、医保支付、医保信息、电子报告、住院每日清单查看等功能
|
5月前
|
数据可视化 BI API
无纸化登记二维码应用方案:扫码填写表单,信息收集无纸化
日常生活中的申请表、签到表、报名表等纸质表格,收集到的信息常常不规范,可以搭建用于信息收集的二维码应用,通过扫码填写电子表单的方式,实现核销、业务申请、内部审批等场景的无纸化登记,并能将填写的信息导出为Excel表格存档。
|
11月前
|
存储 数据采集 监控
企业信息联网核查系统
企业信息联网核查系统,简称企业信息联网系统,是一个基于网络技术的信息管理系统,旨在解决企业内部不同部门、不同系统之间信息互通的问题。企业信息联网核查系统将各部门的信息整合到一个平台上,企业四要素核验实现了信息共享和协作,提高了企业内部工作效率,提高了企业管理水平和决策效率。
|
网络协议 测试技术 Go
家庭收支软件需求和界面|学习笔记
快速学习家庭收支软件需求和界面
102 0
家庭收支软件需求和界面|学习笔记
|
网络协议 测试技术 Go
家庭收支软件-显示主菜单|学习笔记
快速学习家庭收支软件-显示主菜单
68 0
家庭收支软件-显示主菜单|学习笔记
|
网络协议 测试技术 Go
收支软件-登记支出和完善退出 | 学习笔记
快速学习收支软件-登记支出和完善退出
59 0
|
网络协议 测试技术 Go
收支软件-完善明细显示 | 学习笔记
快速学习收支软件-完善明细显示
62 0
收支软件-完善明细显示 | 学习笔记
|
存储 数据可视化 API
电商收付通可视化进件二级商户,多功能升级
服务商账号参数在成后台可配置,随时修改,立即生效。更换服务商账号相关参数无需修改代码再次打包部署,更便捷。参数包括本系统应用名称、服务商平台商户号、商户号绑定的appId、服务商平台商户API证书序列号、服务商平台商户API证书位置路径、微信支付平台证书位置路径、微信支付平台apiV3密钥、微信支付回调通知地址。
125 0
电商收付通可视化进件二级商户,多功能升级
|
机器人
关于使用腾讯云HiFlow场景连接器登记每天返程高中风险地区人员的防疫健康码
HiFlow场景连接器是腾讯云推出的一款免费的应用连接自动化工具(注意哦目前还是免费使用)。提供日常工作/生活中,大量的时间被无效/低效的重复性工作占据了,多表格之间的文档整理比对、发票粘贴、线索手动录入、库存信息比对更新、发货单填写等。
162 1
J3
快捷餐饮之店家后台员工管理实现
快捷餐饮之店家后台员工管理实现
J3
90 0
快捷餐饮之店家后台员工管理实现