Java小项目-家庭记账程序

需求说明

该程序能够记录家庭的收入、支出,并能够打印收支明细表

项目采用分级菜单方式。主菜单如下:

Java小项目-家庭记账程序_第1张图片
  1. 假设家庭起始的生活基本金为10000元。

  1. 每次登记收入(菜单2)后,收入的金额应累加到基本金上,并记录本次收入明细,以便后续的查询。

  1. 每次登记支出(菜单3)后,支出的金额应从基本金中扣除,并记录本次支出明细,以便后续的查询。

  1. 查询收支明细( 菜单1)时,将显示所有的收入、支出名细列表。

Java小项目-家庭记账程序_第2张图片

创建一个Utility工具类,将使用到的一些功能封装成方法,需要时直接调用对应的方法就行就行。项目的各个功能模块也封装成相应的方法,减少代码量,提高编程效率。

因为收支情况和详细说明为String类型,账户金额和收支金额为int类型,所以后面存放收支金额时需要将int类型强制转换为String类型,这里规定了记录的条数最多十条。设定基本的生活资金sumNum为10000,count用于记录收支的行数(也就是数组的索引)。

  1. 实现页面展示功能

Java小项目-家庭记账程序_第3张图片

代码实现:

Java小项目-家庭记账程序_第4张图片

用户在键盘输入数字进入对应的功能,这里用到了Utility类中的readMenuSelection()方法,用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。

Java小项目-家庭记账程序_第5张图片

  1. 实现收支明细功能

将收支明细列表中的第一条输出生活基本资金,然后用for循环从数组下标1开始遍历出每次增加的收入或支出的详细信息

代码实现:

Java小项目-家庭记账程序_第6张图片

这里的if语句一是判断是否有数据,二是判断数据是收入的还是支出的,不然会输出全是null和0的语句。将int类型的总金额和收支金额强转为String类型。

  1. 实现登记收入功能

从键盘上获取收入的金额和说明,这里用到了Utility类中的readNumber()方法,该方法用于收入和支出金额的输入。从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。

执行完后将sumNum返回,下一次登记收入或者支出时进行数据的更新变动。

Java小项目-家庭记账程序_第7张图片

代码实现:

Java小项目-家庭记账程序_第8张图片

readString()方法用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值。

  1. 实现登记支出功能

代码实现:

Java小项目-家庭记账程序_第9张图片

  1. 主函数

public static void main(String[] args) {
        String[][] arr = new String[10][4];//存放收支情况,以及详细说明
        int count=1;//记录
        int sumNum=10000;//基础资金

        while (true)
        {
            menu();  //主页面
            char c = Utility.readMenuSelection();

            switch (c){
                case '1':
                    details(arr);  //收支明细
                    break;
                case '2':
                    int sumNumIn = revenue(arr,count,sumNum);  //登记收入
                    sumNum = sumNumIn;
                    count++;
                    break;
                case '3':
                    int sumNumOut = expenditure(arr,count,sumNum);  //登记输出
                    sumNum = sumNumOut;
                    count++;
                    break;
                case '4':
                    //退出功能
                    System.out.println("确认是否退出(Y/N)?:");
                    char c1 = Utility.readConfirmSelection();
                    if (c1 == 'Y')
                    {
                        System.out.println("拜拜!退出成功!");
                        return;
                    }else {
                        break;
                    }
            }
        }
    }

最外层用了while的无限循环,方便用户多次记账,用switch-case来判断用户需要操作的功能。

效果演示:

Java小项目-家庭记账程序_第10张图片
Java小项目-家庭记账程序_第11张图片

都是一些Java基础的知识,写的也很一般,仅供参考。

你可能感兴趣的:(Java入门,java,学习)