package Project.SmallChange;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class SmallChangeOOP {
private String details = "--------------零钱通明细-----------";
private double money=0;//金额
private double blance=0;//总余额
private String note=null;//用来存储支出说明
Date date = null;//Date 类型的date,将它置为null,用来获取当前的时间
Scanner scanner=new Scanner(System.in);
//创建Scanner 类的scanner对象
SimpleDateFormat stf=new SimpleDateFormat("YYYY-MM-DD hh:mm");
//创建 stf对象 用来格式化当前的时间
public void menu(){
System.out.println("===========零钱通菜单===========");
System.out.println("\t1.零钱通明细:");
System.out.println("\t2.收益入账:");
System.out.println("\t3.消费:");
System.out.println("\t4.退\t出:");
System.out.println("===============================");
}//打印零钱通的菜单
public void detaile(){
System.out.println(details);
}
//打印零钱通明细
public void pro(){
//存储入账金额的方法
System.out.println("请输入入账金额:");
//询问用户要存入的金额
money=scanner.nextDouble();
//接收金额
if (money > 0){
//判断存入的金额是否合理
//思路: 存入的金额不能小于等于零
blance+=money;
//将合理的金额赋值给总余额
date=new Date();
//获取当前的时间
details+="\n收益入账 +" + money + "\t" + stf.format(date) + " +" + blance+"\n";
//修改details的值
} else {
System.out.println("入账金额应该 大于 0");
//如果存入的金额,不合理就直接输出提示!
}
}
public void expend(){
System.out.println("请输入支出金额:");
//提示消费多少钱
money=scanner.nextDouble();
//接收消费的金额
if (money <= blance && money > 0){
//判断用户输入的消费金额是否合理
// 思路:消费金额不能大于卡内余额,并且消费金额大于零
System.out.println("支出说明:");
//说明干什么要支出这笔钱
note=scanner.next();
blance-=money;
//从总余额中减去消费金额
date=new Date();
//获取当前的时间
details+=note+"-"+money+"\t"+stf.format(date)+" +"+blance+"\n";
}else {
System.out.println("支出金额应在0-" + blance);
//如果消费金额不合理 提示信息
}
}
}
主方法:SmallChangeAPP
package Project.SmallChange;
import java.util.Scanner;
public class SmallChangeAPP {
public static void main(String[] args) {
SmallChangeOOP oop = new SmallChangeOOP();
//创建对象oop
Scanner scanner = new Scanner(System.in);
//创建对象scanner
boolean loop=true;
//创建一个布尔型的loop作为循环的条件
do {//用loop为true把do while做成死循环
oop.menu();
System.out.println("请输入1-4使用的零钱通服务:");
//给用户一个提示信息 让用户按照零钱通菜单选择要使用的服务
// 输入1-4进行选择
int i=scanner.nextInt();
//接收用户的输入
switch (i){
case 1:
oop.detaile();
break;
//当用户输入1时,对应调用打印明细的details方法
case 2:
oop.pro();
break;
//当用户输入2 时,对应调用存钱的方法
case 3:
oop.expend();
break;
//3取钱方法
case 4://退出零钱通服务
do {
System.out.println("是否退出零钱通服务?y/n");
//首先询问是否要退出
char key=scanner.next().charAt(0);
//接受用户的输入
if (key=='y'){
loop=false;
//如果用户输入的是y,就将死循环的条件loop置为false退出程序
System.out.println("零钱通系统结束。。。谢谢使用");
break;
}
if (key=='n'){
break;
//如果用户输入n或其他字符就继续使用零钱通
}
}while (true);
break;
}
}while (loop);
}
}