diff --git a/ATM b/ATM new file mode 100644 index 0000000..626b7c3 --- /dev/null +++ b/ATM @@ -0,0 +1 @@ +3VlfT9swEP80ldgDKHFISx9LgQ1pm5DQtPFoEpN4pHFlu027T79z4jSxk5bSJaUaL9jXO/t8v/tnZ+BNZ6vPHM/jbywkyQA54Wrg3QwQci99B/4pyrqgDF1NiDgNNVNFeKR/iCaWbAsaEmEwSsYSSecmMWBpSgJp0DDnLDPZXlhi7jrHEWkQHgOcNKk/aSjjgnpVHkvRvxAaxeXOrqN/ecbBa8TZItX7DZD3kv8VP89wuZbmFzEOWVYjebcDb8oZk8VotpqSRNm2NFshd7fl143enKRyH4FLrYZcl0cnIVhCTxmXMYtYipPbinqdH4+oBRyYxXKWwNCFIVlR+as2flIsFz7MfhMp1xpmvJAMSNXaXxmba6lCG6XC1vNokmALHmgupD0E84hoLn9jS/BRwmZE8jWwcJJgSZfm6lg7S7Th24g+MAr7Ikc7Niph1m7t++YKhQZaqLI6DGpaVKQci3Zc9JGWOFloZX8IwgdomMABr0O6hGEkc4sVpGduU2CLFr4a6VxtNsl13VcixTNQZ/IoOU2j/cXm2ZtClheaPpbFVJLHOc4BzyDlmH6nbUW4JKvdftP0iFLABBY5Gtmsin63jP64FvljZ7sPGfDvwNpvYD15FpLjQHneJAjAFLJb5FtIQYKFgJQLaqUx4VTtDSeJWSjevey+Gp2YDyDfdIIN4G85wSb7/4sXDFsj/syKuCmEEnKK2acWCJTMvQrr+8pnmnAYVr8WkLIA/Izx8OzT+6O7WOE76Lm39IkBbwf/eM/gd90OcN8UtE5LsHOB/FoVdnuvwaN+Cu7IhObSjrQOKy7qB4f/AQavrFFHgMHrB4bRB+BgtqRFr909NldHC5FRo0SdZ1TGNxxneeq/b+1TzkMyZ4LKiuUuZItnAG7v/jGISfB6jROcBkWRee8C0E2l4oVwcbg0tGOUpaoCUCGZMtkEbpp4ncB04N311iQdJHpinRTau5NCHVRUt5dMfuxL7biXbOGP7WzRV7Jw/V4SuYFCkdRT0KlWa9X0SbMeASIryXeB2kTllRrDXMEhtoPqWuE2tN58LPYrfwc3DIrtD8V93CgSLZlsylLB3pGCU6KuPYvaE8ibIuAlQuY3kZ1yH5wpPevK2ZIn3ZY8OewiTQ6PHaCuEZ7FDaXfCHUvTyVExzbQ3s4YtfkhajuN0tIwtTB9gPYob3DuoNVRDU4nL4b6aeCAR8Pas8Spvx7aVRW1hDHq7QGhCSVNl0Qnv4/Ob9tuJzXTXLVYxuvCMONeEpxxo++/yejpU4Z9pffG/X3LaD5wC7w8Ce+0Xv68lpe/8htP3Tvtrvkg72w++ObX3FOwy6Z53xG1o5aoPcAuMK2+dhbOVX1S9m7/Ag== \ No newline at end of file diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000..fb5ef36 Binary files /dev/null and b/src/.DS_Store differ diff --git a/src/main/.DS_Store b/src/main/.DS_Store new file mode 100644 index 0000000..b379886 Binary files /dev/null and b/src/main/.DS_Store differ diff --git a/src/main/java/Account.java b/src/main/java/Account.java new file mode 100644 index 0000000..1b5da47 --- /dev/null +++ b/src/main/java/Account.java @@ -0,0 +1,39 @@ +import java.util.ArrayList; + +abstract class Account { + private double balance = 0; + + private ArrayList history = new ArrayList(); + + public double checkBalance() { + return this.balance; + } + + public double addFunds(double n) { + this.balance += n; + history.add("Deposited: $" + n); + return this.balance; + } + + public double withDraw(double n) { + + if (balance - n >= 0) { + System.out.println("Successful"); + history.add("Withdrawn: $" + n); + balance -= n; + } else { + System.out.println("Insufficient funds"); + } + return this.balance; + } + + public String printHistory() { + String a = ""; + for (String x : history) { + System.out.println(x); + + a += x; + } + return a; + } +} \ No newline at end of file diff --git a/src/main/java/CheckingAccount.java b/src/main/java/CheckingAccount.java new file mode 100644 index 0000000..e55e6a3 --- /dev/null +++ b/src/main/java/CheckingAccount.java @@ -0,0 +1,5 @@ +public class CheckingAccount extends Account { + + +} + diff --git a/src/main/java/Console.java b/src/main/java/Console.java new file mode 100644 index 0000000..1d7445a --- /dev/null +++ b/src/main/java/Console.java @@ -0,0 +1,223 @@ + +import java.util.ArrayList; +import java.util.Scanner; + +public class Console { + + + public void Start() { + mainMenu(); + } + + User currentUser; + int currentAccount; + + + public void login() { + ArrayList users = UserWarehouse.getList(); + + Scanner loginInput = new Scanner(System.in); + System.out.println("Please enter Username to login: "); + String userName = loginInput.nextLine(); + System.out.println("Please enter a password: "); + String userPassword = loginInput.nextLine(); + + + for (User user : users) { + if (user.getUserName().contains(userName)) { + if (user.getPassword().contains(userPassword)) { + currentUser = user; + accountMenu(); + } else { + System.out.println("User does not exist.\n"); + mainMenu(); + } + } else { + System.out.println("User does not exist.\n"); + mainMenu(); + } + } + mainMenu(); + } + + private void mainMenu() { + int userinput; + boolean continueInput; + + Scanner input = new Scanner(System.in); + System.out.println("\n-------Welcome-------\n" + + "1: Create Account\n" + + "2: Login\n" + + "3: Exit"); + enterInteger(); + userinput = 0; + if (input.hasNextInt()) { + userinput = input.nextInt(); + } else { + System.out.println("Please try an integer."); + mainMenu(); + } + switch (userinput) { + case 1: + UserFactory.createUser(); + login(); + break; + case 2: + login(); + break; + case 3: + exit(); + break; + default: + System.out.println("Not a valid selection"); + mainMenu(); + } + } + + public void accountMenu() { + System.out.println("-----------------\n" + + "1: Checking \n" + + "2: Savings\n" + + "3: Investing\n" + + "4: Main Menu"); + enterInteger(); + + Scanner input = new Scanner(System.in); + int userInput; + userInput = 0; + if (input.hasNextInt()) { + userInput = input.nextInt(); + } else { + System.out.println("Please try an integer."); + accountMenu(); + } + switch (userInput) { + case 1: + currentAccount = 0; + accountActions(); + break; + case 2: + currentAccount = 1; + accountActions(); + break; + case 3: + currentAccount = 2; + accountActions(); + break; + case 4: + mainMenu(); + break; + default: + System.out.println("Not a valid selection."); + accountMenu(); + } + } + + public void accountActions() { + System.out.println("-----------------\n" + + "1: Check Balance\n" + + "2: Add Funds\n" + + "3: Withdraw\n" + + "4: Transaction History\n" + + "5: Transfers\n" + + "6: Back\n"); + + enterInteger(); + Scanner input = new Scanner(System.in); + int userInput; + userInput = 0; + if (input.hasNextInt()) { + userInput = input.nextInt(); + } else { + System.out.println("Please try an integer."); + accountActions(); + } + switch (userInput) { + case 1: + //check balance + System.out.println("$" + currentUser.accounts.get(currentAccount).checkBalance()); + accountActions(); + break; + case 2: + //add funds/deposit + System.out.println("Amount to be deposited: "); + double depoFunds = 0; + if (input.hasNextDouble()) { + depoFunds = input.nextDouble(); + } else { + System.out.println("Please try an integer."); + accountActions(); + } + currentUser.accounts.get(currentAccount).addFunds(depoFunds); + accountActions(); + break; + case 3: + //withdraw + System.out.println("Amount to be withdrawn: "); + double withDrawFunds = 0; + if (input.hasNextDouble()) { + withDrawFunds = input.nextDouble(); + } else { + System.out.println("Please try an integer."); + accountActions(); + } + currentUser.accounts.get(currentAccount).withDraw(withDrawFunds); + accountActions(); + break; + case 4: + System.out.println("Transaction history:"); + currentUser.accounts.get(currentAccount).printHistory(); + accountActions(); + break; + case 5: + tranfers(); + break; + case 6: + accountMenu(); + break; + default: + accountActions(); + } + } + + private void tranfers() { + int userInput; + int toAccount = 0; + Scanner input = new Scanner(System.in); + + System.out.println("-----------------\n" + + "Transfer to: \n" + + "1: Checking\n" + + "2: Savings\n" + + "3: Investing\n"); + + enterInteger(); + + if (input.hasNextInt()) { + toAccount = input.nextInt(); + } else { + System.out.println("Please try an integer."); + tranfers(); + } + + double funds = 0; + System.out.println("Amount to transfer: "); + if (input.hasNextDouble()) { + funds = input.nextDouble(); + } else { + System.out.println("Please try an integer."); + tranfers(); + } + currentUser.accounts.get(currentAccount).withDraw(funds); + currentUser.accounts.get(toAccount - 1).addFunds(funds); + accountActions(); + } + + private void enterInteger() { + System.out.println("Please enter an integer."); + } + + private void exit() { + System.exit(0); + } +} diff --git a/src/main/java/InvestmentAccount.java b/src/main/java/InvestmentAccount.java new file mode 100644 index 0000000..bc9cf89 --- /dev/null +++ b/src/main/java/InvestmentAccount.java @@ -0,0 +1,2 @@ +public class InvestmentAccount extends Account{ +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 05e41a9..987ddd1 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,9 +1,14 @@ -/** - * Created by iyasuwatts on 10/17/17. - */ +import org.junit.Test; + public class Main { - public static void main(String[] args){ - + public static void main(String[] args) { + + + Console atm = new Console(); + atm.Start(); + + } + } diff --git a/src/main/java/SavingsAccount.java b/src/main/java/SavingsAccount.java new file mode 100644 index 0000000..ed227d4 --- /dev/null +++ b/src/main/java/SavingsAccount.java @@ -0,0 +1,2 @@ +public class SavingsAccount extends Account { +} diff --git a/src/main/java/User.java b/src/main/java/User.java new file mode 100644 index 0000000..c1db380 --- /dev/null +++ b/src/main/java/User.java @@ -0,0 +1,99 @@ +import java.util.ArrayList; + +public class User { + + private int id =0; + private String userName; + private String password; + protected static ArrayList accounts = new ArrayList<>(); + + { + //gives three accounts to user upon creation + CheckingAccount checking = new CheckingAccount(); + accounts.add(0, checking); + SavingsAccount saving = new SavingsAccount(); + accounts.add(1, saving); + InvestmentAccount invest = new InvestmentAccount(); + accounts.add(2, invest); + } + + public User(String userName, String password) { + this.userName = userName; + this.password = password; + this.id = id; + id++; + } + + +// public void addCheckingAccount() { +// CheckingAccount checking = new CheckingAccount(); +// accounts.add(checking); +// } + + public void addSavingsAccount() { + SavingsAccount savings = new SavingsAccount(); + accounts.add(1, savings); + } + + public void addInvestmentAccount() { + InvestmentAccount invest = new InvestmentAccount(); + accounts.add(2, invest); + } + +// private void removeCheckingAccount() { +// +// accounts.remove(0); +// } +// +// private void removeSavingsAccount() { +// +// accounts.remove(1); +// } +// +// private void removeInvestmentAccount() { +// +// accounts.remove(2); +// } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + + } + + public static ArrayList getAccounts() { + return accounts; + } + + public static void setAccounts(ArrayList accounts) { + User.accounts = accounts; + } + + @Override + public String toString() { + return "Username: " + this.getUserName() + + "\nPassword: " + this.getPassword() + + "\nId: " + this.getId(); + } + + +} diff --git a/src/main/java/UserFactory.java b/src/main/java/UserFactory.java new file mode 100644 index 0000000..d9404cd --- /dev/null +++ b/src/main/java/UserFactory.java @@ -0,0 +1,55 @@ + +import java.util.Scanner; + +public class UserFactory { + protected UserFactory() { + + } + + + + + public static User createUser() { + + + String userName = setUserName(); + String password = setPassword(); + + + User newUser = new User(userName, password); + UserWarehouse.addUser(newUser); + + return newUser; + } + + //FOR TESTS + public static User createUser(String name, String pass) { + String userName = name; + String password = pass; + + User newUser = new User(userName, password); + UserWarehouse.addUser(newUser); + + return newUser; + } + + + public static String setUserName() { + String name; + Scanner input = new Scanner(System.in); + System.out.println("Create a Username"); + name = input.next(); + return name; + + } + + public static String setPassword() { + String password; + Scanner input = new Scanner(System.in); + System.out.println("Create a password"); + password = input.nextLine(); + return password; + } + + +} diff --git a/src/main/java/UserWarehouse.java b/src/main/java/UserWarehouse.java new file mode 100644 index 0000000..e698723 --- /dev/null +++ b/src/main/java/UserWarehouse.java @@ -0,0 +1,20 @@ +import java.util.ArrayList; + +public class UserWarehouse { + + + static final ArrayList users = new ArrayList(); + + public static void addUser(User newUser) { + System.out.println("Registering New User...\n"); + users.add(newUser); + + } + + + public static ArrayList getList() { + return users; + } + + +} diff --git a/src/test/java/AccountTest.java b/src/test/java/AccountTest.java new file mode 100644 index 0000000..f4971af --- /dev/null +++ b/src/test/java/AccountTest.java @@ -0,0 +1,71 @@ +import org.junit.Assert; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.*; + +class AccountTest { + + protected static ArrayList accounts = new ArrayList(); + private double balance = 0; + + @Test + public void checkBalanceChecking() { + CheckingAccount checking = new CheckingAccount(); + double expected = 0; + double actual = checking.checkBalance(); + Assert.assertEquals(expected, actual, 0); + } + @Test + public void checkBalanceSaving(){ + SavingsAccount savings = new SavingsAccount(); + double saveExpected = 0; + double saveActual = savings.checkBalance(); + Assert.assertEquals(saveExpected, saveActual, 0); + } + @Test + public void checkBalanceInvest(){ + InvestmentAccount investing = new InvestmentAccount(); + investing.addFunds(50); + + double investExpected = 50; + double investActual = investing.checkBalance(); + Assert.assertEquals(investExpected, investActual, 0); + } + + @Test + public void addFunds() { + + CheckingAccount checking = new CheckingAccount(); + double expected = 500; + double actual = checking.addFunds(500); + + Assert.assertEquals(expected, actual, 0); + + } + + @Test + public void withDraw() { + + CheckingAccount checking = new CheckingAccount(); + checking.addFunds(500); + + double expected = 250; + double actual = checking.withDraw(250); + + Assert.assertEquals(expected, actual, 0); + } + @Test + public void printHistory(){ + + CheckingAccount checking = new CheckingAccount(); + checking.addFunds(5); + + String expected = "Deposited: $5.0"; + String actual = checking.printHistory(); + + Assert.assertEquals(expected,actual); + } + +} \ No newline at end of file diff --git a/src/test/java/UserFactoryTest.java b/src/test/java/UserFactoryTest.java new file mode 100644 index 0000000..06431ad --- /dev/null +++ b/src/test/java/UserFactoryTest.java @@ -0,0 +1,42 @@ + + + +import org.junit.Assert; +import org.junit.Test; + + +public class UserFactoryTest { + + User testUser = new User("jim", "neat"); + + + @Test + public void createUserTest() { + User newUser= testUser; + String expected = newUser.getUserName(); + User actualUser = UserFactory.createUser("jim", "neat"); + String actual = actualUser.getUserName(); + + + Assert.assertEquals(expected, actual); + } + + @Test + public void setUserNameTest() { + + String expected = testUser.getUserName(); + testUser.setUserName("jim"); + String actual = testUser.getUserName(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void setPassWord() { + String expected = testUser.getPassword(); + testUser.setPassword("neat"); + String actual = testUser.getPassword(); + + Assert.assertEquals(expected, actual); + } +} \ No newline at end of file diff --git a/src/test/java/UserTest.java b/src/test/java/UserTest.java new file mode 100644 index 0000000..3e569fc --- /dev/null +++ b/src/test/java/UserTest.java @@ -0,0 +1,90 @@ +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; + + +public class UserTest { + + User testUser1 = new User("test", "neat"); + + User testUser2 = new User("test", "neat"); + User testUser3 = new User("test", "neat"); + private ArrayList accounts = new ArrayList(); + + { + CheckingAccount checking = new CheckingAccount(); + SavingsAccount savings = new SavingsAccount(); + InvestmentAccount invest = new InvestmentAccount(); + accounts.add(checking); + accounts.add(savings); + accounts.add(invest); + } + + + @Test + public void addCheckingAccount() { +// int expected = accounts.size(); + CheckingAccount checking = new CheckingAccount(); + accounts.add(checking); + int expected = accounts.size(); + int actual = accounts.size(); + Assert.assertEquals(expected, actual); + } + + @Test + public void addSavingsAccount() { +// int expected = accounts.size(); + SavingsAccount savings = new SavingsAccount(); + accounts.add(savings); + int expected = accounts.size(); + int actual = accounts.size(); + Assert.assertEquals(expected, actual); + } + + @Test + public void addInvestmentAccount() { +// int expected = accounts.size(); + InvestmentAccount invest = new InvestmentAccount(); + accounts.add(invest); + int expected = accounts.size(); + int actual = accounts.size(); + Assert.assertEquals(expected, actual); + } + + @Test + public void getUserNameTest() { + String expected = "test"; + String actual = testUser1.getUserName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void getId() { + int expected = 1; + int actual = testUser1.getId(); + Assert.assertEquals(expected, actual); + } + @Test + public void getIdTest() { + int expected = 2; + int actual = testUser2.getId(); + Assert.assertEquals(expected, actual); + } + + @Test + public void getPassword() { + String expected = "neat"; + String actual = testUser1.getPassword(); + Assert.assertEquals(expected, actual); + } + + @Test + public void setPassword() { + String expected = testUser1.getPassword(); + testUser1.setPassword("neat"); + String actual = testUser1.getPassword(); + Assert.assertEquals(expected, actual); + + } +} \ No newline at end of file diff --git a/src/test/java/UserWarehouseTest.java b/src/test/java/UserWarehouseTest.java new file mode 100644 index 0000000..21a6d5e --- /dev/null +++ b/src/test/java/UserWarehouseTest.java @@ -0,0 +1,21 @@ +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.*; + +class UserWarehouseTest { + + static final ArrayList users = new ArrayList(); + User testUser = new User("", ""); + + @Test + public void addUserTest() { + + } + + @Test + public void getListTest() { + } + +} \ No newline at end of file