【JavaSE】如何实现简易的零钱通项目?附完整代码(下)

简介: 文章目录1 零钱通项目介绍2 面向过程方式实现2.1 菜单设计实现2.2 零钱明细展示功能实现2.3 收益入账功能实现2.4 消费功能的实现2.5 程序退出实现2.6 *完整代码3 面向对象方式实现4 功能展示写在最后

3 面向对象方式实现

🍑 在该部分,我们只需要将面向过程实现部分的代码进行优化即可。

首先我们创建一个类 SmallChange,里面需要包含该程序的基础属性以及基础功能的方法 ,参考代码如下:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class SmallChange {
    Scanner in = new Scanner(System.in);
    // 相关属性
    // 菜单部分相关变量
    boolean loop = true;  // 用于控制循环
    String key = "";  // 菜单选项
    // 零钱通明细相关变量
    String details = "=================零钱通明细=================";  // 展示明细
    // 收益入账相应的变量
    double money = 0;  // 入账金额
    double balance = 0;  // 余额
    Date date = null;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");  // 日期格式化
    // 消费部分
    String note = "";  // 用于存储消费说明
    // 显示菜单
    public void mainMenu(){
        do{
            // 具体菜单
            System.out.println("=================选择零钱通菜单=================");
            System.out.println("\t\t\t\t1 零钱通明细");
            System.out.println("\t\t\t\t2 消费入账");
            System.out.println("\t\t\t\t3 消费");
            System.out.println("\t\t\t\t4 退出");
            System.out.println("请选择(1-4): ");
            key = in.next();
            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);
    }
    // 零钱通明细
    public void detail(){
        System.out.println(details);
    }
    // 收益入账
    public void income(){
        System.out.println("=================收益入账=================");
        System.out.println("收益入账金额: ");
        money = in.nextDouble();
        // 校验money范围
        if(money <= 0){
            System.out.println("入账信息有误!");  // 提示错误信息
            return;
        }
        balance += money;
        // 拼接入账信息到 details
        date = new Date();  // 获取当前日期
        details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t" + balance;
        return;
    }
    // 消费
    public void pay(){
        System.out.println("消费金额: ");
        money = in.nextDouble();
        // money 校验
        if(money <= 0 || balance < money){
            System.out.println("消费金额不正确或余额不足,无法进行消费!");
            return;
        }
        System.out.println("消费说明: ");
        note = in.next();
        balance -= money;
        // 拼接消费信息到 details
        date = new Date();  // 获取当前日期
        details += "\n" + note + "\t-" + money + "\t" + sdf.format(date) + "\t" + balance;
        return;
    }
    // 退出
    public void exit(){
        // 询问用户是否退出
        String choice = "";
        while (true){
            System.out.println("你确定要退出吗?y/n: ");
            choice = in.next();
            if("y".equals(choice) || "n".equals(choice)){
                break;
            }
        }
        // 用户输入 y 则退出, 输入 n 则不退出
        if(choice.equals("y")){
            loop = false;
        }
        return;
    }
}

🍎 而后,我们只需要在主函数中创建对象,来调用相应的方法,即可实现零钱通功能,相关代码如下:

public class ShowSmallChange {
    public static void main(String[] args) {
        SmallChange sc = new SmallChange();
        sc.mainMenu();
    }
}

4 功能展示

⭐️ Star 1: 输入 2 ,收账 100,再次输入 2,收账 200;


Star 2: 输入 3,消费 99,消费信息为 肯德基;


⭐️ Star 3: 输入 1,展示一下零钱明细;


⭐️ Star 4: 输入 4,而后输入 y,退出程序。

相关文章
|
4月前
|
Java
【零基础学Java】—发红包案例(二十三)
【零基础学Java】—发红包案例(二十三)
|
11天前
|
JavaScript Java 测试技术
基于Java的网上奶茶店系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网上奶茶店系统的设计与实现(源码+lw+部署文档+讲解等)
22 0
|
11天前
|
JavaScript Java 测试技术
基于Java的理财通的设计与实现(源码+lw+部署文档+讲解等)
基于Java的理财通的设计与实现(源码+lw+部署文档+讲解等)
24 0
|
11天前
|
JavaScript Java 测试技术
基于Java的购物商场的设计与实现(源码+lw+部署文档+讲解等)
基于Java的购物商场的设计与实现(源码+lw+部署文档+讲解等)
29 2
|
14天前
|
JavaScript Java 测试技术
基于Java的网上购物商城的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网上购物商城的设计与实现(源码+lw+部署文档+讲解等)
45 1
|
14天前
|
JavaScript Java 测试技术
基于Java的校园线上订餐系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的校园线上订餐系统的设计与实现(源码+lw+部署文档+讲解等)
27 1
|
14天前
|
JavaScript Java 测试技术
基于Java的网上购物平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网上购物平台的设计与实现(源码+lw+部署文档+讲解等)
22 1
|
15天前
|
JavaScript Java 测试技术
基于Java的网上茶叶销售平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网上茶叶销售平台的设计与实现(源码+lw+部署文档+讲解等)
25 0
|
16天前
|
JavaScript Java 测试技术
基于Java的淘乐乐员工购物商城的设计与实现(源码+lw+部署文档+讲解等)
基于Java的淘乐乐员工购物商城的设计与实现(源码+lw+部署文档+讲解等)
20 0
|
1月前
|
存储 Java 数据库
Java实现一个简单的图书管理系统(内有源码)
Java实现一个简单的图书管理系统(内有源码)