The purpose of this project is to create a library for creating and manipulating objects for double-entry bookkeeping.
The simplest design would be to simply keep a chronologically-ordered list of transactions, and avoid keeping the balance of the accounts, and instead to compute this balance whenever it needs to be presented.
Routines should be provided to perform standard accounting procedures such as generating end-of-year reports, balancing sales tax, etc. It should be possible to save the contents of the system to external storage, and to restore it at a later point. A system such as Clobber could be used for this purpose.
The library should document the provided classes and generic functions, as well as ways in which the library can be customized by creating subclasses and providing methods on these subclasses.