From 3cc26c8c3bf167f06b1c4b688640d2d17f299354 Mon Sep 17 00:00:00 2001 From: James Crawley Date: Sat, 17 Sep 2016 22:10:26 -0400 Subject: [PATCH 1/2] Finished basic logic of ATM functions. --- .idea/compiler.xml | 32 + .idea/copyright/profiles_settings.xml | 3 + .idea/libraries/Maven__junit_junit_4_12.xml | 13 + .../Maven__org_hamcrest_hamcrest_core_1_3.xml | 13 + .idea/misc.xml | 75 ++ .idea/modules.xml | 8 + .idea/workspace.xml | 1120 +++++++++++++++++ pom.xml | 33 + project-2-atm.iml | 17 + .../java/crawley/james/project2atm/ATM.java | 170 +++ .../crawley/james/project2atm/Account.java | 80 ++ .../james/project2atm/AccountManager.java | 42 + .../crawley/james/project2atm/Customer.java | 50 + .../james/project2atm/CustomerManager.java | 28 + .../crawley/james/project2atm/Display.java | 40 + .../james/project2atm/Transaction.java | 63 + .../james/project2atm/TransactionManager.java | 76 ++ .../james/project2atm/UserInputHandler.java | 32 + .../project2atm/UserInputHandlerDummy.java | 43 + .../james/project2atm/project2atm.java | 13 + .../crawley/james/project2atm/ATMTest.java | 127 ++ .../james/project2atm/AccountManagerTest.java | 36 + .../james/project2atm/AccountTest.java | 48 + .../project2atm/CustomerManagerTest.java | 18 + .../james/project2atm/CustomerTest.java | 41 + .../project2atm/TransactionManagerTest.java | 31 + .../james/project2atm/TransactionTest.java | 47 + .../crawley/james/project2atm/ATM.class | Bin 0 -> 4835 bytes .../crawley/james/project2atm/Account$1.class | Bin 0 -> 850 bytes .../project2atm/Account$AccountType.class | Bin 0 -> 1219 bytes .../crawley/james/project2atm/Account.class | Bin 0 -> 2007 bytes .../james/project2atm/AccountManager.class | Bin 0 -> 1698 bytes .../crawley/james/project2atm/Customer.class | Bin 0 -> 1031 bytes .../james/project2atm/CustomerManager.class | Bin 0 -> 1234 bytes .../crawley/james/project2atm/Display.class | Bin 0 -> 1243 bytes .../Transaction$TransactionType.class | Bin 0 -> 1279 bytes .../james/project2atm/Transaction.class | Bin 0 -> 1510 bytes .../project2atm/TransactionManager.class | Bin 0 -> 3436 bytes .../james/project2atm/UserInputHandler.class | Bin 0 -> 990 bytes .../project2atm/UserInputHandlerDummy.class | Bin 0 -> 977 bytes .../james/project2atm/project2atm.class | Bin 0 -> 559 bytes .../crawley/james/project2atm/ATMTest.class | Bin 0 -> 4366 bytes .../project2atm/AccountManagerTest.class | Bin 0 -> 1378 bytes .../james/project2atm/AccountTest.class | Bin 0 -> 1854 bytes .../project2atm/CustomerManagerTest.class | Bin 0 -> 915 bytes .../james/project2atm/CustomerTest.class | Bin 0 -> 1346 bytes .../project2atm/TransactionManagerTest.class | Bin 0 -> 1574 bytes .../james/project2atm/TransactionTest.class | Bin 0 -> 1914 bytes 48 files changed, 2299 insertions(+) create mode 100644 .idea/compiler.xml create mode 100644 .idea/copyright/profiles_settings.xml create mode 100644 .idea/libraries/Maven__junit_junit_4_12.xml create mode 100644 .idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/workspace.xml create mode 100644 pom.xml create mode 100644 project-2-atm.iml create mode 100644 src/main/java/crawley/james/project2atm/ATM.java create mode 100644 src/main/java/crawley/james/project2atm/Account.java create mode 100644 src/main/java/crawley/james/project2atm/AccountManager.java create mode 100644 src/main/java/crawley/james/project2atm/Customer.java create mode 100644 src/main/java/crawley/james/project2atm/CustomerManager.java create mode 100644 src/main/java/crawley/james/project2atm/Display.java create mode 100644 src/main/java/crawley/james/project2atm/Transaction.java create mode 100644 src/main/java/crawley/james/project2atm/TransactionManager.java create mode 100644 src/main/java/crawley/james/project2atm/UserInputHandler.java create mode 100644 src/main/java/crawley/james/project2atm/UserInputHandlerDummy.java create mode 100644 src/main/java/crawley/james/project2atm/project2atm.java create mode 100644 src/test/java/crawley/james/project2atm/ATMTest.java create mode 100644 src/test/java/crawley/james/project2atm/AccountManagerTest.java create mode 100644 src/test/java/crawley/james/project2atm/AccountTest.java create mode 100644 src/test/java/crawley/james/project2atm/CustomerManagerTest.java create mode 100644 src/test/java/crawley/james/project2atm/CustomerTest.java create mode 100644 src/test/java/crawley/james/project2atm/TransactionManagerTest.java create mode 100644 src/test/java/crawley/james/project2atm/TransactionTest.java create mode 100644 target/classes/crawley/james/project2atm/ATM.class create mode 100644 target/classes/crawley/james/project2atm/Account$1.class create mode 100644 target/classes/crawley/james/project2atm/Account$AccountType.class create mode 100644 target/classes/crawley/james/project2atm/Account.class create mode 100644 target/classes/crawley/james/project2atm/AccountManager.class create mode 100644 target/classes/crawley/james/project2atm/Customer.class create mode 100644 target/classes/crawley/james/project2atm/CustomerManager.class create mode 100644 target/classes/crawley/james/project2atm/Display.class create mode 100644 target/classes/crawley/james/project2atm/Transaction$TransactionType.class create mode 100644 target/classes/crawley/james/project2atm/Transaction.class create mode 100644 target/classes/crawley/james/project2atm/TransactionManager.class create mode 100644 target/classes/crawley/james/project2atm/UserInputHandler.class create mode 100644 target/classes/crawley/james/project2atm/UserInputHandlerDummy.class create mode 100644 target/classes/crawley/james/project2atm/project2atm.class create mode 100644 target/test-classes/crawley/james/project2atm/ATMTest.class create mode 100644 target/test-classes/crawley/james/project2atm/AccountManagerTest.class create mode 100644 target/test-classes/crawley/james/project2atm/AccountTest.class create mode 100644 target/test-classes/crawley/james/project2atm/CustomerManagerTest.class create mode 100644 target/test-classes/crawley/james/project2atm/CustomerTest.class create mode 100644 target/test-classes/crawley/james/project2atm/TransactionManagerTest.class create mode 100644 target/test-classes/crawley/james/project2atm/TransactionTest.class diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..51933c0 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml new file mode 100644 index 0000000..d411041 --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml new file mode 100644 index 0000000..f58bbc1 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..7aa1668 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.8 + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..1b71739 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..bdcc53d --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,1120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1474072078341 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..572780f --- /dev/null +++ b/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + + crawley.james + project-2-atm + 1.0-SNAPSHOT + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + + + + junit + junit + RELEASE + test + + + + \ No newline at end of file diff --git a/project-2-atm.iml b/project-2-atm.iml new file mode 100644 index 0000000..6ad1e66 --- /dev/null +++ b/project-2-atm.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/crawley/james/project2atm/ATM.java b/src/main/java/crawley/james/project2atm/ATM.java new file mode 100644 index 0000000..122deab --- /dev/null +++ b/src/main/java/crawley/james/project2atm/ATM.java @@ -0,0 +1,170 @@ +package crawley.james.project2atm; + +/** + * Created by jamescrawley on 9/16/16. + */ +public class ATM { + +// private Transaction transaction; +// private Customer customer; +// private Account account; + private UserInputHandler userInputHandler = new UserInputHandler(); + private Display display = new Display(); + private int currentUser; + private boolean running = true; + private AccountManager accountManager = new AccountManager(); + private TransactionManager transactionManager = new TransactionManager(); + private CustomerManager customerManager = new CustomerManager(); + + public void accountTypeOptions () { + switch (userInputHandler.getUserInt()) { + + case 1: break; + case 2: break; + case 3: break; + } + + } + + public void createAccount (Account.AccountType accountType, int customerID, double amount) { + + accountManager.addAccount(accountType, amount, customerID); + + } + + public void createCustomer (String name, int pin) { + + customerManager.addCustomer(name, pin); + } + + public void closeAccount (int accountNumber, int customerID) { + + if (isAccountBalanceZero(accountNumber, customerID)) { + accountManager.deleteAccount(accountNumber, customerID); + } + + } + + public void accessCustomerAccount () { + + } + + public void accessServices () { + + } + + public boolean isAccountBalanceZero (int accountNumber, int customerID) { + + if (accountManager.getAccount(accountNumber, customerID).getBalance() == 0) { + return true; + } else { + return false; + } + } + + + public void exitProgram () { + + } + + public void logIN () { + + } + + public void logOUT () { + + } + + public boolean verifyLoginInfo (int customerID, int pin) { + + if (customerManager.getCustomer(customerID).getPin() == pin) { + + return true; + + } else { + + return false; + } + + } + + public void withdrawals (int accountNumber, double amount) { + + setUserBalance(getUserBalance(accountNumber) - amount, accountNumber); + transactionManager.addTransaction(Transaction.TransactionType.WITHDRAWAL, currentUser, accountNumber, amount); + + } + + public void deposit (int accountNumber, double amount) { + + setUserBalance(getUserBalance(accountNumber) + amount, accountNumber); + transactionManager.addTransaction(Transaction.TransactionType.DEPOSIT, currentUser, accountNumber, amount); + + } + + public void transfer (int fromAccountNumber, int toAccountNumber, double amount) { + + withdrawals(fromAccountNumber, amount); + deposit(toAccountNumber, amount); + } + + public void transactions () { + + transactionManager.printTransactions(currentUser); + + } + + public AccountManager getAccountManager () { + + return accountManager; + } + + public CustomerManager getCustomerManager () { + + return customerManager; + + } + + public TransactionManager getTransactionManager () { + + return transactionManager; + + } + + public void setCurrentUser (int currentUser) { + + this.currentUser = currentUser; + } + + public void startATM () { + + while (running) { + + display.printWelcomeScreen(); + + switch (userInputHandler.getUserInt()) { + + case 1: + break; + case 2: + break; + case 3: + running = false; + break; + } + } + + } + + private double getUserBalance (int accountNumber) { + + return accountManager.getAccount(accountNumber, currentUser).getBalance(); + + } + + private void setUserBalance (double amount, int accountNumber) { + accountManager.getAccount(accountNumber, currentUser).setBalance(amount); + } + + +} diff --git a/src/main/java/crawley/james/project2atm/Account.java b/src/main/java/crawley/james/project2atm/Account.java new file mode 100644 index 0000000..359f7cd --- /dev/null +++ b/src/main/java/crawley/james/project2atm/Account.java @@ -0,0 +1,80 @@ +package crawley.james.project2atm; + +/** + * Created by jamescrawley on 9/16/16. + */ +public class Account { + + public enum AccountType {SAVINGS, CHECKING, INVESTMENT;} + + private AccountType accountType; + private double balance; + private int accountNumber; + private int customerID; + private double interestRate; + private static int accountNumCounter = 1; + + public Account(AccountType accountType, double balance, int customerID) { + + this.accountType = accountType; + this.balance = balance; + this.customerID = customerID; + accountNumber = accountNumCounter++; + setInterestRate(accountType); + + + } + + + public AccountType getAccountType() { + + return accountType; + + } + + public int getAccountNumber() { + + return accountNumber; + + } + + public void setInterestRate(AccountType accountType) { + + switch (accountType) { + + case SAVINGS: + interestRate = 0.05; + break; + case CHECKING: + interestRate = 0.02; + break; + case INVESTMENT: + interestRate = 0.07; + break; + default: + System.out.println("Not a valid account type"); + } + } + + public double getInterestRate() { + + return interestRate; + + } + + public void setBalance(double balance) { + + this.balance = balance; + } + + public double getBalance() { + + return balance; + } + + public int getCustomerID() { + + return customerID; + } + +} diff --git a/src/main/java/crawley/james/project2atm/AccountManager.java b/src/main/java/crawley/james/project2atm/AccountManager.java new file mode 100644 index 0000000..64283f8 --- /dev/null +++ b/src/main/java/crawley/james/project2atm/AccountManager.java @@ -0,0 +1,42 @@ +package crawley.james.project2atm; + +import java.util.ArrayList; + +/** + * Created by jamescrawley on 9/16/16. + */ +public class AccountManager { + + private ArrayList accounts = new ArrayList<>(); + + public void addAccount (Account.AccountType accountType, double amount, int customerID) { + + accounts.add(new Account(accountType, amount, customerID)); + + } + + public void deleteAccount (int accountID, int customerID) { + + for (Account matchingAccount: accounts) { + if (matchingAccount.getAccountNumber() == accountID && matchingAccount.getCustomerID() == customerID) { + accounts.remove(matchingAccount); + break; + } + + } + } + + public Account getAccount (int accountID, int customerID) { + + for (Account matchingAccount: accounts) { + if (matchingAccount.getAccountNumber() == accountID && matchingAccount.getCustomerID() == customerID) { + return matchingAccount; + } + + } + + return null; + + } + +} diff --git a/src/main/java/crawley/james/project2atm/Customer.java b/src/main/java/crawley/james/project2atm/Customer.java new file mode 100644 index 0000000..3b6f65e --- /dev/null +++ b/src/main/java/crawley/james/project2atm/Customer.java @@ -0,0 +1,50 @@ +package crawley.james.project2atm; + +/** + * Created by jamescrawley on 9/16/16. + */ +public class Customer { + + private int customerID; + private static int customerIDCounter = 0; + private String name; + private int pin; + + Customer (String name, int pin) { + + this.name = name; + this.pin = pin; + customerID = ++customerIDCounter; + + } + + public void setName (String name) { + + this.name = name; + + } + + public String getName () { + + return name; + + } + + public void setPin (int pin) { + + this.pin = pin; + + } + + public int getPin () { + + return pin; + + } + + public int getCustomerID () { + + return customerID; + } + +} diff --git a/src/main/java/crawley/james/project2atm/CustomerManager.java b/src/main/java/crawley/james/project2atm/CustomerManager.java new file mode 100644 index 0000000..0e5e65e --- /dev/null +++ b/src/main/java/crawley/james/project2atm/CustomerManager.java @@ -0,0 +1,28 @@ +package crawley.james.project2atm; + +import java.util.ArrayList; + +/** + * Created by jamescrawley on 9/16/16. + */ +public class CustomerManager { + + private ArrayList customers = new ArrayList<>(); + + public void addCustomer (String name, int pin) { + + customers.add(new Customer (name, pin)); + + } + + public Customer getCustomer (int customerID) { + + for (Customer matchingCustomer: customers) { + if (matchingCustomer.getCustomerID() == customerID) { + return matchingCustomer; + } + + } + return null; + } +} diff --git a/src/main/java/crawley/james/project2atm/Display.java b/src/main/java/crawley/james/project2atm/Display.java new file mode 100644 index 0000000..59d6e5e --- /dev/null +++ b/src/main/java/crawley/james/project2atm/Display.java @@ -0,0 +1,40 @@ +package crawley.james.project2atm; + +/** + * Created by jamescrawley on 9/16/16. + */ +public class Display { + + public void printWelcomeScreen () { + + System.out.println("Welcome!\nPress 1 for for new customer." + + "\nPress 2 for returning customer.\nPress 3 to Exit."); + + } + + public void printNewCustomerMenu () { + + System.out.println("Enter name: "); + System.out.println("Enter PIN: "); + + } + + public void printLogin () { + + System.out.println("Enter ID: "); + System.out.println("Enter PIN: "); + + } + + public void printReturningCustomerMenu () { + + System.out.println("Press 1 to open a new account.\n Press 2 to perform a transaction on an existing account."); + + } + + public void printTransactionMenu () { + + System.out.println("Press 1 to deposit.\nPress 2 to withdrawal.\nPress 3 to transfer.\nPress 4 to Close an account."); + + } +} diff --git a/src/main/java/crawley/james/project2atm/Transaction.java b/src/main/java/crawley/james/project2atm/Transaction.java new file mode 100644 index 0000000..c3939d6 --- /dev/null +++ b/src/main/java/crawley/james/project2atm/Transaction.java @@ -0,0 +1,63 @@ +package crawley.james.project2atm; + +/** + * Created by jamescrawley on 9/16/16. + */ +public class Transaction { + + public enum TransactionType {WITHDRAWAL, DEPOSIT, TRANSFER;} + + private TransactionType transactionType; + private double amount; + private int customerID; + private int fromAccountNumber; + private int toAccountNumber; + + public Transaction (TransactionType transactionType, int customerID, int accountNumber, double amount) { + + this.transactionType = transactionType; + this.customerID = customerID; + fromAccountNumber = accountNumber; + this.amount = amount; + + } + + public Transaction (TransactionType transactionType, int customerID, int fromAccountNumber, int toAccountNumber, double amount) { + + this.transactionType = transactionType; + this.customerID = customerID; + this.fromAccountNumber = fromAccountNumber; + this.toAccountNumber = toAccountNumber; + this.amount = amount; + + + } + + public int getFromAccountNumber () { + + return fromAccountNumber; + } + + public int getToAccountNumber () { + + return toAccountNumber; + } + + public double getAmount () { + + return amount; + } + + public TransactionType getTransactionType () { + + return transactionType; + } + + public int getCustomerID () { + + return customerID; + + } + + +} diff --git a/src/main/java/crawley/james/project2atm/TransactionManager.java b/src/main/java/crawley/james/project2atm/TransactionManager.java new file mode 100644 index 0000000..2734af0 --- /dev/null +++ b/src/main/java/crawley/james/project2atm/TransactionManager.java @@ -0,0 +1,76 @@ +package crawley.james.project2atm; + +import java.util.ArrayList; + +/** + * Created by jamescrawley on 9/16/16. + */ +public class TransactionManager { + + private ArrayList transactions = new ArrayList<>(); + + public void addTransaction (Transaction.TransactionType transactionType, int customerID, int accountNumber, double amount) { + + transactions.add(0, new Transaction(transactionType, customerID, accountNumber, amount)); + + } + + public void addTransaction (int customerID, int fromAccountNumber, int toAccountNumber, double amount) { + + transactions.add(0, new Transaction(Transaction.TransactionType.TRANSFER, customerID, fromAccountNumber, toAccountNumber, amount)); + + } + + public void printTransactions (int customerID) { + + System.out.println(getTransactions(customerID)); + + } + + public String getTransactions (int customerID) { + + String transactionList = ""; + for (Transaction transaction : transactions) { + if (transaction.getCustomerID() == customerID) { + transactionList += getProperTransactionList(transaction); + } + } + + return transactionList; + + } + + private boolean isTransfer (Transaction transaction) { + + return transaction.getTransactionType().equals(Transaction.TransactionType.TRANSFER); + + } + + private String transferToString (Transaction transaction) { + + return "Customer: " + transaction.getCustomerID() + ", From Account: " + + transaction.getFromAccountNumber() + ", To Account: " + + transaction.getToAccountNumber() + ", " + + transaction.getTransactionType() + ": $" + transaction.getAmount() + "\n"; + + } + + private String depositOrWithdrawalToString (Transaction transaction) { + + return "Customer: " + transaction.getCustomerID() + ", Account: " + + transaction.getFromAccountNumber() + ", " + transaction.getTransactionType() + + ": $" + transaction.getAmount() + "\n"; + + } + + private String getProperTransactionList (Transaction transaction) { + + if (isTransfer(transaction)) { + return transferToString(transaction); + } else { + return depositOrWithdrawalToString(transaction); + } + + } + +} diff --git a/src/main/java/crawley/james/project2atm/UserInputHandler.java b/src/main/java/crawley/james/project2atm/UserInputHandler.java new file mode 100644 index 0000000..d1c41ff --- /dev/null +++ b/src/main/java/crawley/james/project2atm/UserInputHandler.java @@ -0,0 +1,32 @@ +package crawley.james.project2atm; + +import java.util.Scanner; + +/** + * Created by jamescrawley on 9/16/16. + */ +public class UserInputHandler { + + private Scanner scanner = new Scanner(System.in); + + public int getUserInt () { + + return scanner.nextInt(); + + } + + public double getUserDouble () { + + System.out.println("Enter an amount: "); + return scanner.nextDouble(); + + } + + public String getUserString() { + + return scanner.next(); + + } +} + + diff --git a/src/main/java/crawley/james/project2atm/UserInputHandlerDummy.java b/src/main/java/crawley/james/project2atm/UserInputHandlerDummy.java new file mode 100644 index 0000000..f788673 --- /dev/null +++ b/src/main/java/crawley/james/project2atm/UserInputHandlerDummy.java @@ -0,0 +1,43 @@ +package crawley.james.project2atm; + +/** + * Created by jamescrawley on 9/16/16. + */ +public class UserInputHandlerDummy extends UserInputHandler { + + private int[] userInts; + private double[] userDoubles; + private String[] userStrings; + private int intIndex; + private int doubleIndex; + private int stringIndex; + + public UserInputHandlerDummy (int[] userInts, double[] userDoubles, String[] userStrings) { + + this.userInts = userInts; + this.userDoubles = userDoubles; + this.userStrings = userStrings; + + } + + @Override + public int getUserInt () { + + return userInts[++intIndex]; + + } + + @Override + public double getUserDouble () { + + return userDoubles[++doubleIndex]; + + } + + @Override + public String getUserString() { + + return userStrings[++stringIndex]; + + } +} diff --git a/src/main/java/crawley/james/project2atm/project2atm.java b/src/main/java/crawley/james/project2atm/project2atm.java new file mode 100644 index 0000000..e35f3ec --- /dev/null +++ b/src/main/java/crawley/james/project2atm/project2atm.java @@ -0,0 +1,13 @@ +package crawley.james.project2atm; + +/** + * Created by jamescrawley on 9/17/16. + */ +public class project2atm { + + public static void main (String[] args) { + + ATM atm = new ATM(); + atm.startATM(); + } +} diff --git a/src/test/java/crawley/james/project2atm/ATMTest.java b/src/test/java/crawley/james/project2atm/ATMTest.java new file mode 100644 index 0000000..46602d0 --- /dev/null +++ b/src/test/java/crawley/james/project2atm/ATMTest.java @@ -0,0 +1,127 @@ +package crawley.james.project2atm; + +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +import static org.junit.Assert.*; + +/** + * Created by jamescrawley on 9/16/16. + */ + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class ATMTest { + + @Test + public void createAccountTest () { + ATM atm = new ATM(); + atm.createAccount(Account.AccountType.SAVINGS, 1, 100); + + assertNotNull("An account should be created.", atm.getAccountManager().getAccount(1, 1)); + } + + @Test + public void createCustomerTest () { + ATM atm = new ATM(); + atm.createCustomer("William Williams", 1234); + + assertNotNull("A customer should have been created.", atm.getCustomerManager().getCustomer(1)); + } + + @Test + public void closeAccountWithNoBalanceTest () { + ATM atm = new ATM(); + atm.createAccount(Account.AccountType.SAVINGS, 1, 0); + atm.closeAccount(1, 1); + + assertNull("The account should have been closed.", atm.getAccountManager().getAccount(1, 1)); + + } + + @Test + public void closeAccountWithBalanceTest () { + ATM atm = new ATM(); + atm.createAccount(Account.AccountType.SAVINGS, 1, 100); + atm.closeAccount(1, 1); + + assertNotNull("The account should not have been closed.", atm.getAccountManager().getAccount(1, 1)); + + } + + @Test + public void verifyCorrectLoginTest () { + + ATM atm = new ATM(); + atm.createCustomer("William Williams", 1234); + + assert(atm.verifyLoginInfo(1, 1234)); + + } + + @Test + public void verifyIncorrectLoginTest () { + + ATM atm = new ATM(); + atm.createCustomer("William Williams", 1234); + + assert(!atm.verifyLoginInfo(1, 1235)); + + } + + @Test + public void depositTest () { + + ATM atm = new ATM(); + atm.createAccount(Account.AccountType.SAVINGS, 1, 100); + atm.setCurrentUser(1); + atm.deposit(1, 50); + + assertEquals("The balance should be $150", 150, atm.getAccountManager().getAccount(1, 1).getBalance(), 0); + + } + + @Test + public void withdrawalTest () { + + ATM atm = new ATM(); + atm.createAccount(Account.AccountType.SAVINGS, 1, 100); + atm.setCurrentUser(1); + atm.withdrawals(1, 50); + + assertEquals("The balance should be $50", 50, atm.getAccountManager().getAccount(1, 1).getBalance(), 0); + + } + + @Test + public void transferTest () { + + ATM atm = new ATM(); + atm.createAccount(Account.AccountType.SAVINGS, 1, 100); + atm.createAccount(Account.AccountType.SAVINGS, 1, 100); + atm.setCurrentUser(1); + atm.transfer(1, 2, 50); + + assertEquals("The balance should be $50", 50, atm.getAccountManager().getAccount(1, 1).getBalance(), 0); + + } + + @Test + public void transactionTest () { + + ATM atm = new ATM(); + atm.createCustomer("William Williams", 1234); + atm.createAccount(Account.AccountType.SAVINGS, 1, 100); + atm.setCurrentUser(1); + atm.withdrawals(1, 50); + atm.deposit(1, 20); + + String expected = "Customer: 1, Account: 1, DEPOSIT: $20.0\n" + + "Customer: 1, Account: 1, WITHDRAWAL: $50.0\n"; + + assertEquals("Customer 1 should have recent transactions on Account 1 " + + "for depositing $20 and withdrawaling $50 in order of most recent to " + + "least recent.", expected, atm.getTransactionManager().getTransactions(1)); + + } +} diff --git a/src/test/java/crawley/james/project2atm/AccountManagerTest.java b/src/test/java/crawley/james/project2atm/AccountManagerTest.java new file mode 100644 index 0000000..8c7a2ba --- /dev/null +++ b/src/test/java/crawley/james/project2atm/AccountManagerTest.java @@ -0,0 +1,36 @@ +package crawley.james.project2atm; + +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +import static org.junit.Assert.*; + +/** + * Created by jamescrawley on 9/16/16. + */ + + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class AccountManagerTest { + + AccountManager accountManager = new AccountManager(); + + @Test + public void addAccountTest () { + + accountManager.addAccount(Account.AccountType.SAVINGS, 100, 12); + assertNotNull(accountManager.getAccount(1, 12)); + + } + + @Test + public void deleteAccountTest () { + + accountManager.addAccount(Account.AccountType.SAVINGS, 0, 12); + accountManager.deleteAccount(2, 12); + assertNull(accountManager.getAccount(2, 12)); + + } + +} diff --git a/src/test/java/crawley/james/project2atm/AccountTest.java b/src/test/java/crawley/james/project2atm/AccountTest.java new file mode 100644 index 0000000..cabc2cd --- /dev/null +++ b/src/test/java/crawley/james/project2atm/AccountTest.java @@ -0,0 +1,48 @@ +package crawley.james.project2atm; + +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * Created by jamescrawley on 9/16/16. + */ +public class AccountTest { + + + Account account = new Account(Account.AccountType.SAVINGS, 100, 12); + + @Test + public void balanceTest () { + + + assertEquals("The balance should be $100", 100, account.getBalance(), 0); + } + + @Test + public void accountTypeTest () { + + assertEquals("The type should be SAVINGS", Account.AccountType.SAVINGS, account.getAccountType()); + } + + @Test + public void customerIDTest () { + + assertEquals("The the Customer ID should be 12", 12, account.getCustomerID(), 0); + + } + + @Test + public void accountNumberTest () { + + assertEquals("The account number should be 1", 1, account.getAccountNumber()); + + } + + @Test + public void interestRateTest () { + + assertEquals("The interest rate should be", 0.05, account.getInterestRate(), 0); + + } + +} diff --git a/src/test/java/crawley/james/project2atm/CustomerManagerTest.java b/src/test/java/crawley/james/project2atm/CustomerManagerTest.java new file mode 100644 index 0000000..54c8474 --- /dev/null +++ b/src/test/java/crawley/james/project2atm/CustomerManagerTest.java @@ -0,0 +1,18 @@ +package crawley.james.project2atm; + +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * Created by jamescrawley on 9/16/16. + */ +public class CustomerManagerTest { + + @Test + public void testAddCustomers () { + CustomerManager customerManager = new CustomerManager(); + customerManager.addCustomer("William Williams", 1784); + assertNotNull("The customer should have been added to the list.", customerManager.getCustomer(1)); + + } +} diff --git a/src/test/java/crawley/james/project2atm/CustomerTest.java b/src/test/java/crawley/james/project2atm/CustomerTest.java new file mode 100644 index 0000000..3d2af21 --- /dev/null +++ b/src/test/java/crawley/james/project2atm/CustomerTest.java @@ -0,0 +1,41 @@ +package crawley.james.project2atm; + +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +import static org.junit.Assert.*; + +/** + * Created by jamescrawley on 9/16/16. + */ + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class CustomerTest { + + + + @Test + public void customerNameTest () { + Customer customer = new Customer("William Williams", 1784); + + assertEquals("The name should be William Williams.", "William Williams", customer.getName()); + + } + + @Test + public void customerIDTest () { + Customer customer = new Customer("William Williams", 1784); + + assertEquals("The ID should be 1", 1, customer.getCustomerID()); + + } + + @Test + public void customerPINTest () { + Customer customer = new Customer("William Williams", 1784); + + assertEquals("The PIN should be 1784.", 1784, customer.getPin()); + + } +} diff --git a/src/test/java/crawley/james/project2atm/TransactionManagerTest.java b/src/test/java/crawley/james/project2atm/TransactionManagerTest.java new file mode 100644 index 0000000..3a0e04d --- /dev/null +++ b/src/test/java/crawley/james/project2atm/TransactionManagerTest.java @@ -0,0 +1,31 @@ +package crawley.james.project2atm; + +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * Created by jamescrawley on 9/16/16. + */ +public class TransactionManagerTest { + + @Test + public void addDepositOrWithdrawalTest () { + + TransactionManager transactionManager = new TransactionManager(); + transactionManager.addTransaction(Transaction.TransactionType.DEPOSIT, 12, 1, 50); + + assertEquals("The customer ID should be 12, ID 1 and amount +$50.", "Customer: 12, Account: 1, DEPOSIT: $50.0\n", + transactionManager.getTransactions(12)); + } + + @Test + public void addTransferTest () { + + TransactionManager transactionManager = new TransactionManager(); + transactionManager.addTransaction(12, 1, 2, 50); + + assertEquals("The customer ID should be 12, From ID 1, To ID and amount $50.", "Customer: 12, From Account: 1, To Account: 2, TRANSFER: $50.0\n", + transactionManager.getTransactions(12)); + + } +} diff --git a/src/test/java/crawley/james/project2atm/TransactionTest.java b/src/test/java/crawley/james/project2atm/TransactionTest.java new file mode 100644 index 0000000..8fd19dc --- /dev/null +++ b/src/test/java/crawley/james/project2atm/TransactionTest.java @@ -0,0 +1,47 @@ +package crawley.james.project2atm; + +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * Created by jamescrawley on 9/16/16. + */ +public class TransactionTest { + + @Test + public void getFromAccountNumberTest () { + + Transaction transaction = new Transaction(Transaction.TransactionType.WITHDRAWAL, 12, 1, 100); + + assertEquals("The account number should be 1", 1, transaction.getFromAccountNumber()); + + } + + @Test + public void getToAccountNumberTest () { + + Transaction transaction = new Transaction(Transaction.TransactionType.WITHDRAWAL, 12, 1, 2, 100); + + assertEquals("The account number should be 2", 2, transaction.getToAccountNumber()); + + } + + @Test + public void getTransactionTypeTest () { + + Transaction transaction = new Transaction(Transaction.TransactionType.WITHDRAWAL, 12, 1, 100); + + assertEquals("The transaction type should be WITHDRAWAL", Transaction.TransactionType.WITHDRAWAL, + transaction.getTransactionType()); + + } + + @Test + public void getAmountTest () { + + Transaction transaction = new Transaction(Transaction.TransactionType.WITHDRAWAL, 12, 1, 100); + + assertEquals("The the amount should be $100", 100, transaction.getAmount(), 0); + + } +} diff --git a/target/classes/crawley/james/project2atm/ATM.class b/target/classes/crawley/james/project2atm/ATM.class new file mode 100644 index 0000000000000000000000000000000000000000..69d17de750bc1532594b5dbbbd5d58b40ce02c41 GIT binary patch literal 4835 zcmbVQ`*+)B8GhtAaVjfLoHQMsliu4nPFs(%t{jO}kCy(!|coxse4?j@xL;Og7eO?|fY{QFqNqBxNxIdBY%ksldn6RRDe-!)r0TuApzRZrFLNw&>EnMdz6A zEMzaXNRKOsmCSmrqAw}f-$pU#2~j>?T(oV&as*0&k|%<_Xj!IJ=I*kBgkCIG7cJ+U zZs}za$+Ur;SR+gHe#h3Wx?Xh5suds{ZG$kgPM#>e#l^Z)T`=qbVyq3snYF^y?|R6z zOy{J6j`Zjy1<^Crl0nphX&L7i7v>CmMxU$jq`y!t>Xl2nZOYz1j5=4%x`N$p7$;`V ziLZX7W|nHkWKBG#TFH(O z6B;eiw42=Sx})0;JBA`;ld@Jmc;_!ZuX;nx~|gLgH&hu_BVI}N`V>1(*Ip@M}N z-q-L){7J)M9MSLr{;c7)Y@fho4PTYVUvO2!UvXT+hxkar@aERJ`RrS5^vOB7qZAxz zqq2T@aqjpfk(Y79Y0c|M)k`Hm!2icM^a>|VjAj5ilS@X$2xhQH8ZeB=5Zb!&SmABT zCqNT_g7T(6tnN6ER&60&JGQ1E>Go|N%BB>@5W%NRD~691Jg~V!r~nUy*4_=&yY57t z&Ci_8U6`1iC@47ICO9F@R$Lhg%tA;)!Nct?w~*vIEPvL0V58hRvu$SL$BmBCI@q3W-gR6*)2lveua^IX3 z?wb?9eY30GH=C93d!Wdy;`8&|J%t1)Lk$e9IwarTVuZ@*i}4wkDefau2{}CK z8Xd=D%z;S9@kN|G!J4Pk)k!ypsK76y5FyhBKMe9i-A_ zK8MJi_=HEFVpl5N!0y%3@RD+cP5*Va?vo+r;UFo)K~jd@&XM-y^}h*Wag}h-ri3LD z8YC>=HR0EA#V5SNa+7(`lSz#>us1Wr=e|~tt}_f3k}S9c-c;xbJnEshUMzd?4Yy+n z7fgjGgRGxm@+9KYvI%jff&HsY-t2jb^Q7*wc!N{(Srq7)^G(k3EjXRTh=0UI#2t%X zU)~HUcLvHuww2djVdZ42@-rJM8<^ifInk>8?1su^$efqPK1n-eV0L9vE7;ZQ_zTR! zi!QI_-fuH;CS^$m-I`Df4lg%cNy_z z-f_J6x|jd+Pcgz9C;QON^~=1_Ug0J7D!-{;=Uw^+@6Wer$SoTGPRPAezH!ns-K>pl zBoY-#ByC)m#828uakv63TgRl}PmZfS5^ zUw2I0HL=d{-0_b6SPWWx>M`AANjv5JOL#8n=ToE;&eX&9f$&dFFZqz)Pk z*_R^lLqC4SkSvN^WFjXF_Br={ zPj`u7{X!mw?F)VW@9_NW1%LXTIpV=oXRnqk2hB@SyC&esx$C0r+IV43bUIt2>Kl7yY5B+GDKulxp~bI$Jo literal 0 HcmV?d00001 diff --git a/target/classes/crawley/james/project2atm/Account$AccountType.class b/target/classes/crawley/james/project2atm/Account$AccountType.class new file mode 100644 index 0000000000000000000000000000000000000000..fe9da00a0e5b1735358f22da6e400316ebfd8d5e GIT binary patch literal 1219 zcmb7DZEw<06n-u(v~=B=-JI^lmnkZ2ZXLL(31oo~R3fquMH1qtQtRwe%2LYA{*|)C z8I5M2{ZYnqYva0Tvd|{?M%yz2H*L5P? zdNXm+)RF0qxSnDzKY6xT8@#2XWtxs>w?_S*?YGUIOFL3ncJCcSE!R9Sk4)V)y?xyX ze8<}_wAVXWuh} zkx!L`91qB4%Z-w&vC?&K)Gtpce3!0GF$N>wvY$D;FKTq9o4h9~uJY+xP-*0LBs^x= zm}n+cEaQoa+gMeRfu>@PFZ0kCX3l%gbu%O_ci@qL`CLABroA4YITE>gDKW!Nyp!P^ zmtv*nM0IuUB z4Wn3!A%SHfZVIs?L{5lX8pZ7x#;~g4Jn~BJ`)|bat@v0_a$kS`*WDizUnsd3e}6gg z+oOMC_yBjJxU1nFiYo4_SW{7wpciX3+s#+ZM#FBXSeJ0-wq@0uHE;7^-{#8fUS&&` zYd)*k2iZNdYB#d`Zhg~f`ow}+eWjxZM)nnO3di_)3xk7j$l_0h?(0npPD)@V^PONyrJU~#&skyspCx{CWM$nR>uY&=y-@( z9a9)r@kqyGlqH`P8g9JIP=^k{*Xu#iouA!GovzPN{@Jfg{V=+|54N7DLP? z_YF(UOPKBNbz%kS-X!qRl3$Ed&pvc{fy$n1n^n%^NRMqM+!s!j8spOKK%WIhIknxT%ogcR@TUh* z5E3n-6%t+YHQVEBHq6&-4YekEM;!xMM2hkXS6@L!gnHWe6_PR2LdZzB5H?2T7G&cP zk&oq1Un0_iV$8gP`hu<@T&0|VN;$;v5vEMwEa4>hQ#XZk{C*MB{A%zkQzMNGwXg(K z$+ra9kZ%c?GItHk1fa6i!Yg9@g3!-2+D9t>=A@rmZ#x93CA@`M?ud%IgO%r}g0J)p z<|qfj&k^=ftsNrDdSi1xFae+U`3gi~zL)q42Cf+iXf5d9VUpH>Z;jH5`_`F53=I#z z!ib<3&WQDBiN-klj9Ifr??g9R+|pCm_X74P9bZuk(#+Axl&TMMYW#tbSVsaPzg z645-vJ7tG_gn~2uCwg^rcC%;MZ}Z%C@Cp%%(iCHw%|C9k=A+1SLJD1|lp|D%KXam4 zqK^Lq37-aXuP2aqdp1u#-MsZ4!BKLy7@Ry#EuM(Xi4{diKJD$XiL;a&+zYXn=ctEi QjZtGT%KzpBF5J5CAIBe+n*aa+ literal 0 HcmV?d00001 diff --git a/target/classes/crawley/james/project2atm/AccountManager.class b/target/classes/crawley/james/project2atm/AccountManager.class new file mode 100644 index 0000000000000000000000000000000000000000..eca2459f792d4e59972295f015a2fb72740efd8b GIT binary patch literal 1698 zcmb7^Pj3@P7{;HmH{QhA-~djjA#DgGVPpQ7q^V2e)FySH7@Tkj0>O#NX5?(J*U@@S zn~&04ZaGx~i4wI)RnL`r=DQ#SeP+Ee7K-HdGCMQx?DPEInRn*z4}bg#U=iy{q%dz{ zA&D5~hj0R4n^;U@0N?1Dyl%c7#tnR@n`fL#e)Qwf zYWzLJ+jrD$SD)VLNFX|fYr3c`q%p?OF$HE} z6ek6y`j(K^n6&T%$`)2}i@X+Y<3|g3P_b|q_bgO(vxc&O-B&Kc6BrGl>e8#_?r-Y4 z6}Z~>@7_XS!G6lC5-48=O`k>1;^U>VJ2$3BzcBZN_s;Du9Jl9sZq<^iq8{7u&o1LdB&O8BbLe6BFXCnLqDMDRV}8Ss0GqZm%Z zV4nxZcAPUs#MuKzvxgAbH;6qxMEo}xFT>Sm*yBUZ%!SCME^>*nnGm@Yg2r%}>n+6JW6;Ev zg?B_{;Ze1->H86S{&V!%W6)Da=!uN+;^5<3@q*eN;_+|;CP{Uk+EbXP`yyt0Xvey= g`7Uj~OPfEA*4DH!w*}a_%$&qy)X*SrsIB)y!84bg&Ok4Ur5HF+?qp9SYJfL#D+2T~n zOy`7hQpFR0lsjev3GDNDn)t!9P+BU_TOZ1SIatH4gBx%hlu>eE%TPo~;NbuE1lAW* zf8Lk&vCkW{c)OLAh#@My+JxD!bND0a3UcLgx$Yw7)^LAIzY&cV^JrpJ5o6 zufD*Tq40^{HB=dEC@_}EQX$qlajK}}CN@~z%W#-&G9#km6>2A$H8O4yA>%z|uJN0x zI2R1Is&13#wnD9CU4Kx`993W&w{k3(tK=!Pze4-SO(xb<#fE}$vW6T+5d01+asUe< zb^2Zwa!4V^{}3WgN#Z)KW>|j<(LXE+X{{8}Sb4axeAr!axQM&h&6yiq{qe{Tu!ZW7IRtmNv!&US{Xsz4x4R&&+)P{pBlwMLdk77lwvR93dFp(2>t5v#YsBt}FLScEiiF zrfgRn=`~$TApgIbrIP8&S5<2-wuxX>1IfE98NYtcfZj-Ft zJbAXxxEa`2d@Rsg_N4h@Meh2BXt*g5FV~x{X+5!(YlAKLVElPCjE*D*1P1#~s`ywT^qp>sZ2l9R)lP$efN6$f6%@m!EE`n?mQ?`ih?AO0VwH zc^)3GW#^$C*XJ|O1!DF|VamvK+{+dKo!7QyW7T?10^T_GL>xaDY}NZG9bnSnj`LN9 zv!{r0zNcQkGr?CxzxYis3gH~W+|yjHgUl5C7)WFfA+kpZZ5$%}36T$e^$=I}4uKdV z+@-kF*~xmG#|3@`E@C*qTH_N9GndSMMC1t3jhT@{bR9r@_Ago=btHVWvEz;ajlD=? z#Ait25=O}_a2aC(!yCpCGGrCQ0b(n&pV2Mw7Q@`c1->D=I(LAc^gBf7_TT^cA@*4v zhMFTqb>PftMpqb3QMp0wY9^&3&H2VL;p@qs=*hBnlfJn1-p5pT4fE%!M%h E7t<3SHUIzs literal 0 HcmV?d00001 diff --git a/target/classes/crawley/james/project2atm/Display.class b/target/classes/crawley/james/project2atm/Display.class new file mode 100644 index 0000000000000000000000000000000000000000..4c34744260e223fb6e82587ab124e70f2274bc0d GIT binary patch literal 1243 zcmaizTTc@~6vxkS>vk!ZR!}Y~QxPes-H0S6Vtgr>kQ5}AfDgV5%TR{w&NQ>L7Cx3f zXySt(zz=0Sv%B5W*l3e>_S}Bwe`ZgA{r>S20Jh<|3zM)^gk`wzzylW^!iodbfvN+K z99VVWaRJr}@Pxp`8zF^xOJKCNaYA6Mq0TvhnWm8ZFb>bSK4xbDdMZujv*3hjVeQO0 zW-diUV72LM)(!ZLcf~>;c^$2;xNo+Y3B6qrbpm#?gM^M2(wy?ZS0QitnsZ5DE^!|6 zZX=Ei`t<>qF#$JmH&t6;&QfB0;3n2m$o61n3OLqGM$9)t$qdj^vG(~pVYQbs5%nwf znU$afQw3NrK@BztoMwWm?vdtEL|@PgrIWAZUFv75>REIviRhk`zv3^cQFQNGn0f&= zOYjt)VfQ_0xTX@X<~1cSnVLuYht_gaYk$`oAA1rIqB>ksMy&|u`zn^E?$R{AWt()k zMxi05nEvckVU48xT0{nKDz7B)=@$B&cT|KD^O+FW73T6BUm^>7?qrmNeZh6lxoulF z0u^!Frzea+^}h>1VAkHg7cklO-k;h17;v?2BEv&mLlt9SzL_KoF5B4(w_(EU`f2Yy%@FaMSZ+-{z1s_IWCQGuZ zv-n&}6QB$gv`|4_{0g&eaq%mRR7StSSRdeG2(YJv$$dyMhs@=WMg}Qc$T&jmIWYj6 zhEar-5mrIi+$~@^2hI-%7XATTK;R<6mWKlG=D>k5odIR(m@5dX-h%YUyf++D90FNG O$of#o0uDa{i+=!0$O`2E literal 0 HcmV?d00001 diff --git a/target/classes/crawley/james/project2atm/Transaction$TransactionType.class b/target/classes/crawley/james/project2atm/Transaction$TransactionType.class new file mode 100644 index 0000000000000000000000000000000000000000..a61c9eda6f9236bf4305b81e9f4fff7b9dd61379 GIT binary patch literal 1279 zcmbVLZBNrs6n^g3tz9V$2co?AK6D#O1wn{g$QBrJaRIZ=k;PAUwPH!vk*>q=uXH40 zG#Wnpqm1X)MY`w*v)kmJo_n5q&U0SwkDp(@16adm0ur(+a#)fvBjb^Z2`r0ESCCZ6 zs0+kn1ye$-LkwoZ#i@#2k!UZGQ7xCkN64K z9qu0LhVR+#VLm%D?Nqg6a;L#PTf`XzlUyn*L+bB94Do{P+Wr>9%s+TkvJD2we`ix2 z5{7-~a=+)1r)WkPl!ECDE>}XX%Wkh-7%_n@>ZxjUdY)QFJf}T~b$x*K#RZj)!hrw%^<SvRDQy{AN@>igE1L3v<|9tBI5U%I7C@7+is>s%tIEEFILlxvgJ}g! zt6;c=@0#MODQsQ=>#y6oHKFf?L=o26aJf78)i;_j%D6WbY7!7L+5|k+LxH~exmbwB6cc{ X{W!r{qYaf}lWsufz`+0Ax#y)nCv7Je literal 0 HcmV?d00001 diff --git a/target/classes/crawley/james/project2atm/TransactionManager.class b/target/classes/crawley/james/project2atm/TransactionManager.class new file mode 100644 index 0000000000000000000000000000000000000000..4d80f415a90cbb0882750fad024a6b5852eda2ed GIT binary patch literal 3436 zcmbVOX>-$76g`SfyooF(i$l^9mK5U{Qnpf(5E8PqE>5601wvQF5s89r8CeF>mF{~> z_tKTFeCY?uw9d55bo#mdN1f?%o}_pq)A8^{y6?XC?m73o`>yoIKfnG4U=ObP5y43h zX8fqbNguZ1lm`#`u?7zb&%-|K!y{t&s1J`p@pHkfA4$x4p^62k1DMBxcxYnPq6cUE z2;!u8q{Qm9urgv!_cK=3i?hOGc##uM(~G=#pY!6p@L%v^NsJ#CgD1Rr(u=1=n5V_# z8S%L2!LuGbCqXt1C6iN)n% z)z%EglZJ9Wr7ra?Drq&>mo@Z7HEHfr%yi#$31VP~!RiOKjAjl=aD}%Wm*5`N=NPsz zu4UAze0o+jrj^+gJ;Au1R8q$kLla}i={6TM65UZ7-lURI=2e5B4a(eH84(YjCuEsp zdMQgtIhM(&#%M~(!@#gLO+;0ebZ4$Y?xJv~ynw9(Y7Jk41{%a~N(9kVw}*-g*jdbB~^+YqK-!m zJxjb&RoLnJ6MEiAsuP+h`}VSFr+#+`HDvVRP6_K)xuG(85tYzW(;XCX`enR?mu0+y zK{0&QgV$udjyGi7gL^%AQ^s3(TLNTU!aI~%#=Ce=#{2j{#)tTbB&*NoP+m*TsfLV? zaaqO#NXYmEpUU_QpUe0HU-F7E$lQ5 z>&vo|He-7hl-!hhf$01g@J_lj)}Uo&z10C6A=vVGg;uIav_bA+Bdk}lSv5oXwy#Fy zCT>op65MMRFMcJUlLY%vW$&|l_*;Ha`~^>2gBDd` z4P%641n?mTI74azI8+3_4sWN8?OO%A1?^}n!wwa(Ll&YCB!p21JA^R@J5_V7+PY`~Es+k&-Abc?w#lpi{u#Z-KrV=LTyII#&Cy0| zz$S#Tnd$T}&8-%-2u0n%xft%FMff7gafhUff*(elDNJ&{5w5=x@LUkE4IB}d}8lW4Gm2{LeV z0qcX5T-aU0zRk987xo6*ZZDuaxY4#Z6|gzDg*L?zy4Y;mEU|Z^gB*HT(>qyMhsmwP zE?#68FS6sO%VBrXVK=-QyB-_aVplVxpr!vH866;-A(sAN8JpoEo8clGe$pK_Gmh{r zk=|w8aTz}G-g-?u!=+kiAZM_wy*%XxmR>2>mSXf4C%QOm_J{@sK5mJ20{i*)6L24; IyL-6fKk+#^!T_bRAe37YN)4gh3aW%Ch)7XE3RL28ldggzdmTAzp#Ovf zRM1Kw@d11kV%9cEC_L~oJ9BpC%$eE!@$>6<02|meF^6*osyUp;s)-aXRcP!k+l7)L%VQBpS^bGk(LNvg$uHMogP-lOngvXF_B#jae>-cuGK$=%@ zkLIn^{&}IF&yeDsYDv9UKO{S$cup%+V~S#=f|#dZsvhbjSGP`DOfOpVo0|XkBc*jf zzt5uI36N;LKJwD!)4ItPD0&#hK(TQI*7%0hs{_m&A^iojpXfS;B3b=qfh?t(D3NDT zF_oZLTi53gU=*^4$i+P7 nhcQpAr9^7VQ(XBm*D_WTu47tGd>nJcT9&8kCtA)#S!aI%ozBf9 literal 0 HcmV?d00001 diff --git a/target/classes/crawley/james/project2atm/UserInputHandlerDummy.class b/target/classes/crawley/james/project2atm/UserInputHandlerDummy.class new file mode 100644 index 0000000000000000000000000000000000000000..0297b0b000c3e825e1e7fcfb6c8078eb1016b25c GIT binary patch literal 977 zcmb7C%Wl&^6g}fOPLsFSgqI@aL(E0K<3xneM;BZj8Rhe>u43QY|Q>R6^hydbJG9WVI@?uR^H_&Iw-GC?dy@mzdj zU`l1K6$+-g(#1t)JqhAKK4s{+)6sNTA~%>Yn9q{AU}%klSiH=l6Oq2+8(r+$XrO7s#-@!+ zXxX?7$3|O02M&Y(pYt$y|6ZX7o1jn6p-%6{f}z~d$xw!LBu_e$Egi|3j%1Fa3EBd- z2)8K^}d67J8Kx;?iv+uZw>RCuDU|FjVfV_ZaUPpO;dO1+rm|1y}TaR(4&l$ zv>&EV%8{W@%2S1UUdN51^O1G}INmumeRGbg`R?r+)&0*@U_iCC=qgB7wXyZtDcUgH q#H|vciW0K4kah6of>6Iy=r-<@2$@Q#riE&UUoQx`r9ypu>+T<~x;zFzn2E<)O5J3>4E?NrWY8peGl8a1J#m91ELBR*` zp~N$(&@QaAIA_l7`_IhR_xmS+V{BN^;TTx9putgQ#lWh8H3t1e#3DUq$Tj!64Egiq zK47SNA`Y%cQ7@1k-U}&H_Y$9nT`q-+f0Oz2K@1soJzw(YFnDnXJPL;Hqf7>YpC0iv zn!UFOA8`>gIL$k6z@NAq^0@D|Qz_zpE0gE4Pr$|>W!jK<3|s$*opr8A#A+ua=?51= z?OmH$=1^(cFkmul&R>}*Hr7?s&itksEQw4XbJJ5#XE28;mnosJjRO6?IvSV~CtIY* zCC|tg_QznaS=l11XGt9;y4#Zm@@0yOsGv$2HGD}hjePk7+U*!Q@8AvjDWrlN6)n;# b(XgGtoXG%cSfH9oTh-AZ9K#~T8kT+lI){2& literal 0 HcmV?d00001 diff --git a/target/test-classes/crawley/james/project2atm/ATMTest.class b/target/test-classes/crawley/james/project2atm/ATMTest.class new file mode 100644 index 0000000000000000000000000000000000000000..4b99084a5da95b7406b4f328993744a1f8121a79 GIT binary patch literal 4366 zcmbVQ{a4%88GZx~c8q}F1Ol{4l!PWG5DXclEy-F8CapK)G%zWB$fQXTZB$Lo} z>DF%Tx~=WLw`Sj;UAO(R?i`x4p0n-e{kZ)*J3D)>B+CMfvkXphrK|USpXdF$?@j*k zpTGPSz!?4*$1tu$aW#%6T-lET=2|AN@e_Z<*7GsUi*+H67jP|(>-bCzFN&Sd#_*C@ zZ^ZFAsN!ichN6%t#h~rS5SGN|auh3Z9L5##qPI+DYqnQoxY;tf_;+_FjxyGSwjl(~ z7}mvlt7US`Q;5Ne!4`W?92IN`(c4kniDMHlNAYS9?dNsz8f zXt}5xy7QET=H$Swhhy!)FGXGOOqoXiz1 z^>$g?Os%SGnw?s=%vG)EoKu~(RC;c9PP3g05;}{PraD@>STrk!BQ^<25edf{>r=P) zDpm9~ZCVf@A5% zG6NO6SS3p)VA(OZuHz%~>%^m#va!(Z;?FwOpaj@sN;J zF$~SJQ=VkOv>d)swmqMoow<=NOwZ&q+59syMsZHUk%sjU#Vayi#TR9K39nH&Z78Z& z6pFoKR>~!1QB%AOmWE}#jxR^?6&Y{f%_zPq<1KuRNng;*WnEoU{MDB6b$mlYe_AQ} zS+5#fQ8zSN)QphLxA9IC@5=Zlz9r+^_zo54Rs4k>=?xzCxI=Pnnra}!GcxsldFPWC&Hvr33Kr5nMIBVhta(PjlSrX1R zQ1_~|zj}miuCq&8x4p?((I?YoaoqA`j26=KY>R?~RHHL)w_UbY+qUyk!dUVlO=L6T zMDJYI9G~K>YN*SaC1EHz@L*fMG?^qH7?QwpyoM&>bTXU$AApE(pmv0N%|Z9QiIq2< ze5G6##&(}~p&c)M7lg;{+fRQ9-E~y6LNYfxKQIuWRIWoxENorcwkU==Qm>>wf^pqqGSW$+1L^8asc9UAWA%QAZj#Lp-N~_)XM}-!lQv57>jvv^pK| ztX6;M6bvW$gh=#bBGIR36UiY)bb#qUb034XBoCvNCf7;y7E92=qp*2GIvC(T%tvvX zo%1sL!GwQg zdJIdK7Tgz}PoinwXhfOF2t(#I6=1eS&Gby7FWR=_bKi7qV%N)#+ca7MrD;U?k%q8@ zFM24{suQ?%v17_?Cwl9Yu%#A1;S7^qY&+)rUEv=&jXk#^T*@nX!mWVd*{(xwVB5m= zjPsLK$MwmRHB^eb+i#22&F#uosq#w02u2z5muHTT=`ponu*cI%vI(0O_dG#Y zqEw4Ds=3Nw^uPLUUaCgz+&#le{y*_sB{`*PQ}|JS40HKXX}&)VN$Z_KDpDaX4c?Hf z$n`6ZUkNOWVLV^{yM3!taj0kFXi}u8%p}5x;B4O>BTFB6n!ajAFAV^#ak6Q2XuV3_ zdguds;S8+s9kGKm#6KhPf%ak;qgDO@BsM{)ak8|KOUE@#kjHSHxMCsK9+KhSRN)g6 zACVkGO4q*NigXjw8u$veL!2gQ5X~?V-9)B~d@3T((0+<2Cqtnd7ea3$p#+ zPaQuPo$&&^D91fbpbM>TNrnQaW{&4;q1KUJ0n)^NAWUDHLHBvteFJOT9)k^u4!AuR0_7UtL@iGoaP57{M3qXUig4`xn6VaDtGjpM@;%I zzVyZ}ifOsrp~p?b_2Xh&cHJrSyeTqM{9*{g_`dPVkZ}?H442!MPeM+{G9HQmUB-D_ zVCXCEan;XKt?k+M%8pv%>fq$Wgp3ueN+`%!!@BS3QZ50vt?ahGzPu%41CNB;V+K_K zUAh+iTva_6h?ty`u?dP;Ly@6hIQunFt;YEUePulHTE_K{= z=7b?RUCcpjm%9sIuQo;_M}5+4$Smn{C`(xgbljzvb)!N$)0slE5?iigTDvp3Tu$)f z#QP`3$;`+Jg)!W1!4K@{)qdvx6(Qg>2{`N^owA{E*IO&j=kp>!X)5-niQ!y}{a03m zbAp`pz?k7Oeck%#Q^)9{xuAQ5o@uV=eu=C+q{h4S=y$Nup9nqwjE)|J75O_NUm<-W zpAb~Ki?18di7;fMg6@Ku#uW_EKf@p~Lk;Gf&rGJGL>m19=^HxZ2Z$YqrJ$fY089F? zAp#1SR~z8rBk(Lb8k;JqE>h`%@B^G`fD@@y%;R>yJwVTK>=5D@4qy{4^^P84n*~18gR>qu-KxOX cN$+?7+)8f<*C_Q6u2V0FQ>Ni2YiYjsFX}O-D*ylh literal 0 HcmV?d00001 diff --git a/target/test-classes/crawley/james/project2atm/CustomerManagerTest.class b/target/test-classes/crawley/james/project2atm/CustomerManagerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..e5b2c719a663c0be7f8e9f40955206a50c3586f6 GIT binary patch literal 915 zcma)4(P|Sx6g`uq*)-WSY1G)*s@qmg(qLD_w}=o5LScyF0QwTk*4e zX+^;g@QZvB?`#uN!G|pDJu`RCo_p@j{q^VjPXI4)R7M#s3-`*%p;f}J!Mzgh8+=g4 zLpT=pEgUcuU&=`8R}A@1cf?RQQNCcPc`_2iG#rcgoR0&_G(0uo!HCDw>=(&`p2>v4 z^(Ha@9EdOOoQEQDKgDV;Ci*$op?i`hT7@Eh!y`T=HIe8(LtPUNe1CaLBDKlCOorb2 zvLxAhmquEKVk8qu4hK=BG}lr^q+Rz^Jay+Ob?Po0l+RQePsD3!n%i0WxZ(16&M&x) z3T%e%+Wk?j_c91151j=jHV*NK;o132ILjWLWTw)7M}?3AI|@m7>G9m{CiKQ%K@nF_t4 zwL7QXH7>$j>gp#Cl0?K*vC6Z>Q0ZYB1Ptx})V$&1+GxK!!ag=>gw2x!If6~GN;{X3 z5pEn^fql)6w@j%`AkT*~CKk3S+$D`4*jav!dc_j--OcJcQmHX6lV v;S$z2lvbJz6o^|z30tI8!)_LV=C#H`zl7VkMK8l0VjCaLtm<8gIqduem*wmd literal 0 HcmV?d00001 diff --git a/target/test-classes/crawley/james/project2atm/CustomerTest.class b/target/test-classes/crawley/james/project2atm/CustomerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..8cad9650f34a33532ff866219b291ce8975991be GIT binary patch literal 1346 zcmb7D?M@Rx6g|^#Yg57YD-`a$ELl$P4&mh#RtTD)#At9Dx{IF@a+35HvCjv-m^ z`W4EQF@{Jl#4z&@Km;=S%F%7n=7+)()J$I24O_K^p;Ir(vSA)8Er&!YUCu<0pj31j z2YP}1QpJr#tA=CN`L>W!2MeB_7hCFy$}r}E-4-8rx!p7xduD^1)KBn4)f_6E@+6s# zu5;5;+{~(B+T>AgqLSa;dYi8nwkpL^)Unbnv~O1G*v%V_Gsh!2vdq>si@Ynlbdyw1~a#tggK2G$#gD(|3-$RK8(Fbv7N9Knpe_!aB!T^1R z@(F;IkqyqDf_7{P(>mrRU--Q)$`5nQ_QKh@n#BSwUYeuOhbI7=F`9>VbpeThE$ We7H+0ebk~<9Vfk0^q=Oqhne4l*DNIf literal 0 HcmV?d00001 diff --git a/target/test-classes/crawley/james/project2atm/TransactionManagerTest.class b/target/test-classes/crawley/james/project2atm/TransactionManagerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..dead931bb4119bd908bd3e3dd149aacc612bac9b GIT binary patch literal 1574 zcmbW1ZBr6a6vzJ;(M8&XNKM3Y@u5IS5H<55Mn-gIXGj}iYSoK1i zn&|`dp_GD%?2Xwl3CPqt~tL4nw9;vH3?sJ4-cqQ*%A? zYZOp(+--(wUajV}Q_IoaBm1@P)~ghQ8)BE#+yOU+RHH@7r@BM|B5LEl?Lad4i&o37Xa~BeK;-&VmK*#7mvIjvhU9JPAR#Sd z6>Boq@r+@$RM(VB%WuLIY@x89c zR{K=0QW3kfNGkdLS4Ty)w55oXX}^pOJeRO3V+-3tbB7`OZ_NYSYPN-wO34zFKK+h- z_ILTVLq7w#^_G-G={R>-JlH?JWMW9)redAm2#SKI3~ts^M`h7x5?(N@-zd;R-#09s zor+E$u*j-uYWAMN9Y>=^k-Bwc*tl8${i#8XICj}tor}QmBKDuLR5dTIX`rULec*&S z5mV!ZtI8BzTQ_SY9lUDu93^Da<&s5aw!8nn#SQY@j1BtrSvob|9<&G!DW-Ob7H?F4 zL=m8WmUxE1#HFG4eOjexWHb&hU4VU}i3j8K9%&m#F+p>=a{!ZgKr4nRa`v>H-_bb_ z+2+5&^X39Wg~VrggR*xV!{?AfzR+kQD4)as1$VAOPm>cc1|Jbk5XlUMo27A%LJGOb zPROpD4-tehO|lW%6Ie4eGCb@-=v|0t4}u7W+X!;#ZfNYU2vdX*Cea9mpP_&eD0tL| b5bYs^uR-w8Sy8Q7WN7pg(i|0YWjFi_GaQdb literal 0 HcmV?d00001 diff --git a/target/test-classes/crawley/james/project2atm/TransactionTest.class b/target/test-classes/crawley/james/project2atm/TransactionTest.class new file mode 100644 index 0000000000000000000000000000000000000000..3e7d66eb002cca7eaf2c899679163f4a473f77be GIT binary patch literal 1914 zcmbVMZBNrs6n^d)?1chj&J9GMyva6@0)mJjGB=Q6g#;D|(J$R-MwhL{uG8=X{6YFb zh$j93f0XgucCM2xaiJgDdr!|f&r8qkuixK)0$9Oe5K+W^NCc3?T+j9yMd=E{gLyw5 z^XEbk5*GPt$&cl3CjlNFc;d$jf3EVBr+%#Q%`?7P_u;t@8w@?0nyy(}3|;ZW34=Fn zoU052vZkvCwMt$!b4tEUk+5tOl=6vUYJ6W0daVns$}lGvOyyHqy^=~wMXgGgrcqK0 z*0N$%q@1bfRi$8QhMrTa79kE5RcqHYDyc%jsOeT6h2AmrT5dMOY-eq$SiLZ6<#REwic11s zA?-s(zz%kK$?N}>EDP8}njyg(H+d{tq_C;=X*Rc)IZBa`S!`n(ww?unj+RF`5|!nrnU2-rj$uVEH1mA z9b2ZR7dQ6zdE>3S6LXk_TTcWXc^>@tG%&2k6L&O$*R~31ia2Ai(Hh|r1C0}C8l3H+^4@Lzq&!TVTkU-w3Fz`cr7{ZxC>s_M?lE`!R?RH4EF#qfUc*^Faa| zhe#k3l*vg<+K^KX$oKHu6`~8-ZDR)IaBl Date: Sun, 18 Sep 2016 13:38:26 -0400 Subject: [PATCH 2/2] Finished user input handling of ATM --- .idea/workspace.xml | 315 +++++++++--------- .../java/crawley/james/project2atm/ATM.java | 233 ++++++++++--- .../crawley/james/project2atm/Account.java | 5 +- .../james/project2atm/AccountManager.java | 4 +- .../crawley/james/project2atm/Customer.java | 6 +- .../james/project2atm/CustomerManager.java | 4 +- .../crawley/james/project2atm/Display.java | 77 ++++- .../james/project2atm/UserInputHandler.java | 19 +- .../crawley/james/project2atm/ATMTest.java | 16 +- .../james/project2atm/AccountManagerTest.java | 8 +- .../james/project2atm/AccountTest.java | 2 +- .../project2atm/CustomerManagerTest.java | 2 +- .../james/project2atm/CustomerTest.java | 6 +- .../crawley/james/project2atm/ATM.class | Bin 4835 -> 7043 bytes .../crawley/james/project2atm/Account$1.class | Bin 850 -> 850 bytes .../crawley/james/project2atm/Account.class | Bin 2007 -> 1919 bytes .../james/project2atm/AccountManager.class | Bin 1698 -> 1727 bytes .../crawley/james/project2atm/Customer.class | Bin 1031 -> 942 bytes .../james/project2atm/CustomerManager.class | Bin 1234 -> 1246 bytes .../crawley/james/project2atm/Display.class | Bin 1243 -> 3287 bytes .../james/project2atm/UserInputHandler.class | Bin 990 -> 1238 bytes .../crawley/james/project2atm/ATMTest.class | Bin 4366 -> 4375 bytes .../project2atm/AccountManagerTest.class | Bin 1378 -> 1381 bytes .../james/project2atm/AccountTest.class | Bin 1854 -> 1856 bytes .../project2atm/CustomerManagerTest.class | Bin 915 -> 917 bytes .../james/project2atm/CustomerTest.class | Bin 1346 -> 1350 bytes 26 files changed, 450 insertions(+), 247 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index bdcc53d..ded0884 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -23,31 +23,31 @@ - - + + - - + + - - + + - - + + - - + + - - + + @@ -56,8 +56,8 @@ - - + + @@ -65,6 +65,16 @@ + + + + + + + + + + @@ -83,25 +93,25 @@ @@ -258,21 +268,16 @@ - - - - - - + + + - + - + - + - + - + + - @@ -797,19 +796,19 @@ - - - - - + + + + + - - - - - + + + + + @@ -826,44 +825,44 @@ - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - @@ -871,17 +870,17 @@ - + - + - + - + @@ -909,7 +908,7 @@ - @@ -958,16 +957,6 @@ - - - - - - - - - - @@ -978,106 +967,106 @@ - + - - - - - + + + - + - - + + - + - + - - - - - + + + - + - - + + - + - - - - - + + + - + - - - - - + + + - + - - + + - - + + - + - - + + - + - - + + - + + + + + + + + + - - + + @@ -1086,32 +1075,42 @@ - - + + - + - - + + - + - - + + - + + + + + + + + + + + - - + + diff --git a/src/main/java/crawley/james/project2atm/ATM.java b/src/main/java/crawley/james/project2atm/ATM.java index 122deab..9ee37a6 100644 --- a/src/main/java/crawley/james/project2atm/ATM.java +++ b/src/main/java/crawley/james/project2atm/ATM.java @@ -5,107 +5,205 @@ */ public class ATM { -// private Transaction transaction; -// private Customer customer; -// private Account account; + private int accountNumCounter = 1; + private int customerIDCounter = 1; private UserInputHandler userInputHandler = new UserInputHandler(); private Display display = new Display(); private int currentUser; private boolean running = true; + private boolean loggedIn = false; private AccountManager accountManager = new AccountManager(); private TransactionManager transactionManager = new TransactionManager(); private CustomerManager customerManager = new CustomerManager(); - public void accountTypeOptions () { - switch (userInputHandler.getUserInt()) { + public void startATM () { - case 1: break; - case 2: break; - case 3: break; - } + while (running) { - } + display.printWelcomeScreen(); - public void createAccount (Account.AccountType accountType, int customerID, double amount) { + switch (userInputHandler.getUserInt()) { - accountManager.addAccount(accountType, amount, customerID); + case 1: - } + display.printNewCustomerMenu(); + String name = userInputHandler.getUserString() + userInputHandler.getUserString(); + createCustomer(name , getValidUserInt()); + break; - public void createCustomer (String name, int pin) { + case 2: + display.printLogin(); + loginUserIfValidInfo(); + break; + case 3: + + running = false; + break; + default: + display.printOptionErrorMessage(); + + } + } - customerManager.addCustomer(name, pin); } - public void closeAccount (int accountNumber, int customerID) { + public void accessServices () { - if (isAccountBalanceZero(accountNumber, customerID)) { - accountManager.deleteAccount(accountNumber, customerID); + while (loggedIn) { + display.printReturningCustomerMenu(); + switch (getValidUserInt()) { + case 1: + accountTypeOptions(); + break; + case 2: + display.closeAccountPrompt(); + closeAccount(getValidUserInt(), currentUser); + break; + case 3: + display.transactionPrompt("deposit"); + deposit(getValidUserInt(), getValidUserDouble()); + break; + case 4: + display.transactionPrompt("withdrawal"); + withdrawals(getValidUserInt(), getValidUserDouble()); + break; + case 5: + display.transactionPrompt(); + transfer(getValidUserInt(), getValidUserInt(), getValidUserDouble()); + break; + case 6: + transactions(); + break; + case 7: + loggedIn = false; + currentUser = 0; + break; + default: + display.printOptionErrorMessage(); + } } } - public void accessCustomerAccount () { + public void accountTypeOptions () { - } + Account.AccountType accountType = null; - public void accessServices () { + while (accountType == null) { + display.printAccountTypeOptions(); + switch (getValidUserInt()) { + + case 1: + accountType = Account.AccountType.CHECKING; + break; + case 2: + accountType = Account.AccountType.SAVINGS; + break; + case 3: + accountType = Account.AccountType.INVESTMENT; + break; + default: + display.printOptionErrorMessage(); + } + } + display.createAccountPrompt(); + createAccount(accountType, currentUser, accountNumCounter, getValidUserDouble()); + display.printSuccessfulCreation("Account", accountNumCounter); + accountNumCounter++; } - public boolean isAccountBalanceZero (int accountNumber, int customerID) { + public boolean verifyLoginInfo (int customerID, int pin) { - if (accountManager.getAccount(accountNumber, customerID).getBalance() == 0) { + if (customerManager.getCustomer(customerID).getPin() == pin) { + + loggedIn = true; return true; + } else { + return false; } + } + public void createCustomer (String name, int pin) { - public void exitProgram () { + customerManager.addCustomer(name, pin, customerIDCounter); + display.printSuccessfulCreation("Customer", customerIDCounter); + customerIDCounter++; } - public void logIN () { + public void createAccount (Account.AccountType accountType, int customerID, int accountNumber ,double amount) { + + accountManager.addAccount(accountType, amount, customerID, accountNumber); + display.transactionSuccessMessage(getUserBalance(accountNumber)); } - public void logOUT () { + public void closeAccount (int accountNumber, int customerID) { - } + int closedMessageCase = 0; - public boolean verifyLoginInfo (int customerID, int pin) { + if (!isRealAccount(accountNumber)) { - if (customerManager.getCustomer(customerID).getPin() == pin) { + closedMessageCase = 1; - return true; + } else if (isAccountBalanceZero(accountNumber, customerID)) { - } else { + accountManager.deleteAccount(accountNumber, customerID); + closedMessageCase = 2; + } + + display.closeAccountMessage(closedMessageCase); + } + + public boolean isAccountBalanceZero (int accountNumber, int customerID) { + if (accountManager.getAccount(accountNumber, customerID).getBalance() == 0) { + return true; + } else { return false; } - } public void withdrawals (int accountNumber, double amount) { - setUserBalance(getUserBalance(accountNumber) - amount, accountNumber); - transactionManager.addTransaction(Transaction.TransactionType.WITHDRAWAL, currentUser, accountNumber, amount); + if (isRealAccount(accountNumber)) { + setUserBalance(getUserBalance(accountNumber) - amount, accountNumber); + transactionManager.addTransaction(Transaction.TransactionType.WITHDRAWAL, currentUser, accountNumber, amount); + display.transactionSuccessMessage(getUserBalance(accountNumber)); + } else { + + display.transactionErrorMessage(); + } } public void deposit (int accountNumber, double amount) { - setUserBalance(getUserBalance(accountNumber) + amount, accountNumber); - transactionManager.addTransaction(Transaction.TransactionType.DEPOSIT, currentUser, accountNumber, amount); + if (isRealAccount(accountNumber)) { + setUserBalance(getUserBalance(accountNumber) + amount, accountNumber); + transactionManager.addTransaction(Transaction.TransactionType.DEPOSIT, currentUser, accountNumber, amount); + display.transactionSuccessMessage(getUserBalance(accountNumber)); + } else { + + display.transactionErrorMessage(); + } } public void transfer (int fromAccountNumber, int toAccountNumber, double amount) { - withdrawals(fromAccountNumber, amount); - deposit(toAccountNumber, amount); + if (isRealAccount(fromAccountNumber) && isRealAccount(toAccountNumber)) { + withdrawals(fromAccountNumber, amount); + deposit(toAccountNumber, amount); + transactionManager.addTransaction(currentUser, fromAccountNumber, toAccountNumber, amount); + display.transactionSuccessMessage(getUserBalance(fromAccountNumber)); + } else { + display.transactionErrorMessage(); + } } public void transactions () { @@ -136,35 +234,60 @@ public void setCurrentUser (int currentUser) { this.currentUser = currentUser; } - public void startATM () { + private double getUserBalance (int accountNumber) { - while (running) { + return accountManager.getAccount(accountNumber, currentUser).getBalance(); - display.printWelcomeScreen(); + } - switch (userInputHandler.getUserInt()) { + private void setUserBalance (double amount, int accountNumber) { + accountManager.getAccount(accountNumber, currentUser).setBalance(amount); + } - case 1: - break; - case 2: - break; - case 3: - running = false; - break; - } - } + private int getValidUserInt() { + int val; + + do { + val = userInputHandler.getUserInt(); + } while (val == 0); + return val; } - private double getUserBalance (int accountNumber) { + private double getValidUserDouble() { + double val; - return accountManager.getAccount(accountNumber, currentUser).getBalance(); + do { + val = userInputHandler.getUserDouble(); + } while (val == 0); + return val; } - private void setUserBalance (double amount, int accountNumber) { - accountManager.getAccount(accountNumber, currentUser).setBalance(amount); + private void loginUserIfValidInfo () { + + int customerID = getValidUserInt(); + + if (verifyLoginInfo(customerID, getValidUserInt())) { + currentUser = customerID; + accessServices(); + } else { + display.invalidLoginMessage(); + } + } + private boolean isRealAccount (int accountNumber) { + + if (accountManager.getAccount(accountNumber, currentUser) != null) { + + return true; + + } else { + + return false; + } + + } } diff --git a/src/main/java/crawley/james/project2atm/Account.java b/src/main/java/crawley/james/project2atm/Account.java index 359f7cd..4162726 100644 --- a/src/main/java/crawley/james/project2atm/Account.java +++ b/src/main/java/crawley/james/project2atm/Account.java @@ -12,14 +12,13 @@ public enum AccountType {SAVINGS, CHECKING, INVESTMENT;} private int accountNumber; private int customerID; private double interestRate; - private static int accountNumCounter = 1; - public Account(AccountType accountType, double balance, int customerID) { + public Account(AccountType accountType, double balance, int customerID, int accountNumber) { this.accountType = accountType; this.balance = balance; this.customerID = customerID; - accountNumber = accountNumCounter++; + this.accountNumber = accountNumber; setInterestRate(accountType); diff --git a/src/main/java/crawley/james/project2atm/AccountManager.java b/src/main/java/crawley/james/project2atm/AccountManager.java index 64283f8..803c189 100644 --- a/src/main/java/crawley/james/project2atm/AccountManager.java +++ b/src/main/java/crawley/james/project2atm/AccountManager.java @@ -9,9 +9,9 @@ public class AccountManager { private ArrayList accounts = new ArrayList<>(); - public void addAccount (Account.AccountType accountType, double amount, int customerID) { + public void addAccount (Account.AccountType accountType, double amount, int customerID, int accountNumber) { - accounts.add(new Account(accountType, amount, customerID)); + accounts.add(new Account(accountType, amount, customerID, accountNumber)); } diff --git a/src/main/java/crawley/james/project2atm/Customer.java b/src/main/java/crawley/james/project2atm/Customer.java index 3b6f65e..9eb32cf 100644 --- a/src/main/java/crawley/james/project2atm/Customer.java +++ b/src/main/java/crawley/james/project2atm/Customer.java @@ -6,15 +6,15 @@ public class Customer { private int customerID; - private static int customerIDCounter = 0; + private String name; private int pin; - Customer (String name, int pin) { + Customer (String name, int pin, int customerID) { this.name = name; this.pin = pin; - customerID = ++customerIDCounter; + this.customerID = customerID; } diff --git a/src/main/java/crawley/james/project2atm/CustomerManager.java b/src/main/java/crawley/james/project2atm/CustomerManager.java index 0e5e65e..c0a5a07 100644 --- a/src/main/java/crawley/james/project2atm/CustomerManager.java +++ b/src/main/java/crawley/james/project2atm/CustomerManager.java @@ -9,9 +9,9 @@ public class CustomerManager { private ArrayList customers = new ArrayList<>(); - public void addCustomer (String name, int pin) { + public void addCustomer (String name, int pin, int customerID) { - customers.add(new Customer (name, pin)); + customers.add(new Customer (name, pin, customerID)); } diff --git a/src/main/java/crawley/james/project2atm/Display.java b/src/main/java/crawley/james/project2atm/Display.java index 59d6e5e..15031b5 100644 --- a/src/main/java/crawley/james/project2atm/Display.java +++ b/src/main/java/crawley/james/project2atm/Display.java @@ -19,6 +19,16 @@ public void printNewCustomerMenu () { } + public void printSuccessfulCreation (String newCustOrAcct, int ID) { + + System.out.println("Account created.\nYour " + newCustOrAcct + " ID is: " + ID); + } + + public void createAccountPrompt () { + + System.out.println("Enter initial balance: "); + } + public void printLogin () { System.out.println("Enter ID: "); @@ -26,15 +36,76 @@ public void printLogin () { } + public void invalidLoginMessage () { + + System.out.println("Error: invalid login info."); + + } + public void printReturningCustomerMenu () { - System.out.println("Press 1 to open a new account.\n Press 2 to perform a transaction on an existing account."); + System.out.println("Press 1 to Open an account.\nPress 2 to Close and account.\nPress 3 to deposit." + + "\nPress 4 to withdrawal.\nPress 5 to transfer.\nPress 6 to get a list of transactions." + + "\nPress 7 to logout."); + + } + + public void closeAccountMessage (int closedMessageCase) { + + switch (closedMessageCase) { + case 0: + System.out.println("Error: cannot close account with balance."); + break; + case 1: + System.out.println("Error: invalid account ID."); + break; + case 2: + System.out.println("Account closed successfully."); + break; + + } + } + + public void closeAccountPrompt () { + + System.out.println("Input ID of account to close: "); + + } + + public void printAccountTypeOptions () { + + System.out.println("Press 1 to for a checking account.\nPress 2 for a savings account." + + "\nPress 3 for an investment account"); + } + + public void transactionPrompt (String transactionType) { + + System.out.println("Enter account ID: \nEnter amount to " + transactionType + ": "); + + } + + public void transactionPrompt () { + + System.out.println("Enter from account ID: \nEnter to account ID: \nEnter amount to transfer: "); } - public void printTransactionMenu () { + public void transactionErrorMessage () { - System.out.println("Press 1 to deposit.\nPress 2 to withdrawal.\nPress 3 to transfer.\nPress 4 to Close an account."); + System.out.println("Error: invalid account number."); } + + public void transactionSuccessMessage (double balance) { + + System.out.println("Your new balance is: $" + balance); + + } + + public void printOptionErrorMessage () { + + System.out.println("Invalid option"); + + } + } diff --git a/src/main/java/crawley/james/project2atm/UserInputHandler.java b/src/main/java/crawley/james/project2atm/UserInputHandler.java index d1c41ff..fba6f42 100644 --- a/src/main/java/crawley/james/project2atm/UserInputHandler.java +++ b/src/main/java/crawley/james/project2atm/UserInputHandler.java @@ -1,5 +1,6 @@ package crawley.james.project2atm; +import java.util.InputMismatchException; import java.util.Scanner; /** @@ -11,14 +12,24 @@ public class UserInputHandler { public int getUserInt () { - return scanner.nextInt(); - + try { + return scanner.nextInt(); + } catch (InputMismatchException e) { + System.out.println("Error: Please input a number"); + scanner.nextLine(); + return 0; + } } public double getUserDouble () { - System.out.println("Enter an amount: "); - return scanner.nextDouble(); + try { + return scanner.nextDouble(); + } catch (InputMismatchException e) { + System.out.println("Error: Please input a number"); + scanner.nextLine(); + return 0; + } } diff --git a/src/test/java/crawley/james/project2atm/ATMTest.java b/src/test/java/crawley/james/project2atm/ATMTest.java index 46602d0..fd35e7a 100644 --- a/src/test/java/crawley/james/project2atm/ATMTest.java +++ b/src/test/java/crawley/james/project2atm/ATMTest.java @@ -16,7 +16,7 @@ public class ATMTest { @Test public void createAccountTest () { ATM atm = new ATM(); - atm.createAccount(Account.AccountType.SAVINGS, 1, 100); + atm.createAccount(Account.AccountType.SAVINGS, 1, 1, 100); assertNotNull("An account should be created.", atm.getAccountManager().getAccount(1, 1)); } @@ -32,7 +32,7 @@ public void createCustomerTest () { @Test public void closeAccountWithNoBalanceTest () { ATM atm = new ATM(); - atm.createAccount(Account.AccountType.SAVINGS, 1, 0); + atm.createAccount(Account.AccountType.SAVINGS, 1, 1, 0); atm.closeAccount(1, 1); assertNull("The account should have been closed.", atm.getAccountManager().getAccount(1, 1)); @@ -42,7 +42,7 @@ public void closeAccountWithNoBalanceTest () { @Test public void closeAccountWithBalanceTest () { ATM atm = new ATM(); - atm.createAccount(Account.AccountType.SAVINGS, 1, 100); + atm.createAccount(Account.AccountType.SAVINGS, 1, 1, 100); atm.closeAccount(1, 1); assertNotNull("The account should not have been closed.", atm.getAccountManager().getAccount(1, 1)); @@ -73,7 +73,7 @@ public void verifyIncorrectLoginTest () { public void depositTest () { ATM atm = new ATM(); - atm.createAccount(Account.AccountType.SAVINGS, 1, 100); + atm.createAccount(Account.AccountType.SAVINGS, 1, 1, 100); atm.setCurrentUser(1); atm.deposit(1, 50); @@ -85,7 +85,7 @@ public void depositTest () { public void withdrawalTest () { ATM atm = new ATM(); - atm.createAccount(Account.AccountType.SAVINGS, 1, 100); + atm.createAccount(Account.AccountType.SAVINGS, 1, 1, 100); atm.setCurrentUser(1); atm.withdrawals(1, 50); @@ -97,8 +97,8 @@ public void withdrawalTest () { public void transferTest () { ATM atm = new ATM(); - atm.createAccount(Account.AccountType.SAVINGS, 1, 100); - atm.createAccount(Account.AccountType.SAVINGS, 1, 100); + atm.createAccount(Account.AccountType.SAVINGS, 1, 1, 100); + atm.createAccount(Account.AccountType.SAVINGS, 1, 2, 100); atm.setCurrentUser(1); atm.transfer(1, 2, 50); @@ -111,7 +111,7 @@ public void transactionTest () { ATM atm = new ATM(); atm.createCustomer("William Williams", 1234); - atm.createAccount(Account.AccountType.SAVINGS, 1, 100); + atm.createAccount(Account.AccountType.SAVINGS, 1, 1, 100); atm.setCurrentUser(1); atm.withdrawals(1, 50); atm.deposit(1, 20); diff --git a/src/test/java/crawley/james/project2atm/AccountManagerTest.java b/src/test/java/crawley/james/project2atm/AccountManagerTest.java index 8c7a2ba..0c58b9e 100644 --- a/src/test/java/crawley/james/project2atm/AccountManagerTest.java +++ b/src/test/java/crawley/james/project2atm/AccountManagerTest.java @@ -19,7 +19,7 @@ public class AccountManagerTest { @Test public void addAccountTest () { - accountManager.addAccount(Account.AccountType.SAVINGS, 100, 12); + accountManager.addAccount(Account.AccountType.SAVINGS, 100, 12, 1); assertNotNull(accountManager.getAccount(1, 12)); } @@ -27,9 +27,9 @@ public void addAccountTest () { @Test public void deleteAccountTest () { - accountManager.addAccount(Account.AccountType.SAVINGS, 0, 12); - accountManager.deleteAccount(2, 12); - assertNull(accountManager.getAccount(2, 12)); + accountManager.addAccount(Account.AccountType.SAVINGS, 0, 12, 1); + accountManager.deleteAccount(1, 12); + assertNull(accountManager.getAccount(1, 12)); } diff --git a/src/test/java/crawley/james/project2atm/AccountTest.java b/src/test/java/crawley/james/project2atm/AccountTest.java index cabc2cd..382c457 100644 --- a/src/test/java/crawley/james/project2atm/AccountTest.java +++ b/src/test/java/crawley/james/project2atm/AccountTest.java @@ -9,7 +9,7 @@ public class AccountTest { - Account account = new Account(Account.AccountType.SAVINGS, 100, 12); + Account account = new Account(Account.AccountType.SAVINGS, 100, 12, 1); @Test public void balanceTest () { diff --git a/src/test/java/crawley/james/project2atm/CustomerManagerTest.java b/src/test/java/crawley/james/project2atm/CustomerManagerTest.java index 54c8474..aecf9fd 100644 --- a/src/test/java/crawley/james/project2atm/CustomerManagerTest.java +++ b/src/test/java/crawley/james/project2atm/CustomerManagerTest.java @@ -11,7 +11,7 @@ public class CustomerManagerTest { @Test public void testAddCustomers () { CustomerManager customerManager = new CustomerManager(); - customerManager.addCustomer("William Williams", 1784); + customerManager.addCustomer("William Williams", 1784, 1); assertNotNull("The customer should have been added to the list.", customerManager.getCustomer(1)); } diff --git a/src/test/java/crawley/james/project2atm/CustomerTest.java b/src/test/java/crawley/james/project2atm/CustomerTest.java index 3d2af21..3c73d18 100644 --- a/src/test/java/crawley/james/project2atm/CustomerTest.java +++ b/src/test/java/crawley/james/project2atm/CustomerTest.java @@ -17,7 +17,7 @@ public class CustomerTest { @Test public void customerNameTest () { - Customer customer = new Customer("William Williams", 1784); + Customer customer = new Customer("William Williams", 1784, 1); assertEquals("The name should be William Williams.", "William Williams", customer.getName()); @@ -25,7 +25,7 @@ public void customerNameTest () { @Test public void customerIDTest () { - Customer customer = new Customer("William Williams", 1784); + Customer customer = new Customer("William Williams", 1784, 1); assertEquals("The ID should be 1", 1, customer.getCustomerID()); @@ -33,7 +33,7 @@ public void customerIDTest () { @Test public void customerPINTest () { - Customer customer = new Customer("William Williams", 1784); + Customer customer = new Customer("William Williams", 1784, 1); assertEquals("The PIN should be 1784.", 1784, customer.getPin()); diff --git a/target/classes/crawley/james/project2atm/ATM.class b/target/classes/crawley/james/project2atm/ATM.class index 69d17de750bc1532594b5dbbbd5d58b40ce02c41..19060737fe41ae96b81130963acc4a1abd1bcbb7 100644 GIT binary patch literal 7043 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 Js=8%${{?R?au@&r literal 4835 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 QjZtGT%KzpBF5J5CAIBe+n*aa+ diff --git a/target/classes/crawley/james/project2atm/AccountManager.class b/target/classes/crawley/james/project2atm/AccountManager.class index eca2459f792d4e59972295f015a2fb72740efd8b..4e8bb4f247c41766bddf56d09072f0239e7f118a 100644 GIT binary patch delta 454 zcmZus%PvDv6kX@Gr>Cx4HEF4M)}vSJ)oL$V+^TwOI}|aZ%xDwZq4)qJ&L2n&4TO-8 zF!vQcpkE*&_PL3UOx9W1>ydSCeDA)($Ir_ffFw#f{748)>(G#BK^u|+DIFY^y38n; zZN(hY3NlKVSFoUjMFCqNdsS$#C7EV@TFSg;VR_E{@{%3;_RHmJy;3XIPY#YwWrI~% zPVQ;9k!9o!tYB3jXJ8HM1~#y1U<=y@3JQwIGnkSw^P%LbvWsJQ;i0*~=p)>(;JYz1 z;12L-c%C43?n%+mL8vx?z7Rk=I*BD|D5VfW7rl!0V*t!yVGKI%Acimuw{sgI#z~LB zBn;B+jyzn(c`Y-FsN=GmZ8l=$S8cY_p<#@;0oOOY0^^A<$}&t~QhxHY(qGkQtbGz4nfz;I{p-KHRbN-<-+!K8feeKRwWJK`2%1zSHH;ZD5yFhyOV+|f6_ZR^ zn6|`>g;`6?8RiY%MgBuA_|vLWXI%eECDpQjt`08sky`YR^-XMvoWn9JhDC=})*RN^ zaM)zaVcSBUoWk{$a_@^}C+e(-kqC&!9|*k=-b=U*p(n~8F}rti*E9**21wz0>S&fN zPDn6H3#~Hk)AI`W827X@2&y$4y zz|RX@Gzn2TlzmZQ7)pPNk7Ae+|2urT^QX_2^x2X=`=8#mdQDP1HKTOMjEG;GbZcK| F`332ZGu8kA diff --git a/target/classes/crawley/james/project2atm/Customer.class b/target/classes/crawley/james/project2atm/Customer.class index 4de1c19e65a0dc1bf427a3c12d807b05908f61b0..d82aeacdc7c2ef443fe3e7eba718e0eca9baf1b6 100644 GIT binary patch literal 942 zcmah{U2D@&7=BKYC2LGw-KTS_x-UpFFd*J3yO{`uGKER+(->+>nv676{7+suSQ&WX z5Aa8c&pAo0bQKAl^L{?h^S&oPe|`S}-~~=>n0Va43ZBU0sXPuW99lRMu%pSi%tvw2 zc`YD10!9{&VuAJUF#Hq-X_yUy%d$wa!Ak-CD#--QS4ozXX97F!-J(v%>k;HU|3Hwn zZj!|plTkk|-iQ5E!RAqz_QE2OejPN*kI7izxEmGW=QREj3@Kq8Tow5+j>_j@ISS5e zl@wu(V$=2RO5_BDcqd0OTqW0JgYtFP;|iK|XM}Ps_GLaPqWDcB zCuq(x&*Xv}I5>9DfbHNORvlPa6*&C=AOfxVg5UP#pxm$P^>D!FG5K&hG>Jw_llbZ; z1#g*k(1gH!S}F4e?@j*}!atot^Y^FF{q_{bHRBrAcy1FF>@nyy&|>EUZ18I_>R0`Y ztkWZs;uFe}jGD5f7M+|M%va23%*dRnSm#`}itdncSK)70Re$i!8ed?Gx+<)Iw`5%L zZ=ijnQOPz{u&rR6s-TA9?}vws$Q8_m>~Zo%Ax9K)@(&?$JW0HZM>W>pLiDc-LcFCy R_Lepqi_O8(=6yxc{tXlejj{j$ literal 1031 zcmah|U2D@&7=BKYCT&dDb#9&7)qQJQ!GL(@*iA(!lqpOG-Yt!xrnJdOQ^o(}gw*}a_%$&qy)X*SrsIB)y!84bg&Ok4Ur5HF+?qp9SYJfL#D+2T~n zOy`7hQpFR0lsjev3GDNDn)t!9P+BU_TOZ1SIatH4gBx%hlu>eE%TPo~;NbuE1lAW* zf8Lk&vCkW{c)OLAh#@My+JxD!bND0a3UcLgx$Yw7)^LAIzY&cV^JrpJ5o6 zufD*Tq40^{HB=dEC@_}EQX$qlajK}}CN@~z%W#-&G9#km6>2A$H8O4yA>%z|uJN0x zI2R1Is&13#wnD9CU4Kx`993W&w{k3(tK=!Pze4-SO(xb<#fE}$vW6T+5d01+asUe< zb^2Zwa!4V^{}3WgN#Z)KW>|j<(LXE+X{{8}Sb4axeAr!axQM&h&6yiqhEG;vS)zVUVqUs_a7j^SUb^*U4@T|D4U9$HT*;-yCHc9jMV>C3 zKQO*w6b@lvWngAtU=Y&U!oaedfi+TFX7UGSNqs>E0R}OkxB^6$L7YJX$OEclkY7t4ZN?_GmaMfB2%9Ho8C;$L-FdT*e diff --git a/target/classes/crawley/james/project2atm/Display.class b/target/classes/crawley/james/project2atm/Display.class index 4c34744260e223fb6e82587ab124e70f2274bc0d..258d07bcdb3a705463beedb351705a82c9825f04 100644 GIT binary patch literal 3287 zcmai0e^V1j7=9NbIbu)&MMZ=|w1QSrL8XGW)dV#yziL!UZEKgyCLCPuGItv-pQ9h5 zGySja49>JO{Q&(?oj$wwgA3ePhTPrmzW40&KJT+{^3T72{!K)8$ScqURr+a}o*4AB zK+mXZ(3b{%m8X>g<*8!Os=BWkw65+O>hiTg&kd>>^unN*2E8(9)1Yq*+A`={gI*i- zok8Cl^n*cfRQQhu@jPwk$zs&^z;(d^E0)jSIby%G%UdESwS8|_SaOcbR;gkKZHMnK0io^NuG|!k z<+Vi3@`Z32oz;_T;$68DNX+}I!tF3RucvDr%MwA*=s0CxaA|vZVPtw`m%rsDhr7*E zO#-sHR8`Ce+z@2le`Hxw5k3~jsHa+C#Hx&ju|Jmrp)|SR@FsK^)gjM??D#JB?xsC#IbINhCa>hCHNio>SdXU5JOJ82O>%2*mA7M+ z(*QB6P>hJ`i~Y7(Z!0Yz{Gjx?8*obvsm5WYT1w>O~UNV6+)IW3sT} zgNJ$BY?O;)l_lo3D3t%C%I$1V% z%t$J=O(9&VR@7irOSNc5Ml&5{Jd7INETcbS8IZ_&Tev32e`wc35wKQPmcwHG=&F{W zF4|rI6(ZU0C|Tawa;J_1%bj@ouA0_0ZwNo0yr(9cLYmxk>_D1cBMb@c7Q|r-Dh$lM zjs)wOC?$)#t|v`x=a`t@I2Hr3N7Ik8gP>R(OH^0+)y*L31+XGA+xotwyd+M!pK zWnD(6s$pX@J>5qbP5y8DW_0H8e5`M)?%p+3+Yh9G@q6I{M(4uTYkQ>))$-A$1#jUS zU|3^xPotCQj_QC|A8*6xbw; z8poHi`a45RbuC=4U{u1L;eO)Adt$%gp@*h$?bDNebQRCVFo3SnM;I}>p1iz(X!Uac z@6)nNC2;5y+qdIROxL@9P3PMZEwU1lSPhpG^S{CV(?^ z16))}0?{gd3P68Re(OCML;VL-xQWluNnFMbsCYmFU0Z~FF96`8hBrfq2p(W`lRnnT zPSGuz)tpO74qZZ=$^gC$?&B%mheCXkfOH9Q`U65-0oW9TxRwGu6ykOQ*v0Bh2CEqW z-AsWTvYN{V8O#7F0c1WCWFEf-!;<_Ay_6r8F8zut(S3bYW+S?Uk22P6Rreum@C%Ko z$6@_=QazrHw(Zs49LLW;q6HcQ%vD;1A0NQR4{44*$Ed8SjD*`Io=Cc(adk zV}(KkQ?g8?+b{<%NZ9lm~MgT>rAE(vOz{OK;8g^XM#MW&!TjnQ%;|>(NwyZ ukmdCQ!ZFP{qXH+inaXrD$#fJ3_yV|$9%YlfoI!FABwLvzAEOFARQ?a}@Wna+ literal 1243 zcmaizTTc@~6vxkS>vk!ZR!}Y~QxPes-H0S6Vtgr>kQ5}AfDgV5%TR{w&NQ>L7Cx3f zXySt(zz=0Sv%B5W*l3e>_S}Bwe`ZgA{r>S20Jh<|3zM)^gk`wzzylW^!iodbfvN+K z99VVWaRJr}@Pxp`8zF^xOJKCNaYA6Mq0TvhnWm8ZFb>bSK4xbDdMZujv*3hjVeQO0 zW-diUV72LM)(!ZLcf~>;c^$2;xNo+Y3B6qrbpm#?gM^M2(wy?ZS0QitnsZ5DE^!|6 zZX=Ei`t<>qF#$JmH&t6;&QfB0;3n2m$o61n3OLqGM$9)t$qdj^vG(~pVYQbs5%nwf znU$afQw3NrK@BztoMwWm?vdtEL|@PgrIWAZUFv75>REIviRhk`zv3^cQFQNGn0f&= zOYjt)VfQ_0xTX@X<~1cSnVLuYht_gaYk$`oAA1rIqB>ksMy&|u`zn^E?$R{AWt()k zMxi05nEvckVU48xT0{nKDz7B)=@$B&cT|KD^O+FW73T6BUm^>7?qrmNeZh6lxoulF z0u^!Frzea+^}h>1VAkHg7cklO-k;h17;v?2BEv&mLlt9SzL_KoF5B4(w_(EU`f2Yy%@FaMSZ+-{z1s_IWCQGuZ zv-n&}6QB$gv`|4_{0g&eaq%mRR7StSSRdeG2(YJv$$dyMhs@=WMg}Qc$T&jmIWYj6 zhEar-5mrIi+$~@^2hI-%7XATTK;R<6mWKlG=D>k5odIR(m@5dX-h%YUyf++D90FNG O$of#o0uDa{i+=!0$O`2E diff --git a/target/classes/crawley/james/project2atm/UserInputHandler.class b/target/classes/crawley/james/project2atm/UserInputHandler.class index 96a31ba72c95f63715cb95a7ed2cb95885e98115..98363d1cd172fce40a0f844af24dfe02cb2dfd70 100644 GIT binary patch literal 1238 zcmb7DYflqF6g|@xwk^x61w_iDRK-$}Rm2w{ihzNnC`lFL$6=Yk;&!*$ohtk%5|k(; zn)n0!QN}y76{=vOU+&yFdmrbXyYv0Wmu~>3v6x0Dt{E6h;W~EUH*<+b?LZPB?4y|TIU?kk@F1k;`jzb zV$t6c44q}i6VL0_O%c50n=T=lvTt*Dg9nbfH^7A4aYBZPvK{dEuGqJBc~yi~E%0}R zEvLAwTCYM8ta`P&T;bl9D*|en-WD=~rEa^*z^Fr^iJ#6`bHXZ@_RjL2Eo##7J<4sb zNN&Gf<2B8IG$5!^Zpp7}rZmXX8CsEn<83qa6vw0bF88*r2vuAvem$_oGe^zX`zP5+ zrI?8fvJBnl)H86;#C<$a0S`@dq1(g^1{m^Zp%)KgVit1@gUdnS2Q&F~SMX5e9VJtq z=RK{vfk!6h@z}%@6ih52Z{jHm45fb;o1sfn(KEl;R7?2{s_chSR2gE9N7G08IKHJx zlSG17NuvJZg&)-4Vt8Utu6k;Xex2-DiFHz4o|edJ7F4+jrtF#ua#ia_i{{;^`bkw^ z{fe|G<^Ec6LR~OQZ=sVO3h`Islb0Z$mPNLQZVUPjWJ@PtrLTy+IYRsdiO*>HNS|Zq zC956_kfP8w^pR&$GNs@W`srl2jDbeEkRnxVuJj2l$7nq$A0e4Z9U~n9ZLi}8I@v%H z2I9JWA6h7-i;!+=k|CR=l0CXrAC*&B4ud)`*JwIK8LeO|28IbALH=R_=HWR49fyA* xkRt+v)NF_d3=@Ho{~$1mLW95*ol2c#G;sR|@*@?AF8O0k3MNk#yrQG7{sg=z0(bxb delta 475 zcmZ9G%Ps?97>1uIItRZRrOsuXslzzbsS6vrvb3_C$}C8YM5fZ6YmnZAg@lM$ShxTe zVCfFrg7|)w(b)Xo`+wj2zIop54|D(R>*WO3jA7pTJ?`kf+z|vO;!{>s|uGjMTTz0I)jQ0 zisCOvad_zkkr$j_)S|fLnQSVy*jDT?tk`9=kxzZDI#F1U4=!qzYG}}|KfX;LX9iI1P`+T17^Xw*kAAW4}wp^mh-t7UFcJS<#7dsz(gp+r` z!wMks0&D#lwrc7L+?{heC_zRTUgYSdxBm&|kf+-S0&LaUmK!=6H>2#wnNdB6VjPq7 zBusqV;1yO86!}o+lSBNOkX0q5;YWt(tcgz=yxRE^mMwA%j$W|*kRT=&V-nWj!#Y&d z2-+}7@`hxFU5Uy+jyJK`l29kdCONi<+5X#sc`U$!MOq6_wLsN^3dOc!md>|&!m>Fb z$4RhjaCA4#+4VE0!I$dZ{2HR3hy>Pj#gh_t5yBo~*r$~opoE4gN75d!~Yl@hel_8cPb*PYTMo0t|S+|NHs*86o6VzAe z772E!Z_q_L^-((ZuF5ipIt|0j`FHdeEXR@kfun)Jd{pmJD?GP>q0E~AC zwKq7olCNNbH#Maq2pu6T&|#>51$iveZU_^sD+k$ux2ZJ-?zfM**62Z+N8VsXP+oI4nJHUc#>F^B+3 cAqEy8DaXLeAP+QHfkA~q3CU>H$!e_j09}_B6#xJL diff --git a/target/test-classes/crawley/james/project2atm/AccountTest.class b/target/test-classes/crawley/james/project2atm/AccountTest.class index 9d8163472efb06f64a47cffe48d33862721e59f2..089785a049a3adfcc5906604e3febc43b4efcda5 100644 GIT binary patch delta 61 zcmV-D0K)&i4!{nui~|BSD3S3ZlduC1v%Ujm0UJjE2mk>9000>(w*Ubuy8r@NvH$}V T00a;W1d}}lCIK0OaA#>9_GlQ%H)Z$7}B!YJj&z|O$Pz`!7(wVi=cYc~T^$rss#H#f8HWds1fl@ONz diff --git a/target/test-classes/crawley/james/project2atm/CustomerManagerTest.class b/target/test-classes/crawley/james/project2atm/CustomerManagerTest.class index e5b2c719a663c0be7f8e9f40955206a50c3586f6..29b777a1e44e35ec8f137ac98a49e38170a6f58b 100644 GIT binary patch delta 120 zcmbQtK9zlg9+RlJhEG;vS)zVUVqUs_a7j^SUb?mCWGAM360r;{3``6R46?f!m?F0` zF#Bi=u?VvLV3};rtZXU7z|SDVAP6KG7{nmT7zBWP1_llWQ3hcK5e7ye&A`A0q{VGcZL8 zF$=Q&V43`tSy7sgL5x9?L4rXPC?^I{0i?x&Jif_>EQ)ei^lfKg@e$(S(%#0vIr#yL zh^!0)AA=mw5Ct5Dh|9_`2my^21{xXxb%qR*GcL0z1D&D9AkCnGWP%Lb8G@{a05>Ed AJOBUy delta 198 zcmX@cb%<-jJ|+<{4WF#UvPAuy#JqI<;F6-uymaf$mze|^g+duv7?>Cs7$kQyFhvS6 z3$p!~{GC}*nwLS0K>`Rxfl^`+1wdLH$m5-C%%TX?#)_^jodu*#4yZ{1tG2~JZQ)RD a(g@qGvnT_#sWC_~Xdr2mhTA5}Y6t+7wH{vp