class FamilyAccount{
public static void main(String[] args){
boolean isFlag = true;
String details = "收支\t账户金额\t\t收支金额\t\t说 明\n";
int balance = 1000;
while(isFlag){
System.out.println("----------------家庭收支记账软件----------------\n");
System.out.println(" 1.收支明细");
System.out.println(" 2.登记收入");
System.out.println(" 3.登记支出");
System.out.println(" 4.退出");
System.out.print(" 请选择(1-4):");
//获取用户的选择:1-4
char selection = Utility.readMenuSelection();
switch(selection) {
case '1':
System.out.println("本次收入金额:");
System.out.println(details+"\n\n");
break;
case '2':
System.out.println("本次收入金额:");
int addMoney = Utility.readNumber();
System.out.println("本次收入说明:");
String addInfo = Utility.readString();
balance+=addMoney;
details+=("收入\t"+balance+"\t\t"+addMoney+"\t\t"+addInfo+"\n");
System.out.println("当前等级完成\n\n");
break;
case '3':
System.out.println("本次支出金额:");
int minusMoney = Utility.readNumber();
System.out.println("本次支出说明:");
String minusInfo = Utility.readString();
if(balance>=minusMoney) {
balance-=minusMoney;
}
details+=("收入\t"+balance+"\t\t"+minusMoney+"\t\t"+minusInfo+"\n");
System.out.println("当前登记完成\n\n");
break;
case '4':
System.out.println("是否确认退出?");
char isExit = Utility.readConfirmSelection();
if(isExit=='y') {
isFlag=false;
}
break;
}
}
}
}
//Utility工具类,将不同功能封装为方法,通过调用方法使用它的功能;
import java.util.Scanner;
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;
}
//用于确认选择的输入,从键盘度Y和N
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;
}
public static String readKeyBoard(int n){
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
return str;
}
}