1.零钱通:
需求说明:
public class SmallChangeSys {
public static void main(String[] args) {
//思路化繁为简
//定义两个变量,收益金额和余额。
boolean loop = true;
Scanner myScanner = new Scanner(System.in);
String key = "";
//1.先打印显示菜单,根据用户输入提示信息
String detail = "--------零钱通明细--------";
//2.完成零钱通明细具体(包含入账和消费两部分,是一个记录,可以用下列三个方法保存:1.数组,2.对象,3.字符串)
double money = 0;
double balance = 0;
//date是java.util.Date类对象,表示日期。
Date date = null;
//YYYY代表年,mm代表月,dd代表日,HH代表时,mm代表分,对日期进行格式化。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//3.完成消费
//定义一个变量,消费原因
String sake = "";
//4.退出系统优化
//定义变量保存输入
String choice = "";
do {
System.out.println("n------零钱菜单------");
System.out.println("t1 零钱通明细");
System.out.println("t2 收益入账");
System.out.println("t3 消费");
System.out.println("t4 退 出");
System.out.println("请选择(1-4):");
key = myScanner.next();
switch (key) {
case "1":
System.out.println(detail);
break;
case "2":
money = myScanner.nextDouble();
//先判断不正确的输入,直接退出switch
//否则正常执行。
if(money<=0){
System.out.println("收益入账金额 需要 大于0");
break;
}
balance += money;
date = new Date();//获取当前日期。
//输出后发现日期格式和想要的不一样(Sat Oct 23 07:03:21 CST 2021) 故需要对date进行格式化。
// System.out.println(date);
detail += "n收益入账" + "t+" + money + "t" + sdf.format(date) + " 余额:" + balance;
break;
case "3":
System.out.print("消费金额:");
money = myScanner.nextDouble();
if(money<=0||money>balance){
System.out.println("消费金额 需要在0-"+balance);
break;
}
balance -= money;
System.out.print("消费原因:");
sake = myScanner.next();
detail += "n" + sake + "t-" + money + "t" + sdf.format(date) + " 余额" + balance;
break;
case "4":
//给出提示,你真要退出吗?
//先用while判断用户输入是否在y/n中,若不在则一直循环给出你真的退出吗?
//退出while后,根据choice值设置loop。
while (true) {
System.out.println("你真的要退出吗? y/n");
choice = myScanner.next();
if (choice.equals("y") || choice.equals("n")) {
break;
}
}
if (choice.equals("y")) {
loop = false;
}
break;
default:
System.out.println("你的选择有误 请重新输入");
break;
}
} while (loop);
System.out.println("退出了零钱通");
}
}
面向对象(OOP):
package project._1.oop;
public class SmallChangeSysApp {
public static void main(String[] args){
new SmallChangeSysOOP().mainMenu();
}
}
package project._1.oop;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class SmallChangeSysOOP {
boolean loop = true;
Scanner myScanner = new Scanner(System.in);
String key = "";
//1.先打印显示菜单,根据用户输入提示信息
String detail = "--------零钱通明细--------";
//2.完成零钱通明细具体(包含入账和消费两部分,是一个记录,可以用下列三个方法保存:1.数组,2.对象,3.字符串)
double money = 0;
double balance = 0;
//date是java.util.Date类对象,表示日期。
Date date = null;
//YYYY代表年,mm代表月,dd代表日,HH代表时,mm代表分,对日期进行格式化。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//3.完成消费
//定义一个变量,消费原因
String sake = "";
//4.退出系统优化
//定义变量保存输入
String choice = "";
public void mainMenu(){
do {
System.out.println("n------零钱通菜单OOP------");
System.out.println("t1 零钱通明细");
System.out.println("t2 收益入账");
System.out.println("t3 消费");
System.out.println("t4 退 出");
System.out.println("请选择(1-4):");
key = myScanner.next();
switch (key) {
case "1":
this.detail();
break;
case "2":
this.income();
break;
case "3":
this.pay();
break;
case "4":
this.exit();
break;
default:
System.out.println("你的选择有误 请重新输入");
break;
}
} while (loop);
}
public void detail(){
System.out.println(detail);
}
public void income(){
money = myScanner.nextDouble();
//先判断不正确的输入,直接退出switch
//否则正常执行。
if(money<=0){
System.out.println("收益入账金额 需要 大于0");
return;
}
balance += money;
date = new Date();//获取当前日期。
//输出后发现日期格式和想要的不一样(Sat Oct 23 07:03:21 CST 2021) 故需要对date进行格式化。
// System.out.println(date);
detail += "n收益入账" + "t+" + money + "t" + sdf.format(date) + " 余额:" + balance;
return;
}
public void pay(){
System.out.print("消费金额:");
money = myScanner.nextDouble();
if(money<=0||money>balance){
System.out.println("消费金额 需要在0-"+balance);
return ;
}
balance -= money;
System.out.print("消费原因:");
sake = myScanner.next();
detail += "n" + sake + "t-" + money + "t" + sdf.format(date) + " 余额" + balance;
return ;
}
public void exit(){
//给出提示,你真要退出吗?
//先用while判断用户输入是否在y/n中,若不在则一直循环给出你真的退出吗?
//退出while后,根据choice值设置loop。
while (true) {
System.out.println("你真的要退出吗? y/n");
choice = myScanner.next();
if (choice.equals("y") || choice.equals("n")) {
break;
}
}
if (choice.equals("y")) {
loop = false;
System.out.println("------退出了零钱通------");
return ;
}
return;
}
}



