The Question Bank Management System is a Java-based application designed to help teachers create quizzes for various modules and allow students to take these quizzes and view their results. This project demonstrates a comprehensive application of object-oriented programming principles, including inheritance, encapsulation, and polymorphism. The system handles operations such as adding, removing, and listing questions, as well as taking and evaluating quizzes.
- Question Class Hierarchy: Utilizes inheritance to create a base
FillTypeQuestionclass and extends it toChooseTypeQuestionandMatchTypeQuestionclasses. - Module and Bank Management: Efficient storage and retrieval of questions within modules using
ArrayList. - Custom Methods: Implementation of specialized methods for data persistence and representation.
- Exception Handling: Robust error handling to manage user inputs.
- Testing and Validation: Extensive testing to ensure all functionalities work as expected, covering a variety of test cases.
├── src
│ ├── Application.java
│ ├── Bank.java
│ ├── ChooseTypeQuestion.java
│ ├── FillTypeQuestion.java
│ ├── MatchTypeQuestion.java
│ ├── Module.java
│ ├── Person.java
│ └── Role.java
└── README.md
Manages the main logic and user interaction of the application.
Manages collections of questions within a module.
Extends FillTypeQuestion to handle multiple choice questions.
Base class for all question types.
Extends FillTypeQuestion to handle matching questions.
Represents a module containing multiple question banks.
Represents a user with a role in the system.
Enumerates different roles users can have within the system.
- Inheritance: Abstract class
FillTypeQuestionis inherited byChooseTypeQuestionandMatchTypeQuestion, demonstrating code reuse and polymorphism. - Encapsulation: Private variables with public getter and setter methods ensure data hiding and encapsulation.
- ArrayList Usage: Efficient management of questions and modules using dynamic arrays.
- Robust Input Validation: Ensures that the application handles incorrect inputs gracefully, maintaining the integrity of the program.
To run this project, you need to have Java installed on your system. Clone the repository and compile the Java files:
git clone https://github.com/yourusername/question-bank-management-system.git
cd question-bank-management-system/src
javac *.javaRun the application:
java ApplicationThe Question Bank Management System allows you to:
- Add a Question: Add new questions to a bank with specific attributes.
- Remove a Question: Remove questions from a bank based on their unique ID.
- List Questions: Display a list of all questions within a bank.
- Take a Quiz: Students can take quizzes and view their results.
Extensive testing was conducted to ensure the reliability and accuracy of the system. Key test cases include:
- Adding multiple questions and ensuring they are correctly stored.
- Removing questions and verifying the integrity of the remaining list.
- Handling erroneous inputs gracefully and maintaining program stability.
Contributions are welcome! Please fork the repository and submit pull requests with your improvements.
Nikola Nikolov [nin6]
Email: Nin6@aber.ac.uk
This project is licensed under the MIT License - see the LICENSE file for details.

