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

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

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

相关文章
|
5月前
|
监控 安全 数据挖掘
如何精准监控员工上网:这三款员工上网行为监控告诉你
本文介绍了三款员工上网行为监控软件,以增强企业网络安全性。WorkWin提供USB管理、带宽控制及远程管理,确保资源有效分配和安全。InterGuard专注敏感数据检测、违规行为监控,即时消息审查,保障企业安全。而Hubstaff侧重工时追踪、活动记录和应用使用报告,优化工作效率和团队管理。这些工具旨在平衡安全与效率,助力企业保护资源和提升生产力。
459 3
|
4月前
|
SQL 数据库连接 数据库
医院网络预约系统咨询预约登记OA系统
医院网络预约系统咨询预约登记OA系统
62 2
|
4月前
|
前端开发
会员系统02--,后台管理系统,包含网站运营,统计分析,用户中心,财务管理,资金明细,系统管理,参数配置,后台管理系统可以观看配置资料,广告位的相关资料,客服工单最主要是客户反馈给我们的问题,登录统计
会员系统02--,后台管理系统,包含网站运营,统计分析,用户中心,财务管理,资金明细,系统管理,参数配置,后台管理系统可以观看配置资料,广告位的相关资料,客服工单最主要是客户反馈给我们的问题,登录统计
|
6月前
|
监控 安全 数据管理
电脑监控你了解多少丨员工上网行为监控排行
随着互联网普及,工作与生活界限模糊,企业使用员工上网行为监控软件以提高效率。本文推荐三款工具:WorkWin强调完整监控与时间统计,助力资源分配和安全管控;Hubstaff专注于时间管理与项目跟踪,适合远程团队;Veriato提供全方位监控与分析,保障数据安全。这些软件旨在优化工作流程,提升企业效率和安全性。
129 2
|
6月前
|
小程序
智慧医院预约挂号平台源码,可直接线上预约挂号、快捷缴费,查看报告
医院线上预约挂号平台既可以让患者足不出户就可以利用微信进行在线挂号,实现分时段就诊,就诊后也可以直接使用手机微信缴费,还可以通过微信实现查询费用明细及药品清单,检查、检验报告,住院服务等功能。
134 1
智慧医院预约挂号平台源码,可直接线上预约挂号、快捷缴费,查看报告
|
6月前
|
运维 监控 安全
SaaS云his药房模块出入库支持扫码枪
云HIS系统采用SaaS软件应用服务模式,提供软件应用服务多租户机制,实现一中心部署多机构使用。相对传统HIS单机构应用模式,它可灵活应对区域医疗、医疗集团、医联体、连锁诊所、单体医院等应用场景,并提升区域内应用的标准化与规范化程度,大幅降低软件实施运维成本与实施周期。
65 0
|
6月前
|
小程序
大中型医院线上预约挂号系统源码,对接HIS,支持预约挂号、预约记录、在线支付、医保支付、医保信息、电子报告、住院每日清单查看等功能
预约挂号管理系统具备后台管理端和用户使用端,用户使用端包括:微信公众号、支付宝小程序。 技术架构:C#+.net+uni-app+ SqlServer 2012+ VS2019 ,自主研发,自主版权,多家三甲医院应用案例,有演示。
118 0
大中型医院线上预约挂号系统源码,对接HIS,支持预约挂号、预约记录、在线支付、医保支付、医保信息、电子报告、住院每日清单查看等功能
|
6月前
|
数据可视化 BI API
无纸化登记二维码应用方案:扫码填写表单,信息收集无纸化
日常生活中的申请表、签到表、报名表等纸质表格,收集到的信息常常不规范,可以搭建用于信息收集的二维码应用,通过扫码填写电子表单的方式,实现核销、业务申请、内部审批等场景的无纸化登记,并能将填写的信息导出为Excel表格存档。
191 0
|
存储 数据采集 监控
企业信息联网核查系统
企业信息联网核查系统,简称企业信息联网系统,是一个基于网络技术的信息管理系统,旨在解决企业内部不同部门、不同系统之间信息互通的问题。企业信息联网核查系统将各部门的信息整合到一个平台上,企业四要素核验实现了信息共享和协作,提高了企业内部工作效率,提高了企业管理水平和决策效率。
|
网络协议 测试技术 Go
家庭收支软件需求和界面|学习笔记
快速学习家庭收支软件需求和界面
家庭收支软件需求和界面|学习笔记