下载地址:http://wenshushu.vip/download.php?code=0BJUH
介绍一个基于Java框架的邮政银行APP模拟生成器,包含用户界面、账户管理、交易模拟等核心功能。代码实现将采用MVC架构,使用Swing进行UI设计,并模拟基本的银行业务逻辑。
首先,我们设计系统的整体架构,采用MVC模式:
// 主入口类
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);
});
}
}
接下来是数据模型层的实现,包括用户账户和交易记录:
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; }
}
控制器负责处理业务逻辑和协调各个组件:
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 删除。