下载地址:https://www.pan38.com/share.php?code=bRtMK 提取码:8888【仅供学习参考使用】
银行核心业务逻辑的实现,包含账户管理、资金操作和交易记录功能。所有代码均为模拟数据,不连接真实金融系统。建议通过正规渠道学习金融科技开发,如各大银行开放平台API。
import java.util.ArrayList;
import java.util.List;
import java.util.Date;
// 银行账户实体类(线程安全)
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<>();
recordTransaction("账户开户");
}
public synchronized void deposit(double amount) {
if(amount <= 0) throw new IllegalArgumentException("金额必须大于零");
balance += amount;
recordTransaction(String.format("存款 +%.2f", amount));
}
public synchronized boolean withdraw(double amount) {
if(amount <= 0) throw new IllegalArgumentException("金额必须大于零");
if(balance >= amount) {
balance -= amount;
recordTransaction(String.format("取款 -%.2f", amount));
return true;
}
return false;
}
private void recordTransaction(String memo) {
String record = String.format("[%tF %<tT] %s 余额: %.2f",
new Date(), memo, balance);
transactionHistory.add(record);
}
// 其他getter方法...
}
import java.util.concurrent.ConcurrentHashMap;
// 银行服务单例(线程安全)
public class BankService {
private static BankService instance;
private ConcurrentHashMap accounts;
private BankService() {
accounts = new ConcurrentHashMap<>();
}
public static synchronized BankService getInstance() {
if(instance == null) {
instance = new BankService();
}
return instance;
}
public boolean createAccount(String accNumber, String accName) {
return accounts.putIfAbsent(accNumber,
new BankAccount(accNumber, accName)) == null;
}
public boolean transfer(String from, String to, double amount) {
BankAccount source = accounts.get(from);
BankAccount target = accounts.get(to);
if(source == null || target == null) return false;
synchronized(source) {
synchronized(target) {
if(source.withdraw(amount)) {
target.deposit(amount);
return true;
}
return false;
}
}
}
}
java.util.Scanner;
// 银行系统控制台界面
public class BankApp {
public static void main(String[] args) {
BankService bank = BankService.getInstance();
Scanner scanner = new Scanner(System.in);
while(true) {
printMenu();
String input = scanner.nextLine();
switch(input) {
case "1":
System.out.println("请输入账号和姓名:");
bank.createAccount(scanner.nextLine(), scanner.nextLine());
break;
case "2":
System.out.println("转账功能演示...");
break;
case "0":
System.exit(0);
default:
System.out.println("无效输入");
}
}
}
private static void printMenu() {
System.out.println("\n=== 银行模拟系统 ===");
System.out.println("1. 开户");
System.out.println("2. 转账");
System.out.println("0. 退出");
System.out.print("请选择:");
}
}