The goal of the project is to develop a simple budget analysis program that will take as input a budget description, in the form of a list of budget categories and amounts, and and display a chart showing the budgeted amount for each category in each month.
Budget items are specified in a budget file, one item per line. Each line has the following format:
type description amount
The description is a string describing the item. The string may have spaces if it is enclosed in quotation marks. The amount is either a number or an expression. Expressions with spaces must be quoted.
The type field may be one of the following
A fixed budget item is a one-time expense that occurs on a specific date. The type field is the date on which the expense occurs. Example:
11/13/00 car-insurance 678 5/01/01 "supplemental property tax" 560
A recurring budget item is an expense that occurs in the same month every year. The type field is the month in which the expense occurs.
Apr "income tax" 1500 december skiing (15*44)
As the name implies, these items occur regularly throughout the year. The type is a single letter indicating the frequency of the expense:
Q "estimated taxes" 700 M rent 1500 W coffee (7*3)
The keyword ``SUB'' in type field indicates a subtotal of all items since the last SUB should be calculated and displayed.
SUB taxes
The keyword ``TOT'' in the type field indicates the current value of a running total of all items encountered so far should be displayed:
TOT "One time expenses"
The program should accept the following control parameters:
This parameter specifies when the display should begin. Budget items allocated before the Start Date should not be included in the calculations.
This parameter specifies when the display should end. Budget items allocated after the End Date should not be included in the calculations.
The Use Cases describe how the budget system is used.
The budget should be displayed as a matrix. Each row displays one budget item; the columns represent months in the display range. Thus, each cell represents the amount of the budget item allocated to the corresponding month.
All design documents are to be created using Rational Rose.
Implementation must be done in C++ or Java to run on a Unix (HP-UX or Solaris) platform.