零钱通-面向过程

零钱通


完整代码:面向过程编程

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:
		... ...
}
posted @ 2024-05-16 11:49  takenika  阅读(72)  评论(0)    收藏  举报