一 面向过程编程
package project_.smallchangesys;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/*
1 先完成显示菜单 ,并且可以选择
2 完成零钱通明细
3 完成收益入账
4 消费
5 退出
6 用户输入4 退出时,需要给出提示"你确定退出吗?y/n",必须输入正确的y/n,否则循环输入指令,直到输入y或者n
7 在收益入账和消费时,判断金额是否合理,并给出提示
*/
public class SmallChangeSys {
//TODO 化繁为简
//TODO 1 先完成显示菜单,并可以选择菜单,给出对应提示
public static void main(String[] args) {
//TODO 定义相关变量
boolean loop = true;
Scanner scan = new Scanner(System.in);
String key = "";
//TODO 2 完成零钱通明细
String details = "==============================零钱通明细==============================";
//TODO 3 完成收益入账 定义新的变量
double money = 0.0;
double balance = 0.0;
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//TODO 4 消费
// 定义新变量 保存消费原因
String node = "";
do {
System.out.println("\n==============================零钱通菜单==============================");
System.out.println("\t\t\t\t\t\t 1 零 钱 同 明细");
System.out.println("\t\t\t\t\t\t 2 收 益 入 账");
System.out.println("\t\t\t\t\t\t 3 消 费");
System.out.println("\t\t\t\t\t\t 4 退 出");
System.out.print("请选择(1-4):");
key = scan.next();
//TODO 使用switch 分支控制
switch (key) {
case "1":
// System.out.println("1 零 钱 同 明细");
System.out.println(details);
break;
case "2":
// System.out.println("2 收 益 入 账");
System.out.print("收益入账金额:");
money = scan.nextDouble();
if (money<=0) {
System.out.println("收益入账金额 需要大于0");
break;
}
//TODO 校验money
balance += money;
// TODO 拼接收益如何做那个信息到details
date = new Date();
details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + balance;
break;
case "3":
// System.out.println("3 消 费");
System.out.print("消费金额:");
money = scan.nextDouble();
if (money<=0 ||money>balance) {
System.out.println("消费金额应该在 0-"+balance+"范围内");
break;
}
//TODO 校验money
System.out.println("消费说明:");
node = scan.next();
balance -= money;
// TODO 拼接消费信息
date = new Date();
details += "\n" + node + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
break;
case "4":
// System.out.println("4 退 出");
String choice = "";
while (true) {
System.out.println("你确定退出吗?y/n");
choice = scan.next();
if ("y".equals(choice) || "n".equals(choice)) {
break;
}
}
if ("y".equals(choice)) {
loop = false;
}
break;
default:
System.out.println("选择有误,重新选择哈");
}
} while (loop);
System.out.println("==============================退出了零钱通==============================");
}
}
二 面向对象编程
****1 功能类SmallChangeSysOOP
package project_.smallchangesys.oop;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/*
1 功能类
2 OOP
3 功能--方法
*/
public class SmallChangeSysOOP {
//TODO 属性
//TODO 定义相关变量
boolean loop = true;
Scanner scan = new Scanner(System.in);
String key = "";
//TODO 2 完成零钱通明细
String details = "==============================零钱通明细==============================";
//TODO 3 完成收益入账 定义新的变量
double money = 0.0;
double balance = 0.0;
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//TODO 4 消费
// 定义新变量 保存消费原因
String node = "";
// TODO 显示菜单
public void mainMenu(){
// System.out.println("显示零钱通菜单");
do {
System.out.println("\n=============================零钱通菜单(OOP)==============================");
System.out.println("\t\t\t\t\t\t 1 零 钱 同 明细");
System.out.println("\t\t\t\t\t\t 2 收 益 入 账");
System.out.println("\t\t\t\t\t\t 3 消 费");
System.out.println("\t\t\t\t\t\t 4 退 出");
System.out.print("请选择(1-4):");
key = scan.next();
//TODO 使用switch 分支控制
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("选择有误,重新选择哈");
}
} while (loop);
}
// TODO 明细
public void detail(){
System.out.println(details);
}
// TODO 收益入账
public void income(){
System.out.print("收益入账金额:");
money = scan.nextDouble();
if (money<=0) {
System.out.println("收益入账金额 需要大于0");
return;// 退出方法 不再执行
}
//TODO 校验money
balance += money;
// TODO 拼接收益如何做那个信息到details
date = new Date();
details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + balance;
}
// TODO 消费
public void pay(){
System.out.print("消费金额:");
money = scan.nextDouble();
if (money<=0 ||money>balance) {
System.out.println("消费金额应该在 0-"+balance+"范围内");
return;
}
//TODO 校验money
System.out.print("消费说明:");
node = scan.next();
balance -= money;
// TODO 拼接消费信息
date = new Date();
details += "\n" + node + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
}
// TODO 退出
public void exit(){
String choice = "";
while (true) {
System.out.println("你确定退出吗?y/n");
choice = scan.next();
if ("y".equals(choice) || "n".equals(choice)) {
break;
}
}
if ("y".equals(choice)) {
loop = false;
}
}
}
****1 实现类SmallChangeSysApp
package project_.smallchangesys.oop;
public class SmallChangeSysApp {
public static void main(String[] args) {
new SmallChangeSysOOP().mainMenu();
}
}