A wallet is used to store money digitally and can be used to pay for services. Your task is to build a wallet that has the following abilities:
- Register a user
- Top up money to a user wallet
- Check balance for a user
- Transfer money between two users
- View history of all transactions (global and for a user) All transactions are to be assumed to be within the ecosystem of the wallet i.e. you cannot send money to a person who is not registered on the same wallet system. All transactions should be recorded and be auditable.
These abilities must be exposed via a command line interface. For example, you could make a menu-driven solution that reads like:
- Register a user
- Top up money into your digital wallet
- Transfer Money to another wallet on the same system
- Check balance
- Check all transactions in the system
- Check all transactions that a user has been a part of Please choose an option: The menu design (and the structure of the program) is up to you. You don’t need to persist the data; the assumption is that when the program restarts, the data will be lost.