JAVA实现收支记账项目

初学java两周,现在实现一个基于文本的家庭记账系统。适合初学者

目 标

  1. 模拟实现一个基于文本界面的《家庭记账软件》
  2. 掌握初步的编程技巧和调试技巧
  3. 灵活运用基础知识

需求说明

  1. 该软件能够记录家庭的收入、支出,并能够打印收支明细表
  2. 查询收支明细(模块1)时,
    将显示所有的收入、支出名细列表
  3. 每次登记收入(模块2)后,
    收入的金额应累加到基本金上,并记录本次收入明细,
    以便后续的查询。。
  4. 每次登记支出(模块3)后,
    支出的金额应从基本金中扣除,并记
    录本次支出明细,以便后续的查询。
  5. 退出模块(模块4)
    运用return结束循环。
  6. 家庭起始的生活基本金为用户输入

注意事项

  1. 输入有可能输入金额的时候输错,输成字符串类型,会导致整个项目直接报错,不友好,需要克服此问题。
  2. 项目输入收支条数需要多条,注意上限定义大一点。

项目流程

流程图、

在这里插入图片描述
模拟实现基于文本界面的《家庭记账软件》
项目采用分级菜单方式。

用户定义定义初始家庭的金额

在这里插入图片描述

System.out.println("小金库里面还有多少钱?");
        int principal=sc.nextInt();//principal本金

主菜单如下:

在这里插入图片描述
相关代码:

 private static void use() {
   
        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):");
    }
模块1----收支明细

初始为空的,要过滤掉空行,不如会直接输出全部的空行。
输入的时候也要注意输入是否为数值。不然会报红,基于此写入一个判断方法

 public static int readMenuSelection() {
   
        char c;
        for (; ; ) {
   //死循环,不对就一直输入
            String str = readKeyBoard(1);//readKeyBoard(1)为后续定义的一个输入方法,判断输入字符是否符合条件
            c = str.charAt(0);
            if (c != '1' && c != '2' && c != '3' && c != '4') {
   
                System.out.print("选择错误,请重新输入:");
            } else break;
        }
        int n;//定义一个整数
        n = (char)c;//强制类型转化
        return n-48;//n=c,c的Ascll码为49 转化为10进制1。返回n-48
    }

行数也要设置高一点,已免出现BUG。
运用for循环遍历输出

for (int j = 0; j <arr.length ; j++) {
   
                        if (arr[j][0]!=null)
                        {
   
                            System.out.println(arr[j][0]+"\t\t"+arr[j][1]+"\t\t\t"+arr[j][2]+"\t\t\t"+arr[j][3]);
                        }

                    }
模块2-----收入登记

在用户输入有可能输入金额的时候输错,输成字符串类型,会导致整个项目直接报错,结束项目,导致前面记录直接全部消失,客服此问题我们就写入方法readKeyBoard(int limit)

private static String readKeyBoard(int limit) {
   
        String line = "";
        Scanner scanner = new Scanner(System.in);
        scanner.hasNext(
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值