Taking Your Programming Skills to the Next Level: Programming an Automated Teller Machine

"Years may wrinkle the skin, but to give up on enthusiasm wrinkles the mind". These words kept me going the day I determined to solve a real-life problem with my well-honed programming skill. Anytime the word I remember the word ATM, I just start smiling because my memories start recounting the most painful experience I had while using the machine as a kid. I wept bitterly on that day(that's a story for another day tho).

story.jpg

I picked up the project because it has a place in my feelings and there are some improvements I would like the ATM to feature. After doing a careful analysis, some of the challenges plaguing our ATMs are:

  1. Inability to deposit cash to the ATM.
  2. Limited choice of denomination.
  3. Too many unnecessary validation steps which lead to time wastage
  4. English-Centrism

After weeks of proper scaling, planning and documentation of my program flow. I set out to start breathing life into these problems. Honestly, I thought that it would be something I could finish within the span of a week worst-still 2weeks. Fortunately for me, the project lasted for a month and 4 days. To cap it up, I decided to use the love of my heart in writing the code - C language. It ended up being interesting and very painstaking at the same time. The program crashed more than 10 times due to the wrong use of some tools. I'll like to brief you about the project's build.

build.jpg

The project is divided into two main sections :

1. The Account storage part

2. The ATM itself

Account Storage: It basically stores the account details of users. When executed, it pops up these three options:

  • signup and deposit
  • balance enquires
  • exit

acct_store.png

The ATM: The ATM gives you the volition to select any language of your choice between Yoruba, Igala and English. The translation from English to these languages is still ongoing. The ATM entails functionalities like :

-Withdrawal (with the volition to specify one's desired denomination) -Balance Enquiries -Transfer -Deposit

withdrawal.png

with2.png

You can access this project from my repo :

Lessons Learnt from The Project

Before embarking on the project, I thought I had known enough about how files are written, updated and read in C. The project opened my eyes more and bequeathed me with the skill of manipulating files without fear. A very intuitive knowledge I also gained was how to read, update and write files in binary mode. Writing files in binary helps in-memory optimization. The most challenging part of the project was the file update, I had to dig to the skeleton before I could finally get the hang of it. Now I'm a virtuoso in matters relating to file affairs, memory allocation and pointers.

Finally, I learnt that the best way to understand programming better is going through the pain of doing proper analysis first before engaging the keyboard. The project taught me so much resilience that I'm very much confident that come what may I'll conquer this beautiful world.