Java 中的迷你银行应用程序

javaobject oriented programmingprogramming更新于 2024/11/8 16:44:17

用 Java 构建迷你银行应用程序是学习面向对象编程、数据结构和控制结构的好方法。它有助于理解构建可扩展且安全的应用程序的关键因素。

本报告将讨论提供基本服务的基本银行应用程序,例如创建银行账户、从银行账户存入或提取货币;在账户之间转移资金;以及检查账户报表。由于 Java 是服务器端应用程序设计和开发过程中备受追捧的选择,因此我们的团队一直在使用它。

我们的编码工作将依赖于标准 Java 开发工具包 (JDK),该工具包具有关键库和工具来支持我们的开发目标 - 创建、测试和部署出色的 Java 应用程序。

用 Java 实现迷你银行应用程序

迷你银行应用程序需要各种算法和功能协同工作以形成有效的解决方案。让我们来看看这些算法 -

  • 面向对象编程 (OOP) - 当使用 OOP 作为编程范式时,它需要通过代码内的对象来表示物理实体及其交互。OOP 背后的核心原则包括抽象、封装、继承和多态性。考虑到我们的小型银行应用程序,我们看到 BankAccount 类体现了个人帐户,而与更广泛的金融操作有关的所有业务逻辑都集中在 BankingApplication 中。

  • 列表 - Java 中的 List 接口提供了一种存储和操作对象集合的方法。在迷你银行应用程序中,List 对象用于存储所有银行账户。

  • 控制结构 − 整个应用程序都使用 if 和 else 语句等控制结构来实现逻辑和流程控制。

  • 用户输入 − Java 的扫描仪类使开发人员能够通过控制台接受用户输入。接收到的数据在执行诸如生成新银行账户或完成涉及跨不同账户存款/取款的各种交易,同时根据需要检查其各自余额等任务中起着不可或缺的作用。

  • 异常处理 - 对于程序执行期间可能出现的异常,例如银行交易中的错误(如无效帐号或试图提取超过可用金额),Java 采用 try -catch -finally 块系统。

  • 对象方法 - BankAccount 类包含各种方法,例如 deposit()、withdraw()、transfer() 和 getBalance(),用于对单个银行账户执行操作。

算法

让我们看看我们将遵循的基本步骤

  • 打开任何 Java 代码编辑器

  • 定义您的类及其功能并实现相同

  • 使用 if 和 while 循环定义不同的结果和情况

  • 调试代码

Java 迷你银行应用程序的代码库

让我们看一下创建迷你银行应用程序的代码。

示例

import java.util.Scanner;
public class BankingApplication { 
   public static void main(String[] args) { 
      BankAccount bankAccount = new BankAccount(); 
      int choice; 
      do { 
         System.out.println("1. Create Account"); 
         System.out.println("2. Deposit"); 
         System.out.println("3. Withdraw"); 
         System.out.println("4. Transfer"); 
         System.out.println("5. Check Balance"); 
         System.out.println("0. Exit"); 
         System.out.println("Enter your choice:"); 
         Scanner scanner = new Scanner(System.in); 
         choice = scanner.nextInt(); 

         switch (choice) { 
            case 1: 
               System.out.println("Enter account number:"); 
               int accountNumber = scanner.nextInt(); 
               System.out.println("Enter account holder name:"); 
               String accountHolderName = scanner.next(); 
               bankAccount.createAccount(accountNumber, accountHolderName); 
               break; 

            case 2: 
               System.out.println("Enter account number:"); 
               accountNumber = scanner.nextInt(); 
               System.out.println("Enter deposit amount:"); 
               double depositAmount = scanner.nextDouble(); 
               bankAccount.deposit(accountNumber, depositAmount); 
               break; 

            case 3: 
               System.out.println("Enter account number:"); 
               accountNumber = scanner.nextInt(); 
               System.out.println("Enter withdraw amount:"); 
               double withdrawAmount = scanner.nextDouble(); 
               bankAccount.withdraw(accountNumber, withdrawAmount); 
               break; 

            case 4: 
               System.out.println("Enter source account number:"); 
               int sourceAccountNumber = scanner.nextInt(); 
               System.out.println("Enter destination account number:"); 
               int destinationAccountNumber = scanner.nextInt(); 
               System.out.println("Enter transfer amount:"); 
               double transferAmount = scanner.nextDouble(); 
               bankAccount.transfer(sourceAccountNumber, destinationAccountNumber, transferAmount); 
               break; 
            case 5: 
               System.out.println("Enter account number:"); 
               accountNumber = scanner.nextInt(); 
               System.out.println("Balance: " + bankAccount.getBalance(accountNumber)); 
               break; 

            case 0: 
               System.out.println("Exiting..."); 
               break; 
               
            default: 
               System.out.println("Invalid choice"); 
               break; 

          } 
      } while (choice != 0); 

   } 

} 

class BankAccount { 

   private int accountNumber; 
   private String accountHolderName; 
   private double balance; 

   public void createAccount(int accountNumber, String accountHolderName) { 
      this.accountNumber = accountNumber; 
      this.accountHolderName = accountHolderName; 
      this.balance = 0.0; 
      System.out.println("Account created successfully!"); 
   } 
   public void deposit(int accountNumber, double depositAmount) { 
      if (this.accountNumber == accountNumber) { 
         this.balance += depositAmount; 
         System.out.println("Deposit successful!"); 
      } else { 
         System.out.println("Invalid account number!"); 
      } 
   } 
   public void withdraw(int accountNumber, double withdrawAmount) { 
      if (this.accountNumber == accountNumber) { 
         if (this.balance >= withdrawAmount) { 
            this.balance -= withdrawAmount; 
            System.out.println("Withdrawal successful!"); 
         } else { 
            System.out.println("Insufficient balance!"); 
         } 
      } else { 
         System.out.println("Invalid account number!"); 
      } 
   } 
   public void transfer(int sourceAccountNumber, int destinationAccountNumber, double transferAmount) { 
      if (this.accountNumber == sourceAccountNumber) { 
         if (this.balance >= transferAmount) { 
            this.balance -= transferAmount; 
            System.out.println("Transfer from " + sourceAccountNumber + "to " + destinationAccountNumber + " successful!"); 
            BankAccount destinationAccount = findAccount(destinationAccountNumber); 
            
            if (destinationAccount != null) { 
               destinationAccount.balance += transferAmount; 
            } 
         } else { 
            System.out.println("Insufficient balance!"); 
         } 
      } else { 
         System.out.println("Invalid account number!");
      } 
   } 
   public double getBalance(int accountNumber) { 
      if (this.accountNumber == accountNumber) { 
         return this.balance; 
      } else { 
         System.out.println("Invalid account number!"); 
         return 0.0; 
      } 
   } 
   // helper method to find account by account number 

   private BankAccount findAccount(int accountNumber) { 
      // in a real application, this method would typically search a database 
      // or other data store to find the account with the given account number 
      // for simplicity in this example, we just assume that we only have a few 
      // accounts and they are stored in an array 
      BankAccount[] accounts = {this}; 
      for (BankAccount account : accounts) { 
         if (account.accountNumber == accountNumber) { 
            return account; 
         } 
      } 
      return null; 
   } 
}

Output

1. Create Account2. Deposit
3. Withdraw
4. Transfer
5. Check Balance
0. Exit

Enter your choice:

该代码是 Java 中迷你银行应用程序的基本终端实现。它定义了两个类 - BankAccount 和 BankingApplication。

BankAccount 类代表金融账户,它包含隐藏的成员变量,包括账号和余额。此外,公共方法可用于启用存款、取款、转账和查询账户余额等操作。

BankingApplication 类使用 List 对象来保留所有银行账户,并授予对账户创建、存款和取款处理、账户间资金转账和余额查询等功能的访问权限。

结论

通过开发一个可以有效管理银行账户的迷你银行应用程序,展示了 Java 编程的基本原则。通过设计一个依赖于数据建模和面向交易的程序的框架,可以轻松实现常规银行功能,包括取款、存款、通过各种账户轻松转账以及保持准确的账户余额。给定的代码说明了更复杂的应用程序可以从哪里开始,同时仍然可以进一步定制其他功能。

总体而言,迷你银行应用程序代码凸显了 Java 编程在构建实用且有用的软件应用程序方面的强大功能和灵活性。


相关文章


有用资源