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日

相关文章

  • java中response对象用法实例分析

    Java中Response对象用法实例分析 在Java的Web开发中,Response对象是常用的一个对象。它用于向客户端发送响应信息,同时还可以设置Cookie、Header等信息。本文将介绍Java中Response对象的用法,包括常见的方法和示例说明。 Response对象常用方法 1. 设置响应头信息 使用Response对象的setHeader()…

    Java 2023年5月26日
    00
  • 基于Java语言的递归运算例题详解

    针对“基于Java语言的递归运算例题详解”,我的建议如下: 一、什么是递归 在计算机科学中,递归是一种经常被用于解决问题的方法。简单来说,递归就是通过一个函数的不断调用自身来解决复杂问题的方法。 二、递归的基本原则 递归运算的基本原则有三个: 找到和确定基线条件:递归最基本的原则是将问题分解为基本的情况,然后解决这些情况。这个基本情况就是我们所说的基线条件。…

    Java 2023年5月26日
    00
  • Java中基于Aspectwerkz的AOP

    Java中基于Aspectwerkz的AOP是一种切面编程的技术,它可以在不修改原有业务逻辑代码的情况下,对业务逻辑进行增强,比如添加日志、缓存、事务等。 下面是Java中基于Aspectwerkz的AOP的完整攻略,包含了环境搭建、Aspectj语法介绍、示例说明等内容。 环境搭建 下载Aspectwerkz包:在Aspectwerkz官网下载最新版本的A…

    Java 2023年6月15日
    00
  • 深入了解Java中Synchronized的各种使用方法

    深入了解Java中Synchronized的各种使用方法 在 Java 中,Synchronized 是一种保证多线程访问同一个共享资源时,只有一个线程可以进入代码块,从而保证线程安全的关键字。这篇文章将深入讲解 Java 中 Synchronized 的各种使用方法,例如对象锁、类锁和非阻塞同步等。 对象锁 对象锁是指用 Synchronized 关键字修…

    Java 2023年5月26日
    00
  • Java基于控制台界面实现ATM系统

    要实现“Java基于控制台界面实现ATM系统”,可以遵循以下步骤: 1. 设计功能模块 首先,需要明确ATM系统需要的功能模块,包括登录、查询余额、取款、转账、修改密码、退出等模块。可以用流程图或伪代码来描述这些功能模块的实现逻辑。 2. 实现代码 接下来,需要编写Java代码,来实现这些功能模块。可以先搭建好基本框架,然后以模块化的方式,逐步实现各个功能模…

    Java 2023年5月24日
    00
  • java文件处理工具类详解

    Java文件处理工具类详解 在Java编程中,我们经常涉及到文件的操作,例如读取文件、清空文件、写入文件、获取文件信息等等,如果每次都手写文件操作代码,那么非常费时费力。因此,编写一个Java文件处理工具类是很有必要的。下面,我将详细讲解如何编写一个Java文件处理工具类。 一、文件相关概念 在开始编写文件处理工具类之前,我们先来了解一些文件相关概念。 1.…

    Java 2023年5月20日
    00
  • Spring Boot 整合mybatis 使用多数据源的实现方法

    下面我们就来详细讲解一下“Spring Boot 整合 mybatis 使用多数据源的实现方法”: 什么是多数据源 在一个系统中,通常会使用多个数据库,比如一个系统中需要同时操作 MySQL 和 Oracle 数据库。这就需要在系统中使用多个数据源,分别连接并操作不同的数据库。 Spring Boot 整合 mybatis 使用多数据源的实现方法 添加相关依…

    Java 2023年5月20日
    00
  • Struts和servlet不能共存问题解决方法

    当你在一个Java web项目中同时使用Struts和Servlet时,可能会出现以下错误: java.lang.ClassCastException: org.apache.struts.action.ActionServlet cannot be cast to javax.servlet.Servlet 这是因为Struts包含了一个名为ActionS…

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