Java基础学习
实现一个记账本,主要包括展示收支明细、登记收入、登记支出和退出四个功能。FamilyAccount.java是记账本应用的入口,Utility.java是一些功能函数的封装。
目前没有实现持久化存储数据的功能,只是一个简单的demo。
FamilyAccount.java
public class FamilyAccount{ static int balance = 10000; // 账户余额 static String details = "收支\t账户余额\t收支金额\t说 明\n"; private static void incomeRecord() { System.out.print("本次收入金额为: "); int number = Utility.readNumber(); System.out.print("本次收入说明: "); String explanation = Utility.readString(); balance += number; details += "收入\t" + balance + "\t\t" + number + "\t\t" + explanation + "\n"; System.out.println("--------------------登记完成--------------------"); } private static void expenseRecord() { System.out.print("本次支出金额为: "); int number = Utility.readNumber(); System.out.print("本次支出说明: "); String explanation = Utility.readString(); balance -= number; details += "支出\t" + balance + "\t\t" + number + "\t\t" + explanation + "\n"; System.out.println("--------------------登记完成--------------------"); } private static void showDetails() { System.out.println("-----------------当前收支明细记录-----------------"); System.out.println(details); System.out.println("------------------------------------------------"); } public static void main(String [] args) { boolean loopFlag = true; do{ System.out.println("----------------家庭收支记账软件------------------"); System.out.println(" 1 收支明细"); System.out.println(" 2 登记收入"); System.out.println(" 3 登记支出"); System.out.println(" 4 退出\n"); System.out.print(" 请选择功能<1-4>:"); char key = Utility.readMenuSelection(); switch(key) { case '1': showDetails();//展示明细 break; case '2': incomeRecord();//登记收入 break; case '3': expenseRecord();//登记支出 break; case '4': System.out.print("确认是否退出(Y/N): "); char choose = Utility.readConfirmSelection(); if(choose == 'Y') loopFlag = false; break; } } while (loopFlag); } }
Utility.java
import java.util.Scanner; public class Utility{ private static Scanner scanner = new Scanner(System.in); /* 获取输入 */ 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; } /* 用于界面菜单的选择。键盘读入用户输入的1,2,3,4中的任意数字。 */ public static char readMenuSelection() { char c; while(true) { 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; while(true) { 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(10); return str; } /* 用于确认选择的输入 */ public static char readConfirmSelection() { char c; while(true) { String str = readKeyBoard(1).toUpperCase(); c = str.charAt(0); if (c=='Y' || c =='N') break; else System.out.print("选择错误,请重新输入:"); } return c; } }

浙公网安备 33010602011771号