java基础04_java基本语法项目一

102 阅读2分钟

1.需求说明

模拟实现基于文本界面的《家庭记账软件》。

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

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

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

              1 收支明细

              2 登记收入

              3 登记支出

              4 退 出

              请选择(1-4):
              

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

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

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

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

image.png

image.png

image.png

image.png

2.项目实现

2.1 主程序结构

public static void main(String[] args) {
		
	boolean isFlag = true;
	while(isFlag){
            System.out.println("\n-----------------家庭收支记账软件-----------------\n");
            System.out.println("                   1 收支明细");
            System.out.println("                   2 登记收入");
            System.out.println("                   3 登记支出");
            System.out.println("                   4 退    出\n");
            System.out.print("                   请选择(1-4):");
            
            char selection=Utility.readMenuSelection();
            switch(selection) {
            case '1':
                System.out.println("1 收支明细");
                break;
            case '2':
                System.out.println("2 登记收入");
                break;
            case '3':
                System.out.println("3 登记支出");
                break;
            case '4':
                System.out.println("4 退  出");
                break;     
            }
            
        }
}

2.2 收入支出功能

            case '3':
                //System.out.print("3 登记支出");
            	System.out.print("本次支出金额:");
            	int minusmoney=Utility.readNumber();
            	System.out.print("本次支出说明:");
            	String minusinfo=Utility.readString();
            	
            	//处理details
            	balance -= minusmoney;
            	details +=( "收入\t\t" + balance + "\t\t" +
            			minusmoney + "\t\t" + minusinfo + "\n");
             System.out.println("---------------------登记完成---------------------");
                break;

            case '4':
                //System.out.println("4 退  出");
            	System.out.println("确认是否退出(Y/N):");
            	char isExit=Utility.readConfirmSelection();
            	if(isExit == 'Y') {isFlag=false;}
                break;

2.3 完整代码

public static void main(String[] args) {
		
		String details = "收支\t\t账户金额\t\t收支金额\t\t说明\n";
		int balance = 10000;
		
		boolean isFlag = true;
		while(isFlag){
		    System.out.println("\n*****************家庭收支记账软件***************\n");
            System.out.println("                   1 收支明细");
            System.out.println("                   2 登记收入");
            System.out.println("                   3 登记支出");
            System.out.println("                   4 退    出\n");
            System.out.print("                   请选择(1-4):");
            
            char selection=Utility.readMenuSelection();
            switch(selection) {
            case '1':
                //System.out.println("1 收支明细");
            	 System.out.println("-----------------当前收支明细记录-----------------");
                 System.out.println(details);
                 System.out.println("---------------------------------------------");
                 break;
            case '2':
                //System.out.println("2 登记收入");
            	System.out.print("本次收入金额:");
            	int addmoney=Utility.readNumber();
            	System.out.print("本次收入说明:");
            	String addinfo=Utility.readString();
            	
            	balance += addmoney;
            	//处理details
            	details +=( "收入\t\t" + balance + "\t\t" +
                        addmoney + "\t\t" + addinfo + "\n");
             System.out.println("---------------------登记完成---------------------");
                break;

            case '3':
                //System.out.print("3 登记支出");
            	System.out.print("本次支出金额:");
            	int minusmoney=Utility.readNumber();
            	System.out.print("本次支出说明:");
            	String minusinfo=Utility.readString();
            	
            	//处理details
            	balance -= minusmoney;
            	details +=( "收入\t\t" + balance + "\t\t" +
            			minusmoney + "\t\t" + minusinfo + "\n");
             System.out.println("---------------------登记完成---------------------");
                break;

            case '4':
                //System.out.println("4 退  出");
            	System.out.println("确认是否退出(Y/N):");
            	char isExit=Utility.readConfirmSelection();
            	if(isExit == 'Y') {isFlag=false;}
                break;


            
            }
            
        }
}