Following are some clarifications about how specific project features should be implemented.
The input to the budget calculation function comes from a text file, containing one budget item per line. Assume that the user creates this text file using an editor; you do not have to implement a user interface for creating or modifying budget items.
The input file format should look like this:
M "Rent (a monthly item)" 1500 W "coffee (a weekly item)" (7*3) SUB recurring 05/01/01 "Suplemental Tax (a fixed item)" 560 Q "Estimated Taxes (a quarterly item)" 700 SUB taxes March "Spring Break (a Yearly item)" 2500 TOT "Total so far"
Thus, the Create, Display, and Modify Budget use cases can be implemented in the same way: create/edit the budget input file, then calculate and display the resulting budget.
Note that this should not affect your domain layer; the presentation layer becomes much simpler (it just reads budget items a line at a time and passes themt to the domain layer in a system event).
The output should be a simple text display depicting a two-dimensional chart; the columns should be labeled at the top with the month, the rows should be labeled on the left with the budget item description, and the cells should have the amount of the specific budget item allocated to the month in question.