CIS 4930 Section 0939

Object-Oriented Programming

Personal Finance System

Description written by Ralph Jackson

The goal of this assignment is to build a system that is non-trivial, and possibly even useful. It is expected that the analysis, design, and implementation of this system will utilize the object-oriented pardigm.

An individual has many financial accounts that they must deal with, e.g. checking, savings, loans, credit cards, cash, parents, clothing, food, entertainment, etc. Some of these accounts are assests, meaning that they increase your total financial worth, and some are liabilities, which tend to decrease your total financial worth. You may have guessed by now that your total financial worth is simply the aggregrate value of your assests, less your liabilities.

You may also note that some of the example accounts, e.g. food, do not seem to fall into either the assest or liability area. You can consider these expense accounts that will tend to either decrease your assests (e.g. you write a check at the grocery store), or increase your liabilities (e.g. you use your credit card to pay for a new CD).

Of course, accounts have information associated with them, such as the identifier for the account, the owner, perhaps a description of the account. Accounts can be created, with some opening value, and other information as reasonable.

But how are accounts used?

In general we may think of each of our financial activities as involving two accounts, a source and a sink. Hence a financial activity results in a transfer of money from one account to another. Of course, these activities occur on a specific date and have a specific amount associated with them. They may also have an identifying value, e.g. check number of the check written against your checking account. A short description of the activity may be useful when reviewing account history.

We would like to be able to track all financial activities associated with our accounts.

We want to be able to see general account information for each account. This includes the starting balance of the account and the current balance, which includes all activities associated with the account.

It should be possible to see all of the history associated with the account, i.e. each financial activity this account has been involved in.

An interesting ability is to apply all of the known activities against an account, which has the side effect of clearing the activities and modifying the starting balance to reflect the cleared activities. This has the side effect of making the starting and current balance values the same (because there are no activities to modify the starting balance).

Another interesting ability would be to allow mult-way activities, e.g. a transfer of money from both a checking and saving account to a credit card account, but identifed as a single activity, rather than two separate activities.

It should be possible to get a summary of each account. This includes its starting and current value, and account identification. The sub-total for each type of account and your total financial worth should also be displayed.

Note that the portion of expenses that were paid from your assests did not put you deeper in debt, though they did potentially lower your total financial worth (TFW), expenses covered from liability accounts, e.g. a credit card, do tend to increase your debt. The reason that it is not always the case that your TFW changes is because the expense is offset by the item acquired, if it is tangible, of course a date is an expense that does decrease your TFW.

There you have it, the PFS system. Get it right and you can use it to keep track of your checking account and and your credit cards.

Inspiration for this problem comes from using personal finance programs like Managing Your Money or Quicken, and trying to balance my checking account.


This document is copyright 1995 Ralph Jackson.
$Id$