java怎么写一个简单的atm应用
- 后端开发
- 2025-07-09
- 5
Java实现一个简单的ATM应用
在Java中实现一个简单的ATM应用,主要涉及用户登录、查询余额、存款、取款等基本功能,以下是详细的实现步骤和代码示例:

定义用户账户类(Account)
我们需要定义一个Account类来表示用户的账户信息,包括卡号、密码和余额。
定义ATM类
我们定义一个ATM类来处理用户登录、查询余额、存款、取款等操作。

import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class ATM { private Map<String, Account> accounts = new HashMap<>(); private Account currentAccount; private Scanner scanner = new Scanner(System.in); public ATM() { // 初始化一些账户数据 accounts.put("123456", new Account("123456", "123", 1000)); accounts.put("654321", new Account("654321", "456", 2000)); } public void start() { while (true) { System.out.println("请输入卡号:"); String cardNo = scanner.nextLine(); System.out.println("请输入密码:"); String password = scanner.nextLine(); if (authenticate(cardNo, password)) { showMenu(); } else { System.out.println("卡号或密码错误,请重新输入!"); } } } private boolean authenticate(String cardNo, String password) { Account account = accounts.get(cardNo); if (account != null && account.getPassword().equals(password)) { currentAccount = account; return true; } return false; } private void showMenu() { while (true) { System.out.println("请选择操作:"); System.out.println("1. 查询余额"); System.out.println("2. 存款"); System.out.println("3. 取款"); System.out.println("4. 退出"); int choice = scanner.nextInt(); switch (choice) { case 1: queryBalance(); break; case 2: deposit(); break; case 3: withdraw(); break; case 4: System.out.println("感谢使用,再见!"); return; default: System.out.println("无效的选择,请重新输入!"); } } } private void queryBalance() { System.out.println("当前余额:" + currentAccount.getBalance()); } private void deposit() { System.out.println("请输入存款金额:"); double amount = scanner.nextDouble(); currentAccount.deposit(amount); System.out.println("存款成功,当前余额:" + currentAccount.getBalance()); } private void withdraw() { System.out.println("请输入取款金额:"); double amount = scanner.nextDouble(); if (currentAccount.withdraw(amount)) { System.out.println("取款成功,当前余额:" + currentAccount.getBalance()); } else { System.out.println("余额不足,取款失败!"); } } public static void main(String[] args) { ATM atm = new ATM(); atm.start(); } }
代码说明
- Account类:封装了用户的卡号、密码和余额信息,并提供了存款和取款的方法。
- ATM类:包含一个Map来存储所有账户信息,并通过卡号和密码进行用户认证。showMenu方法提供了用户操作菜单,包括查询余额、存款、取款和退出功能。
- 主程序:在main方法中创建ATM对象并调用start方法启动ATM应用。
相关问答FAQs
如何增加新的账户?
答:在ATM类的构造函数中,可以通过accounts.put(cardNo, new Account(cardNo, password, balance))来添加新的账户信息。
accounts.put("7890", new Account("7890", "789", 3000));
如何限制取款金额不能超过余额?
答:在Account类的withdraw方法中,已经通过if (amount > balance)判断取款金额是否超过余额,如果超过,则返回false,并在ATM类的withdraw方法中提示“余额不足,取款失败
