中国工商银行模拟器,建设邮政邮政农业,java实现装逼神器

简介: 这是一个基于Java 8+开发的简单银行系统模拟项目,包含账户管理、资金操作(存款、取款)、转账功能及数据安全保护。

下载地址:https://www.pan38.com/share.php?code=bRtMK 提取码:8888 【仅供学习参考用途】

功能特点
‌账户管理‌:创建银行账户,管理账户信息
‌资金操作‌:模拟存款、取款等基本银行操作
‌转账功能‌:实现账户间的资金转移
‌数据安全‌:使用面向对象封装特性保护账户数据
技术架构
编程语言:Java 8+
数据结构:HashMap用于账户存储
设计模式:简单的面向对象设计
代码模块说明

  1. BankAccount类
    public class BankAccount {
    private String accountNumber; // 账号
    private String accountName; // 户名
    private double balance; // 余额

    // 构造方法
    public BankAccount(String number, String name) {

     this.accountNumber = number;
     this.accountName = name;
     this.balance = 0.0;  // 初始余额为0
    

    }

    // 存款方法
    public void deposit(double amount) {

     if(amount > 0) {
         balance += amount;
         System.out.println("存款成功,当前余额:" + balance);
     } else {
         System.out.println("存款金额必须大于0");
     }
    

    }

    // 取款方法
    public boolean withdraw(double amount) {

     if(amount > 0 && balance >= amount) {
         balance -= amount;
         System.out.println("取款成功,当前余额:" + balance);
         return true;
     }
     System.out.println("取款失败,余额不足或金额无效");
     return false;
    

    }

    // 获取账户信息
    public String getAccountInfo() {

     return "账号:" + accountNumber + " 户名:" + accountName + " 余额:" + balance;
    

    }

    // Getter方法
    public String getAccountNumber() {

     return accountNumber;
    

    }

    public double getBalance() {

     return balance;
    

    }
    }

  2. BankSystem类

import java.util.HashMap;

public class BankSystem {
private HashMap accounts; // 账户存储

public BankSystem() {
    accounts = new HashMap<>();
}

// 创建账户
public void createAccount(String number, String name) {
    if(!accounts.containsKey(number)) {
        accounts.put(number, new BankAccount(number, name));
        System.out.println("账户创建成功:" + number);
    } else {
        System.out.println("账户已存在");
    }
}

// 获取账户
public BankAccount getAccount(String number) {
    return accounts.get(number);
}

// 转账功能
public boolean transfer(String from, String to, double amount) {
    BankAccount src = accounts.get(from);
    BankAccount dst = accounts.get(to);

    if(src == null || dst == null) {
        System.out.println("账户不存在");
        return false;
    }

    if(src.withdraw(amount)) {
        dst.deposit(amount);
        System.out.println("转账成功");
        return true;
    }
    return false;
}

// 显示所有账户
public void displayAllAccounts() {
    System.out.println("\n===== 所有账户信息 =====");
    for(BankAccount account : accounts.values()) {
        System.out.println(account.getAccountInfo());
    }
}

}

  1. MainApp主程序

import java.util.Scanner;

public class MainApp {
public static void main(String[] args) {
BankSystem system = new BankSystem();
Scanner scanner = new Scanner(System.in);

    // 初始化测试账户
    system.createAccount("622202100000", "张三");
    system.createAccount("622202100001", "李四");

    // 主菜单
    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("0. 退出");
        System.out.print("请选择操作:");

        int choice = scanner.nextInt();
        scanner.nextLine();  // 消耗换行符

        switch(choice) {
            case 1:
                System.out.print("输入账号:");
                String num = scanner.nextLine();
                System.out.print("输入户名:");
                String name = scanner.nextLine();
                system.createAccount(num, name);
                break;

            case 2:
                System.out.print("输入账号:");
                String depositNum = scanner.nextLine();
                System.out.print("输入存款金额:");
                double depositAmount = scanner.nextDouble();
                BankAccount depositAccount = system.getAccount(depositNum);
                if(depositAccount != null) {
                    depositAccount.deposit(depositAmount);
                } else {
                    System.out.println("账户不存在");
                }
                break;

            case 3:
                System.out.print("输入账号:");
                String withdrawNum = scanner.nextLine();
                System.out.print("输入取款金额:");
                double withdrawAmount = scanner.nextDouble();
                BankAccount withdrawAccount = system.getAccount(withdrawNum);
                if(withdrawAccount != null) {
                    withdrawAccount.withdraw(withdrawAmount);
                } else {
                    System.out.println("账户不存在");
                }
                break;

            case 4:
                System.out.print("输入转出账号:");
                String from = scanner.nextLine();
                System.out.print("输入转入账号:");
                String to = scanner.nextLine();
                System.out.print("输入转账金额:");
                double transferAmount = scanner.nextDouble();
                system.transfer(from, to, transferAmount);
                break;

            case 5:
                system.displayAllAccounts();
                break;

            case 0:
                System.out.println("感谢使用银行系统");
                scanner.close();
                System.exit(0);

            default:
                System.out.println("无效选择");
        }
    }
}

}
项目扩展建议
‌数据持久化‌:添加文件存储或数据库支持
‌日志系统‌:记录所有交易操作
‌密码验证‌:增加账户安全验证
‌利息计算‌:实现定期存款利息功能
‌异常处理‌:完善各种边界条件处理

相关文章
|
5月前
|
Java
银行转账p图软件,对公转账截图生成器,java版开发银行模拟器【仅供学习参考】
这是一套简单的银行账户管理系统代码,包含`BankAccount`和`BankSystem`两个核心类。`BankAccount`负责单个账户的管理
|
移动开发 Java Windows
Java网络编程:实现HTTP模拟器
本文为原创,如需转载,请注明作者和出处,谢谢! 源代码和.class文件下载    在讨论HTTP协议的具体请求和响应头字段之前,让我们先来利用以前所学的知识来实现一个HTTP模拟器。
1085 0
|
移动开发 Java Windows
Java网络编程从入门到精通(22):实现HTTP模拟器
本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:Java网络编程从入门到精通(21):HTTP消息的格式 源代码和.class文件下载    在讨论HTTP协议的具体请求和响应头字段之前,让我们先来利用以前所学的知识来实现一个HTTP模拟器。
969 0
|
1月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
129 1
|
1月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
147 1
|
2月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
129 0
|
2月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
207 16