零钱通-面向过程
零钱通
目录
完整代码:面向过程编程
import java.util.Scanner;
import java.util.Date;
import java.text.SimpleDateFormat;
/*
1. 用户在输入 4 退出时,给出提示 "你确定要退出吗? y/n", 必须输入正确的 y/n,
否则循环输入指令,直到输入 y 或者 n
2. 在收益入账和消费时,判断金额是否合理,并给出相应的提示
*/
public class SmallChangeSys{
// 化繁为简
// 1. 先完成显示菜单,并可以选择菜单,给出对应提示
// 2. 完成零钱通明细
// 3. 完成收益入账
// 4.退出
// 用户在输入 4 退出时,给出提示 "你确定要退出吗? y/n", 必须输入正确的 y/n,否则循环输入指令,直到输入 y 或者 n
public static void main(String[] args) {
// 定义相关的变量
boolean loop = true;
Scanner scanner = new Scanner(System.in);
String key="";
// 2 完成零钱通明细
// ① 将收益入账和消费,保存到数组 ② 可以使用对象 ③ 通过 String 拼接
String detals = "========零钱通明细========";
// 3. 完成收益入账, 完成功能驱动程序增加新的变化和代码
// 定义新的变量
double money = 0;
double balance = 0;
Date date = null; // date 是java.util.Date 类型,表示日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); // 可以用于日期格式化的对象
// 消费
// 定义新的变量,保存消费的原因
String note = "";
do{
System.out.println("\n=========零钱通菜单========");
System.out.println("\t 1 零钱通明细");
System.out.println("\t 2 收益入账");
System.out.println("\t 3 消费");
System.out.println("\t 4 退出");
System.out.println("请选择(1-4)");
key = scanner.next();
// 使用 switch 分支控制
switch(key){
case "1":
System.out.println(detals);
break;
case "2":
System.out.println("【2】 收益入账");
money = scanner.nextDouble();
// 找出不正确的金额条件,然后给出提示,就直接 break
if(money <= 0){
System.out.println("正确的收益入账金额要大于0");
break;
}
balance += money;
date = new Date();
detals += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + balance;
break;
case "3":
System.out.println("【3】 消费");
money = scanner.nextDouble();
if (money <= 0 || money > balance) {
System.out.println("你的消费金额应该在 0-" + balance);
}
balance -= money;
System.out.println("消费说明");
note = scanner.next();
date = new Date(); // 获取当前的信息
detals += "\n" + note + "\t\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
break;
case "4":
System.out.println("【4】 退出");
// 用户在输入 4 退出时,给出提示 "你确定要退出吗? y/n", 必须输入正确的 y/n,否则循环输入指令,直到输入 y 或者 n
// (1) 定义一个变量 choice,接收用户的输入。
// (2) 使用 while + break,来处理接收到输入是 y/n
// (3) 退出 while 后,再判断是 y 还是 n
String choice = "";
while (true){
System.out.println("你确定要退出吗? y/n");
choice = scanner.next();
if("y".equals(choice) || "n".equals(choice)){
break;
}
}
// while 后,再判断是 y 还是 n
if(choice.equals("y")){
loop = false;
}
break;
default:
System.out.println("选择有错误");
}
}while(loop);
System.out.println("退出了零钱项目");
}
}
一步一步来
1. 先完成显示菜单,并可以选择菜单,给出对应提示
import java.util.Scanner;
public class SmallChangeSys{
// 化繁为简
// 1. 先完成显示菜单,并可以选择菜单,给出对应提示
public static void main(String[] args) {
// 定义相关的变量
boolean loop = true;
Scanner scanner = new Scanner(System.in);
String key="";
do{
System.out.println("\n=========零钱通菜单========");
System.out.println("\t 1 零钱通明细");
System.out.println("\t 2 收益入账");
System.out.println("\t 3 消费");
System.out.println("\t 4 退出");
System.out.println("请选择(1-4)");
key = scanner.next();
// 使用 switch 分支控制
switch(key){
case "1":
System.out.println("1 零钱通明细");
break;
case "2":
System.out.println("2 收益入账");
break;
case "3":
System.out.println("3 消费");
break;
case "4":
System.out.println("4 退出");
loop = false;
break;
default:
System.out.println("选择有错误");
}
}while(loop);
System.out.println("退出了零钱项目");
}
}
2. 完成零钱通明细
import java.util.Scanner;
public class SmallChangeSys{
// 化繁为简
// 1. 先完成显示菜单,并可以选择菜单,给出对应提示
// 2. 完成零钱通明细
public static void main(String[] args) {
// 定义相关的变量
.. ...
// 2 完成零钱通明细
// ① 将收益入账和消费,保存到数组 ② 可以使用对象 ③ 通过 String 拼接
String detals = "========零钱通明细========";
do{
... ...
switch(key){
case "1":
System.out.println(detals);
break;
... ...
}while(loop);
... ...
3. 完成收益入账
import java.util.Scanner;
import java.util.Date;
import java.text.SimpleDateFormat;
... ...
// 化繁为简
// 1. 先完成显示菜单,并可以选择菜单,给出对应提示
// 2. 完成零钱通明细
// 3. 完成收益入账
... ...
// 2 完成零钱通明细
// ① 将收益入账和消费,保存到数组 ② 可以使用对象 ③ 通过 String 拼接
String detals = "========零钱通明细========";
// 3. 完成收益入账, 完成功能驱动程序增加新的变化和代码
// 定义新的变量
double money = 0;
double balance = 0;
Date date = null; // date 是java.util.Date 类型,表示日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); // 可以用于日期格式化的对象
// 消费
// 定义新的变量,保存消费的原因
String note = "";
do{
... ...
// 使用 switch 分支控制
switch(key){
case "1":
... ...
case "2":
System.out.println("2 收益入账");
money = scanner.nextDouble();
balance += money;
date = new Date();
detals += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + balance;
break;
case "3":
System.out.println("3 消费");
money = scanner.nextDouble();
balance -= money;
System.out.println("消费说明");
note = scanner.next();
date = new Date(); // 获取当前的信息
detals += "\n" + note + "\t\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
break;
case "4":
... ...
default:
System.out.println("选择有错误");
}
}while(loop);
... ...
4.退出,用户在输入 4 退出时,给出提示 "你确定要退出吗? y/n", 必须输入正确的 y/n,否则循环输入指令,直到输入 y 或者 n
case "4":
System.out.println("4 退出");
// 用户在输入 4 退出时,给出提示 "你确定要退出吗? y/n", 必须输入正确的 y/n,否则循环输入指令,直到输入 y 或者 n
// (1) 定义一个变量 choice,接收用户的输入。
// (2) 使用 while + break,来处理接收到输入是 y/n
// (3) 退出 while 后,再判断是 y 还是 n
String choice = "";
while (true){
System.out.println("你确定要退出吗? y/n");
choice = scanner.next();
if("y".equals(choice) || "n".equals(choice)){
break;
}
}
// while 后,再判断是 y 还是 n
if(choice.equals("y")){
loop = false;
}
break;
5.找出不正确的金额条件,然后给出提示,就直接 break
switch(key){
... ...
case "2":
System.out.println("【2】 收益入账");
money = scanner.nextDouble();
// 找出不正确的金额条件,然后给出提示,就直接 break
if(money <= 0){
System.out.println("正确的收益入账金额要大于0");
break
balance += money;
date = new Date();
detals += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + balance;
break;
case "3":
System.out.println("【3】 消费");
money = scanner.nextDouble();
if (money <= 0 || money > balance) {
System.out.println("你的消费金额应该在 0-" + balance);
}
balance -= money;
System.out.println("消费说明");
note = scanner.next();
date = new Date(); // 获取当前的信息
detals += "\n" + note + "\t\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
break;
case "4":
...
default:
... ...
}

浙公网安备 33010602011771号