This is a JavaFX desktop application built to manage users, questions, and answers with role-based access. It features a login system, profile-based navigation, form validations, and database-backed CRUD operations. Designed with modularity and clarity in mind, the system is suitable for educational use, assignments, or as a boilerplate for more complex JavaFX applications.
-
User Authentication
- Login and account setup screens
- Password strength validation
- Username recognition
-
Role-Based Interfaces
- Admin, Staff, Instructor, Reviewer, and Student roles
- Each role has a distinct home page with role-specific functionalities
-
Question & Answer Management
- Create, edit, update, and delete questions and answers
- Evaluate and review responses
-
Messaging System
- Users can send and receive messages
- Reviewer requests and communication between roles
-
Admin Dashboard
- View all users
- Manage roles and account statuses
- See contribution summaries
-
Form Validators
- Email and password format checkers
- Input field validation
-
JUnit Testing
- Includes test classes such as
JunitTest.javaandTestException.java
- Includes test classes such as
JavaFX-Question-Automation-Platform/
│
├── src/
│ ├── application/
│ │ ├── WelcomeLoginPage.java # Initial screen
│ │ ├── SetupLoginSelectionPage.java
│ │ ├── UserLoginPage.java
│ │ ├── SetupAccountPage.java
│ │ ├── AdminHomePage.java
│ │ ├── Staff.java
│ │ ├── Instructor.java
│ │ ├── Reviewer.java
│ │ ├── Student.java
│ │ ├── UserHomePage.java
│ │ ├── InvitationPage.java
│ │ ├── MessagePage.java
│ │ ├── QuestionPage.java
│ │
│ │ ├── EmailEvaluator.java
│ │ ├── PasswordEvaluator.java
│ │ ├── UserNameRecognizer.java
│ │ ├── RoleSetting.java
│ │ └── ContributionSummary.java
│ │
│ │ ├── User.java
│ │ ├── Role.java
│ │ ├── question.java
│ │ ├── questions.java
│ │ ├── answer.java
│ │ ├── answers.java
│ │ ├── reviews.java
│ │ └── Time.java
│ │
│ │ ├── updateAnswer.java
│ │ ├── UpdateQuestion.java
│ │ └── setPassword.java
│ │
│ │ ├── JunitTest.java
│ │ └── TestException.java
│ │
│ └── databasePart1/
│ └── DatabaseHelper.java # MySQL connection and query handling
│
├── Junit docs.pdf
├── staff docs.pdf
├── staffTestable docs.pdf
└── README.md
- Java (JDK 17+ recommended)
- JavaFX for GUI
- MySQL or SQLite (via
DatabaseHelper.java) - JUnit for unit testing
- Java SDK installed (version 11 or higher)
- JavaFX SDK
- MySQL server (or update DB code to use SQLite)
- An IDE like IntelliJ, Eclipse, or VS Code
- Clone the repository
git clone https://github.com/Taiwo435/JavaFX-Question-Automation-Platform.git
cd JavaFX-Question-Automation-Platform-
Open
DatabaseHelper.java- Configure the JDBC URL, username, and password according to your MySQL setup.
-
Create a new MySQL database
- Run the necessary
CREATE TABLESQL statements for the following entities:UserQuestionAnswer- etc.
- Run the necessary
-
Ensure your MySQL server is running and accessible.
-
Clear existing test data
- Drop any pre-existing users/admins in the database to avoid conflict.
-
Run the application
- Launch
StartCSE360.javato create your initial admin account (email, password, username). - Use this admin account to generate codes and assign roles when creating new users.
- Launch
- ScreenCast 1: Overview of the application code, Junit code and Junit tests.
- ScreenCast 2: Demonstrates UI walkthrough and shows how user stories work in the interface.