银行账户Java程序

银行账户Java程序,java,arrays,loops,menu,Java,Arrays,Loops,Menu,我正在为我的java类创建一个银行账户程序,该类最多可以管理5个不同的银行账户。该程序必须允许创建一个新帐户,我已经这样做了,允许存款和取款,也已经这样做了,我无法工作的两个部分是1:银行最多只能有5个帐户,因此如果试图创建第6个帐户,会出现一条消息说已经创建了5个,和2:其中一个选项必须打印出银行往来账户的所有账户余额 这是我目前的代码: import java.util.Scanner; public class Bankapp { public static void main(Stri

我正在为我的java类创建一个银行账户程序,该类最多可以管理5个不同的银行账户。该程序必须允许创建一个新帐户,我已经这样做了,允许存款和取款,也已经这样做了,我无法工作的两个部分是1:银行最多只能有5个帐户,因此如果试图创建第6个帐户,会出现一条消息说已经创建了5个,和2:其中一个选项必须打印出银行往来账户的所有账户余额

这是我目前的代码:

import java.util.Scanner;
public class Bankapp {

public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    Bank myBank = new Bank();

    int user_choice = 2;


    do {
        //display menu to user
        //ask user for his choice and validate it (make sure it is between 1 and 6)
        System.out.println();
        System.out.println("1) Open a new bank account");
        System.out.println("2) Deposit to a bank account");
        System.out.println("3) Withdraw to bank account");
        System.out.println("4) Print account balance");
        System.out.println("5) Quit");
        System.out.println();
        System.out.print("Enter choice [1-5]: ");
        user_choice = s.nextInt();
        switch (user_choice) {
            case 1: 
                System.out.println("Enter a customer name");
                    String cn = s.next();
                    System.out.println("Enter a opening balance");
                    double d = s.nextDouble();
                    System.out.println("Account was created and it has the following number: " + myBank.openNewAccount(cn, d));
                    break;
            case 2: System.out.println("Enter a account number");
                    int an = s.nextInt();
                    System.out.println("Enter a deposit amount");
                    double da = s.nextDouble();
                    myBank.depositTo(an, da);
                    break;
            case 3: System.out.println("Enter a account number");
                    int acn = s.nextInt();
                    System.out.println("Enter a withdraw amount");
                    double wa = s.nextDouble();
                    myBank.withdrawFrom(acn, wa);
                    break;
            case 4: System.out.println("Enter a account number");
                    int anum = s.nextInt();
                    myBank.printAccountInfo(anum);
                    break;
            case 5:
                    System.out.println("Here are the balances " + "for each account:");
            case 6:
                System.exit(0);
        }
}
while (user_choice != '6');
}

static class Bank {
private BankAccount[] accounts;     // all the bank accounts at this bank
private int numOfAccounts = 5;      // the number of bank accounts at this bank

// Constructor: A new Bank object initially doesn’t contain any accounts.
public Bank() {
    accounts = new BankAccount[5];
    numOfAccounts = 0;
    }

// Creates a new bank account using the customer name and the opening balance given as parameters
// and returns the account number of this new account. It also adds this account into the account list
// of the Bank calling object.
public int openNewAccount(String customerName, double openingBalance) {

    BankAccount b = new BankAccount(customerName, openingBalance);
    accounts[numOfAccounts] = b;
    numOfAccounts++;
    return b.getAccountNum();
}

// Withdraws the given amount from the account whose account number is given. If the account is
// not available at the bank, it should print a message.
public void withdrawFrom(int accountNum, double amount) {
    for (int i =0; i<numOfAccounts; i++) {
        if (accountNum == accounts[i].getAccountNum()  ) {
            accounts[i].withdraw(amount);
            System.out.println("Amount withdrawn successfully");
            return;
        }
    }
    System.out.println("Account number not found.");
    }

// Deposits the given amount to the account whose account number is given. If the account is not
// available at the bank, it should print a message.
public void depositTo(int accountNum, double amount) {
    for (int i =0; i<numOfAccounts; i++) {
        if (accountNum == accounts[i].getAccountNum()  ) {
            accounts[i].deposit(amount);
            System.out.println("Amount deposited successfully");
            return;
        }
    }
    System.out.println("Account number not found.");
}

// Prints the account number, the customer name and the balance of the bank account whose
// account number is given. If the account is not available at the bank, it should print a message.
public void printAccountInfo(int accountNum) {
    for (int i =0; i<numOfAccounts; i++) {
                if (accountNum == accounts[i].getAccountNum()  ) {
                    System.out.println(accounts[i].getAccountInfo());
                    return;
                }
            }
    System.out.println("Account number not found.");
}


public void printAccountInfo(int accountNum, int n) {
    for (int i =0; i<numOfAccounts; i++) {
                        if (accountNum == accounts[i].getAccountNum()  ) {
                            System.out.println(accounts[i].getAccountInfo());
                            return;
                        }
                    }
    System.out.println("Account number not found.");
    }

}





  static class BankAccount{

       private int accountNum;
       private String customerName;
       private double balance;
       private  static int noOfAccounts=0;

       public String getAccountInfo(){
           return "Account number: " + accountNum + "\nCustomer Name: " + customerName + "\nBalance:" + balance +"\n";
       }


       public BankAccount(String abc, double xyz){
         customerName = abc;
         balance = xyz;
         noOfAccounts ++;
         accountNum = noOfAccounts;
       }

    public int getAccountNum(){
        return accountNum;
    }
    public void deposit(double amount){

        if (amount<=0) {
            System.out.println("Amount to be deposited should be positive");
        } else {
            balance = balance + amount;

        }
    }
    public void withdraw(double amount)
    {
        if (amount<=0){
             System.out.println("Amount to be withdrawn should be positive");
         }
        else
        {
            if (balance < amount) {
                System.out.println("Insufficient balance");
            } else {
                balance = balance - amount;

            }
        }
    }

}//end of class
更新2:我添加了一个return语句,现在当它运行时,它将在5号之前开户,但对于5号之后的每个帐户,它只会再次表示帐号是5,而不是不开户

public int openNewAccount(String customerName, double openingBalance) {
    if(numOfAccounts > 5)
    {
        System.out.println("5 accounts already exist");
    }
    else
    {
    BankAccount b = new BankAccount(customerName, openingBalance);
    accounts[numOfAccounts] = b;
    numOfAccounts++;
    return b.getAccountNum();
    }
    return numOfAccounts;
}

这很简单。创建一个大小为5的列表,并在创建用户时将帐户添加到该列表中。在添加之前,只需检查列表大小是否1;在openNewBank账户方法中;在创建新银行账户并将计数增加1之前;检查帐户数量是否已经达到5或更高,如果是,请不要创建帐户,也不要增加计数


2:循环查看帐户变量的编号并打印。

我在其中添加了密码系统。漂亮的帐号。 代码:

import java.io.*;
导入java.util.Random;
印度公共级计算机银行{
公共静态int NewRandom(int最小值,int最大值){
Random rand=新的Random();
int randomNum=rand.nextInt((最大-最小)+1)+min;
返回随机数;
}
公共静态void main(字符串args[])引发IOException、InterruptedException{
InputStreamReader ir=新的InputStreamReader(System.in);
BufferedReader br=新的BufferedReader(ir);
银行myBank=新银行();
int Option=1,账号,账号密码,atempts=0,通过;
字符串名;
双平衡,货币;
System.out.println(“请稍候,系统正在启动…”);
while(选项!=5){
睡眠(4000);
System.out.println(“1)开立新的银行账户”);
睡眠(250);
系统输出打印(“2)存入银行账户”);
睡眠(250);
系统输出打印(“3)提取到银行账户”;
睡眠(250);
System.out.println(“4)打印详细的账户信息,包括上次交易”);
睡眠(250);
系统输出打印(“5)退出”);
System.out.println();
系统输出打印(“输入选项[1-5]:”;
Option=Integer.parseInt(br.readLine());
开关(选件){
案例1:System.out.println(“输入客户名称:”);
Name=br.readLine();
System.out.println(“输入期初余额:”);
Balance=Double.parseDouble(br.readLine());
睡眠(250);
System.out.println(“创建您的帐户…”);
睡眠(500);
int[]arrdestails=myBank.AddNewAccount(名称、余额);
System.out.println(“已创建帐户\n帐户号:“+arrdestails[0]+”\n您的密码:“+arrdestails[1]);
打破
案例2:System.out.println(“输入账号:”);
Account_Number=Integer.parseInt(br.readLine());
System.out.println(“输入帐户密码:”);
Account_Password=Integer.parseInt(br.readLine());
System.out.println(“输入存款金额:”);
Money=Double.parseDouble(br.readLine());
我的银行存款(账号、密码、钱);
打破
案例3:System.out.println(“输入账号:”);
Account_Number=Integer.parseInt(br.readLine());
System.out.println(“输入帐户密码:”);
Account_Password=Integer.parseInt(br.readLine());
System.out.println(“输入存款金额:”);
Money=Double.parseDouble(br.readLine());
我的银行。取款(账号、密码、钱);
打破
案例4:System.out.println(“输入账号:”);
Account_Number=Integer.parseInt(br.readLine());
System.out.println(“输入帐户密码:”);
Account_Password=Integer.parseInt(br.readLine());
myBank.交易(账号、账号密码);
打破
案例5:System.out.println(“请输入您的密码:”);
Pass=Integer.parseInt(br.readLine());
if(Pass==myBank.Password){
System.out.println(“系统关闭…”);
选项=5;
打破
} 
否则{
睡眠(250);
System.out.println(“您输入了错误的密码,请重试”);
选项=0;
}
默认值:System.out.println(“无效选项,请重试”);
}
}
}
静态类库{
私人int密码=2684;
私人银行账户[]账户;
私人账户;
公共银行(){
账户=新银行账户[100];
numOfAccounts=0;
}
public int[]AddNewAccount(字符串名称,双倍余额){
银行账户b=新银行账户(名称、余额);
账户[numOfAccounts]=b;
NUMOF++;
int Acc=b.getAccountNum()[0];
int Pass=b.getAccountNum()[1];
int[]详细信息={Acc,Pass};
退货详情;
}
公共vo
public int openNewAccount(String customerName, double openingBalance) {
    if(numOfAccounts > 5)
    {
        System.out.println("5 accounts already exist");
    }
    else
    {
    BankAccount b = new BankAccount(customerName, openingBalance);
    accounts[numOfAccounts] = b;
    numOfAccounts++;
    return b.getAccountNum();
    }
    return numOfAccounts;
}
import java.io.*;
import java.util.Random;
public class Computer_Bank_of_India {
public static int NewRandom(int min, int max) {
    Random rand = new Random();
    int randomNum = rand.nextInt((max - min) + 1) + min;
    return randomNum;
}
public static void main(String args[])throws IOException, InterruptedException {
    InputStreamReader ir = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(ir);
    Bank myBank = new Bank();
    int Option = 1, Account_Number, Account_Password, atempts = 0, Pass;
    String Name;
    double Balance, Money;
    System.out.println("Please wait, the system is starting...");
    while(Option !=5) {
        Thread.sleep(4000);
        System.out.println("1) Open a new bank account");
        Thread.sleep(250);
        System.out.println("2) Deposit to a bank account");
        Thread.sleep(250);
        System.out.println("3) Withdraw to bank account");
        Thread.sleep(250);
        System.out.println("4) Print the detailed account information including last transactions");
        Thread.sleep(250);
        System.out.println("5) Quit");       
        System.out.println();      
        System.out.print("                       Enter Option [1-5]: ");
        Option = Integer.parseInt(br.readLine());
        switch(Option) {
            case 1 : System.out.println("Enter a customer name :");
                     Name = br.readLine();
                     System.out.println("Enter a opening balance :");
                     Balance = Double.parseDouble(br.readLine());
                     Thread.sleep(250);
                     System.out.println("Creating your account....");
                     Thread.sleep(500);
                     int[] arrDetails= myBank.AddNewAccount(Name, Balance);                     
                     System.out.println("Account Has been created\n Account number: " + arrDetails[0]+"\nYour password : "+ arrDetails[1]);
                     break;
            case 2 : System.out.println("Enter a account number :");
                     Account_Number = Integer.parseInt(br.readLine());
                     System.out.println("Enter a account password :");
                     Account_Password = Integer.parseInt(br.readLine());
                     System.out.println("Enter a deposit amount :");
                     Money = Double.parseDouble(br.readLine());
                     myBank.Deposit(Account_Number, Account_Password, Money);
                     break;
            case 3 : System.out.println("Enter a account number :");
                     Account_Number = Integer.parseInt(br.readLine());
                     System.out.println("Enter a account password :");
                     Account_Password = Integer.parseInt(br.readLine());
                     System.out.println("Enter a deposit amount :");
                     Money = Double.parseDouble(br.readLine());
                     myBank.Withdraw(Account_Number, Account_Password, Money);
                     break;
            case 4 : System.out.println("Enter a account number :");
                     Account_Number = Integer.parseInt(br.readLine());
                     System.out.println("Enter a account password :");
                     Account_Password = Integer.parseInt(br.readLine());
                     myBank.Transactions(Account_Number, Account_Password);
                     break;
            case 5 : System.out.println("Please Enter your password :");
                     Pass = Integer.parseInt(br.readLine());
                     if(Pass == myBank.Password) {
                         System.out.println("                       System shutting down.....");
                         Option = 5;
                         break;
                     } 
                     else {
                         Thread.sleep(250);
                         System.out.println("You have enter a wrong password. Please try again");
                         Option = 0;
                     }
            default: System.out.println("Invalid option. Please try again.");
        }
    }
}
static class Bank {
    private int Password=2684;
    private BankAccount[] accounts;
    private int numOfAccounts;
    public Bank() {
        accounts = new BankAccount[100];
        numOfAccounts = 0;
    }
    public int [] AddNewAccount(String Name, Double Balance) {
        BankAccount b = new BankAccount(Name, Balance);
        accounts[numOfAccounts] = b;
        numOfAccounts++;
        int Acc = b.getAccountNum()[0];
        int Pass = b.getAccountNum()[1];
        int[]details = {Acc, Pass};
        return details;
    }
    public void Withdraw(int Account_Number, int pass, double Money) {
        for (int i =0; i<numOfAccounts; i++) {     
            int a = accounts[i].getAccountNum()[0];
            if (Account_Number == a) {
                int p = accounts[i].getAccountNum()[1];
                if( pass == p) {
                    accounts[i].withdraw(Money);
                    return;
                }
            }   
        }  
        System.out.println("                       You have entered a wrong Account number or Password.");
    }
    public void Deposit(int Account_Number, int pass, double Money) {  
        for (int i =0; i<numOfAccounts; i++) {     
            int a = accounts[i].getAccountNum()[0];
            if (Account_Number == a) {
                int p = accounts[i].getAccountNum()[1];
                if( pass == p) {
                    accounts[i].deposit(Money);
                    return;   
                }
            }   
        }  
        System.out.println("                       You have entered a wrong Account number or Password.");
    }
    public void Transactions(int Account_Number, int pass) {
        for(int i = 0;i<numOfAccounts; i++) {
            int a = accounts[i].getAccountNum()[0];
            if (Account_Number ==  a ) {
                int p = accounts[i].getAccountNum()[1];
                if( pass == p) {
                    System.out.println(accounts[i].getAccountInfo());
                    System.out.println("                        Last transaction: " + accounts[i].getTransactionInfo(accounts[i].getNumberOfTransactions()-1));
                    return;
                }
            }
        }
        System.out.println("                       You have entered a wrong Account number or Password.");
    }
}
static class BankAccount{
    private int User_Password;
    private int accountNum;
    private String customerName;
    private double balance;
    private double[] transactions;
    private String[] transactionsSummary;
    private int numOfTransactions;
    private  static int noOfAccounts=0;
    public String getAccountInfo(){          
        return "                        Account number: " + accountNum + "\n                        Customer Name: " + customerName + "\n                        Balance:" + balance +"\n";
    }
    public String getTransactionInfo(int n) {
        String transaction = transactionsSummary[n];
        return transaction;
        }
    public BankAccount(String abc, double xyz){        
        customerName = abc;        
        balance = xyz;        
        noOfAccounts ++;
        User_Password = NewRandom(1000, 9999);
        accountNum = NewRandom(800000000, 999999999);       
        transactions = new double[100];                         
        transactionsSummary = new String[100];               
        transactions[0] = balance;                      
        transactionsSummary[0] = "A balance of : Rs" + Double.toString(balance) + " was deposited.";       
        numOfTransactions = 1;             
    }
    public int [] getAccountNum(){
        int account = accountNum;
        int Pass = User_Password;
        int [] details = {account, Pass};
        return details;
    }
    public int getNumberOfTransactions() {           
        return numOfTransactions;          
    }         
    public void deposit(double amount){         
        if (amount<=0) {         
            System.out.println("Amount to be deposited should be positive");        
        } else {          
            balance = balance + amount;            
            transactions[numOfTransactions] = amount;            
            transactionsSummary[numOfTransactions] = "Rs." + Double.toString(amount) + " was deposited.";            
            numOfTransactions++;
            System.out.println("                       Amount deposited successfully");
        }         
    }
    public void withdraw(double amount) {                   
        if (amount<=0){                
            System.out.println("Amount to be withdrawn should be positive"); 
        } 
        else {  
            if (balance < amount) {  
                System.out.println("Insufficient balance");
            } else {  
                balance = balance - amount;
                transactions[numOfTransactions] = amount;
                transactionsSummary[numOfTransactions] = "Rs." + Double.toString(amount) + " was withdrawn.";
                numOfTransactions++;
                System.out.println("                       Amount Withdrawn successfully");
            }
        }
    }
}
}