用Java实现简单ATM机功能

下面是用Java实现简单ATM机功能的完整攻略:

1. 需求分析

在实现ATM机功能前,我们首先需要对需求进行分析。

根据通常的ATM操作流程,我们可以将以下主要功能列出:

  • 查询余额
  • 取款
  • 存款
  • 转账

2. 设计思路

在完成需求分析后,我们需要进行设计思路。

我们需要为ATM机设计一个系统,包含以下实体:

  • 用户
  • 银行账号
  • ATM机

我们可以通过面向对象的方式,创建以下类:

  • 用户类:包括用户信息、账号信息,以及相关操作方法
  • 银行账号类:包括账户余额等信息
  • ATM类:包括ATM机信息、操作方法等

3. 编码实现

在设计好类之后,我们可以开始进行编码实现。

3.1 用户类

public class User {
    private String name; // 用户名
    private String password; // 密码
    private Account account; // 账户信息

    public User(String name, String password, Account account) {
        this.name = name;
        this.password = password;
        this.account = account;
    }

    public void displayBalance() {
        System.out.println("当前账户余额为:" + account.getBalance() + "元");
    }

    public void withdraw(double amount) {
        account.setBalance(account.getBalance() - amount);
        System.out.println("已取出" + amount + "元,当前账户余额为:" + account.getBalance() + "元");
    }

    // 其他操作方法
}

3.2 银行账号类

public class Account {
    private String accountNumber; // 账户号码
    private double balance; // 账户余额

    public Account(String accountNumber, double balance) {
        this.accountNumber = accountNumber;
        this.balance = balance;
    }

    // getter/setter 略

    public void deposit(double amount) {
        balance += amount;
    }

    // 其他操作方法
}

3.3 ATM类

import java.util.HashMap;
import java.util.Map;

public class ATM {
    private Map<String, User> users; // 用户名与用户实例的映射
    private double balance; // ATM机目前的余额

    public ATM() {
        users = new HashMap<>();
    }

    // 管理员添加用户
    public void addUser(String name, String password, String accountNumber, double balance) {
        users.put(name, new User(name, password, new Account(accountNumber, balance)));
    }

    public void login(String name, String password) {
        User user = users.get(name);
        if (user == null || !user.getPassword().equals(password)) {
            System.out.println("用户名或密码错误,请重新输入!");
            return;
        }
        // 用户登录成功,显示操作菜单
        displayMenu(user);
    }

    // 显示操作菜单
    public void displayMenu(User user) {
        System.out.println("请选择您要进行的操作:");
        System.out.println("1. 查询余额");
        System.out.println("2. 取款");
        System.out.println("3. 存款");
        System.out.println("4. 转账");
        System.out.println("0. 退出");

        int choice;
        do {
            Scanner scanner = new Scanner(System.in);
            System.out.print("> ");
            choice = scanner.nextInt();
            switch (choice) {
                case 0:
                    return;
                case 1:
                    user.displayBalance();
                    break;
                case 2:
                    System.out.println("请输入取款金额:");
                    double amount = scanner.nextDouble();
                    user.withdraw(amount);
                    break;
                case 3:
                    System.out.println("请输入存款金额:");
                    amount = scanner.nextDouble();
                    user.getAcount().deposit(amount);
                    System.out.println("已成功存入" + amount + "元,当前账户余额为:" + user.getAcount().getBalance() + "元");
                    break;
                case 4:
                    System.out.println("请输入对方账户名:");
                    String targetName = scanner.next();
                    User targetUser = users.get(targetName);
                    if (targetUser == null) {
                        System.out.println("未找到该账户,请重新输入!");
                        break;
                    }
                    System.out.println("请输入转账金额:");
                    amount = scanner.nextDouble();
                    user.getAcount().transferTo(targetUser.getAcount(), amount);
                    System.out.println("已成功转账" + amount + "元给" + targetName);
                    break;
                default:
                    System.out.println("输入有误,请重新输入!");
            }
        } while (true);
    }
}

4. 示例

4.1 管理员添加用户

ATM atm = new ATM();
atm.addUser("张三", "123456", "1234567890", 10000);
atm.addUser("李四", "654321", "2345678901", 20000);

4.2 用户登录

atm.login("张三", "123456");

4.3 用户操作

选择“查询余额”功能,输出:

当前账户余额为:10000.0元

选择“取款”功能,输入取款金额为2000,输出:

已取出2000.0元,当前账户余额为:8000.0元

选择“存款”功能,输入存款金额为3000,输出:

已成功存入3000.0元,当前账户余额为:11000.0元

选择“转账”功能,输入对方账户名为“李四”,转账金额为5000,输出:

已成功转账5000.0元给李四

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用Java实现简单ATM机功能 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • spring5新特性全面介绍

    Spring5新特性全面介绍 1. 简介 Spring是一个流行的Java企业级开发框架,它提供了许多方便的功能和组件,例如依赖注入(DI)、切面编程(AOP)和面向切面编程(OOP)。Spring 5是Spring框架的最新版本,它引入了众多新特性和改进,以使Spring更加容易使用和灵活。 这里我们将详细介绍Spring5的新特性。 2. 响应式编程 S…

    Java 2023年5月19日
    00
  • 对象的销毁过程包括哪些步骤?

    对象的销毁过程是指当一个对象不再被需要时,系统如何对其进行销毁和回收相关资源的过程。在Java中,所有对象都是由垃圾回收器自动进行垃圾回收和销毁的。 对象的销毁过程包括以下步骤: 及时调用对象的finalize()方法,释放占用的资源。finalize()方法是一个由垃圾回收器在销毁对象之前调用的方法,可以在该方法中释放占用的资源,例如关闭文件、释放内存等。…

    Java 2023年5月10日
    00
  • Java实战项目 健身管理系统

    Java实战项目健身管理系统是一个比较完整的综合性项目,其中包含了Java Web 开发和数据库操作等多个方面的知识。要完成这个项目,需要按照以下步骤进行: 1. 确定项目需求 首先,需要明确健身管理系统的功能模块,例如会员管理、健身计划管理、课程管理、教练管理等。可以根据具体项目需求和功能模块确定表结构设计、接口设计和页面设计等。 2. 搭建开发环境 在搭…

    Java 2023年5月20日
    00
  • web项目WEB-INF下没有web.xml的解决方法

    当我们创建Web项目时,确保在Web项目的WEB-INF文件夹下存在一个名为web.xml的配置文件。但是,有些情况会导致Web项目中缺少web.xml文件,例如从其他人手中继承项目或者项目出现异常导致web.xml被删除。在这种情况下,我们需要找到一种方法来解决这个问题。 下面是解决Web项目WEB-INF文件夹下不存在web.xml文件的方法,示例说明:…

    Java 2023年6月16日
    00
  • Java读取文件及基于正则表达式的获取电话号码功能详解

    Java读取文件及基于正则表达式的获取电话号码功能详解 在Java中,读取文件是一个很基础的操作,而基于正则表达式的获取电话号码则是一个常见的需求。本文将详细讲解如何使用Java实现这两个功能。 Java读取文件 在Java中,可以使用java.io.File类来表示一个文件,使用java.io.BufferedReader类来读取文件内容。以下是一段示例代…

    Java 2023年5月20日
    00
  • JavaWeb项目中classpath路径详解

    JavaWeb项目中classpath路径详解 在JavaWeb项目中,classpath路径是非常重要的,它对项目中的各种资源进行了管理和访问。本篇文章将详细讲解JavaWeb项目中classpath路径的相关知识和使用方法。 什么是classpath路径? classpath(类路径)指明了Java程序运行时候的类加载路径,它是JVM在寻找类文件时候的默…

    Java 2023年6月16日
    00
  • IntelliJ IDEA 2020.2 配置大全详细图文教程(更新中)

    以下是“IntelliJ IDEA 2020.2 配置大全详细图文教程(更新中)”的完整攻略: 1. 安装 IntelliJ IDEA 在官网下载好安装包后,根据提示一步步进行安装。 2. 配置 JDK IntelliJ IDEA 需要配置 JDK 才能运行 Java 代码。我们需要先下载并安装 JDK,然后在 IntelliJ IDEA 中进行配置。 下载…

    Java 2023年5月20日
    00
  • Spring入门基础之依赖注入

    Spring入门基础之依赖注入 本文将详细讲解Spring框架入门基础之依赖注入。我们将探讨什么是依赖注入,为什么需要它,以及如何在Spring中实现依赖注入。本文也会提供一些示例来说明如何在Spring应用程序中使用依赖注入。 什么是依赖注入 依赖注入(Dependency Injection,简称DI)是一种设计模式,它可以使对象之间的依赖关系更加松散,…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部