1.需求说明
模拟实现基于文本界面的《家庭记账软件》。
该软件能够记录家庭的收入、支出,并能够打印收支明细表。
项目采用分级菜单方式。主菜单如下:
-----------------家庭收支记账软件-----------------
1 收支明细
2 登记收入
3 登记支出
4 退 出
请选择(1-4):
假设家庭起始的生活基本金为10000元。
每次登记收入(2)后,收入的金额应累加到基本金上,并记录本次收入明细,以便后续的查询。
每次登记支出(3)后,支出的金额应从基本金中扣除,并记录本次支出明细,以便后续的查询。
查询收支明细(1)时,将显示所有的收入、支出名细列表。
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;
}
}
}