和微信零钱通类似,通过java来实现一个零钱通系统,实现支付和支出以及零钱明细功能
将其分成五个功能来实现
1.菜单编写:通过简单的输出语句即可
2.零钱通明细:利用字符串拼接
3:金额入账:设置入账金额和余额
4.消费 :设置消费说明和消费范围
5.退出:确保退出的判断
将这些功能依次封装到方法中,便于以后的修改和维护。
首先是菜单编写:
public void window() {
System.out.println("\n=============零钱通菜单============");
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):");
}
其次为消费明细:
//零钱通明细
String detail = "--------------零钱通明细--------------";
public void detail() {
System.out.println(detail);
}
然后为入账金额:
//收益
public void income() {
System.out.println("入账金额");
money = myscanner.nextDouble();
balance += money;
//金额校验
if (money <= 0) {
System.out.println("入账金额应该大于0");
return;
}
//拼接零钱通明细
date = new Date();
detail += "\n入账金额\t+" + money + "\t" + sdf.format(date) + "\t" + balance;
}
消费支出:
//支出
public void pay() {
System.out.println("消费金额");
money = myscanner.nextDouble();
//支出校验
if (money <= 0 || money > balance) {
System.out.println("消费金额应该在0~" + balance);
return;
}
System.out.println("消费说明");
note = myscanner.next();
balance -= money;
//拼接零钱通信息
date = new Date();
detail += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
}
此时零钱通功能如下(能实现入账和支出以及明细查询)
最后就是退出系统和属性的定义:
//退出
public void exit() {
//确保退出
while (true) { //无限循环确保输入y/n
System.out.println("你确定要退出吗(y/n)");
choice = myscanner.next();
if ("y".equals(choice) || "n".equals(choice)) {
break;
}
}
//通过y/n来确定是否退出零钱通
if("y".equals(choice)) {
loop = false; //让loop等于假即可退出do—while循环
System.out.println("零钱通系统退出!");
return;
}else if("n".equals(choice)){
return;
}
}
//属性
boolean loop = true;
String detail = "--------------零钱通明细--------------";
double money = 0; //收入
double balance = 0; //余额
Date date = null; //当前时间
String note = ""; //消费原因
String choice = ""; //退出选择
//new对象
Scanner myscanner = new Scanner(System.in); // 接收选择
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//格式化日期
效果如下:
最后通过do-while循环和switch循环来实现个个功能:
public void window() {
do {
System.out.println("\n=============零钱通菜单============");
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):");
int key = myscanner.nextInt();
switch (key) {
case 1:
detail();
break;
case 2:
income();
break;
case 3:
pay();
break;
case 4:
exit();
break;
default:
System.out.println("输入有误请重新输入");
}
} while (loop); //循环为真继续执行
}