简易项目--零钱通(2)--面向对象版

零钱通面向对象版

整体思路:将面向过程实现的各个功能封装到类的各个方法中,再通过另一个类实例化出封装方法的对象进行调用

//功能实现类
public class SmallChangeOOP {
    boolean loop = true;
    Scanner mysc = new Scanner(System.in);
    String details = "==============明细===================";//明细拼接头部
    double money = 0;//单次进出金额初始化
    double balance = 0;//余额
    Date date = null;//实时时间变量
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//把时间的格式改成自己想要的
    String Merchant = null;
    public void menu(){//菜单方法
        do{
            System.out.println("===============零钱通菜单==============");
            System.out.println("\t1.零钱通明细");
            System.out.println("\t2.收益入账");
            System.out.println("\t3.消费");
            System.out.println("\t4.退   出");
            System.out.println("请选择(1-4)");
            //2.使用switch语句完成选择
            char key = mysc.next().charAt(0);
            switch(key){
                case '1':
                    detailed();
                    break;
                case '2':
                    profit();
                    break;
                case '3':
                    pay();
                    break;
                case '4':
                    exit();
                    break;
                default:
                    System.out.println("输入错误,请输入1-4");
            }
    }while (loop);
    }
    public void detailed(){//查看明细方法
        //3.完成明细显示功能,这里使用字符串拼接。
        System.out.println(details);
        return;//return在没有返回值的方法中可以用来退出方法
    }
    public void profit(){//收益方法
        System.out.println("请输入收益金额:");
        money = mysc.nextDouble();
        //建立编程思想,不要全部放到分支语句,可以设置关卡,如果条件不满足直接break跳出不进行下面语句
        if (money <= 0){
            System.out.println("收益必须大于0");
            return;
        }
        balance+=money;
        date = new Date();//获取最新时间
        //怎么拼接是关键
        details+=
                "\n收益入账\t +"+money+" "+sdf.format(date)+"\t余额:"+balance;
        return;
    }
    public void pay(){//消费方法
        //5.完成消费
        System.out.println("请输入商户名:");
        Scanner s = new Scanner(System.in);
        Merchant = s.nextLine();
        System.out.println("请输入消费金额:");
        money = mysc.nextDouble();
        if (money > balance || money <=0) {
            System.out.println("支付失败,您的支付金额应该在1~"+balance+"之间");
            return;
        }
        balance-=money;
        details+=
                "\n"+Merchant+"\t -"+money+" "+sdf.format(date)+"\t余额:"+balance;

        return;
    }
    public void exit(){//退出方法
        boolean out = true;
        do{System.out.println("是否确认退出 y/n");//嵌套do while循环
            char answer = new Scanner(System.in).next().charAt(0);
            if (answer == 'y'){
                System.out.println("====零钱通已退出===");
                loop = false;
                out = false;
            }else if(answer == 'n'){
                System.out.println("已返回菜单");
                break;
            }
        }while (out);
        return;
    }
}
//调用类
public class Test003 {
    public static void main(String[] args) {
        new SmallChangeOOP().menu();
    }
}

面向对象编程,为后续的维护,新增功能,修改功能。都提供了便利

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值