Overview

For this project you will implement the data manager of an online test system. The system allows for the definition of exams with three possible kinds of questions: true and false, multiple choice and fill-in-the-blanks questions. The system will grade submitted exams and generate some statistical information. The first part of your project consists of submitting an UML class diagram representing the design of the data manager; the second part consists of implementing your design. Keep in mind that each part has a separate deadline.

Objectives

Grading

Clarifications

Any clarifications or corrections associated with this project will be available at Clarifications

Code Distribution

The project's code distribution is available by checking out the project named OnlineTest. The code distribution provides you with the following:

Specifications

Data Manager

For this project you will implement the data manager (model component of the MVC paradigm) for an online test system.The system allows for the definition of exams with three possible kinds of questions: true and false, multiple choice and fill-in-the-blanks questions. The system will grade submitted exams and generate some statistical information.The first part of your project consists of submitting an UML class diagram representing the design of the data manager; the second part consists of implementing your design.

The functionality of the system you will implement is represented by the interface Manager. The interface represents the methods available to anyone trying to make use of the system. The javadoc documentation for the project can be found at javadoc. Your task for the design part of the project is to come up with a set of classes and interfaces that together provide the functionality defined by the Manager interface.

Access to the data manager functionality will be possible through a class named SystemManager that you must define. This class implements the Manager interface. Feel free to add any instance variables and private methods to this class. Public tests create an instance of the SystemManager class in order to test your system.

Keep in mind that your implementation must match your design, otherwise you will lose significant points. We encourage you to start working on this project as soon as possible, as there are a lot of details that can not be completely specified in this description. The earlier you start, the sooner you will get the feedback you need to complete this assignment.

Your design should make use of object-oriented design concepts (e.g., generalization, specification, etc.) discussed in class. Keep in mind that having a large number of classes does not guarantee a better design grade. Your UML class diagram does not need to include all the parameters to each method, though return types are interesting. You are encouraged to list all the class fields and their types. Your UML class diagram does not need to include the Manager interface. In addition, the class diagram for the SystemManager class does not need to include the Manager methods. You should use some graphic tool (e.g., AmaterasUML) to generate the UML class diagram. You will not get any extra credit for using a particular tool; just make sure you provide the file representing your design.

Requirements

Good Faith Attempt

The UML design represents the good faith attempt for this project.