项目:银行管理系统要求:通过Java控制台开发一个银行管理系统,实现银行管理员工功能和顾客功能。具体要求如下:(1)管理员功能:登录、添加顾客、删除顾客、计算存储金额、富豪排行榜、退出。(2)顾客功能:登录、存款、取款、转账、修改密码、退出。其中管理员界面如下所示

项目:银行管理系统要求:通过Java控制台开发一个银行管理系统,实现银行管理员工功能和顾客功能。具体要求如下:(1)管理员功能:登录、添加顾客、删除顾客、计算存储金额、富豪排行榜、退出。(2)顾客功能:登录、存款、取款、转账、修改密码、退出。其中管理员界面如下所示

上午好☀️☀️☀️️
本答案参考通义千问
要开发一个银行管理系统项目,你需要设计和实现多个功能模块。以下是一个详细的解决方案,包括代码示例。
public class User {
private String name;
private String idNumber;
private String password;
private double balance;
private int accountNumber;
public User(String name, String idNumber, String password, double balance, int accountNumber) {
this.name = name;
this.idNumber = idNumber;
this.password = password;
this.balance = balance;
this.accountNumber = accountNumber;
}
// Getters and Setters
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getIdNumber() { return idNumber; }
public void setIdNumber(String idNumber) { this.idNumber = idNumber; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
public double getBalance() { return balance; }
public void setBalance(double balance) { this.balance = balance; }
public int getAccountNumber() { return accountNumber; }
public void setAccountNumber(int accountNumber) { this.accountNumber = accountNumber; }
}
import java.util.HashMap;
import java.util.Map;
public class Bank {
private Map<Integer, User> users;
private int nextAccountNumber;
public Bank() {
users = new HashMap<>();
nextAccountNumber = 1001; // Starting account number
}
public boolean addCustomer(User user) {
if (!users.containsKey(user.getAccountNumber())) {
users.put(user.getAccountNumber(), user);
return true;
}
return false;
}
public boolean removeCustomer(int accountNumber) {
if (users.containsKey(accountNumber)) {
users.remove(accountNumber);
return true;
}
return false;
}
public User findCustomerByAccountNumber(int accountNumber) {
return users.get(accountNumber);
}
public void deposit(int accountNumber, double amount) {
User user = users.get(accountNumber);
if (user != null) {
user.setBalance(user.getBalance() + amount);
}
}
public void withdraw(int accountNumber, double amount) {
User user = users.get(accountNumber);
if (user != null && user.getBalance() >= amount) {
user.setBalance(user.getBalance() - amount);
}
}
public void transfer(int fromAccountNumber, int toAccountNumber, double amount) {
withdraw(fromAccountNumber, amount);
deposit(toAccountNumber, amount);
}
public void updatePassword(int accountNumber, String newPassword) {
User user = users.get(accountNumber);
if (user != null) {
user.setPassword(newPassword);
}
}
public void printWealthRanking() {
users.values().stream()
.sorted((u1, u2) -> Double.compare(u2.getBalance(), u1.getBalance()))
.forEach(user -> System.out.println(user.getName() + " : " + user.getBalance()));
}
}
public class AdminMenu {
private Bank bank;
public AdminMenu(Bank bank) {
this.bank = bank;
}
public void showAdminMenu() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("--------银行管理系统[管理员]--------");
System.out.println("1、添加顾客");
System.out.println("2、计算存储金额");
System.out.println("3、富豪排行榜");
System.out.println("4、退出");
System.out.print("请选择服务种类:");
int choice = scanner.nextInt();
switch (choice) {
case 1:
addCustomer();
break;
case 2:
calculateTotalAmount();
break;
case 3:
wealthRanking();
break;
case 4:
return;
default:
System.out.println("无效的选择!");
}
}
}
private void addCustomer() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入姓名:");
String name = scanner.nextLine();
System.out.print("请输入身份证号码(18位):");
String idNumber = scanner.nextLine();
System.out.print("请输入密码:");
String password = scanner.nextLine();
System.out.print("请输入初始余额:");
double balance = scanner.nextDouble();
User newUser = new User(name, idNumber, password, balance, nextAccountNumber++);
if (bank.addCustomer(newUser)) {
System.out.println("开户成功!你的账号为:" + newUser.getAccountNumber());
System.out.println("开户日期为:" + java.time.LocalDate.now());
} else {
System.out.println("开户失败!");
}
}
private void calculateTotalAmount() {
double total = bank.users.values().stream().mapToDouble(User::getBalance).sum();
System.out.println("当前存储总金额为:" + total);
}
private void wealthRanking() {
System.out.println("富豪排行榜:");
bank.printWealthRanking();
}
}
public class CustomerMenu {
private Bank bank;
private int accountNumber;
public CustomerMenu(Bank bank, int accountNumber) {
this.bank = bank;
this.accountNumber = accountNumber;
}
public void showCustomerMenu() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("--------银行管理系统[顾客]--------");
System.out.println("1、存款");
System.out.println("2、取款");
System.out.println("3、转账");
System.out.println("4、修改密码");
System.out.println("5、退出");
System.out.print("请选择服务种类:");
int choice = scanner.nextInt();
switch (choice) {
case 1:
deposit();
break;
case 2:
withdraw();
break;
case 3:
transfer();
break;
case 4:
updatePassword();
break;
case 5:
return;
default:
System.out.println("无效的选择!");
}
}
}
private void deposit() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入存款金额:");
double amount = scanner.nextDouble();
bank.deposit(accountNumber, amount);
System.out.println("存款成功!");
}
private void withdraw() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入取款金额:");
double amount = scanner.nextDouble();
bank.withdraw(accountNumber, amount);
System.out.println("取款成功!");
}
private void transfer() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入转入账户号:");
int toAccountNumber = scanner.nextInt();
System.out.print("请输入转账金额:");
double amount = scanner.nextDouble();
bank.transfer(accountNumber, toAccountNumber, amount);
System.out.println("转账成功!");
}
private void updatePassword() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入新密码:");
String newPassword = scanner.nextLine();
bank.updatePassword(accountNumber, newPassword);
System.out.println("密码修改成功!");
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Bank bank = new Bank();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("银行管理系统");
System.out.println("1、管理员");
System.out.println("2、顾客");
System.out.println("0、退出");
System.out.print("请输入身份:");
int choice = scanner.nextInt();
switch (choice) {
case 1:
adminLogin(bank);
break;
case 2:
customerLogin(bank);
break;
case 0:
return;
default:
System.out.println("无效的选择!");
}
}
}
private static void adminLogin(Bank bank) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入管理员名称:");
String adminName = scanner.nextLine();
System.out.print("请输入管理员密码:");
String adminPassword = scanner.nextLine();
if ("admin".equals(adminName) && "admin123".equals(adminPassword)) {
AdminMenu adminMenu = new AdminMenu(bank);
adminMenu.showAdminMenu();
} else {
System.out.println("登录失败!");
}
}
private static void customerLogin(Bank bank) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入账号:");
int accountNumber = scanner.nextInt();
System.out.print("请输入密码:");
String password = scanner.next();
User user = bank.findCustomerByAccountNumber(accountNumber);
if (user != null && password.equals(user.getPassword())) {
CustomerMenu customerMenu = new CustomerMenu(bank, accountNumber);
customerMenu.showCustomerMenu();
} else {
System.out.println("登录失败!");
}
}
}
以上代码实现了银行管理系统的大部分功能。你可以根据实际需求进行进一步的扩展和优化。例如,可以增加更多的验证逻辑、异常处理等。