Fundamental Java project : Quiz Manager


This project is proposed to students in order to evaluate their skills for the fundamental period of Java Programming and UML.

This goal is achieved through the realization of a console application (+ GUI as possible bonus), which aims at managing digital quiz preparation and execution.


The usual problem while preparing and running an evaluation, is to :

QuestionString questionString[] topicsInteger difficultyQuizString titleMCQChoiceString choiceboolean validMCQAnswerAnswertextStudentString nameString idMCQQuestion
UML Class Diagram

Types of question

To handle the most of the possible cases, there are several types of question to consider.

The MCQ questions

The MCQ questions are composed of a question text and a set of possible choices, each choice can be right or wrong.
It can also be interesting to add a extra content, like some code extract, some picture or some other kind of media (video, music etc.).

The Open Questions

The open questions are composed only by a question, and some hints, additionaly they can be completed by a exta media content.

Associative questions

The associative questions are questions where it necessary to assign some propositions to some descriptions, like in the following.

Common questions attributes

Each question has a some extra attributes to describe the topic (tag) and the difficulty of the question. Those two fields help to balance the overall exam complexity, and the topics coverage.
Those attributes can be taken in account for automatic exam assembly.


Main features

The produced application should be a console application. The scope that you should cover by this application is to :


Example of realization

The quiz running part should run the quiz and get the answers from the user.
All the answers should be recorded and at the end of the quiz the global result is displayed to the user.

You can take an example on the following website :

Java Code Examples: Quiz


This application will be evaluated using the grid below:

Goal Technical content Evaluation
First level : defining Java Classes and use it in an application
This is what we should have seen during the first courses: the goal is to initiate you to the Java ecosystem: manipulate basics of the language as much as discovering java tools such as Eclipse To achieve this point you should have:
  • A Java project in Eclipse, containing what will be your core treatments (you could say your application logic)
  • In this Java project, you have to define your own package (remember the good practices) to write your first Java Object: it has to be the classes defined in this document, please re-read the specification to find how to implement those classes.

    You also should be able to run some tests on the produced code:

    • Instantiate some objects providing some console input
    • Pass those instances to services that will store them
    • display them in the console
Second level : Find a way to persist a POJO
This is the most common problem in computer science, for achieving this part fully, you must be able to store a list of Questions in an XML file or in a Data Base To achieve this point you should have:
  • The previous point totally achieved
  • If you chose the database connection, you should be able to connect to the database through a JDBC connection, manipulate the PreparedStatement and the Connection object, to read and record from / to the database
  • If you chose the XML File persistence, you should use at least the DOM API to parse your XML file and read/write from/to the xml file.
Level three: Be professional

This point will stand for all the Quality and Documentation in the project, all your classes should contain appropriate javadoc and comments (a tool evaluating your code quality will be used)

You also must provide a technical description of your architecture, this documentation should be in a standard format : odt, pdf, doc, docbook, dita, epub. This document is called Technical Specification

You should provide a user guide on how to use the «public» part of your program. The public part of your program can either be a GUI or a set of APIs depending if you achieved to make a working GUI. This document is called the User guide. This user guide should be readable by someone who doesn’t know about your program internal architecture.

To achieve this point you should have:
  • A document indicating what your program is doing and how it is wired inside (what kind of APIs). Do not hesitate to provide schemas in this documentation, this is the Technical Specification document
  • A document indicating how your program should be used, this is the User Guide
  • You must export your javadoc in a jar called javadoc.jar, and put it in your project in a folder named "javadoc"
  • The preceding requirement implies that you comment well your code, and especially the javadoc.
Total 100
Bonus points
Make everything configurable: This configuration will avoid hardcoded parameter like connection strings or file path. This is always bad in any application To achieve this point you should have:
  • A global configuration class, which can read a configuration property set from a file on the filesystem (so the path to this file is hardcoded or given as an application parameter)
  • Your configuration must be based on a standard format like properties or XML
  • Try to list everything variable in your application and parameter it inside your configuration file
Do a GUI allowing to use your Quiz / Question / Choice APIs as well as your serializers/deserializers (DAOs). To achieve this point you should have:
  • A GUI that can run as a desktop application
  • This point should be made after you did the other elements listed above. I will not take it in account for the evaluation if you have not already made what is really required before.


code delivery

Your code source delivery has to be under a git format (prefer bitbucket for delivery to avoid cheating). Your package should include:
- source code of the application
- User Guide
- Technical Guide
- Compilation & Installation notice (if I’m not able to compile or run your application, the realization mark is set to 0)

How to submit?

You have to send an email with the git url of your repository before the due date. The Subject of your mail should be under the format:


the destination email is the following :

When to submit ?

The due date is set to be 3 weeks after the last lecture. If there are different groups, then it is 3 weeks after the last lecture for the last group.