下载地址:www.wenshushu.vip/download.ph…
代码功能说明:
- BankAccount类实现核心银行账户功能,包括存款、取款、转账和交易记录管理2
- Transaction类记录每笔交易的详细信息,包括类型、金额和时间戳2
- BankSimulator类提供命令行交互界面,支持账户查询和转账操作4
- 使用Maven构建项目,配置了Java 11运行环境4
使用说明:
- 安装Maven和JDK 11环境
- 执行
mvn compile exec:java运行程序 - 系统初始化了两个演示账户(622848001和622848002)
- 可通过菜单选择账户查询或转账操作24
注意事项:
- 该模拟器仅用于学习Java编程和银行系统原理24
- 所有数据存储在内存中,程序退出后不会持久化3
- 不可用于真实金融交易或误导他人的场景
import java.util.ArrayList;
import java.text.SimpleDateFormat;
import java.util.Date;
public class BankAccount {
private final String accountNumber;
private String accountHolder;
private double balance;
private ArrayList<Transaction> transactions;
public BankAccount(String accountNumber, String accountHolder) {
this.accountNumber = accountNumber;
this.accountHolder = accountHolder;
this.balance = 0.0;
this.transactions = new ArrayList<>();
}
public void deposit(double amount) {
if(amount > 0) {
balance += amount;
transactions.add(new Transaction("存款", amount));
System.out.println("存款成功,当前余额:" + balance);
}
}
public boolean withdraw(double amount) {
if(amount > 0 && balance >= amount) {
balance -= amount;
transactions.add(new Transaction("取款", -amount));
System.out.println("取款成功,当前余额:" + balance);
return true;
}
System.out.println("操作失败:余额不足或金额无效");
return false;
}
public void transferTo(BankAccount target, double amount) {
if(this.withdraw(amount)) {
target.deposit(amount);
transactions.add(new Transaction("转出至"+target.getAccountNumber(), -amount));
target.transactions.add(new Transaction("转入自"+this.accountNumber, amount));
System.out.println("转账成功!");
}
}
public void printStatement() {
System.out.println("\n===== 农业银行账户流水 =====");
System.out.println("账号:" + accountNumber);
System.out.println("户名:" + accountHolder);
System.out.println("当前余额:" + balance);
System.out.println("\n交易记录:");
for(Transaction t : transactions) {
System.out.println(t);
}
}
public String getAccountNumber() {
return accountNumber;
}
}
class Transaction {
private String type;
private double amount;
private Date timestamp;
public Transaction(String type, double amount) {
this.type = type;
this.amount = amount;
this.timestamp = new Date();
}
@Override
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return String.format("[%s] %s: %.2f",
sdf.format(timestamp), type, amount);
}
}
import java.util.HashMap;
import java.util.Scanner;
public class BankSimulator {
private HashMap<String, BankAccount> accounts;
private Scanner scanner;
public BankSimulator() {
accounts = new HashMap<>();
scanner = new Scanner(System.in);
initDemoAccounts();
}
private void initDemoAccounts() {
// 初始化演示账户
accounts.put("622848001", new BankAccount("622848001", "张三"));
accounts.put("622848002", new BankAccount("622848002", "李四"));
accounts.get("622848001").deposit(5000);
accounts.get("622848002").deposit(3000);
}
public void start() {
System.out.println("=== 农业银行虚拟转账模拟器 ===");
while(true) {
System.out.println("\n1. 账户查询\n2. 转账操作\n3. 退出");
System.out.print("请选择操作:");
int choice = scanner.nextInt();
scanner.nextLine(); // 清除缓冲区
switch(choice) {
case 1:
queryAccount();
break;
case 2:
transferOperation();
break;
case 3:
System.out.println("感谢使用,再见!");
return;
default:
System.out.println("无效选择!");
}
}
}
private void queryAccount() {
System.out.print("请输入账号:");
String accNum = scanner.nextLine();
BankAccount account = accounts.get(accNum);
if(account != null) {
account.printStatement();
} else {
System.out.println("账户不存在!");
}
}
private void transferOperation() {
System.out.print("请输入转出账号:");
String fromAcc = scanner.nextLine();
System.out.print("请输入转入账号:");
String toAcc = scanner.nextLine();
System.out.print("请输入转账金额:");
double amount = scanner.nextDouble();
scanner.nextLine(); // 清除缓冲区
BankAccount from = accounts.get(fromAcc);
BankAccount to = accounts.get(toAcc);
if(from == null || to == null) {
System.out.println("账户不存在!");
return;
}
if(fromAcc.equals(toAcc)) {
System.out.println("不能向自己转账!");
return;
}
from.transferTo(to, amount);
}
public static void main(String[] args) {
new BankSimulator().start();
}
}
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>bank-simulator</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<mainClass>BankSimulator</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>