π Online Exam System
A desktop-based Online Exam System built with Python and CustomTkinter, designed for both students and administrators.
The system provides exam management, student accounts, timed examinations, result tracking, secure password handling, and optional webcam-based monitoring.
π Features
π¨βπΌ Admin Features
- Create and manage student accounts
- Edit and delete student accounts
- Create multiple exams
- Set exam title, duration, and pass mark
- Add, edit, and delete exam questions
- View studentsβ exam results
- Identify results below 50% for attention
π¨βπ Student Features
- Create a personal student account
- Browse available exams
- Take timed exams
- Navigate between questions
- Submit exams and receive results
- View personal exam history
- Receive improvement notices for scores below 50%
π Security
- Passwords are not stored in plain text
- Password hashing uses PBKDF2-SHA256
- Each user receives a random salt
- No hardcoded administrator account
- First-run setup creates the administrator account
- Failed login attempts are throttled
π· Optional Exam Monitoring
- Fullscreen exam mode
- Optional local webcam preview
- Focus-loss events are monitored during exams
- Webcam monitoring requires user consent
- No video is recorded or saved
Note: The monitoring system is designed as a classroom-level deterrent and is not intended to provide tamper-proof security.
π οΈ Technologies Used
- Python
- CustomTkinter β Modern desktop GUI
- SQLite / JSON-based application data
- OpenCV β Webcam access
- Pillow (PIL) β Image processing and camera preview
- hashlib β Secure password hashing
- secrets β Random security values
π Project Structure
Online-Exam-System/
β
βββ online_exam_system.py
βββ README.md
βββ data/
βββ Application data generated by the system
βοΈ Installation
1. Clone the repository
git clone https://github.com/your-username/online-exam-system.git
2. Navigate to the project
3. Install dependencies
pip install customtkinter opencv-python pillow
4. Run the application
python online_exam_system.py
π First Run
When the application is launched for the first time, the system guides the administrator through the initial setup.
There is no hardcoded admin account. The administrator account is created through the applicationβs setup process.
π How It Works
Administrator
- Launch the application.
- Complete the first-run administrator setup.
- Log in to the admin dashboard.
- Create student accounts or manage existing students.
- Create an exam.
- Configure the exam title, duration, and pass mark.
- Add questions and answer choices.
- Review submitted exam results.
Student
- Create a student account.
- Log in to the application.
- Select an available exam.
- Read the exam instructions.
- Start the timed examination.
- Answer the questions.
- Submit the exam.
- Review the result and previous exam history.
β±οΈ Exam System
During an exam, students can:
- View the current question
- Select from multiple-choice answers
- Move between questions
- Track exam progress
- See the remaining time
- Submit the exam when finished
When monitoring is enabled, the exam can run in fullscreen mode while the application displays a local webcam preview and tracks focus-loss events.
π Password Security
The application uses PBKDF2-SHA256 with a randomly generated per-user salt instead of storing passwords as plain text. Repeated failed login attempts are also throttled.
π· Privacy
The webcam feature provides a local live preview only.
The project does not record or save webcam video to disk.
π― Project Goals
This project was developed to demonstrate practical skills in:
- Python application development
- GUI development
- Object-oriented programming
- User authentication
- Password security
- Exam and question management
- Timed application workflows
- Result processing
- Webcam integration
- Event handling
- Building a complete desktop application
π¨βπ» Author
Ziad Sayed Ahmed (Zico)
π§ Email: z.hamzawyyy@gmail.com
π Disclaimer
This project is intended for educational and demonstration purposes.
The optional proctoring functionality provides basic classroom-level monitoring and should not be considered a secure or tamper-proof examination proctoring solution.