Java实现ATM取款机程序

下面我将为您详细讲解Java实现ATM取款机程序的完整攻略。整个过程可以分为三部分:1.创建账户;2.登录账户;3.执行取款操作。

1. 创建账户

首先,我们需要定义一个Account类,包括属性:账号、密码、余额等。代码如下:

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

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

    public String getAccountNumber() {
        return accountNumber;
    }

    public String getPassword() {
        return password;
    }

    public double getBalance() {
        return balance;
    }

    // 增加余额
    public void deposit(double amount) {
        balance += amount;
    }

    // 减少余额
    public void withdraw(double amount) {
        balance -= amount;
    }
}

然后,我们可以在ATM机程序中创建一个ArrayList,用来存储所有的账户信息,示例如下:

public class ATM {
    private ArrayList<Account> accounts;   // 存储账户信息

    public ATM() {
        accounts = new ArrayList<Account>();
    }

    // 添加账户
    public void addAccount(String accountNumber, String password, double balance) {
        accounts.add(new Account(accountNumber, password, balance));
    }

    // 判断账号是否存在
    public int findAccount(String accountNumber) {
        for (int i = 0; i < accounts.size(); i++) {
            if (accounts.get(i).getAccountNumber().equals(accountNumber)) {
                return i;
            }
        }
        return -1;
    }
}

2. 登录账户

在创建账户后,我们需要让用户登录他们的账户。代码如下:

import java.util.Scanner;

public class ATM {
    private ArrayList<Account> accounts;   // 存储账户信息

    public ATM() {
        accounts = new ArrayList<Account>();
    }

    // 添加账户
    public void addAccount(String accountNumber, String password, double balance) {
        accounts.add(new Account(accountNumber, password, balance));
    }

    // 判断账号是否存在
    public int findAccount(String accountNumber) {
        for (int i = 0; i < accounts.size(); i++) {
            if (accounts.get(i).getAccountNumber().equals(accountNumber)) {
                return i;
            }
        }
        return -1;
    }

    // 用户登录
    public void login() {
        Scanner input = new Scanner(System.in);
        int index = -1;

        // 输入账号
        System.out.print("请输入您的账号:");
        String accountNumber = input.next();

        // 判断账号是否存在
        index = findAccount(accountNumber);
        if (index == -1) {
            System.out.println("该账号不存在!");
            return;
        }

        // 输入密码
        System.out.print("请输入您的密码:");
        String password = input.next();

        // 判断密码是否正确
        if (!accounts.get(index).getPassword().equals(password)) {
            System.out.println("密码不正确!");
            return;
        }

        // 登录成功
        System.out.println("登录成功!");
        System.out.println("您的账户余额为:" + accounts.get(index).getBalance());
    }
}

3. 执行取款操作

当用户成功登录后,我们需要让用户进行取款操作。代码如下:

import java.util.Scanner;

public class ATM {
    private ArrayList<Account> accounts;   // 存储账户信息

    public ATM() {
        accounts = new ArrayList<Account>();
    }

    // 添加账户
    public void addAccount(String accountNumber, String password, double balance) {
        accounts.add(new Account(accountNumber, password, balance));
    }

    // 判断账号是否存在
    public int findAccount(String accountNumber) {
        for (int i = 0; i < accounts.size(); i++) {
            if (accounts.get(i).getAccountNumber().equals(accountNumber)) {
                return i;
            }
        }
        return -1;
    }

    // 用户登录
    public void login() {
        Scanner input = new Scanner(System.in);
        int index = -1;

        // 输入账号
        System.out.print("请输入您的账号:");
        String accountNumber = input.next();

        // 判断账号是否存在
        index = findAccount(accountNumber);
        if (index == -1) {
            System.out.println("该账号不存在!");
            return;
        }

        // 输入密码
        System.out.print("请输入您的密码:");
        String password = input.next();

        // 判断密码是否正确
        if (!accounts.get(index).getPassword().equals(password)) {
            System.out.println("密码不正确!");
            return;
        }

        // 登录成功
        System.out.println("登录成功!");
        System.out.println("您的账户余额为:" + accounts.get(index).getBalance());

        // 取款操作
        System.out.print("请输入您要取出的金额:");
        double amount = input.nextDouble();

        // 判断余额是否充足
        if (accounts.get(index).getBalance() < amount) {
            System.out.println("您的账号余额不足!");
            return;
        }

        // 取款成功
        accounts.get(index).withdraw(amount);
        System.out.println("您已成功取出" + amount + "元,您的账户余额为:" + accounts.get(index).getBalance());
    }
}

以上就是Java实现ATM取款机程序的完整攻略。以下是两个示例说明:

示例1

输入:

addAccount("1001", "123456", 5000.0)
login()
1001
123456
2000.0

输出:

登录成功!
您的账户余额为:5000.0
请输入您要取出的金额:2000
您已成功取出2000.0元,您的账户余额为:3000.0

示例2

输入:

addAccount("1001", "123456", 5000.0)
addAccount("1002", "654321", 8000.0)
login()
1003
123456
2000.0

输出:

该账号不存在!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现ATM取款机程序 - Python技术站

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

相关文章

  • 详解使用Spring Security OAuth 实现OAuth 2.0 授权

    详解使用Spring Security OAuth 实现OAuth 2.0 授权 什么是OAuth 2.0? OAuth 2.0是用于授权的标准协议,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方应用或者将所有的数据转移到第三方应用。 Spring Security OAuth2 Spring Securit…

    Java 2023年5月20日
    00
  • js动态添加删除,后台取数据(示例代码)

    下面是JavaScript动态添加删除和后台取数据的完整攻略。 动态添加删除元素 在JavaScript中,动态添加和删除元素通常使用DOM操作实现。例如,可以使用以下步骤动态添加一个元素: 创建一个新的HTML元素,可以使用document.createElement方法创建,传入要创建的元素标签名称。 修改元素属性或内容,可以使用元素对象的属性或方法进行…

    Java 2023年6月16日
    00
  • MyBatis的嵌套查询解析

    MyBatis是一个非常强大的ORM框架,为开发人员提供了很多便利,其中嵌套查询是其功能之一,主要用于处理某个表或视图中某些字段需要查询其他表或视图得到对应值的情况。这里提供一个详细的攻略,帮助开发者掌握MyBatis中嵌套查询的使用。 什么是嵌套查询 嵌套查询是MyBatis中一种复杂的查询操作。它是在一个查询语句中,嵌套了另外的查询语句。在这个过程中,可…

    Java 2023年5月20日
    00
  • SpringBoot事件发布与监听超详细讲解

    Spring Boot事件发布与监听超详细讲解 在Spring Boot中,事件是一种非常重要的机制。通过事件,我们可以在应用程序中实现模块之间的解耦,从而提高应用程序的可维护性和可扩展性。本文将手把手教你如何在Spring Boot中发布和监听事件,包括定义事件、发布事件、监听事件等。 1. 定义事件 在Spring Boot中,我们可以通过定义一个继承自…

    Java 2023年5月14日
    00
  • Java日常练习题,每天进步一点点(16)

    让我来为你详细讲解“Java日常练习题,每天进步一点点(16)”的完整攻略吧。 首先,这个练习题是一道比较典型的算法练习题,旨在让练习者熟悉并掌握常见的算法思想以及数据结构基本操作。下面我们将对这个练习题进行分析。 题目描述 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。 示例说明 例如,输入s=”rabbbit”,t=”r…

    Java 2023年5月19日
    00
  • SpringBoot整合Apache Pulsar教程示例

    我们一起来讲解一下“SpringBoot整合Apache Pulsar教程示例”的完整攻略。 1. 环境搭建 首先我们需要搭建 Apache Pulsar 的环境。可以参考官方文档进行安装和配置,也可以使用 Docker 进行安装。在安装成功后,我们可以使用 pulsar-admin 工具进行管理。 2. SpringBoot 项目配置 首先添加 Apach…

    Java 2023年6月2日
    00
  • springsecurity基于token的认证方式

    下面我将详细讲解一下“Spring Security基于Token的认证方式”的完整攻略。 什么是Token认证方式 Token认证方式,是一种基于令牌(Token)的身份认证方式。在客户端成功登录后,服务端会生成一个Token,这个Token会放到HTTP响应头中或者响应体中返回给客户端,客户端需要在后续的请求中携带该Token才能访问资源。 Token认…

    Java 2023年5月20日
    00
  • 浅析Java中的 new 关键字

    浅析Java中的 new 关键字 在Java中,new关键字是程序员经常使用的一种创建对象的方法。通过使用new关键字,程序员可以在运行时动态地创建对象并将其分配给内存。本文将对Java中的new关键字进行浅析,包括其作用、使用方法和一些注意事项。 作用 new关键字的主要作用是创建对象并将其分配给内存。在Java中,每个对象都必须通过new关键字进行创建,…

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