家庭记录收支程序

家庭记录收支程序

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、 思路

首先,拿到项目,我们要先需求,分析写代码的思路,一步一步来运行,结合之前所学,需要用到二位数组、switch语句、方法的调用,通过二位数组来存储数据,采用分级菜单方式,这是会先显示主菜单,然后再显示其它菜单的内容,用switch语句可以实现,再调用工具类里面的方法,要退出程序后才结束,用死循环实现。

二、代码实现

1.主菜单代码

代码如下(示例):

while(isFlag) {
            System.out.println("-------------------家庭收支记账软件-------------------");
            System.out.println("                     1  收支明细");
            System.out.println("                     2  登记收入");
            System.out.println("                     3  登记支出");
            System.out.println("                     4  退       出");
            System.out.println("------------------------------------------------------");
            System.out.print("                        请选择(1-4): ");

在这里插入图片描述

2.收支明细

代码如下(示例):

 System.out.println("-------------------收支明细记录表-----------------------");
                    System.out.println("收支\t\t账户总金额\t\t收支金额\t\t说   明");
                    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]);
                        }

                    }
                    System.out.println("--------------------------------------------------------\n");
                    break;

在这里插入图片描述

3.收入金额和支出金额

case '2':
                    System.out.println("请输入本次收入的金额:");
                    int num = Utility.readNumber();
                    System.out.println("请输入本次收入的说明:");
                    String info = Utility.readString();
                    arr[count][0]="收入";
                   sumNum+=num;
                    arr[count][1]=String.valueOf(sumNum);//变成字符串
                    arr[count][2]="+"+num;
                    arr[count][3]=info;
                    count++;
                    System.out.println("添加成功!");
                    break;

在这里插入图片描述

case '3':
                    System.out.println("请输入本次支出的金额:");
                    int num1 = Utility.readNumber();
                    System.out.println("请输入本次支出的说明:");
                    String info1 = Utility.readString();
                    arr[count][0]="支出";
                    sumNum-=num1;
                    arr[count][1]=String.valueOf(sumNum);
                    arr[count][2]="-"+num1;
                    arr[count][3]=info1;

                    System.out.println("添加成功!");
                    break;

在这里插入图片描述

定义的类型不一样,要把int 类型转换成String类型,收入金额和说明,调用了方法类里面的 Utility.readNumber()和Utility.readString()。

4、退出

case '4':
                    System.out.println("确认是否退出(Y/N)?:");
                    char c1 = Utility.readConfirmSelection();
                    if (c1=='Y')
                    {
                        System.out.println("拜拜!退出成功!");
                        return ;
                    }else {
                        break;
                    

在这里插入图片描述

5、工具类代码

直接调用即可。

package project_finally;
import java.util.Scanner;
public class Utility {
    /**
     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;
        }
    }



6、 完整代码

package project_finally;

public class FamilyAccount {
    public static void main(String[] args) {
        int count=0;
        int sumNum=10000;
        String[][] arr = new String[10][4];//不灵活的地方
        boolean flag=true;
        while (flag)
        {

            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 c = Utility.readMenuSelection();

            switch (c){
                case '1':
                    System.out.println("-------------------收支明细记录表-----------------------");
                    System.out.println("收支\t\t账户总金额\t\t收支金额\t\t说   明");
                    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]);
                        }

                    }
                    System.out.println("--------------------------------------------------------\n");
                    break;
                case '2':
                    System.out.println("请输入本次收入的金额:");
                    int num = Utility.readNumber();
                    System.out.println("请输入本次收入的说明:");
                    String info = Utility.readString();
                    arr[count][0]="收入";
                   sumNum+=num;
                    arr[count][1]=String.valueOf(sumNum);//变成字符串
                    arr[count][2]="+"+num;
                    arr[count][3]=info;
                    count++;
                    System.out.println("添加成功!");
                    break;
                case '3':
                    System.out.println("请输入本次支出的金额:");
                    int num1 = Utility.readNumber();
                    System.out.println("请输入本次支出的说明:");
                    String info1 = Utility.readString();
                    arr[count][0]="支出";
                    sumNum-=num1;
                    arr[count][1]=String.valueOf(sumNum);
                    arr[count][2]="-"+num1;
                    arr[count][3]=info1;

                    System.out.println("添加成功!");
                    break;
                case '4':
                    System.out.println("确认是否退出(Y/N)?:");
                    char c1 = Utility.readConfirmSelection();
                    if (c1=='Y')
                    {
                        System.out.println("拜拜!退出成功!");
                        return ;
                    }else {
                        break;
                    }


            }
        }
    }
}

7、总结

在拿到一个项目时,先要满足项目的需求流程,在修改细节部分,为了让客户更好更直观理解代码,可以用方法的调用让我们的菜单逐一实现功能。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 基于 HarmonyOS 的家庭收支记录系统是一个方便实用的工具,可以帮助家庭成员轻松地记录和管理家庭的日常收入和支出。这个系统可以在各种智能设备上运行,如智能手机、平板电脑和智能电视,提供统一的界面和使用体验。 首先,这个系统具有用户友好的界面设计,简洁直观,方便使用。家庭成员可以轻松地添加新的收入和支出项目,并设置不同的分类和标签。系统会自动计算总收入和总支出,并生成详细的统计报告,使家庭成员能够清晰地了解家庭的财务状况。 其次,这个系统还可以与家庭成员的银行账户和支付平台进行连接,将收入和支出与实际的财务交易进行匹配。家庭成员可以设置提醒功能,定期查看并确认各项交易的准确性,避免出现错误和遗漏。 此外,这个系统还提供了可定制的预算管理功能。家庭成员可以设定各种预算,如家庭开销、食品费用、教育支出等,系统会自动追踪和比较实际支出与预算,帮助家庭成员更好地控制和规划家庭的财务状况。 最后,这个系统还支持多人使用和数据共享。家庭成员可以创建个人账户,并将其与其他家庭成员进行关联,实现数据实时同步和共享。这样,家庭成员可以随时随地查看和管理家庭收支记录,实现信息共享和协作。 总之,基于 HarmonyOS 的家庭收支记录系统为家庭提供了一个高效便捷的工具,帮助家庭成员实时记录和管理家庭的财务状况,进一步提高家庭的财务管理水平。 ### 回答2: 基于HarmonyOS的家庭收支记录系统是一款方便实用的软件,可以帮助家庭轻松管理和追踪家庭的财务状况。 首先,这个系统具有直观的用户界面,使用户能够快速了解家庭的收入和支出情况。用户可以通过简单的操作,录入家庭的收入来源和支出项目,系统会自动计算总收入和总支出,并提供相应的图表和图形展示给用户,让用户一目了然了解家庭的财务情况。 其次,这个系统具有智能化的功能。它可以根据用户的使用习惯和历史数据,分析和预测家庭的财务状况,提供合理的建议和规划。例如,根据过去几个月的消费习惯,系统可以提醒用户是否有不必要的开支,帮助用户更好地控制家庭支出,避免不必要的浪费。 此外,这个系统还可以与家庭成员共享。每个家庭成员都可以通过自己的账号登录系统,实时查看家庭收支情况。这样,全家人都能参与进来,共同管理家庭财务,提高家庭财务管理的效率。 最后,这个系统还提供了安全的存储和备份机制。用户可以将家庭财务数据存储在云端,避免数据丢失的风险。同时,用户可以随时进行数据备份,以防意外情况发生时能够快速恢复数据。 总之,基于HarmonyOS的家庭收支记录系统是一款功能强大、易于使用的财务管理工具。它能够帮助家庭更好地管理和控制家庭的财务,并提供智能化的分析和预测,让家庭成员共同参与财务管理,实现家庭财务的稳定和可持续发展。 ### 回答3: 基于HarmonyOS的家庭收支记录系统是一个能够帮助家庭成员记录和管理个人和家庭的财务状况的应用程序。它具有以下特点: 首先,该系统可以实时记录和跟踪家庭成员的收入和支出。通过输入和统计每个家庭成员的财务数据,系统可以自动生成个人和全家的收支报表。这样,家庭成员可以清晰地了解自己的收入来源和支出去向,更好地控制和管理财务。 其次,该系统提供了多种可视化的图表和图形展示功能。通过可视化的方式呈现收支数据,用户可以直观地了解财务情况,例如支出类别分布、收入变化趋势等。这不仅使家庭成员更容易理解自己的财务状况,还能帮助他们更好地做出科学合理的理财决策。 此外,该系统支持家庭成员间的数据同步和共享。每个家庭成员可以通过个人的HarmonyOS设备使用该系统,并将自己的收支数据存储在云端。这样,家庭成员们可以方便地共享和比较各自的财务情况,促进互相学习和交流,更好地实现家庭内部的财务协调。 最后,该系统还提供了个性化的财务建议和预算功能。基于家庭成员的财务数据和目标,系统可以根据算法生成个性化的理财建议和预算规划。家庭成员可以根据系统的建议进行预算调整和支出控制,帮助他们更好地实现财务目标。 总之,基于HarmonyOS的家庭收支记录系统可以帮助家庭成员更好地管理和控制个人和家庭收支情况。它的实时记录、可视化展示、数据同步共享和个性化建议等功能,将帮助家庭成员更科学地进行理财规划,实现财务目标。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值