A desktop application for managing student attendance using NFC card scanning technology.
This application provides an easy-to-use interface for tracking student attendance at educational institutions. It allows administrators to create databases for different classes, import student information, record attendance using NFC cards, and export attendance data for reporting purposes.
- Real-time Attendance Tracking: Scan NFC cards to instantly mark students as present
- Database Management: Create and manage multiple class databases
- Student Management: Add students individually or import from Excel files
- Grouping and Filtering: Automatically filters students by major, stage, study type, and group
- Attendance Reports: Export attendance data to Excel for further analysis
- User-friendly Interface: Modern UI with intuitive controls
The latest update includes significant UI enhancements:
- Modern color scheme with professional blues and accent colors
- Tabbed interface for better organization between student management and attendance recording
- Improved form layouts with proper alignment and spacing
- Better visual hierarchy with clear section headers
- Rounded corners for panels with subtle borders
- Enhanced treeview for attendance dashboard display
- Consistent use of geometry managers (pack) to avoid layout conflicts
- Python 3.6+
- Required Python packages:
- tkinter (for the GUI)
- sqlite3 (for database management)
- openpyxl (for Excel file handling)
- PIL/Pillow (for image processing)
- Clone this repository
- Install the required dependencies:
pip install openpyxl pillow - Run the application:
python app.py
- Launch the application
- Click "Create New Database" to create a new class database or select an existing one from the dropdown
- The database will be stored in the "Students Databases" folder
- Fill in the student information (ID, Name, Major, Stage, Study, Group)
- Click "Add Student"
- Click "Import Students from Excel"
- Select an Excel file with student information
- The Excel file should have columns for: Student ID, Name, Major, Stage, Study, Group
- Make sure the correct database is selected
- Have students scan their NFC cards or manually enter their ID in the "Scan NFC Card" field
- The first student who scans sets the filters (major, stage, study, group) for that session
- Attendance is recorded in real-time and displayed in the dashboard
- Click "Export Attendance" to save the current attendance data
- Choose a location to save the Excel file
- The exported file includes all students from the filtered group with their attendance status
- Click "Reset Attendance" to clear all attendance records
- This will reset all filters and allow for a new attendance session
app.py: Main application fileStudents Databases/: Directory containing database files and Excel templates*.db: SQLite database files for different classes*.xlsx: Excel files containing student information
Stages/: Directory containing stage-specific informationFirst Stage/: First year student dataSecond Stage/: Second year student dataThird Stage/: Third year student dataFourth Stage/: Fourth year student data
- Logo files: Any Image You Want
.
│ .gitignore
│ app.py
│ README.md
│ Any_Image_You_Want.png
│
├───Students Databases
│ │ First.db (Database file)
│ │ Any_Excel_File_You_Want.xlsx (Excel template)
│
└───Stages
├───First Stage
│ ├───Evening
│ │ ├───GA
│ │ └───GB
│ └───Morning
│ ├───GA
│ └───GB
├───Fourth Stage
│ ├───Evening
│ │ ├───GA
│ │ └───GB
│ └───Morning
│ ├───GA
│ └───GB
├───Second Stage
│ ├───Evening
│ │ ├───GA
│ │ └───GB
│ └───Morning
│ ├───GA
│ └───GB
└───Third Stage
├───Evening
│ ├───GA
│ └───GB
└───Morning
├───GA
└───GB
This structure organizes student data by Stage (year), Study type (Morning/Evening), and Group (GA/GB). The application uses this organization to manage and filter attendance records, You can change the structure as you want.
student_id(TEXT): Primary key, unique identifier for each studentname(TEXT): Student's full namemajor(TEXT): Student's major/specializationstage(TEXT): Student's year/stagestudy(TEXT): Study type (e.g., Morning, Evening)group_name(TEXT): Student's assigned group
id(INTEGER): Primary key, auto-incrementedstudent_id(TEXT): Foreign key to students tablename(TEXT): Student's namemajor(TEXT): Student's majorstage(TEXT): Student's stagestudy(TEXT): Study typegroup_name(TEXT): Student's grouptimestamp(TEXT): Date and time when attendance was recordedattended(INTEGER): Boolean flag (1 = present, 0 = absent)
The application accepts Excel files with the following structure:
- Column 1: Student ID
- Column 2: Name
- Column 3: Major
- Column 4: Stage
- Column 5: Study
- Column 6: Group
The first row should contain headers and will be skipped during import.
This project is proprietary and has been developed for educational institutions.
Made with ❤️ by @AhmadTchnology