package SmallChange;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Pocket {
// 使用字符串数组存储记录
private double money;
private String[][] detail = new String[10][4];
private int stackLength;
private Scanner scan;
private String data;
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
public Pocket(double money) {
this.money = money;
}
// 消费
public void consume() {
scan = new Scanner(System.in);
System.out.print("输入消费数目:");
double consume = scan.nextDouble();
if (consume <= 0) {
System.out.println("输入金额必须大于0");
return;
}
if (consume > money) {
System.out.println("金额不足!");
return;
}
System.out.print("输入收钱方:");
String payee = scan.next();
this.money -= consume;
data = sdf.format(new Date());
record(consume, payee, data);
}
// 盈收
public void earn() {
scan = new Scanner(System.in);
System.out.print("输入盈收数目:");
double earn = scan.nextDouble();
if (earn <= 0) {
System.out.println("输入金额必须大于0");
return;
}
money += earn;
data = sdf.format(new Date());
record(earn, data);
}
// 消费记录
public void record(double consume, String payee, String data) {
int index = stackLength;
detail[index][0] = payee;
detail[index][1] = "-" + consume;
detail[index][2] = "余额=" + this.money;
detail[index][3] = data;
stackLength++;
}
// 收益记录
public void record(double earn, String data) {
int index = stackLength;
detail[index][0] = "收益入账";
detail[index][1] = "+" + earn;
detail[index][2] = "余额=" + money;
detail[index][3] = data;
stackLength++;
}
// 展示信息
// 1. 采用栈的构思,即栈长度和数组长度不一致
public void showDetail() {
if (stackLength != 0) {
for (int i = 0; i < stackLength; i++) {
System.out.print(detail[i][0] + "\t");
System.out.print(detail[i][1] + "\t");
System.out.print(detail[i][2] + "\t");
System.out.print(detail[i][3]);
System.out.println("");
}
} else {
System.out.println("记录为空!");
}
}
}
package SmallChange;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Pocket pocket = new Pocket(100);
Scanner scanner = new Scanner(System.in);
boolean signal = true;
while (signal) {
System.out.println("--------零钱通菜单--------");
System.out.println("1.零钱通明细");
System.out.println("2.收益入账");
System.out.println("3.消费");
System.out.println("4.退出");
System.out.println("-------------------------");
System.out.print("请选择:");
int option = scanner.nextInt();
switch (option) {
case 1:
pocket.showDetail();
break;
case 2:
pocket.earn();
break;
case 3:
pocket.consume();
break;
case 4:
char answer;
while (true) {
System.out.println("y/n?");
answer = scanner.next().charAt(0);
if (answer == 'y' || answer == 'n') {
break;
}
}
if (answer == 'y') {
signal = false;
}
break;
default:
System.out.println("没有此选项,请重新选择!");
}
}
System.out.println("程序退出!");
}
}