Java实现简单控制台版ATM系统

Java实现简单控制台版ATM系统攻略

1. 需求分析

控制台版ATM系统主要需要实现以下功能:

  • 用户登录、注册
  • 存款、取款、查询余额
  • 转账功能

2. 技术选型

本篇攻略使用Java语言实现控制台版ATM系统,使用了Java IO、集合等基础知识进行编写。在框架上,本篇攻略并未用到任何框架。

3. 代码实现

代码实现主要分为以下几个部分:

3.1 用户登录、注册

用户登录需要输入合法的用户账号和密码,如果输入的账号或密码错误,程序需要提示用户重新输入,最多只能尝试三次。在登录成功后,程序需要提供用户的基本信息,如用户名、账户余额等。

用户注册需要输入合法的用户名和密码,经过简单的输入校验后,将用户的信息存储在一个文件中,以备后续登录使用。

示例代码:

public class User {
    private String name;
    private String password;
    private double balance;

    // 省略 getter 和 setter 方法

    public User(String name, String password, double balance) {
        this.name = name;
        this.password = password;
        this.balance = balance;
    }

    // 登录方法
    public boolean login(String name, String password, int maxRetry) {
        Scanner scanner = new Scanner(System.in);
        int retry = 0;
        while (retry < maxRetry) {
            if (!name.equals(this.name) || !password.equals(this.password)) {
                System.out.println("用户名或密码错误,请重新输入。");
                System.out.print("用户名: ");
                name = scanner.next();
                System.out.print("密码: ");
                password = scanner.next();
                retry++;
            } else {
                System.out.println("登录成功,您的账户余额为" + this.balance + "元。");
                return true;
            }
        }
        System.out.println("您已连续输入错误" + maxRetry + "次,程序已退出。");
        return false;
    }

    // 注册方法
    public static void register() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名和密码进行注册。");
        System.out.print("用户名: ");
        String name = scanner.next();
        System.out.print("密码: ");
        String password = scanner.next();

        // 假设用户信息保存在 users.txt 中
        try {
            FileWriter fileWriter = new FileWriter("users.txt", true);
            fileWriter.write(name + " " + password + " 0.00\n");
            fileWriter.close();
            System.out.println("注册成功!");
        } catch (IOException e) {
            System.out.println("注册失败,未能成功保存您的信息。");
        }
    }

}
3.2 存款、取款、查询余额

存款、取款、查询余额等功能都需要在用户登录后才能够使用。存款功能和取款功能需要输入金额,而查询余额功能则直接输出当前账户余额信息。

示例代码:

public class Bank {
    public static void main(String[] args) {
        // 登录功能
        User.getUserByNameAndPassword(name, password).login(name, password, 3);

        // 存款功能
        System.out.print("请输入存款金额: ");
        double depositAmount = scanner.nextDouble();
        user.setBalance(user.getBalance() + depositAmount);
        System.out.println("存款成功,您的账户余额为" + user.getBalance() + "元。");

        // 取款功能
        System.out.print("请输入取款金额: ");
        double withdrawAmount = scanner.nextDouble();
        if (user.getBalance() >= withdrawAmount) {
            user.setBalance(user.getBalance() - withdrawAmount);
            System.out.println("取款成功,您的账户余额为" + user.getBalance() + "元。");
        } else {
            System.out.println("余额不足,取款失败。");
        }

        // 查询余额功能
        System.out.println("当前账户余额为" + user.getBalance() + "元。");
    }
}
3.3 转账功能

转账功能需要输入转账金额以及对方的账号信息。转账的过程中需要进行账户余额检查,如果转账金额超过了当前用户的账户余额,则需要提醒用户转账失败。转账结束后,需要分别更新当前用户和目标用户的账户余额。

示例代码:

public class Bank {
    public static void main(String[] args) {
        // 转账功能
        System.out.print("请输入目标账户: ");
        String targetUsername = scanner.next();
        User targetUser = User.getUserByName(targetUsername);
        if (targetUser != null) {
            System.out.print("请输入转账金额: ");
            double transferAmount = scanner.nextDouble();
            if (user.getBalance() >= transferAmount) {
                user.setBalance(user.getBalance() - transferAmount);
                targetUser.setBalance(targetUser.getBalance() + transferAmount);
                System.out.println("转账成功,您的账户余额为" + user.getBalance() + "元。");
            } else {
                System.out.println("余额不足,转账失败。");
            }
        } else {
            System.out.println("目标账户不存在,转账失败。");
        }
    }
}

4. 使用说明

使用控制台版ATM系统,需要先注册一个账号。程序会将您的账号信息存储在当前目录下的 users.txt 文件中。注册完成后,可以使用自己的账号登录系统。登录完成后,您可以进行存款、取款、查询余额以及转账等操作。

其中,输入的密码是不可见的,程序会自动将用户输入的密码转换成 * 号进行遮挡。

5. 总结

本篇攻略实现了Java控制台版ATM系统的基本功能。在实际的开发过程中,还需要考虑更多的用户交互、输入检查、数据校验等功能,以确保该系统的稳定性和安全性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现简单控制台版ATM系统 - Python技术站

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

相关文章

  • Java 14 发布了,你还会使用Lombok?

    Java 14 发布了,你还会使用Lombok? 1. Lombok 是什么? Lombok是一种Java库,可以自动插入编辑器和生成代码,减少Java开发中的冗余代码,使Java代码更加简洁。 2. Java 14 新特性 Java 14 主要带来了以下新特性: Records: 一种新的引用类型,旨在简化Java中的数据类设计。 Text Blocks:…

    Java 2023年5月26日
    00
  • Java中InputSteam怎么转String

    转换InputStream为String,可以使用Java中的Scanner类、BufferedReader类、ByteArrayOutputStream类、StringBuilder类等方式。 其中,Scanner类适用于转换小型InputStream,BufferedReader适用于转换大型InputStream,ByteArrayOutputStre…

    Java 2023年5月26日
    00
  • 通过java备份恢复mysql数据库的实现代码

    下面我将详细讲解通过Java备份恢复MySQL数据库的实现代码的完整攻略。 1. 环境准备 1.1 安装MySQL 首先需要安装好MySQL数据库,可以在https://dev.mysql.com/downloads/mysql/下载最新版本的MySQL Community Server。 1.2 安装Java 在使用Java备份恢复MySQL数据库之前,需…

    Java 2023年5月19日
    00
  • Java8优雅的字符串拼接工具类StringJoiner实例代码

    下面是关于“Java8优雅的字符串拼接工具类StringJoiner实例代码”的完整攻略。 什么是StringJoiner StringJoiner是Java 8中提供的一个字符串拼接工具类。它可以将多个字符串按照指定的分隔符连接起来,并可以指定前缀和后缀,从而生成一个完整的字符串。 StringJoiner的构造方法 public StringJoiner…

    Java 2023年5月26日
    00
  • 八年Android开发经验,从码农到架构师的技术成长之路

    八年Android开发经验,从码农到架构师的技术成长之路 在这篇分享中,我将分享我的八年Android开发经验,涵盖从码农到架构师的整个过程,以及我在这个过程中的主要学习成果和经验教训。 第一阶段:码农 我作为一名Android初学者,开始学习Java和Android SDK开发。在开始时,我主要关注如何将基本的功能添加到应用程序中,例如如何设计UI、如何使…

    Java 2023年5月23日
    00
  • Spring Data JPA系列JpaSpecificationExecutor用法详解

    Spring Data JPA系列JpaSpecificationExecutor用法详解 JpaSpecificationExecutor介绍 JpaSpecificationExecutor是Spring Data JPA提供的一个接口,可以用于对JPA规范中Criteria Query查询标准的扩展,使得我们可以根据不同的查询条件,动态生成不同的查询语…

    Java 2023年5月20日
    00
  • Maven打包上云的实现步骤

    下面我将为你详细讲解”Maven打包上云的实现步骤”的完整攻略。 一、背景介绍 随着云计算和微服务的兴起,很多应用都开始在云上部署和运行。为了方便在云上部署和管理应用,我们往往需要将应用打包成云原生的镜像,并通过容器技术进行部署。在Java应用中,我们可以使用Maven工具来进行应用的打包和构建。 二、Maven打包步骤 Maven是一个开源的项目管理工具,…

    Java 2023年5月19日
    00
  • springMVC返回复杂的json格式数据方法

    为了返回复杂的json格式数据,我们可以在SpringMVC中使用Jackson库的ObjectMapper类,将java对象序列化为json字符串。下面是SpringMVC返回复杂的json格式数据的步骤。 1. 添加Jackson库依赖 在pom.xml文件中添加Jackson库的依赖。 <dependency> <groupId&gt…

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