农业银行虚拟转账软件, 银行转账虚拟生成器app,java模拟器制作仅供学习

202 阅读2分钟

下载地址:www.wenshushu.vip/download.ph…

代码功能说明:

  1. BankAccount类实现核心银行账户功能,包括存款、取款、转账和交易记录管理2
  2. Transaction类记录每笔交易的详细信息,包括类型、金额和时间戳2
  3. BankSimulator类提供命令行交互界面,支持账户查询和转账操作4
  4. 使用Maven构建项目,配置了Java 11运行环境4

使用说明:

  1. 安装Maven和JDK 11环境
  2. 执行mvn compile exec:java运行程序
  3. 系统初始化了两个演示账户(622848001和622848002)
  4. 可通过菜单选择账户查询或转账操作24

注意事项:

  1. 该模拟器仅用于学习Java编程和银行系统原理24
  2. 所有数据存储在内存中,程序退出后不会持久化3
  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>