零钱通-面向对象
零钱通面向对象
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();
}
}

浙公网安备 33010602011771号