【问题标题】:Bank Account Java Program银行账户 Java 程序
【发布时间】:2015-05-06 03:18:10
【问题描述】:

我正在为我的 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

程序运行良好,我只需要添加这两个选项,并不能让它们正常工作,我该怎么做呢?此外,如果尚未创建任何帐户,选项 3 和 4 将不起作用。提前致谢。

更新:这是我尝试过的,我不断收到此方法必须返回类型 int 错误。

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();
    }
}

更新 2:我添加了一个退货声明,现在当它运行时,它将开设最多 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;
}

【问题讨论】:

  • 那么您究竟在哪里坚持添加剩余的两个选项? StackOverflow 不会为您做作业:) 这是代码设计问题,还是技术建议?根据您目前所知道的,您认为应该怎么做?对我来说,例如,当您尝试开设新帐户并且超出限制时,它似乎会以某种方式触发错误。查看异常或考虑返回指示错误状态的内容。
  • 我不希望你这样做,我在第一部分尝试按照 if(numOfAccounts > 5) 然后没有创建帐户的方式做一些事情,但我不断收到错误,并且第 2 部分,我只是不知道该怎么做。
  • 好的,我明白了。编辑您的帖子并将“编辑:”或“更新:”以粗体显示,并在其下方显示您尝试过的内容以及遇到的错误。还请查看右侧的相关问题——其他人来这里寻求相同任务的帮助;)
  • openNewAccount 返回一个 Int 必需的,所以如果你不能创建一个银行账户,它仍然必须返回一些 int 形式的东西;我不确定为什么它甚至需要在这里返回一个 int ;这个函数应该是无效的;返回 b.getAccountNUm() 没用..

标签: java arrays loops menu


【解决方案1】:

它非常简单。创建一个大小为 5 的列表,并在创建用户时将帐户添加到该列表中。添加前检查列表大小是否

对于选项 2,只需遍历列表并显示结果

【讨论】:

    【解决方案2】:

    1;在 openNewBank 账户方法中;在创建新的银行帐户并将计数增加 1 之前;检查账户数是否已经在5或更高,如果是不创建账户,不要增加计数。

    2:循环遍历账户变量的个数并打印。

    【讨论】:

    • 该代码是什么样的,我尝试了几种不同的方法,但似乎都不起作用
    【解决方案3】:

    我添加了密码系统。和漂亮的帐户号码。 代码:

    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");
                }
            }
        }
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-11-21
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      相关资源
      最近更新 更多