Java小项目——家庭记账项目

学习Java已经过了半个月左右了,所学的知识已经能够写一些小程序或者小项目,虽然它可能没有那么高级,但是也能检验你之前所学的全部内容。所以今天就与大家分享一下我的小项目经验。

一、需求说明

该软件能够记录家庭的收入、支出,并能够打印收支明细表,项目采用分级菜单方式。主菜单如下:

-----------------家庭收支记账软件-----------------

1 收支明细
2 登记收入
3 登记支出
4 退 出

请选择(1-4):_

假设家庭起始的生活基本金为10000元

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

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

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

二、项目阶段

阶段一

首先,实现界面展示功能
在这里插入图片描述
并且能根据输入的数据进入到每个功能里。

阶段二

在阶段一的过程中完成主要的“收入”,“支出”功能!
在这里插入图片描述
在这里插入图片描述
从键盘读取收入、支出的金额,从键盘读取收入、支出的原因,按照要求存储数据(数组),添加成功。如上图所示。

让项目更完善

引入工具类,实现一些错误输入判断,并且不断的调试程序的bug,完善程序的功能。

三、解题思路

首先项目需用到的知识有:Sanner(获取用户输入)、switch分支语句、方法的定义和调用、数组(一维或者二维)、以及让程序能一直运行下去的死循环语句。

菜单界面

首先构建一个死循环语句将菜单的基本界面放入循环当中,用打印语句System.out.println();构建基本菜单界面,构建完成后获取一个输入值,然后将这个值放入switch当中进行分支判断,这样就能让用户选择要进行的操作,然后再case语句中调用方法,实现对应的功能。

部分程序如下:

while(choice){
   
            System.out.println("1.收支明细");
            System.out.println("2.登记收入");
            System.out.println("3.登记支出");
            System.out.println("4.退出");
            System.out.println("请输入(1-4):");
            String a = readKeyBoard(1);
            //取c中的第一个字符
            char ch = a.charAt(0);
            if(ch != '1' && ch != '2' && ch != '3' && ch != '4'){
   
                System.out.println("您输入的数据有误,请重新输入");
            }else {
   

                switch (ch){
   
                    case '1':
                        incomeAndExpenditureDetails(i,arr);

                        break;
                    case '2':
                        registrationIncome(i,arr);
                        i++;
                        break;
                    case '3':
                        registeredExpenditure(i,arr);
                        i++;
                        break;
                    case '4':
                        System.out.println("正在退出....");
                        choice = false;
                        break;
                }
            }


        }
        System.out.println("退出成功!");

收支明细

收支明细要做的事情就是打印出数组里的东西,将添加到数组里的数据答应输出到控制台。所以我们要写的方法为一个简单的循环输出语句即可。

代码如下:

//收支明细
    public static void incomeAndExpenditureDetails(int i,String[][] arr) {
   
//        System.out.println(Arrays.toString(arr));

        for (int k = 0; k < i; k++) {
   
            for (int j = 0; j <arr[k].length ; j++) {
   
                System.out.print(arr[k][j]+"\t");
            }
            System.out.println();
        }
    }

这里要注意,我们采用的是二维数组的方式来进行该项目。思路为在主函数中构建一个,足够大的二维数组,这里我给的长度为[10][4]。其实10可以更大,随你想运行多久的程序而确定。

String[][] arr= new String[10][4];

登记收入

构建一个方法要求能从键盘读取收入、支出的金额,从键盘读取收入、支出的原因,按照要求存储数据(数组),添加成功。

这里主要的问题在于数据类型的转换,因为有字符串的存在所以我们定义的数组为String类型的数组,所以我们存入的数据也必须是字符串类型的数组,但是收支金额要做加减运算的话就必须为整数或者是小数才行,这就需要用到强制类型转换。

转为String类型,代码如下:

String ab = c + "";

转为Double类型,代码如下:

double x = Double.parseDouble(arr[i-1][1])+c;

解决完这个问题后方法的功能基本就能完成,代码参考如下:

public static void registrationIncome(int i,String[][] arr) {
   
        String[] arr1= new String[4];
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入收入金额:");
//        String a = readKeyBoard(4);
        double c= readNumber();
//        double ch = Double.parseDouble(a);
        if (c>0){
   
            //强制类型转换为String
            String ab = "+"+c + "";

            arr1[2] =ab;
            System.out.println("请输入说明:");
            String b = readKeyBoard
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值