A GTK4 student-accounts management system, fused from the ideas of two older
CLI projects (cli_atm_system and cli_student_database_management_system).
Students hold bank accounts whose type is tied to their profile:
Department, Erasmus, or Notes/Study fund — with department-gated
access control and audit logging.
- Student records - add, edit, delete, and search students (AM, name, surname, department, Erasmus flag, notes).
- Profile-based accounts - each student owns accounts typed by their department, Erasmus status, or study notes.
- Banking - PIN-protected login per account, deposit, withdraw, balance.
- Access control - admin and per-department users gate write operations.
- Persistence & backups - binary data file with automatic timestamped backups and rotation.
- Audit logging - every sensitive operation is written to
student_bank.log. - Dashboard - live totals for students, accounts, and balances.
- CMake 3.16+ and a C99 compiler (GCC/Clang).
- GTK4 development headers (platform-specific, see below).
sudo dnf install gtk4-devel cmake gcc
cmake -B build && cmake --build build
ctest --test-dir build --output-on-failuresudo apt install libgtk-4-dev cmake gcc
cmake -B build && cmake --build build
ctest --test-dir build --output-on-failurebrew install gtk4 cmake
cmake -B build && cmake --build build
ctest --test-dir build --output-on-failure-
Install MSYS2 and open its UCRT64 shell.
-
Install the required packages:
pacman -S mingw-w64-ucrt-x86_64-gtk4 \ mingw-w64-ucrt-x86_64-cmake \ mingw-w64-ucrt-x86_64-gcc -
Build and test:
cmake -B build && cmake --build build ctest --test-dir build --output-on-failure -
Run the app:
./build/student_bank.exe
./build/student_bankData is stored in student_bank.dat, logs in student_bank.log, and backups
in backups/.
| Role | Username | Password | Access |
|---|---|---|---|
| Admin | admin |
securepass |
All departments |
| Mechanical | mech_user |
mechpass |
Department 11 only |
| Electrical | elec_user |
elecpass |
Department 12 only |
| Civil | civil_user |
civilpass |
Department 13 only |
Student AM format: 1[1-3][001-999] (second digit is the department code).
See CONTRIBUTING.md for the git workflow and CONSTRAINTS.md for code rules. The roadmap lives in PLAN.md. For the GUI layer, consult the GTK4 documentation.
MIT. See LICENSE.