class Customer {
	String firstName;
	String lastName;
	String phoneNo;
}

class Account {
	int accountNo = 0;
	double balance = 0.;
	double overdraft = 0.;
	Customer owner = null;
}

class Bank {
	// TODO
	static public int createAccount(Customer owner, double overdraftLimit) {
		// TODO
		return -1;
	}
	static public boolean deposit(int accountNo, double amount) {
		// TODO
		return false;
	}
	static public boolean withdraw(int accountNo, double amount) {
		// TODO
		return false;
	}
	static public boolean transfer(
			int fromAccountNo, int toAccountNo, double amount) {
		// TODO
		return false;
	}
	static public double getAccountBalance(int accountNo) {
		// TODO
		return 0.0;
	}
	static public double getBalance() {
		// TODO
		return 0.0;
	}
	static public void printAccounts() {
		// TODO
		Out.println("TODO: printAccounts");
	}
}

public class BankApp {
	public static void main(String[] args) {
		char ch;
		do {
			printMenu();
			ch = getOperation();
			switch(ch) {
				case 'a': 
					printTitle("Kunde und Bankkonto anlagen");
					printMessage("Anlegen",
						-1 != Bank.createAccount(
							getCustomer(), 
							getDouble("Ueberziehungsrahmen")));
					break;
				case 'e': 
					printTitle("Einzahlen");
					printMessage("Einzahlen",
						Bank.deposit(
							getInt("Kontonummer"), 
							getDouble("Einzahlungsbetrag")));
					break;
				case 'b': 
					printTitle("Abheben");
					printMessage("Abheben",
						Bank.withdraw(
							getInt("Kontonummer"),
							getDouble("Abhebungsbetrag")));
					break;
				case 't': 
					printTitle("Ueberweisen");
					printMessage("Ueberweisen",
						Bank.transfer(
							getInt("Von Kontonummer"),
							getInt("Auf Kontonummer"),
							getDouble("Betrag")));
					break;
				case 'd':
				 	Out.println("Test");
					Bank.printAccounts();
					break;
				case 'q':
					break;
				default:
					Out.println("Ungueltige Operation");
			}
		} while(ch != 'q');
	}
	static private void printMenu() {
		Out.println();
		Out.println("*********** Bankverwaltung ********");
		Out.println("Kunde+Konto anlegen ............. a");
		Out.println("Einzahlen ....................... e");
		Out.println("Beheben ......................... b");
		Out.println("Ueberweisen ..................... t");
		Out.println("Uebersicht drucken .............. d");
		Out.println("Beenden ......................... q");
		Out.print("Welche Menuoption ?[a|e|b|t|d|q]: ");
	}
	static char getOperation() {
		char ch;
		do {
			ch = Character.toLowerCase(In.readChar());
		}	while(-1 == "aebtdq".indexOf(ch));
		In.readLine();
		return ch;
	}
	static private void printTitle(String text) {
		Out.println("*** " + text + " ***");
	}
	static private String getString(String text) {
		Out.print(text + ": ");
		return In.readLine();
	}
	static private double getDouble(String text) {
		Out.print(text + ": ");
		return In.readDouble();
	}
	static private int getInt(String text) {
		Out.print(text + ": ");
		return In.readInt();
	}
	static private Customer getCustomer() {
		Customer c = new Customer();
		c.firstName = getString("Vorname");
		c.lastName = getString("Nachname");
		c.phoneNo = getString("Telefonnummer");
		return c;
	}
	static private void printMessage(String operation, boolean success) {
		Out.println(success 
			? operation + " erfolgreich durchgefuehrt"
			: "Ungueltige Operation");
	}
}

