银行余额虚拟生成器app免费,网银虚拟转账模拟器,工商建设农业邮政招商jar版

2,635 阅读3分钟

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

基于Java的银行余额虚拟生成器实现,支持工商、建设、农业、邮政、招商等银行的虚拟转账模拟功能。该项目采用Maven构建,包含完整的GUI界面和核心逻辑。

代码说明:

  1. 采用Maven项目结构,包含完整的pom.xml配置
  2. 使用SwingX和FlatLaf库增强界面效果
  3. 支持五大主流银行的模拟操作15
  4. 实现虚拟转账功能并生成交易流水号16
  5. 包含账户余额管理和交易记录功能12
  6. 采用选项卡式界面管理不同银行6
  7. 生成格式化的交易记录显示
package com.virtualbank;

import javax.swing.*;
import java.awt.*;
import com.formdev.flatlaf.FlatLightLaf;

public class MainApp {
    public static void main(String[] args) {
        FlatLightLaf.setup();
        SwingUtilities.invokeLater(() -> {
            BankSimulatorFrame frame = new BankSimulatorFrame();
            frame.setTitle("银行虚拟转账模拟器");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(900, 600);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        });
    }
}

package com.virtualbank;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.util.HashMap;
import java.util.Map;

public class BankSimulatorFrame extends JFrame {
    private JTabbedPane tabbedPane;
    private Map<String, BankPanel> bankPanels = new HashMap<>();
    
    public BankSimulatorFrame() {
        initUI();
    }
    
    private void initUI() {
        setLayout(new BorderLayout());
        
        tabbedPane = new JTabbedPane();
        bankPanels.put("ICBC", new BankPanel("工商银行", "ICBC"));
        bankPanels.put("CCB", new BankPanel("建设银行", "CCB"));
        bankPanels.put("ABC", new BankPanel("农业银行", "ABC"));
        bankPanels.put("PSBC", new BankPanel("邮政储蓄", "PSBC"));
        bankPanels.put("CMB", new BankPanel("招商银行", "CMB"));
        
        bankPanels.values().forEach(panel -> {
            tabbedPane.addTab(panel.getBankName(), panel);
        });
        
        add(tabbedPane, BorderLayout.CENTER);
        
        JPanel bottomPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        JButton aboutBtn = new JButton("关于");
        aboutBtn.addActionListener(this::showAboutDialog);
        bottomPanel.add(aboutBtn);
        add(bottomPanel, BorderLayout.SOUTH);
    }
    
    private void showAboutDialog(ActionEvent e) {
        JOptionPane.showMessageDialog(this,
            "银行虚拟转账模拟器 v1.0\n仅供演示和测试使用",
            "关于",
            JOptionPane.INFORMATION_MESSAGE);
    }
}

package com.virtualbank;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import org.jdesktop.swingx.JXDatePicker;

public class BankPanel extends JPanel {
    private String bankName;
    private String bankCode;
    private JTextField balanceField;
    private JTextArea transactionArea;
    private double balance = 10000.00;
    private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
    public BankPanel(String bankName, String bankCode) {
        this.bankName = bankName;
        this.bankCode = bankCode;
        initComponents();
    }
    
    private void initComponents() {
        setLayout(new BorderLayout(10, 10));
        
        // 顶部面板 - 账户信息
        JPanel topPanel = new JPanel(new GridLayout(2, 2, 10, 10));
        topPanel.setBorder(BorderFactory.createTitledBorder("账户信息"));
        
        topPanel.add(new JLabel("银行:"));
        JTextField bankField = new JTextField(bankName);
        bankField.setEditable(false);
        topPanel.add(bankField);
        
        topPanel.add(new JLabel("当前余额:"));
        balanceField = new JTextField(String.format("¥%.2f", balance));
        balanceField.setEditable(false);
        topPanel.add(balanceField);
        
        // 中部面板 - 转账操作
        JPanel centerPanel = new JPanel(new GridLayout(0, 2, 10, 10));
        centerPanel.setBorder(BorderFactory.createTitledBorder("转账操作"));
        
        JLabel toBankLabel = new JLabel("收款银行:");
        JComboBox<String> toBankCombo = new JComboBox<>(new String[]{"工商银行", "建设银行", "农业银行", "邮政储蓄", "招商银行"});
        
        JLabel toAccountLabel = new JLabel("收款账号:");
        JTextField toAccountField = new JTextField();
        
        JLabel amountLabel = new JLabel("转账金额:");
        JTextField amountField = new JTextField();
        
        JLabel dateLabel = new JLabel("交易日期:");
        JXDatePicker datePicker = new JXDatePicker();
        datePicker.setFormats(dateFormat);
        datePicker.setDate(new Date());
        
        JButton transferBtn = new JButton("模拟转账");
        transferBtn.addActionListener(e -> performTransfer(
            toBankCombo.getSelectedItem().toString(),
            toAccountField.getText(),
            amountField.getText(),
            datePicker.getDate()
        ));
        
        centerPanel.add(toBankLabel);
        centerPanel.add(toBankCombo);
        centerPanel.add(toAccountLabel);
        centerPanel.add(toAccountField);
        centerPanel.add(amountLabel);
        centerPanel.add(amountField);
        centerPanel.add(dateLabel);
        centerPanel.add(datePicker);
        centerPanel.add(new JLabel());
        centerPanel.add(transferBtn);
        
        // 底部面板 - 交易记录
        JPanel bottomPanel = new JPanel(new BorderLayout());
        bottomPanel.setBorder(BorderFactory.createTitledBorder("交易记录"));
        
        transactionArea = new JTextArea(10, 40);
        transactionArea.setEditable(false);
        JScrollPane scrollPane = new JScrollPane(transactionArea);
        
        bottomPanel.add(scrollPane, BorderLayout.CENTER);
        
        // 组装主面板
        add(topPanel, BorderLayout.NORTH);
        add(centerPanel, BorderLayout.CENTER);
        add(bottomPanel, BorderLayout.SOUTH);
    }
    
    private void performTransfer(String toBank, String toAccount, String amountStr, Date date) {
        try {
            double amount = Double.parseDouble(amountStr);
            if (amount <= 0) {
                JOptionPane.showMessageDialog(this, "转账金额必须大于0", "错误", JOptionPane.ERROR_MESSAGE);
                return;
            }
            
            if (amount > balance) {
                JOptionPane.showMessageDialog(this, "余额不足", "错误", JOptionPane.ERROR_MESSAGE);
                return;
            }
            
            balance -= amount;
            balanceField.setText(String.format("¥%.2f", balance));
            
            String record = String.format("[%s] 转账到%s(%s) 金额:¥%.2f\n", 
                dateFormat.format(date), toBank, maskAccount(toAccount), amount);
            transactionArea.append(record);
            
            // 生成模拟交易流水号
            String serialNo = generateSerialNo();
            JOptionPane.showMessageDialog(this, 
                String.format("转账成功!\n流水号: %s", serialNo),
                "成功", 
                JOptionPane.INFORMATION_MESSAGE);
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "请输入有效的金额", "错误", JOptionPane.ERROR_MESSAGE);
        }
    }
    
    private String maskAccount(String account) {
        if (account.length() <= 4) return account;
        return "****" + account.substring(account.length() - 4);
    }
    
    private String generateSerialNo() {
        Random random = new Random();
        return String.format("%s%04d%08d", 
            bankCode, 
            random.nextInt(10000), 
            random.nextInt(100000000));
    }
    
    public String getBankName() {
        return bankName;
    }
}

<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.virtualbank</groupId>
    <artifactId>bank-simulator</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.swinglabs</groupId>
            <artifactId>swingx</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>com.formdev</groupId>
            <artifactId>flatlaf</artifactId>
            <version>3.2.1</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <mainClass>com.virtualbank.MainApp</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>