Java银行系统:贷款处理和延迟请求管理
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class BankSystem {
private List<Worker> workers;
private List<User> users;
private double maxLoanAmount;
private int maxDelayDays;
private double availableFunds;
public BankSystem(List<Worker> workers, List<User> users, double maxLoanAmount, int maxDelayDays, double availableFunds) {
this.workers = workers;
this.users = users;
this.maxLoanAmount = maxLoanAmount;
this.maxDelayDays = maxDelayDays;
this.availableFunds = availableFunds;
}
public void processLoan(int userId, double loanAmount) {
User user = users.get(userId);
if (loanAmount > maxLoanAmount) {
System.out.println('Loan amount exceeds the maximum limit');
return;
}
if (loanAmount > availableFunds) {
System.out.println('Insufficient funds. Loan request delayed');
user.addDelayedLoanRequest(new LoanRequest(loanAmount, new Date()));
return;
}
Worker worker = getAvailableWorker(loanAmount);
if (worker == null) {
System.out.println('No worker available to process loan. Loan request delayed');
user.addDelayedLoanRequest(new LoanRequest(loanAmount, new Date()));
return;
}
availableFunds -= loanAmount;
user.addLoan(new Loan(loanAmount, worker, new Date(), new Date()));
worker.addAllocatedFunds(loanAmount);
System.out.println('Loan request successfully processed');
}
private Worker getAvailableWorker(double loanAmount) {
for (Worker worker : workers) {
if (worker.getAllocatedFunds() + loanAmount <= worker.getMaxAllocation()) {
return worker;
}
}
return null;
}
public void processDelayedLoanRequests() {
Date currentDate = new Date();
for (User user : users) {
List<LoanRequest> delayedRequests = user.getDelayedLoanRequests();
List<LoanRequest> processedRequests = new ArrayList<>();
for (LoanRequest request : delayedRequests) {
int daysDelayed = getDaysBetween(request.getRequestDate(), currentDate);
if (daysDelayed <= maxDelayDays && request.getAmount() <= availableFunds) {
Worker worker = getAvailableWorker(request.getAmount());
if (worker != null) {
availableFunds -= request.getAmount();
user.addLoan(new Loan(request.getAmount(), worker, request.getRequestDate(), new Date()));
worker.addAllocatedFunds(request.getAmount());
processedRequests.add(request);
System.out.println('Delayed loan request processed successfully');
}
}
}
delayedRequests.removeAll(processedRequests);
}
}
private int getDaysBetween(Date startDate, Date endDate) {
long diff = endDate.getTime() - startDate.getTime();
return (int) (diff / (24 * 60 * 60 * 1000));
}
}
class Worker {
private int id;
private String name;
private double maxAllocation;
private double allocatedFunds;
public Worker(int id, String name, double maxAllocation) {
this.id = id;
this.name = name;
this.maxAllocation = maxAllocation;
this.allocatedFunds = 0;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public double getMaxAllocation() {
return maxAllocation;
}
public double getAllocatedFunds() {
return allocatedFunds;
}
public void addAllocatedFunds(double amount) {
allocatedFunds += amount;
}
}
class User {
private int id;
private String name;
private List<Loan> loans;
private List<LoanRequest> delayedLoanRequests;
public User(int id, String name) {
this.id = id;
this.name = name;
this.loans = new ArrayList<>();
this.delayedLoanRequests = new ArrayList<>();
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public List<Loan> getLoans() {
return loans;
}
public void addLoan(Loan loan) {
loans.add(loan);
}
public List<LoanRequest> getDelayedLoanRequests() {
return delayedLoanRequests;
}
public void addDelayedLoanRequest(LoanRequest loanRequest) {
delayedLoanRequests.add(loanRequest);
}
}
class Loan {
private double amount;
private Worker worker;
private Date requestDate;
private Date repaymentDate;
public Loan(double amount, Worker worker, Date requestDate, Date repaymentDate) {
this.amount = amount;
this.worker = worker;
this.requestDate = requestDate;
this.repaymentDate = repaymentDate;
}
public double getAmount() {
return amount;
}
public Worker getWorker() {
return worker;
}
public Date getRequestDate() {
return requestDate;
}
public Date getRepaymentDate() {
return repaymentDate;
}
}
class LoanRequest {
private double amount;
private Date requestDate;
public LoanRequest(double amount, Date requestDate) {
this.amount = amount;
this.requestDate = requestDate;
}
public double getAmount() {
return amount;
}
public Date getRequestDate() {
return requestDate;
}
}
// 如何在 Eclipse 中运行:
// 1. 创建一个新的 Java 项目。
// 2. 将 BankSystem.java 和相关类的代码复制并粘贴到 src 文件夹中。
// 3. 在 BankSystem 类中添加一个 main 方法。
// 4. 在 main 方法中创建一个 BankSystem 对象并调用其方法,例如:
```java
public static void main(String[] args) {
// 创建工作人员列表
List<Worker> workers = new ArrayList<>();
workers.add(new Worker(1, 'John', 100000));
workers.add(new Worker(2, 'Mary', 150000));
// 创建用户列表
List<User> users = new ArrayList<>();
users.add(new User(1, 'Bob'));
users.add(new User(2, 'Alice'));
// 创建银行系统对象
BankSystem bankSystem = new BankSystem(workers, users, 50000, 30, 100000);
// 处理贷款请求
bankSystem.processLoan(1, 20000);
bankSystem.processLoan(2, 75000);
// 处理延迟的贷款请求
bankSystem.processDelayedLoanRequests();
}
// 5. 运行程序并查看控制台输出。
原文地址: https://www.cveoy.top/t/topic/ooxq 著作权归作者所有。请勿转载和采集!