Files
Java/BankSystem/src/main/java/BankSystemUI.java
2025-11-06 10:29:13 +08:00

143 lines
6.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import javax.swing.*;
public class BankSystemUI extends JDialog {
private JTextField accountIdField;
private JButton QueryButton, CreateButton, DepositButton, WithdrawButton, TransferButton, DeleteButton;
private JTextField NameField, BalanceField;
private JPanel contentPane;
private BankSystemCore core = new BankSystemCore();
public BankSystemUI() {
setResizable(false);
setContentPane(contentPane);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setTitle("简易银行系统");
QueryButton.addActionListener(e -> queryAccountAction());
CreateButton.addActionListener(e -> {
String name = JOptionPane.showInputDialog(this, "请输入账户名:", "创建账户", JOptionPane.PLAIN_MESSAGE);
if (name == null || name.trim().isEmpty()) {
if (name != null) {
JOptionPane.showMessageDialog(this, "账户名不能为空。", "创建账户错误", JOptionPane.ERROR_MESSAGE);
}
return;
}
try {
Account account = core.CreateAccount(name.trim());
if (account != null) {
JOptionPane.showMessageDialog(this, "账户创建成功!\n账户ID: " + account.getAccountId(), "创建账户成功", JOptionPane.INFORMATION_MESSAGE);
accountIdField.setText(account.getAccountId());
queryAccountAction();
} else {
JOptionPane.showMessageDialog(this, "创建账户失败。", "创建账户错误", JOptionPane.ERROR_MESSAGE);
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "创建账户时发生错误: " + ex.getMessage(), "创建账户错误", JOptionPane.ERROR_MESSAGE);
}
});
DepositButton.addActionListener(e -> {
String id = accountIdField.getText().trim();
if (id.isEmpty()) {
JOptionPane.showMessageDialog(this, "请输入账户ID。", "存款错误", JOptionPane.ERROR_MESSAGE);
return;
}
String amt = JOptionPane.showInputDialog(this, "请输入存款金额:", "存款", JOptionPane.PLAIN_MESSAGE);
if (amt == null || amt.trim().isEmpty()) return;
try {
core.Deposit(id, Double.parseDouble(amt.trim()));
JOptionPane.showMessageDialog(this, "存款成功。", "存款成功", JOptionPane.INFORMATION_MESSAGE);
queryAccountAction();
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(this, "无效的金额格式。", "存款错误", JOptionPane.ERROR_MESSAGE);
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex.getMessage(), "存款错误", JOptionPane.ERROR_MESSAGE);
}
});
WithdrawButton.addActionListener(e -> {
String id = accountIdField.getText().trim();
if (id.isEmpty()) {
JOptionPane.showMessageDialog(this, "请输入账户ID。", "取款错误", JOptionPane.ERROR_MESSAGE);
return;
}
String amt = JOptionPane.showInputDialog(this, "请输入取款金额:", "取款", JOptionPane.PLAIN_MESSAGE);
if (amt == null || amt.trim().isEmpty()) return;
try {
core.Withdraw(id, Double.parseDouble(amt.trim()));
JOptionPane.showMessageDialog(this, "取款成功。", "取款成功", JOptionPane.INFORMATION_MESSAGE);
queryAccountAction();
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(this, "无效的金额格式。", "取款错误", JOptionPane.ERROR_MESSAGE);
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex.getMessage(), "取款错误", JOptionPane.ERROR_MESSAGE);
}
});
TransferButton.addActionListener(e -> {
String from = accountIdField.getText().trim();
if (from.isEmpty()) {
JOptionPane.showMessageDialog(this, "请输入源账户ID。", "转账错误", JOptionPane.ERROR_MESSAGE);
return;
}
String to = JOptionPane.showInputDialog(this, "请输入目标账户ID:", "转账", JOptionPane.PLAIN_MESSAGE);
if (to == null || to.trim().isEmpty()) return;
String amt = JOptionPane.showInputDialog(this, "请输入转账金额:", "转账", JOptionPane.PLAIN_MESSAGE);
if (amt == null || amt.trim().isEmpty()) return;
try {
core.Transfer(from, to.trim(), Double.parseDouble(amt.trim()));
JOptionPane.showMessageDialog(this, "转账成功。", "转账成功", JOptionPane.INFORMATION_MESSAGE);
queryAccountAction();
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(this, "无效的金额格式。", "转账错误", JOptionPane.ERROR_MESSAGE);
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex.getMessage(), "转账错误", JOptionPane.ERROR_MESSAGE);
}
});
DeleteButton.addActionListener(e -> {
String id = accountIdField.getText().trim();
if (id.isEmpty()) {
JOptionPane.showMessageDialog(this, "请输入要删除的账户ID。", "删除错误", JOptionPane.ERROR_MESSAGE);
return;
}
int res = JOptionPane.showConfirmDialog(this, "确认删除账户 " + id + "", "删除确认", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
if (res == JOptionPane.YES_OPTION) {
try {
core.DeleteAccount(id);
JOptionPane.showMessageDialog(this, "删除成功。", "删除成功", JOptionPane.INFORMATION_MESSAGE);
accountIdField.setText("");
clearFields();
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex.getMessage(), "删除错误", JOptionPane.ERROR_MESSAGE);
}
}
});
}
private void queryAccountAction() {
String id = accountIdField.getText().trim();
if (id.isEmpty()) {
JOptionPane.showMessageDialog(this, "账户ID不能为空。", "查询错误", JOptionPane.ERROR_MESSAGE);
clearFields();
return;
}
try {
Account acc = core.QueryAccount(id);
NameField.setText(acc.getName());
BalanceField.setText(String.format("%.2f", acc.getBalance()));
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex.getMessage(), "查询错误", JOptionPane.ERROR_MESSAGE);
clearFields();
}
}
private void clearFields() {
NameField.setText("");
BalanceField.setText("");
}
}