A comprehensive Java-based Learning Management System allowing students to take courses and quizzes while enabling authors to create and manage educational content.
- Create and manage accounts
- Browse and enroll in courses
- Complete lessons and take quizzes
- Review courses and provide ratings
- Track progress and view grades
- Create and manage educational courses
- Organize content into modules and lessons
- Create quizzes with multiple-choice questions
- View student progress and grades
- Manage course reviews
- Secure user authentication
- JSON-based data persistence
- Template-based initialization system
- Type-safe data handling
- Java Development Kit (JDK) 8 or higher
- Windows, macOS, or Linux operating system
- Clone or download this repository
- Double-click the
run-windows.batfile - The system will automatically:
- Create necessary directories
- Check for template files
- Compile the code
- Run the application
- Ensure the
jsondirectory exists (create it if necessary) - Compile the Java files:
javac -d out -cp "./lib/json-simple-1.1.1.jar;./lib/junit-platform-console-standalone-1.9.2.jar" src/*.java - Run the application:
(Use colons instead of semicolons for Unix-based systems)
java -cp "out;./lib/json-simple-1.1.1.jar;./lib/junit-platform-console-standalone-1.9.2.jar" src.CourseUI
src/- Java source fileslib/- Required libraries (JSON parser and testing framework)json/- Data directory (created automatically)out/- Compiled classes (created during build)
CourseUI.java- Main user interfaceDataLoader.java- Handles loading data from JSON filesDataWriter.java- Manages writing data to JSON filesDataConstants.java- Defines constants and manages file templatesReview.java- Handles course reviews and ratings- Various model classes (Course, Module, Lesson, Quiz, etc.)
The system uses template files for initial setup:
usersExample.json- Template for user datacoursesExample.json- Template for course data
These templates are automatically copied to working files (json/users.json and json/course.json) on first run.
After starting the application, you'll see a menu-based interface. Use the number keys to select options.
- Student: Can browse, enroll in, and take courses
- Author: Can create and manage courses and content
The template includes sample accounts:
- Author: username
example_author, passwordpassword123 - Student: username
example_student, passwordpassword123
- User data:
json/users.json - Course data:
json/course.json
These files are automatically created from templates if they don't exist.
Run the included JUnit tests with:
java -jar lib/junit-platform-console-standalone-1.9.2.jar --class-path out --scan-class-path
- The system uses JSON Simple for data persistence
- Data type handling has been improved to safely handle different numeric formats
- Reviews support both string and numeric ratings for flexibility