【java学习】第六天(项目零钱通)

quange 2022-4-15 167 4/15

项目零钱通

【java学习】第六天(项目零钱通)

项目代码实现

【java学习】第六天(项目零钱通)

面向过程方式代码 (边看边做)

package com.quange.smallchange;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class SmallChangeSys {
//     化繁为简
//     1. 首先完成显示菜单,并可以选择菜单,给出对应的提示信息
//     2. 完成零钱通明细
//     思路:(1)可以把收益入账和消费,保存到数组 (2)可以使用对象 (3) 简单的话使用字符串拼接的方法。
//     3. 完成收益入账
//     思路:创建新的变量 入账金额,余额,当前日期时间
    // 4. 完成 消费
    // 思路: 常见新的变量,保存消费的原因

    public static void main(String[] args) {

        // 定义相关的变量
        boolean loop = true;
        Scanner scanner = new Scanner(System.in);

        String  details = "----------------零钱通明细----------------";

        // 收益的钱
        double money = 0;

        // 余额
        double balance = 0;

        // date 是 java.util.Date 类型 表示日期
        Date date = null;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 可以用于日期格式化

        String note = "";

        do {
            System.out.println("================零钱通菜单================");
            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):");
            String key = scanner.next();

            // 使用switch 分支控制
            switch (key) {
                case "1" :
                    System.out.println(details);
                    break;
                case "2" :
                    System.out.print("收益入账金额:");
                    // 接收输入的入账金额
                    money = scanner.nextDouble();
                    // 对money值的范围进行校验
                    if (money <= 0){
                        System.out.println("输入的金额应大于0");
                        break;
                    }
                    // 把入账的金额加入到余额中
                    balance += money;

                    date = new Date();
                    // 格式化日期
                    String date1 = sdf.format(date);

                    // 拼接收益入账信息到 details
                    details += "\n收益入账\t+" + money + "\t" + date1 + "\t" + balance;
                    break;
                case "3":
                    System.out.println("输入消费金额");
                    money = scanner.nextDouble();
                    // 对消费金额进行校验
                    if (money > balance || money <= 0){
                        System.out.println("消费金额应该在0" + balance + "元");
                        break;
                    }

                    System.out.println("请出入消费说明!");
                    note = scanner.next();

                    balance -= money;

                    date = new Date();
                    // 格式化日期
                    String date2 = sdf.format(date);

                    // 拼接消费信息到 details
                    details += "\n" + note + "\n \t-" + money + "\t" + date2 + "\t" + balance;
                    break;
                case "4":
                    String choice = "";
                    // 判断是否输入的是y/n
                    while (true){
                        System.out.print("请确认是否退出(y/n)");
                        choice = scanner.next();
                        if ("y".equals(choice) || "n".equals(choice)){
                            break;
                        }
                    }
                    // 如果输入的是Y,则退出程序
                    if (choice.equals("y")){
                        loop = false;
                    }

                    break;
                default:
                    System.out.println("菜单选择有误,请重新选择!!");
            }
        }while (loop);

        System.out.println("已推出零钱通程序!!");
    }
}
----------------零钱通明细----------------
收益入账	+100.0	2022-04-15 14:34:22	100.0
================零钱通菜单================
			1: 零钱通明细
			2: 收益入账
			3: 消费
			4: 退   出
请选择菜单(1-4):

面向对象编程方法 oop代码   (边看边做)

package com.quange.smallchange;

/**
 * 调用对象,显示菜单
 */

public class SmallChangeSysApp {
    public static void main(String[] args) {
        new SmallChangeSysOOP().mainMenu();
    }
}
package com.quange.smallchange;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/**
 * 该类是完成零钱通各个功能的类,使用 oop面向对象编程
 * 1、显示菜单
 * 2、完成零钱通明细
 * 3、完成收益入账
 * 4、消费
 * 5、推出
 * 思路:将各个功能,对应一个方法
 */
public class SmallChangeSysOOP {
    // 属性
    // 定义相关的变量
    boolean loop = true;
    Scanner scanner = new Scanner(System.in);
    String  details = "----------------零钱通明细----------------";
    // 收益的钱
    double money = 0;
    // 余额
    double balance = 0;
    // date 是 java.util.Date 类型 表示日期
    Date date = null;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 可以用于日期格式化
    String note = "";

    // 显示菜单
    public void mainMenu(){
        do {
            System.out.println("================零钱通菜单================");
            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):");
            String key = scanner.next();

            // 使用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);

        System.out.println("已推出零钱通程序!!");
    }

    // 零钱通明细
    public void detail(){
        System.out.println(details);
    }

    // 零钱通收益入账
    public void income(){
        System.out.print("收益入账金额:");
        // 接收输入的入账金额
        money = scanner.nextDouble();
        // 对money值的范围进行校验
        if (money <= 0){
            System.out.println("输入的金额应大于0");
            return;  // 推出方法,不在执行后面的语句代码
        }
        // 把入账的金额加入到余额中
        balance += money;

        date = new Date();
        // 格式化日期
        String date1 = sdf.format(date);

        // 拼接收益入账信息到 details
        details += "\n收益入账\t+" + money + "\t" + date1 + "\t" + balance;
    }

    // 消费
    public void pay(){
        System.out.println("输入消费金额");
        money = scanner.nextDouble();
        // 对消费金额进行校验
        if (money > balance || money <= 0){
            System.out.println("消费金额应该在0" + balance + "元");
            return;
        }

        System.out.println("请出入消费说明!");
        note = scanner.next();

        balance -= money;

        date = new Date();
        // 格式化日期
        String date2 = sdf.format(date);

        // 拼接消费信息到 details
        details += "\n" + note + "\n \t-" + money + "\t" + date2 + "\t" + balance;
    }

    public void exit(){
        String choice = "";
        // 判断是否输入的是y/n
        while (true){
            System.out.print("请确认是否退出(y/n)");
            choice = scanner.next();
            if ("y".equals(choice) || "n".equals(choice)){
                break;
            }
        }
        // 如果输入的是Y,则退出程序
        if (choice.equals("y")){
            loop = false;
        }
    }


}
================零钱通菜单================
			1: 零钱通明细
			2: 收益入账
			3: 消费
			4: 退   出
请选择菜单(1-4):4
请确认是否退出(y/n)y
已推出零钱通程序!!

进程已结束,退出代码0

 

- THE END -
最后修改:2022年4月15日
1

版权声明:
一、本站致力于为软件爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的所有下载文件均为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、我站提供用户下载的所有内容均转自互联网。如有内容侵犯您的版权或其他利益的,请编辑邮件并加以说明发送到站长邮箱。站长会进行审查之后,情况属实的会在三个工作日内为您删除。

共有 2 条评论

  1. quange博主

    签到成功!签到时间:2022-04-15 15:00:51,每日打卡,生活更精彩哦~

  2. quange博主

    签到成功!签到时间:2022-04-15 00:08:13,每日打卡,生活更精彩哦~