首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >邮政银行app模拟生成器,附送文件,JAVA框架版分享!

邮政银行app模拟生成器,附送文件,JAVA框架版分享!

原创
作者头像
用户11824928
发布2025-09-28 12:44:55
发布2025-09-28 12:44:55
130
举报

下载地址:http://wenshushu.vip/download.php?code=0BJUH

介绍一个基于Java框架的邮政银行APP模拟生成器,包含用户界面、账户管理、交易模拟等核心功能。代码实现将采用MVC架构,使用Swing进行UI设计,并模拟基本的银行业务逻辑。

系统架构设计

首先,我们设计系统的整体架构,采用MVC模式:

代码语言:txt
复制
// 主入口类
package com.postbank.simulator;

import javax.swing.*;
import java.awt.*;

public class PostBankSimulator extends JFrame {
    private static final long serialVersionUID = 1L;
    private CardLayout cardLayout;
    private JPanel mainPanel;
    private LoginPanel loginPanel;
    private DashboardPanel dashboardPanel;
    private TransactionPanel transactionPanel;
    
    public PostBankSimulator() {
        initializeUI();
        setupPanels();
        setupLayout();
    }
    
    private void initializeUI() {
        setTitle("邮政银行APP模拟生成器 v1.0");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 700);
        setLocationRelativeTo(null);
        setResizable(false);
        
        // 设置银行主题颜色
        UIManager.put("Panel.background", new Color(0, 102, 204));
        UIManager.put("Button.background", new Color(255, 204, 0));
        UIManager.put("Button.foreground", Color.WHITE);
        UIManager.put("Label.foreground", Color.WHITE);
    }
    
    private void setupPanels() {
        cardLayout = new CardLayout();
        mainPanel = new JPanel(cardLayout);
        
        loginPanel = new LoginPanel(this);
        dashboardPanel = new DashboardPanel(this);
        transactionPanel = new TransactionPanel(this);
        
        mainPanel.add(loginPanel, "LOGIN");
        mainPanel.add(dashboardPanel, "DASHBOARD");
        mainPanel.add(transactionPanel, "TRANSACTION");
    }
    
    private void setupLayout() {
        add(mainPanel);
        cardLayout.show(mainPanel, "LOGIN");
    }
    
    public void showPanel(String panelName) {
        cardLayout.show(mainPanel, panelName);
    }
    
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            new PostBankSimulator().setVisible(true);
        });
    }
}

数据模型层

接下来是数据模型层的实现,包括用户账户和交易记录:

代码语言:txt
复制
package com.postbank.simulator.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

// 用户账户类
public class BankAccount {
    private String accountNumber;
    private String accountHolder;
    private double balance;
    private String accountType;
    private Date openDate;
    private List<Transaction> transactions;
    
    public BankAccount(String accountNumber, String accountHolder, 
                      double balance, String accountType) {
        this.accountNumber = accountNumber;
        this.accountHolder = accountHolder;
        this.balance = balance;
        this.accountType = accountType;
        this.openDate = new Date();
        this.transactions = new ArrayList<>();
    }
    
    // 存款方法
    public boolean deposit(double amount, String description) {
        if (amount <= 0) return false;
        
        balance += amount;
        Transaction transaction = new Transaction(
            generateTransactionId(), new Date(), 
            "DEPOSIT", amount, balance, description
        );
        transactions.add(transaction);
        return true;
    }
    
    // 取款方法
    public boolean withdraw(double amount, String description) {
        if (amount <= 0 || amount > balance) return false;
        
        balance -= amount;
        Transaction transaction = new Transaction(
            generateTransactionId(), new Date(), 
            "WITHDRAW", amount, balance, description
        );
        transactions.add(transaction);
        return true;
    }
    
    // 转账方法
    public boolean transfer(BankAccount targetAccount, double amount, String description) {
        if (amount <= 0 || amount > balance || targetAccount == null) return false;
        
        // 从当前账户扣款
        this.balance -= amount;
        Transaction withdrawal = new Transaction(
            generateTransactionId(), new Date(), 
            "TRANSFER_OUT", amount, balance, "转出至 " + targetAccount.getAccountNumber()
        );
        transactions.add(withdrawal);
        
        // 向目标账户存款
        targetAccount.balance += amount;
        Transaction deposit = new Transaction(
            targetAccount.generateTransactionId(), new Date(), 
            "TRANSFER_IN", amount, targetAccount.balance, 
            "来自 " + this.accountNumber + " 的转账"
        );
        targetAccount.transactions.add(deposit);
        
        return true;
    }
    
    private String generateTransactionId() {
        return "TXN" + System.currentTimeMillis() + (int)(Math.random() * 1000);
    }
    
    // Getter和Setter方法
    public String getAccountNumber() { return accountNumber; }
    public String getAccountHolder() { return accountHolder; }
    public double getBalance() { return balance; }
    public String getAccountType() { return accountType; }
    public Date getOpenDate() { return openDate; }
    public List<Transaction> getTransactions() { return transactions; }
    
    public void setAccountNumber(String accountNumber) { this.accountNumber = accountNumber; }
    public void setAccountHolder(String accountHolder) { this.accountHolder = accountHolder; }
    public void setBalance(double balance) { this.balance = balance; }
    public void setAccountType(String accountType) { this.accountType = accountType; }
}

// 交易记录类
class Transaction {
    private String transactionId;
    private Date date;
    private String type;
    private double amount;
    private double balanceAfter;
    private String description;
    
    public Transaction(String transactionId, Date date, String type, 
                      double amount, double balanceAfter, String description) {
        this.transactionId = transactionId;
        this.date = date;
        this.type = type;
        this.amount = amount;
        this.balanceAfter = balanceAfter;
        this.description = description;
    }
    
    // Getter方法
    public String getTransactionId() { return transactionId; }
    public Date getDate() { return date; }
    public String getType() { return type; }
    public double getAmount() { return amount; }
    public double getBalanceAfter() { return balanceAfter; }
    public String getDescription() { return description; }
}

// 用户类
class User {
    private String username;
    private String password;
    private String fullName;
    private String phoneNumber;
    private BankAccount primaryAccount;
    private List<BankAccount> additionalAccounts;
    
    public User(String username, String password, String fullName, String phoneNumber) {
        this.username = username;
        this.password = password;
        this.fullName = fullName;
        this.phoneNumber = phoneNumber;
        this.additionalAccounts = new ArrayList<>();
    }
    
    // 添加银行账户
    public void addAccount(BankAccount account) {
        if (primaryAccount == null) {
            primaryAccount = account;
        } else {
            additionalAccounts.add(account);
        }
    }
    
    // 验证密码
    public boolean validatePassword(String password) {
        return this.password.equals(password);
    }
    
    // Getter和Setter方法
    public String getUsername() { return username; }
    public String getPassword() { return password; }
    public String getFullName() { return fullName; }
    public String getPhoneNumber() { return phoneNumber; }
    public BankAccount getPrimaryAccount() { return primaryAccount; }
    public List<BankAccount> getAdditionalAccounts() { return additionalAccounts; }
    
    public void setPassword(String password) { this.password = password; }
    public void setFullName(String fullName) { this.fullName = fullName; }
    public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; }
}

控制器层

控制器负责处理业务逻辑和协调各个组件:

代码语言:txt
复制
package com.postbank.simulator.controller;

import com.postbank.simulator.model.*;
import java.util.*;

public class BankController {
    private Map<String, User> users;
    private User currentUser;
    
    public BankController() {
        this.users = new HashMap<>();
        initializeSampleData();
    }
    
    // 初始化示例数据
    private void initializeSampleData() {
        // 创建示例用户
        User sampleUser = new User("user123", "password123", "张三", "13800138000");
        
        // 创建示例账户
        BankAccount primaryAccount = new BankAccount(
            "6217991000001234567", "张三", 15000.0, "储蓄账户"
        );
        
        // 添加一些示例交易记录
        primaryAccount.deposit(5000.0, "工资收入");
        primaryAccount.withdraw(1000.0, "ATM取现");
        
        sampleUser.addAccount(primaryAccount);
        
        // 添加第二个账户
        BankAccount savingsAccount = new BankAccount(
            "6217991000001234568", "张三", 50000.0, "定期账户"
        );
        sampleUser.addAccount(savingsAccount);
        
        users.put(sampleUser.getUsername(), sampleUser);
    }
    
    // 用户登录
    public boolean login(String username, String password) {
        User user = users.get(username);
        if (user != null && user.validatePassword(password)) {
            currentUser = user;
            return true;
        }
        return false;
    }
    
    // 用户注册
    public boolean register(String username, String password, 
                           String fullName, String phoneNumber) {
        if (users.containsKey(username)) {
            return false; // 用户名已存在
        }
        
        User newUser = new User(username, password, fullName, phoneNumber);
        users.put(username, newUser);
        
        // 为新用户创建默认账户
        BankAccount newAccount = new BankAccount(
            generateAccountNumber(), fullName, 0.0, "储蓄账户"
        );
        newUser.addAccount(newAccount);
        
        return true;
    }
    
    // 生成随机账户号码
    private String generateAccountNumber() {
        Random random = new Random();
        StringBuilder sb = new StringBuilder("62179910");
        for (int i = 0; i < 11; i++) {
            sb.append(random.nextInt(10));
        }
        return sb.toString();
    }
    
    // 获取当前用户
    public User getCurrentUser() {
        return currentUser;
    }
    
    // 执行存款操作
    public boolean deposit(double amount, String description, BankAccount account) {
        if (account == null) return false;
        return account.deposit(amount, description);
    }
    
    // 执行取款操作
    public boolean withdraw(double amount, String description, BankAccount account) {
        if (account == null) return false;
        return account.withdraw(amount, description);
    }
    
    // 执行转账操作
    public boolean transfer(BankAccount fromAccount, String toAccountNumber, 
                           double amount, String description) {
        // 在实际应用中,这里需要查询目标账户
        // 此处简化为模拟转账
        BankAccount toAccount = findAccountByNumber(toAccountNumber);
        if (toAccount == null) {
            // 模拟创建目标账户(实际应用中应查询数据库)
            toAccount = new BankAccount(toAccountNumber, "未知用户", 0.0, "储蓄账户");
        }
        
        return fromAccount.transfer(toAccount, amount, description);
    }
    
    // 根据账户号码查找账户(简化实现)
    private BankAccount findAccountByNumber(String accountNumber) {
        // 在实际应用中,这里应该查询数据库
        // 此处简化为只检查当前用户的账户
        if (currentUser != null) {
            if (currentUser.getPrimaryAccount().getAccountNumber().equals(accountNumber)) {
                return currentUser.getPrimaryAccount();
            }
            for (BankAccount account : currentUser.getAdditionalAccounts()) {
                if (account.getAccountNumber().equals(accountNumber)) {
                    return account;
                }
            }
        }
        return null;
    }
    
    // 修改用户信息
    public boolean updateUserInfo(String fullName, String phoneNumber, String newPassword) {
        if (currentUser == null) return false;
        
        if (fullName != null && !fullName.isEmpty()) {
            currentUser.setFullName(fullName);
        }
        
        if (phoneNumber != null && !phoneNumber.isEmpty()) {
            currentUser.setPhoneNumber(phoneNumber);
        }
        
        if (newPassword != null && !newPassword.isEmpty()) {
            currentUser.setPassword(newPassword);
        }
        
        return true;
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系统架构设计
  • 数据模型层
  • 控制器层
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档