AttendanceApp is a standalone C++/Win32 desktop application for roll call and attendance management. It supports custom .attd files, multiple courses/classes, course details, student rosters, lesson workflows, CSV import/export, printable reports, autosave, undo/redo, statistics charts, backup/restore, file icons, and persistent UI settings.
Version 2.0.4 (Ultra Optimization) reorganizes the application into independently compiled modules, makes all personalization settings generally available, raises the dropdown scroll target limit to 360 FPS, and improves data safety, filtering, batch deletion, file processing, and binary size. Existing layouts, particle densities, 20 languages, and the .attd V5 format remain compatible.
- Create and edit attendance records with date/time, name, status, and notes.
- Status buttons:
Present,Absent,Late,Other. - Save/import custom
.attdattendance files. - Multi-course/class management from the top course selector.
- Rename, add, and delete courses/classes.
- Store course/class details such as teacher/owner, location, and notes.
- Import student rosters from CSV files.
- Manage student roster entries and generate attendance records from the roster.
- Create today's lesson from the roster and switch between lesson/date filters.
- Run Quick roll call from the current course roster with number-key marking, previous/skip navigation, duplicate protection, partial-finish confirmation, and one-step undo.
- Review lesson completion against the roster, including missing and duplicate attendance records.
- Open per-student attendance profiles and risk-student summaries.
- Use advanced filter syntax for names, status, course, date, and date ranges.
- Search/filter records by date, name, status, or notes.
- Export attendance records to CSV.
- Print or export to PDF through a generated printable HTML report with selectable report templates.
- PowerPoint
.pptxexport with a pure-black report theme, summary cards, status charts, trend charts, and template/range-aware summaries. - Configurable autosave to
%APPDATA%\AttendanceApp\autosave.attd(off, 30 seconds, 1 minute, or 5 minutes). - Restore, inspect, ignore, or delete autosave files on startup when available.
- Ignored recovery files are preserved as timestamped protected backups before a new session replaces the active autosave.
- Closing with dirty data checks the final autosave result and warns before exiting if recovery data could not be written.
- Backup and restore the latest attendance workbook from AppData, with timestamped backup history.
- Reopen the most recently saved or imported attendance file.
- Choose a default save folder for exported and saved files.
- Undo/redo with editable keyboard shortcuts.
- Graphical statistics chart window.
- Statistics range controls for all records, this week, or this month.
- Command palette for quick save/import/export/backup/statistics/settings actions, lesson review, and
rollcalllaunch. - Database mirror export to
%APPDATA%\AttendanceApp\attendance.attddb. - Persistent settings saved to
%APPDATA%\AttendanceApp\settings.ini. - Pure-black and pure-white themes, restrained accent tones, text size, interface density, autosave timing, dropdown scroll frame rate, statistics cards, footer hint, and table grid visibility are directly available in Settings.
- Synchronized dark/light theme transitions keep backgrounds, text, inputs, lists, and title bars on one visual timeline.
- Optional continuous pixel smooth scrolling for combo-box dropdowns and custom popup menus, with responsive mouse-wheel and precision-touchpad motion.
- Dropdown scroll scheduling is configurable from 60 to 360 FPS, uses a high-resolution timeline, skips stale frames, and applies immediately without restarting. Actual visible frame rate depends on the display, compositor, and hardware.
- The experimental gate has been removed. Existing theme, font, layout, and animation choices are retained; individual effect switches and Reset All Settings remain available.
- CSV, printable HTML, PowerPoint, database mirror, settings, and attendance saves verify complete writes before reporting success.
- CSV, printable HTML, and database report generation use immutable background snapshots; PowerPoint packaging and report file writes also run on the report worker. Completion feedback returns to the UI thread, and accepted writes finish safely during shutdown.
- Bounded, scrollable Tools menu with a local double-buffered refresh path, keyboard navigation, and a slim position indicator.
- Supported languages: English, Simplified Chinese, Maltese, Japanese, French, German, Russian, Traditional Chinese Taiwan, Spanish, Italian, Mongolian, Esperanto, Classical Chinese, Thai, Filipino, Turkish, Lithuanian, Norwegian, Vietnamese, and Traditional Chinese Hong Kong Cantonese. The Hong Kong interface uses an independent local vocabulary, while exported reports use professional written wording.
- Default window size:
1600x900; resizable withF11fullscreen.
See Architecture for module responsibilities and the 2.0.4 audit for measured changes and validation limits.
Attendance Project 2.0/
+-- assets/ # Application and .attd file icons
+-- docs/ # Extra documentation
+-- examples/ # Example CSV roster
+-- include/ # Header files
+-- resources/ # Windows resource script
+-- scripts/ # Helper scripts
+-- src/ # C++ source code
+-- CMakeLists.txt # CMake build file
+-- build.bat # Windows one-command build helper
+-- register_attd_filetype.bat # Registers .attd file icon/association
+-- LICENSE
+-- README.md
- Windows 10 or later
- Visual Studio 2022/2026 or Visual Studio Build Tools
- C++ desktop workload / MSVC toolchain
- Optional: CMake 3.20 or later
Run from the project root:
build.batWhen CMake is available, the executable is generated at:
build\Release\AttendanceApp.exe
If the helper script falls back to direct MSVC compilation, the executable is generated at:
build\AttendanceApp.exe
cmake -S . -B build -A x64
cmake --build build --config ReleaseThe executable is generated at:
build\Release\AttendanceApp.exe
- Launch
AttendanceApp.exe. - Select or create a course/class from the top
Coursescontrols. - Enter a date/time and student name.
- Click one of the status buttons:
Present,Absent,Late, orOther. - Use
Save .attdto save the attendance workbook. - Use
Import .attdto load a saved attendance workbook. - Use the search box above the table to filter the current course by date, name, status, or notes.
- Use
Toolsfor Quick roll call, lesson workflows, roster management, course details, lesson completion checks, student profiles, advanced filters, report templates, print/PDF export, PowerPoint export, statistics, risk students, backup/restore, recent files, default save folder, autosave, command palette, shortcut editing, and database mirror export.
After building, run:
register_attd_filetype.batThis registers the .attd file icon and associates .attd files with AttendanceApp for the current Windows user.
See:
examples\sample_roster.csv
The roster importer uses the first non-empty cell in each row as the student name.
Imported roster entries are added to the current course with Absent as the initial status, so they can be marked during roll call.
.attd files use a custom attendance format wrapped in lightweight encoding:
ATTD1: + Base64(XOR encrypted custom attendance data)
Current files use ATTENDANCE_V5 internally for multi-course data, course details, student rosters, and the last active course/class index. Older ATTENDANCE_V1, ATTENDANCE_V2, ATTENDANCE_V3, and ATTENDANCE_V4 files are still supported on import, with a .pre-v5.bak safety copy created before older files are migrated.
This is lightweight protection for a custom project file format, not high-security cryptography. Do not treat .attd encoding as privacy protection for sensitive student data.
This project is released under the MIT License. See LICENSE.