FaceScan is a local desktop application used for automatically registering student attendance based on real-time face recognition. It uses JavaFX for the user interface and OpenCV for face detection and recognition.
- User registration and login (professors)
- Managing student groups
- Adding and editing students (first name, last name, photo)
- Live camera preview with face detection
- Recognizing students’ faces based on previously stored images
- Recording attendance in a local SQLite database
- Viewing attendance history for a selected group
The project follows the MVC + DAO architecture pattern.
src/
└── main/
└── java/
└── com/
└── faceScan/
├── controller/ # JavaFX controllers (LoginController, AttendanceHistoryController, etc.)
├── dao/ # DAO layer: UserDAO, GroupDAO, AttendanceDAO, etc.
├── model/ # Data classes: User, Student, Group, Attendance, StudentPresence
├── iface/ # Interfaces for face detection and recognition
├── util/ # Utility classes: DatabaseManager, ImagesUtils, AlertFactory
├── session/ # Session management: SessionManager
└── Main.java # Application entry point
controller/– JavaFX controllers (Login, Register, Dashboard, StudentDetails, AttendanceHistory)dao/– DAO layer: UserDAO, GroupDAO, AttendanceDAO, GroupMemberDAOmodel/– Data models: User, Group, Student, Attendance, StudentPresenceiface/– Interfaces: IFaceDetector, IFaceRecognizerutil/– Utilities: DatabaseManager, ImagesUtils, AlertFactorysession/– Session management: SessionManagerMain.java– Application start point
- Java 17
- JavaFX
- OpenCV 4.12.0
- SQLite (JDBC)
- JUnit 5
- Make sure Java 17 and JavaFX are installed.
- Compile the project using an IDE (e.g., IntelliJ) or command line.
- Run the
Main.javaclass. - If needed, the database (
face_scan.db) will be created automatically.
The project includes unit tests (JUnit 5) located in src/test/java. They cover DAO classes, data models, and controllers.