实现效果:
实现代码:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
* @className: SmallChangeSys
* @date: 2021/12/23 15:05
**/
public class SmallChangeSys {
//main方法
public static void main(String[] args) {
SmallChangeSys smallChangeSys = new SmallChangeSys();
Scanner scanner = new Scanner(System.in);
boolean flag = true;
String key = "";
String details = "---------------零钱通明细---------------";
double money = 0;
double balance = 0;//余额
Date date = new Date();//日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm");
String storeName = "";//消费说明
char answer;
do {
//菜单
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):");
key = scanner.next();
switch (key) {
case "1":
System.out.println(details);
break;
case "2":
System.out.print("收益入账金额:");
money = scanner.nextDouble();
/**找出不正确的金额条件,然后给出提示,就直接break**/
if (money <= 0) { //入账金额不能为负数
System.out.println("入账金额不能为负数...");
break;
}
balance += money;//入账后的余额
date = new Date();//获取当前日期
//拼接信息到details
details += "\n收益入账\t" + "+" + money + "\t" +
sdf.format(date) + "\t" + "余额:" + balance;
break;
case "3":
System.out.print("消费说明:");
storeName = scanner.next();
System.out.print("消费金额:");
money = scanner.nextDouble();
/**编程思想:找出不正确的金额条件,然后给出提示,就直接break**/
if (money > balance || money <= 0) {//消费金额不能大于余额
System.out.println("您的消费金额应该在0-" + balance);
break;
}
balance -= money;//消费后的余额
date = new Date();//获取当前日期
//拼接信息到details
details += "\n" + storeName + "\t" + "-" + money +
"\t" + sdf.format(date) + "\t" + "余额:" + balance;
break;
case "4":
// do {
// System.out.println("确认退出?y/n");
// answer = scanner.next().charAt(0);
// if (answer == 'y') {
// flag = false;
// }
// }while(answer != 'y' && answer != 'n');//输入y/n才能退出循环
/**
*建议使用下面的方法:一段代码完成一个小功能,尽量不要混在一起
*耦合性小,从代码的阅读性和扩展性来说都比较好
**/
while (true) {
System.out.println("你确定要退出吗?y/n");
answer = scanner.next().charAt(0);
if (answer == 'y' || answer == 'n') {
break;
}
}
if (answer == 'y') {
flag = false;
}
break;
default:
System.out.println("输入有误,重新输入。");
}
} while (flag);
System.out.println("---------退出零钱通---------");
}
}