效果截图
面向过程
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class SmallChangeSys {
public static void main(String[] args) {
boolean info = true;
Scanner scanner = new Scanner(System.in);
String key = "";//选择
String details="------------零钱通明细-----------------";
//3.完成收益入账
double money=0;
double balance=0;
Date date=null;//获得系统当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//时间格式化
//4 消费
String note="";
//改进
String check="";
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.print("请选择(1-4) ");
key = scanner.next();
switch (key) {
case "1":
System.out.println(details);
break;
case "2":
System.out.println("收益入账金额:");
money = scanner.nextDouble();
//这里应该校验
if (money<=0) {
System.out.println("收益应该是正数");
break;
}
balance+=money;
date =new Date();
details+="\n收益入账"+"\t"+"+"+money+"\t"+sdf.format(date)+"\t"+"余额:"+balance;
break;
case "3":
System.out.println("消费金额:");
money = scanner.nextDouble();
System.out.print("消费说明:");
note=scanner.next();
if (money>balance || money<=0) {
System.out.println("消费金额应该在0-"+balance);
break;
}
balance-=money;
date = new Date();
details+="\n"+note+"\t"+"-"+money+"\t"+sdf.format(date)+"\t"+"余额:"+balance;
break;
case "4":
while(true)//循环必须是y or n
{
System.out.println("您确定要退出嘛?(y/n)");
check =scanner.next();
System.out.println(check);
if ("y".equals(check)||"n".equals(check)) {//引用类型不能直接用等于
break;
}
}
if ("y".equals(check))//如果是y那么循环变量info就是false
//不再进行循环
info=false;
break;
default:
System.out.println("输入选项错误,请重新选择");
}
} while (info);//info 循环变量
System.out.println("您退出了零钱通系统");
}
}
面向对象
//调用类
public class Changeoop {
public static void main(String[] args) {
new Change().mainMew();
}
}
实现类
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Change {
boolean info = true;
Scanner scanner = new Scanner(System.in);
String key = "";//选择
String details="------------零钱通明细-----------------";
//3.完成收益入账
double money=0;
double balance=0;
Date date=null;//获得系统当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//时间格式化
//4 消费
String note="";
//改进
String check="";
public void mainMew(){
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.print("请选择(1-4) ");
key = scanner.next();
switch (key) {
case "1":
this.details();
break;
case "2":
this.income();
break;
case "3":
this.pay();
break;
case "4":
this.exit();
break;
default:
System.out.println("输入选项错误,请重新选择");
}
} while (info);//info 循环变量
System.out.println("您退出了零钱通系统");
}
public void details(){
System.out.println(details);
}
public void income(){
System.out.println("收益入账金额:");
money = scanner.nextDouble();
//这里应该校验
if (money<=0) {
System.out.println("收益应该是正数");
return;
}
balance+=money;
date =new Date();
details+="\n收益入账"+"\t"+"+"+money+"\t"+sdf.format(date)+"\t"+"余额:"+balance;
}
public void pay(){
System.out.println("消费金额:");
money = scanner.nextDouble();
System.out.print("消费说明:");
note=scanner.next();
if (money>balance || money<=0) {
System.out.println("消费金额应该在0-"+balance);
return;
}
balance-=money;
date = new Date();
details+="\n"+note+"\t"+"-"+money+"\t"+sdf.format(date)+"\t"+"余额:"+balance;
}
public void exit(){
while(true)//循环必须是y or n
{
System.out.println("您确定要退出嘛?(y/n)");
check =scanner.next();
System.out.println(check);
if ("y".equals(check)||"n".equals(check)) {//引用类型不能直接用等于
break;
}
}
if ("y".equals(check))//如果是y那么循环变量info就是false
//不再进行循环
info=false;
}
}