01 / THE PROBLEM
Start with a clear question.
A banking-style workflow provides useful constraints: accounts need state, transactions change that state, and the data should survive the end of a run. I used it to practice object-oriented design and database interaction.
02 / DESIGN DECISIONS
Represent the core banking concepts as objects rather than scattering logic through a menu.
Persist account-related data locally so the application can reopen with state intact.
Hash PINs rather than saving them as plain text.
Treat this as a learning project, not production banking software or a security-reviewed system.