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日

相关文章

  • SpringBoot浅析依赖管理与自动配置概念与使用

    SpringBoot浅析依赖管理与自动配置概念与使用 Spring Boot是一个基于Spring框架的快速开发应用程序的工具。它提供了一种快速、便捷的方式来创建基于Spring的应用程序,同时也提供了一些有用的功能,如自动配置、依赖管理等。在本文中,我们将详细讲解Spring Boot的依赖管理和自动配置概念与使用。 依赖管理 在Spring Boot中,…

    Java 2023年5月15日
    00
  • Java多线程案例之阻塞队列详解

    Java多线程案例之阻塞队列详解 什么是阻塞队列? 阻塞队列(Blocking Queue)是一个支持在队列的两端进行插入与删除的队列。常用的阻塞队列有ArrayBlockingQueue、LinkedBlockingQueue等。阻塞队列在多线程的场景下常被使用,因为当队列为空或达到容量上限时,线程往往会被阻塞。在队列空的情况下,从队列中获取元素的操作将会…

    Java 2023年5月18日
    00
  • springboot+idea+maven 多模块项目搭建的详细过程(连接数据库进行测试)

    下面详细讲解一下如何使用Spring Boot、IDEA和Maven搭建多模块项目并连接数据库测试。 环境准备 在开始之前,确保你已经安装了以下环境: JDK 1.8或以上版本 IDEA集成开发环境 Maven构建工具 数据库(本次示例使用MySQL) 创建Maven多模块项目 打开IDEA,点击File -> New -> Project,选择…

    Java 2023年5月31日
    00
  • SpringMVC整合SSM实现表现层数据封装详解

    SpringMVC整合SSM实现表现层数据封装详解 在Web应用程序中,表现层数据封装是非常重要的,它可以帮助我们将请求参数封装成Java对象,方便我们在控制器中进行处理。本文将详细介绍如何使用SpringMVC整合SSM实现表现层数据封装,并提供两个示例说明。 步骤1:创建Maven项目 首先,我们需要在IDEA中创建一个Maven项目。在创建项目时,我们…

    Java 2023年5月17日
    00
  • 30分钟入门Java8之lambda表达式学习

    下面是关于“30分钟入门Java8之lambda表达式学习”的完整攻略: 什么是lambda表达式 Lambda表达式是Java8中引入的一种新的语法,它可以替代匿名内部类的写法,在某些场景下可以让代码更简洁、更易懂,并且可以提升代码的可读性和可维护性。 lambda表达式的语法 Lambda表达式的基本语法如下: (parameters) -> ex…

    Java 2023年5月26日
    00
  • java中Hibernate面试知识点整理

    Java中Hibernate面试知识点整理 什么是Hibernate? Hibernate是一个基于Java语言的ORM(对象关系映射)框架,简单来说就是将Java对象和数据库表进行映射,使得开发人员可以将精力放在业务逻辑的开发上,而不用去关注数据库相关的细节。 Hibernate的主要特点 简化了数据持久化的开发工作 数据库无关性,可以支持多种主流数据库 …

    Java 2023年5月20日
    00
  • Java的Struts2框架配合Ext JS处理JSON数据的使用示例

    下面我来详细讲解一下Java的Struts2框架配合Ext JS处理JSON数据的使用示例的完整攻略。 简介 在开发Web应用程序时,常常需要使用JSON(JavaScript对象表示法)来进行数据的传递,而Struts2框架可以帮助我们很好地处理JSON数据。而Ext JS是一款优秀的JavaScript框架,可以让我们轻松地构建富客户端的Web应用程序。…

    Java 2023年5月20日
    00
  • Linux中使用Shell脚本查看Java线程的CPU使用情况

    下面是在Linux中使用Shell脚本查看Java线程的CPU使用情况的完整攻略: 1. 确认Java进程ID 在使用Shell脚本来查看Java线程CPU使用情况之前,我们需要确定Java应用程序的进程ID。可以使用命令: ps -ef | grep java 该命令将显示运行中的所有Java进程的进程ID、启动时间等信息,如下所示: root 1234 …

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