零钱通-面向对象

零钱通面向对象


SmallChangeSysOOP

SmallChangeSysOOP.java

import java.util.Scanner;
import java.util.Date;
import java.text.SimpleDateFormat;

/*
 * 该类是完成零钱通的各个功能的类
 * 使用 OOP (面向对象编程)
 * 将各个功能对应一个方法
 */

// 主方法的变量作为类的属性;
// 各个功能封装到各个方法区,然后融合到功能区

public class SmallChangeSysOOP{
	// 属性
	// 定义相关的变量
		boolean loop = true;
		Scanner scanner = new Scanner(System.in);
		String key="";

		// 2 完成零钱通明细
		// ① 将收益入账和消费,保存到数组 ② 可以使用对象 ③ 通过 String 拼接
		String detals = "========零钱通明细========";

		// 3. 完成收益入账, 完成功能驱动程序增加新的变化和代码
		// 定义新的变量

		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 mainMemu(){
		System.out.println("显示零钱通菜单");
		
		do{
			System.out.println("\n=========零钱通菜单========");
			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 分支控制
			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("选择有错误");
			}

		}while(loop);
	}

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

	public void income(){
		System.out.println("[2] 收益入账");
		money = scanner.nextDouble();
		// 找出不正确的金额条件,然后给出提示,就直接 break
		
		if(money <= 0){
			System.out.println("正确的收益入账金额要大于0");
			return; // 退出方法,不在执行后面的代码
		}

		balance += money;
		date = new Date();
		detals += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + balance;
	}

	public void pay(){
		System.out.println("[3]消费");
		money = scanner.nextDouble();
		if (money <= 0 || money > balance) {
			System.out.println("你的消费金额应该在 0-" + balance);
		}
		balance -= money;
		System.out.println("消费说明");
		note = scanner.next();
		date = new Date(); // 获取当前的信息
		detals += "\n" + note + "\t\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
	}

	public void exit(){
		System.out.println("[4] 退出");
		// 用户在输入 4 退出时,给出提示 "你确定要退出吗? y/n", 必须输入正确的 y/n,否则循环输入指令,直到输入 y 或者 n
		// (1) 定义一个变量 choice,接收用户的输入。
		// (2) 使用 while + break,来处理接收到输入是 y/n 
		// (3) 退出 while 后,再判断是 y 还是 
		String choice = "";
		while (true){
			System.out.println("你确定要退出吗? y/n");
			choice = scanner.next();
						
			if("y".equals(choice) || "n".equals(choice)){
				break;
			}
		
			//  while 后,再判断是 y 还是 n
			if(choice.equals("y")){
				loop = false;
			}
		}	
	}

}

SmallChangeSysApp

public class SmallChangeSysApp{

	public static void main(String[] args) {

		SmallChangeSysOOP SmallChangeSysOOP1 = new SmallChangeSysOOP();

		SmallChangeSysOOP1.mainMemu();

		// 也可以这样写一句话
		// new SmallChangeSysOOP.mianMemu();
	}
	
}
posted @ 2024-05-16 23:28  takenika  阅读(29)  评论(0)    收藏  举报