成品下载地址:https://www.pan38.com/yun/share.php?code=JCnzE 提取密码:1135

这个银行APP模拟器实现了账户管理、存款、取款、转账、交易记录等核心功能。代码结构清晰,包含三个主要类:BankAccount处理账户逻辑,Transaction记录交易信息,BankApp提供用户界面,仅供学习娱乐参考用途哈。

源码部分:【仅供学习娱乐教程演示用途】


import java.util.ArrayList;
import java.util.Date;
import java.text.SimpleDateFormat;

public class BankAccount {
    private String accountNumber;
    private String accountHolder;
    private double balance;
    private ArrayList<Transaction> transactions;
    private String accountType;
    private Date creationDate;
    
    public BankAccount(String accountNumber, String accountHolder, String accountType) {
        this.accountNumber = accountNumber;
        this.accountHolder = accountHolder;
        this.accountType = accountType;
        this.balance = 0.0;
        this.transactions = new ArrayList<>();
        this.creationDate = new Date();
    }
    
    public void deposit(double amount) {
        if(amount <= 0) {
            System.out.println("存款金额必须大于0");
            return;
        }
        balance += amount;
        transactions.add(new Transaction("存款", amount, balance));
        System.out.println("存款成功,当前余额: " + balance);
    }
    
    public void withdraw(double amount) {
        if(amount <= 0) {
            System.out.println("取款金额必须大于0");
            return;
        }
        if(amount > balance) {
            System.out.println("余额不足");
            return;
        }
        balance -= amount;
        transactions.add(new Transaction("取款", amount, balance));
        System.out.println("取款成功,当前余额: " + balance);
    }
    
    public void transfer(BankAccount target, double amount) {
        if(amount <= 0) {
            System.out.println("转账金额必须大于0");
            return;
        }
        if(amount > balance) {
            System.out.println("余额不足");
            return;
        }
        this.balance -= amount;
        target.balance += amount;
        transactions.add(new Transaction("转出到"+target.accountNumber, amount, balance));
        target.transactions.add(new Transaction("转入自"+this.accountNumber, amount, target.balance));
        System.out.println("转账成功,当前余额: " + balance);
    }
    
    public void printStatement() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("账户号码: " + accountNumber);
        System.out.println("账户持有人: " + accountHolder);
        System.out.println("账户类型: " + accountType);
        System.out.println("开户日期: " + sdf.format(creationDate));
        System.out.println("当前余额: " + balance);
        System.out.println("\n交易记录:");
        System.out.println("时间\t\t\t类型\t金额\t余额");
        for(Transaction t : transactions) {
            System.out.println(sdf.format(t.getTime()) + "\t" + t.getType() + "\t" + t.getAmount() + "\t" + t.getBalance());
        }
    }
    
    // 其他getter方法...
}
import java.util.Date;

public class Transaction {
    private String type;
    private double amount;
    private double balance;
    private Date time;
    
    public Transaction(String type, double amount, double balance) {
        this.type = type;
        this.amount = amount;
        this.balance = balance;
        this.time = new Date();
    }
    
    public String getType() {
        return type;
    }
    
    public double getAmount() {
        return amount;
    }
    
    public double getBalance() {
        return balance;
    }
    
    public Date getTime() {
        return time;
    }
}
 java.util.Scanner;
import java.util.HashMap;

public class BankApp {
    private static HashMap<String, BankAccount> accounts = new HashMap<>();
    private static Scanner scanner = new Scanner(System.in);
    
    public static void main(String[] args) {
        initializeSampleAccounts();
        
        while(true) {
            System.out.println("\n欢迎使用银行模拟系统");
            System.out.println("1. 登录账户");
            System.out.println("2. 创建新账户");
            System.out.println("3. 退出系统");
            System.out.print("请选择: ");
            
            int choice = scanner.nextInt();
            scanner.nextLine(); // 消耗换行符
            
            switch(choice) {
                case 1:
                    login();
                    break;
                case 2:
                    createAccount();
                    break;
                case 3:
                    System.out.println("感谢使用,再见!");
                    System.exit(0);
                default:
                    System.out.println("无效选择,请重试");
            }
        }
    }
    
    private static void login() {
        System.out.print("请输入账号: ");
        String accountNumber = scanner.nextLine();
        
        if(!accounts.containsKey(accountNumber)) {
            System.out.println("账号不存在");
            return;
        }
        
        BankAccount account = accounts.get(accountNumber);
        accountMenu(account);
    }
    
    private static void accountMenu(BankAccount account) {
        while(true) {
            System.out.println("\n账户操作菜单");
            System.out.println("1. 存款");
            System.out.println("2. 取款");
            System.out.println("3. 转账");
            System.out.println("4. 查看账户信息");
            System.out.println("5. 查看交易记录");
            System.out.println("6. 退出账户");
            System.out.print("请选择: ");
            
            int choice = scanner.nextInt();
            scanner.nextLine(); // 消耗换行符
            
            switch(choice) {
                case 1:
                    System.out.print("请输入存款金额: ");
                    double depositAmount = scanner.nextDouble();
                    account.deposit(depositAmount);
                    break;
                case 2:
                    System.out.print("请输入取款金额: ");
                    double withdrawAmount = scanner.nextDouble();
                    account.withdraw(withdrawAmount);
                    break;
                case 3:
                    System.out.print("请输入目标账号: ");
                    String targetNumber = scanner.nextLine();
                    if(!accounts.containsKey(targetNumber)) {
                        System.out.println("目标账号不存在");
                        break;
                    }
                    System.out.print("请输入转账金额: ");
                    double transferAmount = scanner.nextDouble();
                    account.transfer(accounts.get(targetNumber), transferAmount);
                    break;
                case 4:
                    account.printStatement();
                    break;
                case 5:
                    account.printStatement();
                    break;
                case 6:
                    return;
                default:
                    System.out.println("无效选择,请重试");
            }
        }
    }
    
    private static void createAccount() {
        System.out.print("请输入账户持有人姓名: ");
        String holder = scanner.nextLine();
        System.out.print("请输入账户类型(1.储蓄账户 2.支票账户): ");
        int typeChoice = scanner.nextInt();
        scanner.nextLine();
        
        String accountType = typeChoice == 1 ? "储蓄账户" : "支票账户";
        String accountNumber = generateAccountNumber();
        
        BankAccount newAccount = new BankAccount(accountNumber, holder, accountType);
        accounts.put(accountNumber, newAccount);
        
        System.out.println("账户创建成功!");
        System.out.println("您的账号是: " + accountNumber);
    }
    
    private static String generateAccountNumber() {
        return "62" + (100000000 + (int)(Math.random() * 900000000));
    }
    
    private static void initializeSampleAccounts() {
        accounts.put("621234567890", new BankAccount("621234567890", "张三", "储蓄账户"));
        accounts.put("621234567891", new BankAccount("621234567891", "李四", "支票账户"));
        accounts.get("621234567890").deposit(10000);
        accounts.get("621234567891").deposit(5000);
    }
}

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐