ExamPlanner is a web-based exam classroom and invigilator assignment system developed with ASP.NET Core MVC and SQL Server.
The project is designed to help faculties plan exam weeks by assigning suitable classrooms and invigilators while enforcing capacity, availability, conflict-prevention, and database integrity rules.
ExamPlanner focuses on one core problem:
Assign the right classrooms and invigilators to each exam without causing classroom conflicts, invigilator conflicts, capacity problems, or rule violations.
The system does not work as a simple CRUD application. Its main feature is the Exam Assignment workflow, where an exam is selected, suitable classrooms are recommended, and invigilators are assigned according to predefined business rules.
- Exam schedule management
- Classroom capacity planning
- Efficient classroom combination recommendation
- Classroom conflict prevention
- Invigilator conflict prevention
- Invigilator leave / unavailable time control
- Department-based invigilator assignment
- Shared faculty invigilator pool support
- Maximum daily invigilator workload control
- Consecutive session rule control
- Assignment reports
- Exam schedule reports
- Classroom usage reports
- Invigilator workload reports
- Change logs for exam date/session updates
- Role-based database security
- SQL Server backup support
The system enforces the following rules:
- Exams belonging to the same department and semester cannot be assigned to the same session.
- A semester cannot have more than two exams on the same day.
- Exams on the same day must have at least one session gap when required.
- A classroom can only be used by one exam in the same date and session.
- The total capacity of assigned classrooms cannot be lower than the number of students.
- The system recommends the most efficient classroom combination.
- An invigilator cannot be assigned to multiple classrooms at the same date and session.
- An unavailable or excused invigilator cannot be assigned.
- An invigilator can have a maximum daily workload.
- An invigilator can work in at most three consecutive sessions.
- If department invigilators are not enough, the system uses the shared faculty pool.
- ASP.NET Core MVC
- SQL Server
- SQL Server Management Studio
- Microsoft.Data.SqlClient
- HTML
- CSS
- Bootstrap
- JavaScript
The project uses a relational database named:
ExamPlannerDb
Main database concepts include:
- Departments
- Courses
- Classrooms
- Exam sessions
- Instructors / invigilators
- Instructor unavailable times
- Exams
- Exam-classroom assignments
- Exam-invigilator assignments
- Exam change logs
- Application users / roles
Many-to-many relationships are resolved with junction tables. For example:
- Exams and classrooms are connected through
ExamClassrooms. - Classroom assignments and instructors are connected through
ExamInvigilators.
The database includes:
- Primary keys
- Foreign keys
- Unique constraints
- Check constraints
- Default constraints
- Indexes
- Views
- Stored procedures
- User-defined functions
- Triggers
- Transaction / rollback logic
- Role-based security
- Backup stored procedure
The project includes SQL proof and utility scripts under the database folder.
Important files:
database/ExamPlannerDb.bak
database/Teknik_Kriterler_Kanit.sql
database/Ek_Isterler_Kanit.sql
database/Role_Based_Security_Kanit.sql
database/backup database.sql
database/final sunum.sql
The web application includes the following main screens:
- Dashboard
- Exams
- Exam Assignment
- Criteria
- Courses
- Classrooms
- Instructors
- Reports
- Logs
- Login / Role selection
The main workflow is:
- Select an exam.
- Click Recommend Suitable Classrooms.
- The system calculates the most efficient classroom combination.
- Click Assign Classroom + Invigilator.
- The assignment is written to SQL Server.
- Reports are updated automatically.
Example demo case:
Exam: MAK 1106 - Statik
Student count: 150
Recommended classrooms: 309, 310, 311
Capacities: 40 + 60 + 50
Total capacity: 150
Capacity surplus: 0
This demonstrates efficient classroom planning with no capacity waste.
The default connection string is:
Server=localhost;Database=ExamPlannerDb;Trusted_Connection=True;TrustServerCertificate=True;
It can be found in:
VeritabaniProjesi-UI/ExamPlanner.Web/ExamPlanner.Web/appsettings.json
Make sure the following tools are installed:
- Visual Studio
- SQL Server
- SQL Server Management Studio
Open SQL Server Management Studio and restore the database backup file:
database/ExamPlannerDb.bak
The restored database name must be:
ExamPlannerDb
Open the Visual Studio solution file:
VeritabaniProjesi-UI/ExamPlanner.Web/ExamPlanner.Web.slnx
Verify that the connection string in appsettings.json points to your local SQL Server instance.
Default value:
Server=localhost;Database=ExamPlannerDb;Trusted_Connection=True;TrustServerCertificate=True;
Run the project from Visual Studio.
After the application starts, test the following pages:
- Dashboard
- Criteria
- Exam Assignment
- Reports
- Logs
ExamPlanner
│
├── database
│ ├── ExamPlannerDb.bak
│ ├── Teknik_Kriterler_Kanit.sql
│ ├── Ek_Isterler_Kanit.sql
│ ├── Role_Based_Security_Kanit.sql
│ ├── backup database.sql
│ └── final sunum.sql
│
├── VeritabaniProjesi-UI
│ └── ExamPlanner.Web
│ ├── ExamPlanner.Web.slnx
│ └── ExamPlanner.Web
│ ├── Controllers
│ ├── Models
│ ├── Services
│ ├── Views
│ ├── wwwroot
│ ├── Program.cs
│ └── appsettings.json
│
├── .gitignore
└── README.md
This project demonstrates how database-level business rules can be combined with a web-based user interface.
The assignment process is supported by SQL Server stored procedures, functions, triggers, constraints, and transaction management to prevent incomplete or inconsistent records.
Bu sınavda sistem 150 öğrenci için 309, 310 ve 311 salonlarını önerir. Toplam kapasite 150, kapasite fazlası 0 olur.