Personal Finance Tracker

Description:

Creating a Personal Wallet Using C++ with Bank-Like Transactions

Design Patterns used: Bridge, Validator, Observer, Template.

Concepts used: Abstract classes, Multiple inheritances, Polymorphism, Exceptions, I/O files, Modifying the behavior of default operators (iostream, comparators, …).

The program creates a file that represents your wallet. Once you insert a new transaction, the program will preview its outcomes on your wallet so you can decide whether to confirm it or not. Only after your confirmation will the transaction be saved in the file. This method allows a permanently stored balance and transaction history even after closing the program. You can make different operations to your wallet, including:

Command list

Instead of giving a + command you can use other type of commands, here’s the list:

  • + -> Add a sum
  • – -> Subtract a sum
  • save -> save the transactions
  • reset -> erase all the transactions
  • report -> Print a report (report–all, report–incomefirst and report–outcomefirst are the sorted versions)
  • stop -> Finish the execution of the program

Screenshots

Wallet

Transaction

Comparator

Main

I am very proud of the work I have done on this project. I learned a lot about object-oriented programming and C++. I also gained valuable experience in designing and implementing complex software systems.

I am especially grateful to my professor at the University of Metropolia for his guidance and support throughout the project. He helped me to overcome challenges and to produce the best possible work. Also my grade was 10/10 🙂

I believe that object-oriented programming is a powerful paradigm for designing and implementing complex software systems. I’ll remember to apply this paradigm to other projects in the future.

Try yourself my code

Version:

1.0

Date:

17 Dec 2022

Client:

University of Metropolia

Project Duration:

1 month

Place:

Helsinki, Finland

English