編寫一個基於控制台的 Java ATM 模擬程序,包含賬戶查詢、存款、取款、修改密碼、退出等功能,採用交互式菜單循環操作。
public class Account {
private String cardNo;
private String password;
private double balance;
// 構造器、getter/setter 略
public boolean verifyPassword(String pwd) {
return this.password.equals(pwd);
}
public void deposit(double amount) {
if (amount > 0) balance += amount;
}
public boolean withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
return true;
}
return false;
}
}
public class ATM {
private Map accounts = new HashMap<>();
private Scanner scanner = new Scanner(System.in);
public void start() {
// 初始化測試賬戶
accounts.put("622588", new Account("622588", "123456", 10000));
while (true) {
System.out.println("=== 歡迎使用 ATM ===");
System.out.print("請輸入卡號: ");
String cardNo = scanner.nextLine();
System.out.print("請輸入密碼: ");
String pwd = scanner.nextLine();
Account acc = accounts.get(cardNo);
if (acc != null && acc.verifyPassword(pwd)) {
showMenu(acc);
} else {
System.out.println("卡號或密碼錯誤!");
}
}
}
private void showMenu(Account acc) {
while (true) {
System.out.println("\n1.查詢餘額 2.存款 3.取款 4.修改密碼 5.退出");
System.out.print("請選擇: ");
int choice = scanner.nextInt();
scanner.nextLine(); // 消耗換行符
switch (choice) {
case 1: System.out.println("餘額: " + acc.getBalance()); break;
case 2:
System.out.print("存款金額: ");
acc.deposit(scanner.nextDouble());
System.out.println("存款成功");
break;
case 3:
System.out.print("取款金額: ");
if (acc.withdraw(scanner.nextDouble())) {
System.out.println("取款成功");
} else {
System.out.println("餘額不足或金額無效");
}
break;
case 4:
System.out.print("新密碼: ");
acc.setPassword(scanner.nextLine());
System.out.println("修改成功");
break;
case 5: return; // 返回登錄界面
default: System.out.println("無效選項");
}
}
}
}
ATM.java,用 javac ATM.java && java ATM 編譯運行。百度文庫完整源碼:Java ATM 模擬系統源碼