学习Java 第十一天(家庭记录收支程序)

这次编写的是一个家庭收支的记录程序,按照客户需求该软件能够记录家庭的收入、支出,并能够打印收支明细表

while (flag) {//主界面设置
            System.out.println("-------------------家庭收支记账软件---------------------");//分割线 方便使用及查看
            //四个菜单选项
            System.out.println("        1.收支明细");
            System.out.println("        2.登记收入");
            System.out.println("        3.登记支出");
            System.out.println("        4.退   出");
            System.out.print("         请选择(1-4):");
            System.out.println();
            int a = sc.nextInt();//接收输入的数字进入菜单
            //菜单具体功能实现

由于该软件有4个选项,我们使用switch来写,先写入一个收入程序

case 2://菜单2,收入
                   //if (count>=arr.length){
                   //         arr=Z(arr);
                   //     }
                    System.out.println("请输入本次收入的金额:");
                    int num = sc.nextInt();
                    System.out.println("请输入本次收入的来源:");
                    String info = sc.next();//这里使用String类型,用next接收键盘输入,生成字符串
                    //count每次运行都++ 数据会一行一行填入
                    arr[count][0] = "收入";
                    sumNum += num;//总余额等于基础的加收入的
                    arr[count][1] = String.valueOf(sumNum);//直接把sumNum和num都转换成字符串类型
                    arr[count][2] = String.valueOf(num);
                    arr[count][3] = info;
                    count++;
                    System.out.println("添加成功!");
                    break;

接着写一个支出程序

case 3://支出录入数据功能
                 //  if (count>=arr.length){
                      //      arr=Z(arr);
                   //     }
                    System.out.println("请输入本次支出的金额:");
                    int num1 = sc.nextInt();
                    System.out.println("请输入本次支出的说明:");
                    String info1 = sc.next();
                    arr[count][0] = "支出";
                    sumNum -= num1;
                    arr[count][1] = String.valueOf(sumNum);
                    arr[count][2] = String.valueOf(num1);
                    arr[count][3] = info1;

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

 再写入一个能显示收入和支出记录的代码

case 1://菜单1,收支明细
                    System.out.println("-------------------收支明细记录表-----------------------");
                    //收支明细的四个要素,及数组设置的每个一维数组的一维数组中的四个元素
                    System.out.println("收支     账户总金额     收支金额     说    明");
                    for (int i = 0; i < arr.length; i++) {//循环打印 输入的数据
                        if (arr[i][0] != null) {
                            System.out.println(arr[i][0] + "     " + arr[i][1] + "        " + arr[i][2] + "         " + arr[i][3]);
                        }
                    }
                    break;

第四个功能就是记录完成后退出

case 4:
                    System.out.println("是否要退出(true/false):");
                    Boolean choice = sc.nextBoolean();//用一个布尔类型来进行是否退出程序的判断
                    if (choice == true) {
                        System.out.println("结束本次记录");
                        flag = false;//因为整个循环的运行基础是flag为true,所以如果是否退出输入true这里需要改变flag值来结束循环。
                        break;
                    } else {
                        break;
                    }

 

最后是我们输入了1-4以外的数字要给出相应的显示 

default:
                    System.out.println("输入错误,请输入1-4中的数字");//避免有人还是输入1-4以外的数字

 剩下的就是将代码该定义的值定义,该赋值的赋值

完整代码如下

import java.util.Scanner;

public class text7 {
    public static String[][] Z(String[][] arr) {
        String[][] A = new String[arr.length + 2][4];
        for (int i = 0; i < arr.length; i++) {
            for (int x = 0; x < 4; x++) {
                A[i][x] = arr[i][x];
            }
        }
        return A;
    }

    public static void main(String[] args) {
        String[][] arr = new String[1][4];//这里的行设置多大都无所谓,我们使用了扩容的方式来增大数组容量
        int count = 0;//控制行数
        int sumNum = 10000;//本金
        Scanner sc = new Scanner(System.in);
        boolean flag = true;//循环条件

        while (flag) {//主界面设置
            System.out.println("-------------------家庭收支记账软件---------------------");//分割线 方便使用及查看
            //四个菜单选项
            System.out.println("        1.收支明细");
            System.out.println("        2.登记收入");
            System.out.println("        3.登记支出");
            System.out.println("        4.退   出");
            System.out.print("         请选择(1-4):");
            System.out.println();
            int a = sc.nextInt();//接收输入的数字进入菜单
            //菜单具体功能实现
            switch (a) {

                case 1://菜单1,收支明细
                    System.out.println("-------------------收支明细记录表-----------------------");
                    //收支明细的四个要素,及数组设置的每个一维数组的一维数组中的四个元素
                    System.out.println("收支     账户总金额     收支金额     说    明");
                    for (int i = 0; i < arr.length; i++) {//循环打印 输入的数据
                        if (arr[i][0] != null) {
                            System.out.println(arr[i][0] + "     " + arr[i][1] + "        " + arr[i][2] + "         " + arr[i][3]);
                        }
                    }
                    break;

                case 2://菜单2,收入
                    if (count >= arr.length) {
                        arr = Z(arr);
                    }
                    System.out.println("请输入本次收入的金额:");
                    int num = sc.nextInt();
                    System.out.println("请输入本次收入的来源:");
                    String info = sc.next();//这里使用String类型,用next接收键盘输入,生成字符串
                    //count每次运行都++ 数据会一行一行填入
                    arr[count][0] = "收入";
                    sumNum += num;//总余额等于基础的加收入的
                    arr[count][1] = String.valueOf(sumNum);//直接把sumNum和num都转换成字符串类型
                    arr[count][2] = String.valueOf(num);
                    arr[count][3] = info;
                    count++;
                    System.out.println("添加成功!");
                    break;

                case 3://支出录入数据功能
                    if (count >= arr.length) {
                        arr = Z(arr);
                    }
                    System.out.println("请输入本次支出的金额:");
                    int num1 = sc.nextInt();
                    System.out.println("请输入本次支出的说明:");
                    String info1 = sc.next();
                    arr[count][0] = "支出";
                    sumNum -= num1;
                    arr[count][1] = String.valueOf(sumNum);
                    arr[count][2] = String.valueOf(num1);
                    arr[count][3] = info1;

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

                case 4:
                    System.out.println("是否要退出(true/false):");
                    Boolean choice = sc.nextBoolean();//用一个布尔类型来进行是否退出程序的判断
                    if (choice == true) {
                        System.out.println("结束本次记录");
                        flag = false;//因为整个循环的运行基础是flag为true,所以如果是否退出输入true这里需要改变flag值来结束循环。
                        break;
                    } else {
                        break;
                    }
                default:
                    System.out.println("输入错误,请输入1-4中的数字");//避免有人还是输入1-4以外的数字
            }
        }
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值