Click here to Skip to main content
15,867,453 members
Articles / Programming Languages / C++
Article

Personal Finance Application

Rate me:
Please Sign up or sign in to vote.
4.38/5 (11 votes)
10 Jan 2007CPOL4 min read 87.7K   7.9K   68   11
Utility to keep track of personal finances

Sample Image - maximum width is 600 pixels

Introduction

Utility to keep track of money, expenses, investment, etc.

Background

Accounts

Money goes from one account to other account. There are 3 types of accounts:

  • Neutral: This type of account is in your system, you own this accounts.

    Samples: Cash, Bank Accounts, Cash in other currency.

  • R+: This type of account puts money into your system. They put the money into neutral accounts.

    Samples: Salary, Interests, Income.

  • R-: This type of account takes money out of your system (and you never see it again).

    Samples: Supermarket, bills, grocery, electronics, gas, bus, furniture...everything you buy.

Transactions
  • R+ to Neutral (you earn money)
  • Neutral to Neutral (you move money)
  • Neutral to R- (you loose money)Transaction Samples
From: Sallary
To: Bank A Account
Amount: 3000
Here you earn money, money goes from R+ to Neutral.
From: Bank A Account
To: Cash
Amount: 3000
Here you move money. You don't loose and you don't earn. This is an ATM extraction. Neutral to Neutral.
From: Cash
To: Electronics (New TV)Amount: 100
Here you loose money. Money goes from Neutral to R-.
Currency Exchange Buy
From: Cash
To: Buy foreign currency
Amount: 1250
Your dollars dissapear. You loose them.
From: Euro Buy
To: Euro Cash Amount: 1000
Euros appear to your Euros Cash. You "earn" them


Currency Exchange Sell

From: Euro Cash
To: Euro Sell
Amount: 1000
Your euros dissapear. You loose them.
From: Sell foreign currency
To: Cash
Amount: 1250
dollars appear to your Cash. You "earn" them


Both operations are done in two steps, because both accounts of transactions should have the same currency. If not, there could be a lot of problems.

Using the utility

The utility comes with a sample database of accounts. Just check if they fit with your needs. Then enter than transactions. The first ones should be from "A - initial" to "A".

In Statistics, if you don't enter the account name, you get the sum of earnings and loss.

Hints

  • With backspace you delete the selected account in the combo. You can select the account with the shortcut
  • You can put this app in the windows startup minimized with the /MIN param. It should go into:
    /HKEY_LOCAL_MACHINE/SOFTWARE/MICROSOFT/WINDOWS/CURRENTVERSION/RUN.

    Create a key with: "{Path}\CashM.exe /MIN"

  • To compile in spanish, replace the .rc file, with the languages/spanish. Delete the .aps file.
  • Security: if you don't want other people see your data, put the db into a zip with a password. Extract it to use it and when done, put it again on the zip. I thought about encrypting the data in the database, but then, I wouldn't be able to use SQL. More problem than solution.
  • You can see and change the database with SQLite Database Browser. You can also perform SQL queries against the database.
  • The same way you buy and sell euros, you can do with stock papers, or even investment. For example, you can define MSFT as a currency, define the 3 accounts as the Euros example in Accounts. (MSFT: MSFT Paper, MSFT Sell, MSFT Buy, MSFT Inicial, all of them of "MSFT" currency). Finally, in Cash, you should define "Buy Stock", "Sell Stock". The "conversion" in currency would be the paper value.
  • Play with the app a while before entering real data, so you get to know it.
  • Do some backup of the db periodically.
  • As the exe has the database engine inside and the MFC is linked, you can run this on any Windows. You can put the exe and the db in a zip, upload it to the web, and access it from every machine with internet connection.
  • The Cash Correct + Account is used if, for example, you find money in your pocket or in the street. The Cash Correct - Account is used when you "loose" cash, for example, burning, loosing coins, etc. I also use these accounts when I check the Cash total (Statistics) and I find numbers don't match (for any reason).

Points of Interest

I used in it A LOT of components from codeproject. Thanks a lot to all the people who wrote them, I wouldn't be able to build this thing without them. I first built a .NET app to keep track of money, but .NET was slow back then (2001) and graphics weren't good. Then I used an SQL Sever database and finally, an excel worksheet. This is an improvement on all of them. I found similar apps like Monex and other but....they don't fit my needs and they get complicated in some operations. I intend to improve this thing, mainly because I use it.

The code got a little "wired" while building the app, in case you decide to change it. I'll probably improve it in the next version. This utility compiles with VC++ 2005 with warnings.

English is not my first language, so please excuse any errors there. This is my first CodeProject article.

ToDo List

  • Printing
  • Code improving
  • Graphics improving
  • Virtual accounts
  • Import-Export
  • Unicode
  • Help

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer
Argentina Argentina
System developer from Argentina.

Programmed in VB 5,6,.NET, C#, Java, PL-SQL, Transac-SQL, C, C++ and even some "calculator" language.

Love to build small, useful applications.
Usually building big and complicated apps based on solid, reliable components.

Hobbies: reading, photography, chess, paddle, running.

Comments and Discussions

 
GeneralMMEX Pin
Priyank Bolia11-Jan-07 2:47
Priyank Bolia11-Jan-07 2:47 
GeneralRe: MMEX [modified] Pin
ErnestoNet11-Jan-07 4:06
ErnestoNet11-Jan-07 4:06 
GeneralRe: MMEX Pin
Priyank Bolia11-Jan-07 4:38
Priyank Bolia11-Jan-07 4:38 
GeneralRe: MMEX Pin
ErnestoNet11-Jan-07 5:07
ErnestoNet11-Jan-07 5:07 
GeneralRe: MMEX Pin
ThatsAlok15-Jan-07 17:29
ThatsAlok15-Jan-07 17:29 
GeneralRe: MMEX Pin
Priyank Bolia15-Jan-07 18:46
Priyank Bolia15-Jan-07 18:46 
Dear MVP,
I recently filled a patch for the GUI updation of MMEX, and thats was accepted, for which the project admin was generous enough to share his donations. You will see a better and easy GUI in the next release. Also the backend has been moved to the latest release of wx2.8. Regarding the filters, its all depends on the time availability with me, I do my best, but as you know priorities keep changing.Smile | :)
Cheers!
Tumhara longue-got-IA yaar.


GeneralRe: MMEX Pin
ThatsAlok15-Jan-07 21:15
ThatsAlok15-Jan-07 21:15 
GeneralRe: MMEX Pin
NovaNuker17-Jun-08 5:40
NovaNuker17-Jun-08 5:40 
GeneralRe: MMEX Pin
ThatsAlok17-Jun-08 5:42
ThatsAlok17-Jun-08 5:42 
GeneralDownloads not working Pin
Jozef Sevcik10-Jan-07 21:19
Jozef Sevcik10-Jan-07 21:19 
GeneralRe: Downloads not working [modified] Pin
ErnestoNet10-Jan-07 22:46
ErnestoNet10-Jan-07 22:46 
AnswerRe: Downloads not working Pin
Jozef Sevcik10-Jan-07 23:53
Jozef Sevcik10-Jan-07 23:53 
GeneralRe: Downloads not working Pin
Emmanuel_Makaza15-Aug-08 2:14
Emmanuel_Makaza15-Aug-08 2:14 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.