A command-line user interface (CUI) application for generating optimized exam schedules with automatic room assignments for educational institutions.
This application helps educational administrators create conflict-free exam schedules by:
- Automatically assigning dates, rooms, and time slots to exams
- Handling both theory and practical exams
- Avoiding scheduling conflicts
- Generating downloadable Excel and PDF schedules
- Providing an interactive user interface for customization
- Interactive UI: Easy-to-use interface with sliders, dropdowns, and input fields
- Constraint Solver: Uses Google OR-Tools constraint programming solver to create optimal schedules
- Customizable Parameters:
- Number of theory and practical exams
- Exam type (Regular, Remedial, Internal)
- Semester information
- Start date selection
- Course names and details
- Automatic Room Assignment: Assigns appropriate rooms for theory exams and labs for practical exams
- Export Options: Generate professional Excel and PDF outputs
- Conflict Avoidance: Ensures no two exams are scheduled on the same day or in the same room
- Python 3.x
- Required packages:
- pandas
- ipywidgets
- ortools
- fpdf
- matplotlib
-
Clone this repository:
git clone https://github.com/webKing021/exam-schedule-generator-python-jupyter/.git cd exam-schedule-generator
-
Install the required packages:
pip install ortools pandas ipywidgets fpdf matplotlib
-
Run the Jupyter notebook:
jupyter notebook Exam-Schedule-Generator.ipynb
- Set the number of theory and practical exams using the sliders
- Select the exam type (Regular, Remedial, Internal)
- Enter the semester information
- Choose a start date for the exam schedule
- Enter the names of theory and practical courses
- Click "Generate Schedule" to create the exam timetable
- Download the schedule in Excel or PDF format
The application uses constraint programming to solve the complex scheduling problem:
- Data Collection: Gathers user inputs for courses, dates, and constraints
- Model Creation: Creates a constraint satisfaction problem model
- Constraint Application: Applies rules like "no two exams on the same day"
- Solving: Uses the OR-Tools solver to find an optimal solution
- Output Generation: Creates formatted schedules in multiple formats
The application supports both SQLite (default) and MySQL database backends for storing and retrieving schedule data. Configuration settings for database connections can be customized as needed.
Feel Free to use. make sure if you using it then give small credit that will meant to me a lot and will encourage me more to work. Thanks!
If you are looking for better version of this with GUI based here is the Link of my GitHub Repo :
https://github.com/webKing021/Exam_Schedule_Generator-Python
OR
you can clone :
git clone https://github.com/webKing021/Exam_Schedule_Generator-Python.git
Developed by Krutarth Raychura aka webKing021.
- Google OR-Tools for the constraint programming solver
- Jupyter for the interactive notebook environment