Java入门视频教程(三) 7 家庭收支记账软件

1、介绍Utility工具类 这个类使用时:和主体程序放在同一个目录即可

方法调用方式方法作用
Utility.readMenuSelection()读取菜单序号:1、2、3、4
Utility.readNumber()读取金额数值
Utility.readString()读取文字
Utility.readConfirmSelection()读取确认是否退出时输入的y或n
Utility.readKeyBoard(int limit)从键盘读取limit个字符

2、创建主体程序类testFamilyIncomeAPP

public class testFamilyIncomeAPP {
	public static void main(String[] args) {
		
	}
}

testFamilyIncomeAPP代码实现:

import org.omg.Messaging.SyncScopeHelper;

public class testFamilyIncomeAPP {

	public static void main(String[] args) {
		
		//初始化,用户账户初始化1万元。
		int balance = 10000;
		//初始化显示收支明细时使用的表头信息
		String table = "收支明细\t账户金额\t收支金额\t说    明\n";
		//界面 循环防止退出
		while(true) {
			//打印界面:标题
			System.out.println("--------------------家庭收支记账软件-----------------------");
			//菜单选项
			System.out.println("------\t 1.收支明细\t------");
			System.out.println("------\t 2.登记收入\t------");
			System.out.println("------\t 3.登记支出\t------");
			System.out.println("------\t 4.退    出\t------\n");
			//提示用户输入菜单选项
			System.out.print("请输入菜单选项序号:");
			//读取用户输入的菜单项序号
			char menuSelection = Utility.readMenuSelection();
			System.out.println(menuSelection);
			//根据用户输入的菜单选项序号执行相关操作
			switch(menuSelection) {
				case '1':
					System.out.println(table);
					break;
				case '2'://登记收入
					//界面:提示用户输入收入金额
					System.out.print("请输入收入金额:");
					int income = Utility.readNumber();
					//界面:提示用户输入收入说明
					System.out.print("请输入收入说明:");
					String incomeDescription = Utility.readString();
					//System.out.println("收入金额:" + income + "收入说明" + incomeDescription);//test
					//系统内部累计余额
					balance = balance + income;
					//系统内部将新的收入信息添加表格
					table = table + "收入\t" + balance + "\t" + income + "\t" + incomeDescription + "\n";
					System.out.println("Save Success!");
					break;
				case '3':
					//界面:提示用户输入支出金额
					System.out.print("请输支出入金额:");
					int outcome = Utility.readNumber();
					//界面:提示用户输入支出说明
					System.out.print("请输入支出说明:");
					String outcomeDescription = Utility.readString();
					//系统内部累计余额
					balance = balance - outcome;
					//系统内部将新的收入信息添加表格
					table = table + "支出\t" + balance + "\t" + outcome + "\t" + outcomeDescription + "\n";
					System.out.println("Save Success!");
					break;
				case '4':
					System.out.print("是否需要退出(Y/N):");
					char confirmWord = Utility.readConfirmSelection();
					if(confirmWord == 'Y') {
						System.out.println("退出ing~");
						return;
					}
			}
		}
	}
}

Utility代码:

import java.util.*;
public class Utility {
    private static Scanner scanner = new Scanner(System.in);
	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;
    }
    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;
    }
    public static String readString() {
        String str = readKeyBoard(8);
        return str;
    }
    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;
    }
}

总结:整个收支项目:初始化、界面、系统内部运算、数据;面向过程方式。

优化:系统界面与系统内部运算分开写,界面分为视图加控制器的部分,系统运算属于业务逻辑层部分,数据可以保存与数据库中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值