A Java desktop application for managing semesters, students, courses, and class scheduling using a local SQL database
- Add semesters
- Add students
- Add courses
- Add students to classes
- View all students
- View all courses for the current semester
- View course rosters
- Drop a student from a class
- Automatically promote the first waitlisted student when a seat opens
- Load a student by ID
- View schedule for the current semester
- Add a class
- Drop a class
- Java
- Java Swing (GUI)
- Maven (build tool)
- Apache Derby (embedded SQL database)
MainFrame.java- main GUI and event handlingDBConnection.java- database connectionSemesterQueries.java- semester database operationsStudentQueries.java- student database operationsCourseQueries.java- course database operationsScheduleQueries.java- scheduling database operationsStudentEntry.java- student data modelCourseEntry.java- course data modelScheduleEntry.java- schedule data model
This project uses Apache Derby, an embedded relational SQL database.
- Embedded directly in the application (no external server required)
- Uses standard SQL for querying and updates
- Stores data locally on the user’s machine
- Automatically created and initialized when the application runs
semester– stores available semestersstudent– stores student informationcourse– stores course data and capacityschedule– manages enrollments and waitlists
- Students are added with status:
"s"= scheduled"w"= waitlisted
- If a class is full, students are placed on a waitlist
- When a student drops a class, the earliest waitlisted student is automatically promoted
This project demonstrates several core Java and software design principles:
-
Object-Oriented Programming
- Classes for data models (
StudentEntry,CourseEntry,ScheduleEntry) - Encapsulation of data and behavior
- Classes for data models (
-
Separation of Concerns
- UI handled in
MainFrame - Database logic handled in query classes (
*Queries.java) - Data models separated from logic
- UI handled in
-
JDBC (Java Database Connectivity)
- Prepared statements for safe SQL execution
- ResultSet processing for data retrieval
-
Event-Driven Programming
- Swing action listeners for user interaction
-
Data Structures
- Use of
ArrayListfor dynamic data handling
- Use of
-
State Management
- Tracking current semester and current student within the application
- Navigate to the project root directory:
cd course-scheduler- Compile the project:
mvn clean compile- Run the application:
mvn exec:java -Dexec.mainClass="com.vincematolka.coursescheduler.MainFrame"- The database is created automatically on first run using Apache Derby
- No additional setup is required
- The application operates on a selected current semester
- All course and scheduling operations are scoped to that semester
- Waitlist promotion is handled automatically upon student removal
Vince Matolka