SmallChangeSysOOP.java
package com.hspedu.smallchange.oop;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;/*** 该类是完成零钱通的各个功能的类* 使用OOP(面向对象编程)*/
public class SmallChangeSysOOP {// 定义相关的变量boolean loop = true;Scanner scanner = new Scanner(System.in);String key = "";//2.完成零钱通明细//思路:(1)可以把收益入账和消费,保存到数组;(2)可以使用对象;(3)简单的做法,使用String拼接String details = "------------零钱通明细-----------";//3.完成收益入账double money = 0;double balance = 0;Date date = null;//date 是 java.util.Date 类型,表示日期SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); //可以用于日期格式化//4.消费//定义新变量,保存消费的原因String note ="";//先完成显示菜单,并可以选择public void mainMenu() {do{System.out.println("\n==========选择零钱通菜单(OOP)==========");System.out.println("\t\t\t1 零钱通明细");System.out.println("\t\t\t2 收益入账");System.out.println("\t\t\t3 消费");System.out.println("\t\t\t4 退 出");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(details);}//完成收益入账public void income(){System.out.print("收益入账金额:");money = scanner.nextDouble();// money的值范围应该校验// 找出不正确的金额条件,然后给出提示,就直接break;if(money <= 0) {System.out.println("收益入账金额需要 大于0");return;//退出方法,不再执行后续代码}balance += money;//拼接收益入账信息到 detailsdate = new Date();//获取当前日期details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t"+ balance;}// 消费public void pay(){System.out.print("请输入消费金额:");money = scanner.nextDouble();// money的值范围应该校验// 找出不正确的金额的情况if(money <= 0 || money > balance){System.out.println("你的消费金额应在0-" + balance);return;}System.out.print("请输入消费说明:");note = scanner.next();balance -= money;//拼接消费信息到 detailsdate = new Date();//获取当前日期details += "\n"+ note + "\t-" + money + "\t" + sdf.format(date) + "\t"+ balance;}// 退出public void exit(){// (1)定义一个变量 choice ,接收用户的输入// (2)使用while + break,来处理输入的是 y/n// (3)退出while后,在判断是 y还是n,就可以决定是否退出// (4)建议一段代码,完成一个小功能,尽量不要混在一起;String choice = "";while(true) { //要求用户必须输入y/n,否则就一直循环System.out.println("你确定要退出吗?y/n");choice = scanner.next();if("y".equals(choice) || "n".equals(choice)) {break;}}// 当用户退出while,进行判断if(choice.equals("y")) {loop = false;}}}
SmallChangeSysApp.java
package com.hspedu.smallchange.oop;/**
* 这里我们直接调用SmallChangeSysOOP*/
public class SmallChangeSysApp {public static void main(String[] args) {new SmallChangeSysOOP().mainMenu();}}