下载地址:https://www.pan38.com/share.php?code=bRtMK 提取码:8888 【仅供学习参考使用】
BankAccount类 - 核心账户管理模块
功能特点:
封装账户基本信息(账号、户名、余额)
提供存款/取款基础操作
记录完整的交易流水
支持账户信息查询和流水打印
BankSystem类 - 银行系统管理模块
功能特点:
使用HashMap管理所有账户
提供账户创建功能
实现账户间转账逻辑
支持全行账户查询
import java.util.ArrayList;
import java.util.List;
public class BankAccount {
private final String accountNumber;
private String accountName;
private double balance;
private List transactionHistory;
public BankAccount(String number, String name) {
this.accountNumber = number;
this.accountName = name;
this.balance = 0.0;
this.transactionHistory = new ArrayList<>();
}
public void deposit(double amount) {
if(amount > 0) {
balance += amount;
transactionHistory.add("存款: +" + amount);
}
}
public boolean withdraw(double amount) {
if(amount > 0 && balance >= amount) {
balance -= amount;
transactionHistory.add("取款: -" + amount);
return true;
}
return false;
}
public String getAccountInfo() {
return String.format("账号: %s 户名: %s 余额: %.2f",
accountNumber, accountName, balance);
}
public void printStatement() {
System.out.println("\n===== 账户流水 =====");
System.out.println(getAccountInfo());
System.out.println("交易记录:");
for(String record : transactionHistory) {
System.out.println(record);
}
}
}
import java.util.HashMap;
public class BankSystem {
private HashMap accounts;
public BankSystem() {
accounts = new HashMap<>();
}
public void createAccount(String number, String name) {
if(!accounts.containsKey(number)) {
accounts.put(number, new BankAccount(number, name));
}
}
public boolean transfer(String from, String to, double amount) {
BankAccount src = accounts.get(from);
BankAccount dst = accounts.get(to);
if(src != null && dst != null && src.withdraw(amount)) {
dst.deposit(amount);
return true;
}
return false;
}
public void displayAllAccounts() {
System.out.println("\n===== 所有账户 =====");
for(BankAccount account : accounts.values()) {
System.out.println(account.getAccountInfo());
}
}
}
java.util.Scanner;
public class MainApp {
public static void main(String[] args) {
BankSystem system = new BankSystem();
Scanner scanner = new Scanner(System.in);
// 初始化测试数据
system.createAccount("622202100001", "测试用户1");
system.createAccount("622202100002", "测试用户2");
while(true) {
System.out.println("\n===== 银行模拟系统 =====");
System.out.println("1. 创建账户");
System.out.println("2. 账户转账");
System.out.println("3. 查看所有账户");
System.out.println("0. 退出");
System.out.print("请选择操作: ");
int choice = scanner.nextInt();
scanner.nextLine();
switch(choice) {
case 1:
System.out.print("输入账号: ");
String num = scanner.nextLine();
System.out.print("输入户名: ");
String name = scanner.nextLine();
system.createAccount(num, name);
break;
case 2:
System.out.print("输入转出账号: ");
String from = scanner.nextLine();
System.out.print("输入转入账号: ");
String to = scanner.nextLine();
System.out.print("输入转账金额: ");
double amount = scanner.nextDouble();
if(system.transfer(from, to, amount)) {
System.out.println("转账成功");
} else {
System.out.println("转账失败");
}
break;
case 3:
system.displayAllAccounts();
break;
case 0:
System.out.println("感谢使用银行模拟系统");
scanner.close();
System.exit(0);
default:
System.out.println("无效选择");
}
}
}
}