A comprehensive GUI application for generating and managing exam seating arrangements. Built with Python and Tkinter, this tool helps educators efficiently assign students to seats while accommodating various classroom layouts.

- Define custom classroom dimensions (M × N grid)
- Visual stage/platform indicator at the front
- Enable/disable specific seats to match actual classroom layouts
- Save and load classroom configurations for reuse
- Import student lists from CSV files
- Interactive column selector for flexible CSV formats
- Supports UTF-8 and Big5 encodings
- Real-time student count display
- Random seat assignment with one click
- Visual color-coded seat status:
- Green: Available seats
- Pink: Disabled seats
- Blue: Assigned seats
- Easy clearing and rearrangement
- Professional seating chart generation
- Landscape A4 format for optimal viewing
- Includes stage indicator and student names
- Ready for printing or digital distribution
A web-based version of this system is also available:
- Live Demo: https://jameslin102.github.io/Seating-System-Web/
- Repository: https://github.com/JamesLin102/Seating-System-Web.git
The web version runs entirely in your browser, no installation required!
- Python 3.7 or higher
- pip package manager
pip install pandas reportlabgit clone https://github.com/JamesLin102/Seating-System.git
cd exam-seating-systempython exam_seating_system.py-
Configure Classroom
- Enter the number of rows (M) and columns (N)
- Click "Set Classroom Size"
- Click on seats to disable them (matching your classroom layout)
-
Save Classroom Configuration (Optional)
- Click "💾 Save Classroom" to save the layout
- Load it later with "📂 Load Classroom"
-
Import Students
- Click "📋 Load Student List"
- Select your CSV file
- Choose the column containing student names
-
Arrange Seats
- Click "🎲 Random Arrangement" to automatically assign students
- Use "🗑️ Clear Arrangement" to start over
-
Export Results
- Click "📄 Export to PDF"
- Save the seating chart for distribution or printing
Your CSV file can have any structure. The application will let you select which column contains student names.
Example CSV:
Student ID,Name,Class,Grade
001,Offer Yang,A,10
002,Uploader Li,B,10
003,Director Wang,A,10
004,ComedyGod Lin,A,10
005,FriedFish Chiu,B,10Just select the "Name" column when prompted.
Classroom configurations are saved as JSON files:
{
"rows": 6,
"cols": 8,
"disabled_seats": ["0,0", "0,7", "5,0", "5,7"]
}- Ensure the file is a valid CSV format
- Check file encoding (UTF-8 or Big5 supported)
- Verify the file contains at least one column
- The application will attempt to use system Chinese fonts
- Falls back to Helvetica if Chinese fonts unavailable
- Ensure write permissions for the output directory
- Number of students cannot exceed available seats
- Clear any existing arrangement before modifying seat layout