- 家庭收支记账本
- 前言
- 一、问题分析
- 二、实现思路
- 三、说明
家庭收支记账本能够记录金额的来源,去向和统计金额的多少。
一、问题分析我们只需要所有的对象拼接成一个字符串输出就行了,由于只是一个小实验,我就把数据存在内存了,没有用到数据库。
二、实现思路创建一个AccountBook类,代码如下:
package com.etime725.homework;
import java.util.Scanner;
public class AccountBook {
public static void main(String[] args) {
//账单条目
String title = "收支tt备注tt收支金额tt账户余额n";
//账单金额
boolean isLoop = true;
double total = 0;
do {
System.out.println("--------------------家庭收支记账本--------------------");
System.out.println(" ");
System.out.println(" 1 收支明细");
System.out.println(" 2 登记收入");
System.out.println(" 3 登记支出");
System.out.println(" 4 退 出");
System.out.print(" 请选择(1-4):");
int number = getScanner().nextInt();
System.out.println();
switch (number) {
case 1:
System.out.println("--------------------家庭收支记账本--------------------");
System.out.println(" ");
System.out.println(title);
System.out.println(" ---------------------------------------------------");
System.out.println(" ");
break;
case 2:
System.out.println("收入来源:");
String setSource = getScanner().next();
System.out.println("收入金额:");
double setMoney = getScanner().nextDouble();
total = total + setMoney;
title = title + "n" + "收入tt" + setSource + "tt" + setMoney + "tt" + total + "n";
System.out.println("-----------------------登记完成-----------------------");
break;
case 3:
System.out.println("支出来源:");
String getSource = getScanner().next();
System.out.println("支出金额:");
double getMoney = getScanner().nextDouble();
total = total - getMoney;
title = title + "n" + "支出tt" + getSource + "tt" + getMoney + "tt" + total + "n";
System.out.println("-----------------------登记完成-----------------------");
break;
case 4:
System.out.println("是否退出(Y/N)?");
String s = getScanner().next();
if (s.equals("Y")) {
isLoop = false;
System.out.println("退出成功!");
break;
}
}
} while (isLoop);
}
public static Scanner getScanner() {
Scanner scanner = new Scanner(System.in);
return scanner;
}
}
运行结果如下:
由于输出格式是由字符串拼接而成的,所以会出现格式不对的情况,不影响结果。其中就是用了switch case 语句,还有个do while 循环,不管while 结果是false 还是true,第一次都会执行do{…}中的语句,输入语句我单独写了个方法,感觉方便一些。



