Stworzyłem program bankomat tak do nauki. Udało mi się stworzyć wszystkie funkcjonalności jakie są w zadaniu oprócz jednej. Dodaj funkcję, która zapisuje wszystkie operacje bankomat w pliku dziennika. Jaką klasę użyć ? .
Bank
package atm;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Bank {
private int atmMoney;
private Person person;
Bank() {
}
Bank(int atmMoney, Person person) {
this.atmMoney = atmMoney;
this.person = person;
}
public int getAtmMoney() {
return atmMoney;
}
public int setAtmMoney(int atmMoney) {
return this.atmMoney = atmMoney;
}
public void insertPin(Bank bank, Person person) {
Scanner insertPin = new Scanner(System.in);
if (person.getPinEnable() == true) {
for (int i = 0; i <= 3; i++)
if (i != 3) {
System.out.println(" Enter pin:");
try {
int scPin = insertPin.nextInt();
if (person.pin != scPin || String.valueOf(scPin).length() != 4) {
System.out.println("Wrong Pin ");
} else {
System.out.println("Pin is corect");
showMenu(bank, person);
break;
}
} catch (InputMismatchException exc) {
insertPin.nextLine();
System.out.println("--------------------");
System.out.println("Data in wrong format");
}
} else {
person.setPinEnable(false);
System.out.println(
"You have entered the wrong PIN three times. Your card has been blocked. Contact with the bank\n----------------------------------------------------------------");
firstMenu(bank, person);
}
} else {
System.out.println("Your card has been blocked. Contact with the bank");
firstMenu(bank, person);
}
insertPin.close();
}
public void contactBank(Person person) {
System.out.println("Your card is unlocked");
pinEnable(person);
}
public void firstMenu(Bank bank, Person person) {
int selection;
System.out.println(" 1 Insert card in Atm");
System.out.println(" 2 Contact with Atm bank support");
System.out.println(" 3 Inserted money for Atm operator");
System.out.println(" 4 Exit");
Scanner input = new Scanner(System.in);
selection = input.nextInt();
switch (selection) {
case 1:
person.insertCard();
insertPin(bank, person);
break;
case 2:
contactBank(person);
firstMenu(bank, person);
break;
case 3:
AtmOperator.insertMoneyAtmOperator(bank, person);
firstMenu(bank, person);
break;
case 4:
System.out.println("Goodbay");
}
input.close();
}
public void showMenu(Bank bank, Person person) {
int selection;
System.out.println(" 1 Display current balance");
System.out.println(" 2 Withdraw money");
System.out.println(" 3 Inserted money");
System.out.println(" 4 Back to first menu");
System.out.println(" 5 Exit");
Scanner input = new Scanner(System.in);
selection = input.nextInt();
switch (selection) {
case 1:
displayCurrentBalance(person);
showMenu(bank, person);
break;
case 2:
withdrawMoney(bank, person);
showMenu(bank, person);
break;
case 3:
insertMoney(bank, person);
showMenu(bank, person);
break;
case 4:
firstMenu(bank, person);
break;
case 5:
System.out.println("Goodbay");
}
input.close();
}
public void displayCurrentBalance(Person person) {
System.out.println("CurrentBalance: " + person.getAccountBalance() + "\n--------------------");
}
public void withdrawMoney(Bank bank, Person person) {
Scanner input = new Scanner(System.in);
System.out.println(" Withdraw money ");
int withdrawMoney = input.nextInt();
if (atmMoney - withdrawMoney < 0) {
System.out.println("Insufficient funds in ATM");
showMenu(bank, person);
} else {
if (person.getAccountBalance() - withdrawMoney < 0) {
System.out.println("Insufficient funds in your account");
} else {
atmMoney = atmMoney - withdrawMoney;
person.setAccountBalance(person.getAccountBalance() - withdrawMoney);
System.out.println("You selected " + withdrawMoney + "\n------------------");
showMenu(bank, person);
}
}
input.close();
}
public void insertMoney(Bank bank, Person person) {
Scanner input = new Scanner(System.in);
System.out.println("InsertMoney \nYou can only insert a maximum of 9999");
try {
int insertMoney = input.nextInt();
if (String.valueOf(insertMoney).length() != 4) {
atmMoney = atmMoney + insertMoney;
person.setAccountBalance(person.getAccountBalance() + insertMoney);
System.out.println("You input " + insertMoney + "\n------------------");
showMenu(bank, person);
}
} catch (InputMismatchException exc) {
input.nextLine();
System.out.println("--------------------");
System.out.println("Data in wrong format");
}
input.close();
}
public void pinEnable(Person person) {
person.setPinEnable(true);
}
Person
package atm;
public class Person {
boolean pinEnable;
int pin;
int accountBalance;
Person() {
}
Person(int pin, int accountBalance, boolean pinEnable) {
this.pin = pin;
this.accountBalance = accountBalance;
this.pinEnable = pinEnable;
}
public void insertCard() {
System.out.println("Card has been inserted into an ATM");
}
public boolean getPinEnable() {
return pinEnable;
}
public boolean setPinEnable(boolean pinEnable) {
return this.pinEnable = pinEnable;
}
public int getPin() {
return pin;
}
public int setPin(int pin) {
return this.pin = pin;
}
public int getAccountBalance() {
return accountBalance;
}
public int setAccountBalance(int accountBalance) {
return this.accountBalance = accountBalance;
}
public String toString() {
return pin + " " + accountBalance;
}
}
Main
package atm;
public class Main {
private Person person;
public Bank bank = new Bank(1000, person);
public Main(Person person) {
this.person = person;
bank.firstMenu(bank,person);
}
public static void main(String[] args) {
Person person1 = new Person(7777, 70000,true);
Main m = new Main(person1);
}
}
tui
package atm;
import java.util.Scanner;
public class tui {
static Scanner sc = new Scanner(System.in);
}
Atmoperator
package atm;
import java.util.InputMismatchException;
import java.util.Scanner;
public class AtmOperator {
public static void insertMoneyAtmOperator(Bank bank, Person person) {
// Scanner input = new Scanner(System.in);
System.out.println("InsertMoney \nYou can only insert a maximum of 9999");
try {
int insertMoney = tui.sc.nextInt();
// int insertMoney = input.nextInt();
if (String.valueOf(insertMoney).length() != 4) {
bank.setAtmMoney(bank.getAtmMoney() + insertMoney);
System.out.println("AtmOperator insert " + insertMoney + "\n------------------");
System.out.println("The ATM is " + bank.getAtmMoney());
}
} catch (
InputMismatchException exc) {
tui.sc.nextLine();
System.out.println("--------------------");
System.out.println("Data in wrong format");
//
// }
tui.sc.close();
}
}
}