零钱通面向对象版
整体思路:将面向过程实现的各个功能封装到类的各个方法中,再通过另一个类实例化出封装方法的对象进行调用
//功能实现类
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();
}
}
面向对象编程,为后续的维护,新增功能,修改功能。都提供了便利