Java详解实现ATM机模拟系统

Java详解实现ATM机模拟系统攻略

系统概述

该ATM机模拟系统是用Java语言实现的,包含了模拟受卡人身份认证、存款、取款等操作。此系统模拟银行的ATM机功能,可以满足普通用户的基本需求。

技术栈

  • Java:Java SE 8版本及以上
  • IDE:Eclipse, IntelliJ IDEA等
  • Maven:用于管理依赖
  • JUnit:用于单元测试

功能模块

该ATM机模拟系统包含以下功能模块:

  • 身份验证
  • 存款
  • 取款
  • 查询余额
  • 修改密码

实现步骤

1. 创建Java项目并导入依赖库

首先我们需要在IDE中创建一个Java项目,并在pom.xml文件中引入相关依赖库,如:

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
</dependencies>

2. 创建ATM机类并初始化数据

创建一个ATM类,包含一些必要的数据和方法,如下:

public class ATM {
    private String cardNo;  //银行卡号
    private String password;  //密码
    private double balance;  //余额

    //构造方法
    public ATM(String cardNo, String password, double balance) {
        this.cardNo = cardNo;
        this.password = password;
        this.balance = balance;
    }

    //提供get/set方法

    //实现身份验证
    public boolean authenticate(String cardNo, String password) {
        if (this.cardNo.equals(cardNo) && this.password.equals(password)) {
            return true;
        } else {
            return false;
        }
    }

    //存款操作
    public void deposit(double amount) {
        this.balance += amount;
    }

    //取款操作
    public void withdraw(double amount) {
        if (this.balance >= amount) {
            this.balance -= amount;
        } else {
            System.out.println("余额不足!");
        }
    }

    //查询余额
    public double getBalance() {
        return this.balance;
    }

    //修改密码
    public void changePassword(String newPassword) {
        this.password = newPassword;
    }
}

3. 编写ATM机操作界面

创建一个ATMOperation类,用于模拟ATM机的操作界面,如下:

public class ATMOperation {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ATM atm = new ATM("123456", "123456", 10000.0);

        //ATM机操作选择界面
        System.out.println("=====欢迎使用ATM机=====");
        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 = sc.nextInt();

        switch (choice) {
            case 0:
                System.out.println("感谢您的使用!");
                break;
            case 1:
                System.out.println("余额: " + atm.getBalance());
                break;
            case 2:
                System.out.println("请输入存款金额:");
                double depositAmount = sc.nextDouble();
                atm.deposit(depositAmount);
                System.out.println("存款成功!余额: " + atm.getBalance());
                break;
            case 3:
                System.out.println("请输入取款金额:");
                double withdrawAmount = sc.nextDouble();
                atm.withdraw(withdrawAmount);
                System.out.println("取款成功!余额: " + atm.getBalance());
                break;
            case 4:
                System.out.println("请输入新密码:");
                String newPassword = sc.next();
                atm.changePassword(newPassword);
                System.out.println("修改密码成功!");
                break;
            default:
                System.out.println("请选择正确的操作!");
        }
    }
}

4.执行测试

使用JUnit对ATM类的各个操作方法进行单元测试,保证功能的正确性。如下:

public class ATMTest {

    @Test
    public void testAuthenticate() {
        ATM atm = new ATM("123456", "123456", 10000.0);
        Assert.assertEquals(true, atm.authenticate("123456", "123456"));
    }

    @Test
    public void testDeposit() {
        ATM atm = new ATM("123456", "123456", 10000.0);
        atm.deposit(2000.0);
        Assert.assertEquals(12000.0, atm.getBalance(), 0.0);
    }

    @Test
    public void testWithdraw() {
        ATM atm = new ATM("123456", "123456", 10000.0);
        atm.withdraw(5000.0);
        Assert.assertEquals(5000.0, atm.getBalance(), 0.0);
        atm.withdraw(6000.0);
        Assert.assertEquals(5000.0, atm.getBalance(), 0.0);
    }

    @Test
    public void testChangePassword() {
        ATM atm = new ATM("123456", "123456", 10000.0);
        atm.changePassword("654321");
        Assert.assertEquals(true, atm.authenticate("123456", "654321"));
    }
}

以上是Java详解实现ATM机模拟系统的攻略。其中,ATM类实现了相关操作,ATMOperation类模拟了ATM机的操作界面,并使用JUnit进行单元测试,保证系统的正确性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java详解实现ATM机模拟系统 - Python技术站

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

相关文章

  • java下使用kaptcha生成验证码

    生成验证码常常用于网站的用户登录、注册和重置密码等操作中,可以有效地防止恶意攻击和密码爆破。在Java语言中,可以使用kaptcha库来快速生成验证码。 下面是使用kaptcha生成验证码的步骤和示例: 步骤1:添加依赖 在pom.xml中添加以下依赖,表示使用kaptcha的生成验证码功能: <dependency> <groupId&g…

    Java 2023年6月15日
    00
  • Spring Boot 文件上传与下载的示例代码

    下面是 “Spring Boot 文件上传与下载的示例代码”的完整攻略,包含了两条示例。 Spring Boot 文件上传与下载的示例代码 文件上传 1. 准备工作 在pom.xml中添加依赖: <dependency> <groupId>org.springframework.boot</groupId> <art…

    Java 2023年5月19日
    00
  • Java concurrency集合之ArrayBlockingQueue_动力节点Java学院整理

    Java Concurrency集合之ArrayBlockingQueue 什么是ArrayBlockingQueue ArrayBlockingQueue是Java提供的一个有界队列,它是按照FIFO(先进先出)的顺序对元素进行存储和访问的。它支持多线程,即多个线程可同时访问该队列,因此被称为Java Concurrency集合之一。 ArrayBlock…

    Java 2023年5月26日
    00
  • JWT全面解读和详细使用步骤

    JWT全面解读和详细使用步骤 什么是JWT? JWT(JSON Web Token)是用于身份验证和授权的开放标准(RFC 7519),根据规范,JWT由三部分组成:头部(header)、荷载(payload)和签名(signature)。 头部 头部包含两个元素:令牌类型(通常是JWT)和所使用的签名算法(例如HMAC SHA256或RSA)。 使用jso…

    Java 2023年5月19日
    00
  • vue2+springsecurity权限系统的实现

    下面我来详细讲解“vue2+springsecurity权限系统的实现”的完整攻略。 一、前后端分离架构说明 前后端分离架构是近年来比较流行的一种架构模式,其核心思想就是将前端与后端完全分离,前端负责 UI 的实现和展示,后端则提供数据接口 API。这种架构模式的优点是前后端职责分离,能提高开发效率和维护性,同时能提供更好的用户体验和响应速度。 二、技术选型…

    Java 2023年6月3日
    00
  • java.lang.String类的使用

    Java.lang.String类的使用 java.lang.String 类是 Java 标准库中最常用的类之一,用于表示字符串。本篇攻略旨在帮助读者全面了解 String 类的使用方法,并且提供几个示例说明。 基本使用 String 对象是不可变的,也就是说一旦创建了 String 对象,它的值将不能被更改。使用 String 类最基本的方法是创建一个新…

    Java 2023年5月27日
    00
  • Java java.lang.InstantiationException异常案例详解

    Java java.lang.InstantiationException异常案例详解 什么是 java.lang.InstantiationException 异常? java.lang.InstantiationException 是 Java 异常类的一种,通常是由于实例化一个抽象类或没有公共构造方法的类而导致的。当一个类被实例化时,Java 实际上会…

    Java 2023年5月27日
    00
  • PHP 冒泡排序算法的实现代码

    下面是关于PHP冒泡排序算法实现代码的详细攻略。 什么是冒泡排序算法 冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,每次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。走完最后一遍,那么最大(小)的元素就呼之欲出,再从头开始重复进行上述过程。 冒泡排序的实现思路 冒泡排序的实现主要是通过两个相邻元素之间的比较,然后根据比较结果来进行交换。…

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