package SmallChangeSys;
import java.sql.SQLOutput;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class SmallChangeSys {
public static void main(String[] args) {
//化繁为简
//1、先完成显示菜单,并可以选择菜单,给出对应的提示
boolean loop = true;
Scanner scanner = new Scanner(System.in);
String key = "";
//2、完成零钱通明细,
String details = "-------------零钱通明细------------";
//3、完成收益入账
//定义新的变量,完成功能驱动程序员增加新的变化和代码
double money = 0;
double balance = 0;
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
do {
//用do while是因为我需要默认执行一次
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来接收键盘输入的值
key = scanner.next();
// switch 分支控制
switch (key) {
//顺便复习case的规则。
case "1":
System.out.println(details);
break;
case "2":
//这里其实就是对上面的换行显示,主要这个日期需要注意一下。
//找出不正确的金额的条件,然后给出提示即可,就直接break。
//尽量找不符合的条件
System.out.println("请输入收益入账金额:");
money = scanner.nextDouble();
//money 的值需要校验哦,等下再完善
if (money <= 0) {
//先给出条件,立刻执行,不行就走人。
System.out.println("收益入账的金额需要大于等于0");
break;
//这样就能少写了啊。
}
balance += money;
//拼接收益信息
//System.out.println();
date = new Date();
details = details + "\n收益入账\t" + money + "\t" + sdf.format(date) + "\t" + balance;
break;
case "3":
System.out.println("输入消费金额");
money = scanner.nextDouble();
if (money <= 0 || money > balance){
System.out.println("消费金额,应该在0-" + balance);
break;
}
System.out.println("消费说明: ");
String note = scanner.next();
balance -= money;
date = new Date();
details = details + "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
break;
case "4":
//1、定义一个变量来接收用户的输入
String choice = "";
while (true) {
//要求用户必须输入y/n,否则就一直循环。
//一段代码完成一个小功能,尽量不要魂在一起。
System.out.println("你确定要退出吗y/n");
choice = scanner.next();
if ("y".equals(choice) || "n".equals(choice)) {
break;
}
}
//当用户退出while的时候,进行判断
if (choice.equals("y")) {
loop = false;
}
break;
default:
System.out.println("选择有误,请重新选择");
}
} while (loop);
System.out.println("--------退出了零钱通项目---------");
}
}
面向对象:
package SmallChangeSys.OOP;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
* 该类是完成零钱通的各个功能
* 将各个功能对应一个方法
* */
public class SmallChangeOOP {
boolean loop = true;
Scanner scanner = new Scanner(System.in);
String key = "";
//2、完成零钱通明细,
String details = "-------------零钱通明细------------";
//3、完成收益入账
//定义新的变量,完成功能驱动程序员增加新的变化和代码
double money = 0;
double balance = 0;
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//先完成对菜单的显示
public void mainmenu(){
do {
//用do while是因为我需要默认执行一次
System.out.println("\n================选择零钱通菜单OOP=============");
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来接收键盘输入的值
key = scanner.next();
// switch 分支控制
switch (key) {
//顺便复习case的规则。
case "1":
this.detail();
break;
case "2":
this.income();
break;
case "3":
this.pay();
break;
case "4":
this.exit();
break;
default:
System.out.println("选择有误,请重新选择");
}
} while (loop);
}
public void detail(){
System.out.println(details);
}
public void income(){
System.out.println("请输入收益入账金额:");
money = scanner.nextDouble();
//money 的值需要校验哦,等下再完善
if (money <= 0) {
//先给出条件,立刻执行,不行就走人。
System.out.println("收益入账的金额需要大于等于0");
return;//退出方法,不再执行后面的代码
//这样就能少写了啊。
}
balance += money;
//拼接收益信息
//System.out.println();
date = new Date();
details = details + "\n收益入账\t" + money + "\t" + sdf.format(date) + "\t" + balance;
return;
}
public void pay(){
System.out.println("输入消费金额");
money = scanner.nextDouble();
if (money <= 0 || money > balance){
System.out.println("消费金额,应该在0-" + balance);
return;
}
System.out.println("消费说明: ");
String note = scanner.next();
balance -= money;
date = new Date();
details = details + "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
return;
}
public void exit(){
String choice = "";
while (true) {
//要求用户必须输入y/n,否则就一直循环。
//一段代码完成一个小功能,尽量不要魂在一起。
System.out.println("你确定要退出吗y/n");
choice = scanner.next();
if ("y".equals(choice) || "n".equals(choice)) {
break;
}
}
//当用户退出while的时候,进行判断
if (choice.equals("y")) {
loop = false;
}
System.out.println("已经退出零钱通");
}
}
public class SmallChangeSysApp {
public static void main(String[] args) {
SmallChangeOOP smallChangeOOP = new SmallChangeOOP();
smallChangeOOP.mainmenu();
}
}
351

被折叠的 条评论
为什么被折叠?



