3.2零钱通

	import java.text.SimpleDateFormat;
	import java.util.Date;
	import java.util.Scanner;
	/*
	该类完成零钱通的各个功能类
	使用OOP面向对象编程
	将各个功能一一实现
	*/
	public class SmallChangeOOP {

		//属性
		boolean loop = true;
		Scanner scanner = new Scanner(System.in);
		String key = "";
		String details = "-----零钱通明细----";
		double money = 0;//输入的钱
		double balance = 0;//余额
		Date date = null;//date是java.util.Date类型,表示日期
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//用来日期格式化的
		String note = "";

		//完成显示菜单,并可以选择
		public void mainMenu() {
			do {
				System.out.println("\n=====零钱通菜单(OOP)=====");
				System.out.println("\t 1 零钱通明细");
				System.out.println("\t 2 收益入账");
				System.out.println("\t 3 消费");
				System.out.println("\t 4 退    出");
				System.out.println("请选择1~4");

				key = scanner.next();
				switch (key) {
					case "1":
					this.detail();
					break;

					case "2":
					this.income();
					break;

					case "3":
					this.pay();
					break;

					case "4":
					this.exit();
					break;
					default:
					System.out.println("选择错误,请在1~4直接选择");
				}
			} while (loop);
		}

		//完成零钱通明细
		public void detail() {
			System.out.println(details);
		}

		//完成收益入账
		public void income() {
			System.out.print("收益入账金额:");
			money = scanner.nextDouble();
			//money 的值范围应该效验
			//找出不正确的金额条件,然后给出提示,就直接return
			if (money <= 0) {
				System.out.println("收益入账金额 需要 大于 0");
				return;//退出方法,不再执行后面代码
			}
			//找出正确金额的条件
			balance += money;
			//拼接收益入账信息到details
			date = new Date();//获取当前日期
			details += "\n收益入账:\t" + money + "\t" + sdf.format(date) + "\t" + balance;
			}

		//消费
		public void pay() {
			System.out.println("3 消费");
			money = scanner.nextDouble();
			//money的值范围应该效验
			//找出金额不正确的情况
			if (money <= 0) {
				System.out.println("消费金额应该在0-" + balance);
				return;
			}
			System.out.println("消费说明:");
			note = scanner.next();
			balance -= money;

			//拼接消费信息到details
			date = new Date();//获取当前日期
			details += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
		}

		//退出
		public void exit() {
			String choice = "";
			while (true) {
				System.out.println("你确定要退出吗?y/n");
				choice = scanner.next();
				if ("y".equals(choice) || "n".equals(choice)) {
					break;
				}
			}
			//当用户退出while时进行判断
			if (choice.equals("y")) {
				System.out.println("4 退    出");
				loop = false;
			}
		}
	}
posted @ 2022-03-06 10:30  栗子一块两块  阅读(9)  评论(0)    收藏  举报