Java场景题(一):银行账户管理系统
场景描述
假设我们要设计一个简单的银行账户管理系统。这个系统需要支持不同类型的账户(如储蓄账户和支票账户),并且能够执行基本的操作,如存款、取款和查询余额。为了实现这一点,我们将使用面向对象编程的概念,如类和继承。
设计思路
- 账户基类(Account):作为所有账户类型的基类,定义基本的账户操作。
- 储蓄账户(SavingsAccount):继承自Account,添加特定于储蓄账户的功能,例如利息计算。
- 支票账户(CheckingAccount):继承自Account,可以增加透支功能。
- 银行(Bank):管理多个账户,可以添加新账户和查询账户信息。
代码示例
下面是一个简单的Java实现。
import java.util.ArrayList;
import java.util.List;
// 账户基类
abstract class Account {
private String accountNumber;
private double balance;
public Account(String accountNumber) {
this.accountNumber = accountNumber;
this.balance = 0.0;
}
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
System.out.println("存款成功: " + amount + ", 当前余额: " + balance);
} else {
System.out.println("存款金额必须大于0");
}
}
public void withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
System.out.println("取款成功: " + amount + ", 当前余额: " + balance);
} else {
System.out.println("取款失败: 余额不足或金额无效");
}
}
public double getBalance() {
return balance;
}
public String getAccountNumber() {
return accountNumber;
}
public abstract String getAccountType();
}
// 储蓄账户
class SavingsAccount extends Account {
public SavingsAccount(String accountNumber) {
super(accountNumber);
}
public void applyInterest(double interestRate) {
double interest = getBalance() * interestRate;
deposit(interest);
System.out.println("利息已添加: " + interest);
}
@Override
public String getAccountType() {
return "储蓄账户";
}
}
// 支票账户
class CheckingAccount extends Account {
private double overdraftLimit;
public CheckingAccount(String accountNumber, double overdraftLimit) {
super(accountNumber);
this.overdraftLimit = overdraftLimit;
}
@Override
public void withdraw(double amount) {
if (amount > 0 && amount <= (getBalance() + overdraftLimit)) {
super.withdraw(amount);
} else {
System.out.println("取款失败: 余额和透支额不足");
}
}
@Override
public String getAccountType() {
return "支票账户";
}
}
// 银行类
class Bank {
private List<Account> accounts;
public Bank() {
accounts = new ArrayList<>();
}
public void addAccount(Account account) {
accounts.add(account);
System.out.println("账户已添加: " + account.getAccountNumber() + " 类型: " + account.getAccountType());
}
public void showAccounts() {
for (Account account : accounts) {
System.out.println("账户: " + account.getAccountNumber() + ", 余额: " + account.getBalance() + " 类型: " + account.getAccountType());
}
}
}
// 主程序
public class BankSystem {
public static void main(String[] args) {
Bank bank = new Bank();
SavingsAccount savingsAccount = new SavingsAccount("SA123");
CheckingAccount checkingAccount = new CheckingAccount("CA123", 500.0);
bank.addAccount(savingsAccount);
bank.addAccount(checkingAccount);
savingsAccount.deposit(1000.0);
savingsAccount.withdraw(200.0);
savingsAccount.applyInterest(0.03); // 3%的利息
checkingAccount.deposit(500.0);
checkingAccount.withdraw(600.0); // 使用透支
checkingAccount.withdraw(500.0); // 余额不足
bank.showAccounts();
}
}
运行说明
在这个代码示例中,我们定义了一个基础的账户类和两个子类,分别代表储蓄账户和支票账户。通过Bank
类,我们可以方便地管理多个账户。每个账户都可以执行存款和取款等操作。程序的main
方法演示了如何创建账户、进行存款和取款等操作。
总结
这只是一个简单的银行账户管理系统示例,实际应用中可能会涉及更多复杂的功能和安全性问题(例如多线程控制、数据持久化等)。但这个例子展示了如何使用面向对象的思想进行类的设计和基本功能实现。