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

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

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

相关文章
|
10天前
|
数据采集 物联网
三分钟轻松搞定固定资产盘点--首码RFID资产盘点小助手
首码 RFID 盘点小助手是一款功能强大、操作便捷的资产管理工具,能够助力企业在短短 3 分钟内轻松完成资产盘点
38 9
|
6月前
|
监控 安全 数据挖掘
如何精准监控员工上网:这三款员工上网行为监控告诉你
本文介绍了三款员工上网行为监控软件,以增强企业网络安全性。WorkWin提供USB管理、带宽控制及远程管理,确保资源有效分配和安全。InterGuard专注敏感数据检测、违规行为监控,即时消息审查,保障企业安全。而Hubstaff侧重工时追踪、活动记录和应用使用报告,优化工作效率和团队管理。这些工具旨在平衡安全与效率,助力企业保护资源和提升生产力。
490 3
|
6月前
|
监控 安全 数据挖掘
这些屏幕监控软件一键轻松监控员工,速来试用
本文介绍了几款顶级屏幕监控软件,如WorkWin和Teramind,用于提升团队效率和保障企业安全。WorkWin提供远程控制、USB管理、权限分配等功能,确保合规运营和信息安全。Teramind能监控员工应用使用,发送实时警报,并进行数据分析。而ActivTrak则有实时屏幕监控和详细分析报告,帮助管理者优化工作流程。这些工具助力企业有效管理团队,提高生产力。
169 4
|
6月前
|
SQL 关系型数据库 MySQL
MySQL数据库基础练习系列10、访客登记系统
MySQL数据库基础练习系列10、访客登记系统
64 1
|
5月前
|
前端开发
会员系统02--,后台管理系统,包含网站运营,统计分析,用户中心,财务管理,资金明细,系统管理,参数配置,后台管理系统可以观看配置资料,广告位的相关资料,客服工单最主要是客户反馈给我们的问题,登录统计
会员系统02--,后台管理系统,包含网站运营,统计分析,用户中心,财务管理,资金明细,系统管理,参数配置,后台管理系统可以观看配置资料,广告位的相关资料,客服工单最主要是客户反馈给我们的问题,登录统计
|
7月前
|
监控 安全 数据管理
电脑监控你了解多少丨员工上网行为监控排行
随着互联网普及,工作与生活界限模糊,企业使用员工上网行为监控软件以提高效率。本文推荐三款工具:WorkWin强调完整监控与时间统计,助力资源分配和安全管控;Hubstaff专注于时间管理与项目跟踪,适合远程团队;Veriato提供全方位监控与分析,保障数据安全。这些软件旨在优化工作流程,提升企业效率和安全性。
135 2
|
7月前
|
小程序
大中型医院线上预约挂号系统源码,对接HIS,支持预约挂号、预约记录、在线支付、医保支付、医保信息、电子报告、住院每日清单查看等功能
预约挂号管理系统具备后台管理端和用户使用端,用户使用端包括:微信公众号、支付宝小程序。 技术架构:C#+.net+uni-app+ SqlServer 2012+ VS2019 ,自主研发,自主版权,多家三甲医院应用案例,有演示。
134 0
大中型医院线上预约挂号系统源码,对接HIS,支持预约挂号、预约记录、在线支付、医保支付、医保信息、电子报告、住院每日清单查看等功能
|
存储 SQL NoSQL
传智健康day04 预约管理-套餐管理
传智健康day04 预约管理-套餐管理
传智健康day04 预约管理-套餐管理
|
存储
宿舍管理查询系统
宿舍管理查询系统 1.任务: 为宿舍管理人员编写一个宿舍管理查询软件, 程序设计
183 0
|
网络协议 测试技术 Go
家庭收支软件需求和界面|学习笔记
快速学习家庭收支软件需求和界面
家庭收支软件需求和界面|学习笔记