Operator: The operator will be responsible for the following operations:
Turning the ATM ON/OFF using the designated Key-Switch.
Refilling the ATM with cash.
Refilling the ATM’s printer with receipts.
Refilling the ATM’s printer with INK.
Take out deposited cash and checks.
Customer: The ATM customer can perform the following operations:
Balance inquiry: the user can view his/her account balance.
Cash withdrawal: the user can withdraw a certain amount of cash.
Deposit funds: the user can deposit cash or checks.
Transfer funds: the user can transfer funds to other accounts.
Bank Manager: The Bank Manager can perform the following operations:
Generate a report to check total deposits.
Generate a report to check total withdrawals.
Print total deposits/withdrawal reports.
Checks the remaining cash in the ATM.
An ATM machine allows a user to deposit and withdraw cash. It also allows a user to see his balance. How do you design such a system? What are your main challenges?
Requirements Of The System
With all the basic functions of a typical ATM machine in mind, these are the requirements of the system we will design:
A user with a bank account and an ATM card can insert the card in the machine.
The ATM authenticates the user with a pin before allowing transactions.
Once authenticated, the user can make a balance inquiry, deposit cash or check, withdraw cash or transfer funds to another account.
At any instant of time, the system only allows a single transaction.
The system displays a success or failure message to the user at the end of the transaction to indicate the completion of a transaction.
After the completion of a transaction, the user can start another transaction.
If no other transaction is to be made, the system returns the card to the user.
https://medium.com/double-pointer/system-design-interview-atm-machine-design-80c90b044a35