项目要求:
/*1.假设家庭起始的生活基本金为10000元
2.每次登记收入(菜单2)后,收入的金额应累加到基本金上,并记录本次收入明细,以便后续的查询
3.每次登记支出(菜单3)后,支出的金额应从基本金中扣除,并记录本次支出明细,以便后续的查询。
4.查询收支明细( 菜单1)时,将显示所有的收入、支出名细列表 */
我的实现过程:
控制台输出选项后微调过程:
如图所示,\t :横向制表(HT) (跳到下一个TAB位置) 。\t制表符每个空8个补全当前字符串长度到8的整数倍,可以调整选项位置直至居中。
import java.util.Objects;
import java.util.Scanner;
/*1.假设家庭起始的生活基本金为10000元
2.每次登记收入(菜单2)后,收入的金额应累加到基本金上,并记录本次收入明细,以便后续的查询
3.每次登记支出(菜单3)后,支出的金额应从基本金中扣除,并记录本次支出明细,以便后续的查询。
4.查询收支明细( 菜单1)时,将显示所有的收入、支出名细列表 */
public class FamilyLedger {
public static void main(String[] args) {
// 因为使用分级目录,所以会在控制台输入想进入的步骤,导入Scanner
Scanner sc = new Scanner(System.in);
System.out.println("----------------家庭收支记账软件-----------------");
System.out.println("\t\t\t\t1 收支明细");
System.out.println("\t\t\t\t2 登记收入");
System.out.println("\t\t\t\t3 登记指出");
System.out.println("\t\t\t\t4 退 出");
System.out.println("请选择(1-4):");
int choice = sc.nextInt();
// 限定范围
if (choice < 1 || choice > 4) {
System.out.println("您输入的内容有误!");
}
//因为除了一开始初始资金固定,后面都会有动态变化
//初始账单
int start = 0;
if (choice == 1) {
Scanner a = new Scanner(System.in);
System.out.println("请输入初始金额:");
start = a.nextInt();
}
//收入账单
int income = 0;
String source = "";
if (choice == 2) {
Scanner a = new Scanner(System.in);
System.out.println("请输入收入金额:");
System.out.println("请输入收入来源:");
income = a.nextInt();
source = a.next();
}
//支出账单
int expenditure = 0;
String reason = "";
if (choice == 3) {
Scanner b = new Scanner(System.in);
System.out.println("请输入支出金额:");
System.out.println("请输入支出原因:");
expenditure = b.nextInt();
reason = b.next();
}
//因为涉及跳转对应菜单,这里选择流程控制语句中的switch语句
switch (choice) {
case 1:
System.out.println("----------------您的收支明细----------------");
System.out.println("\t\t\t\t初始资金" + start + "元");
break;
case 2:
System.out.println("收支\t" + "账户总金额\t\t" + "收入金额\t\t" + "说明");
System.out.println("收入\t" + (10000 + income) + "\t\t\t" + (+income) + "\t\t\t" + source);
break;
case 3:
System.out.println("收支\t" + "账户总金额\t\t" + "收入金额\t\t" + "说明");
System.out.println("收入\t" + (10000 - expenditure) + "\t\t\t" + (-expenditure) + "\t\t\t" + reason);
break;
case 4:
//退出界面
String exit = "";
Scanner c = new Scanner(System.in);
System.out.println("请问您确定要退出此登录界面吗?");
System.out.println("确定退出(y)/不,我再想想(n):");
exit = c.next();
if (Objects.equals(exit, "y")) {
System.out.println("您已退出菜单!");
return;
} else if (Objects.equals(exit, "n")) {
System.out.println("您已进入菜单!");
break;
}
}
}
}
输出结果:
输出1的情况:
输出2的情况:
输出3的情况:
输出4的情况: