143 lines
6.9 KiB
Java
143 lines
6.9 KiB
Java
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("");
|
||
}
|
||
|
||
}
|