Donation Center Project
For this project you are to build a system to track donations. This will be done in phases and the first part will be done in pairs. Details will be added as needed
Details about the donation center
The details about the donation center are not organized but given as the director might verbalize them.
The donation center collects donations (of time, items, and moneys) from different types of donors (individuals, families, organizations). A given donor may or may not be inactive. We need to know when they started and the date of their last donation. Each donation is assigned a financial value when it is entered. For each donation we track what type it is, the value of it, when it was given, and a possible description. We need to be able to display all donations for a given donor for a given year. We also need to be able to display all donations for a given donor and get the total a donor has given (over a year and over the lifetime). For each donor, there is a name and email. Family donors have a list of family names. The business donors need to track if the business is a non profit or not. Sometimes donors become inactive and don't receive regular emails but their records are still kept.
Data needs to be kept between runnings of the program but should not be allowed to be edited directly (only through the program).
More details and changes may be added later.
Details about the development
Phase 1: get the classes working
For this phase you are to work in pairs. At the beginning the group of you are to decide what primarily classes are needed and divide them up. Once each person is assigned a set of classes, interfaces are to be designed for any communication between the sets. Each person can only read the other person's code. They cannot change it. Code is to be uploaded into the GitHub for the class.
The tracking of donations (and each individual donation) should be done by the same person. An interface should be created to define the communications between these and all other classes. The data structure of the donations used should be transparent to all other code.
The donor information needs to use inheritance. Once the work is divided up, this phase is to be done in two parts: Design (code and testing) and Implementation (code and testing). The implementation of the testing should be done by the person who did NOT write the code being tested. The plan should be detailed enough that the person doing the testing need not talk to the person who wrote the code.
There needs to be at least two areas where secure programming is identified and done. It should (but is not necessary) should involve code from both team members.
Phase 2: Add a GUI
For this phase, each person is to take the code and add their own GUI interface to it. The design and testing plan is due first. The design should include a "diagram" of each window in the interface. Instead of an estimate of the time it will take to implement, it should include and maximum time that will be used to implement the GUI (including any time researching options). It is also recommended in the design you identify the steps (in order) that will be used during implementation.
During implement of coding, you may use your team's code and/or portions or all of my code. If you use any of my code, it needs to be documented and brought up to standards. In addition, the final code must have two instances of secure programming. You need to track your hours and limit yourself to your maximum hours. This may mean that you do not get all aspects desired working. You will be not only on the final quality but how well you juggled time constraints and the desired features to be implemented. This should be discussed in your lessons learned and/or future improvements.