Bank Solved

The objective of this problem is to test the understanding of Object-Oriented Programming (OOP) concepts, in particular, on encapsulation.
Problem Description
SuperBank is opening a new branch in Singapore. Bob, the manager of SuperBank, asks your help to create a program for managing customer’s bank accounts.
A bank customer can do the following operations:
1. Create a new bank account with an initial balance.
2. Deposit money into his/her account.
3. Withdraw money from his/her account.
For this operation, you need to output “Transaction successful” if the intended amount of money can be withdrawn, otherwise output “Transaction unsuccessful” and no money will be withdrawn from his/her account.
The input contains several operations and is terminated by “0”. The operations will be “Create name amount”, “Deposit name amount”, or “Withdraw name amount”, where name is the customer’s name and amount is an integer indicating the amount of money. There will be at most 100 bank accounts and they are all created on the first month when the bank is opening. You may assume that all account holders have unique names and the names consist of only a single word.
The output contains the transaction result of withdrawal operations and the final balance of all customers after some withdrawal and deposit operations (same order as the input).
Sample Input
Create Billy 2500
Create Charlie 1000
Create John 100
Withdraw Charlie 500
Deposit John 899
Withdraw Charlie 1000
Sample Output
Transaction successful
Transaction unsuccessful
Billy 2500
Charlie 500
John 999
Algorithm Template
1. How to verify a transaction whether it is a successful or unsuccessful one?
2. What should be the data members of Person class?
3. How to keep track on the amount of money of a person?