Desktop application built with WPF, for administering university student dormitories. The system manages students, rooms, accommodation, cards, payments and maintenance faults, with multi-language support and multiple visual themes.
- Add, edit and delete students
- Search by first name, last name, index number, year of study and faculty
- Dorm status (checked in / checked out)
- Quick overview of accommodation, card and payments
- Pavilions, rooms and individual beds
- Room occupancy overview
- Filtering by room type, floor and status
- Automatic room status update based on occupancy
- Assign and check students out of accommodation
- Track check-in and check-out dates
- Accommodation history
- Automatic bed release on check-out
- Service price list (accommodation, cafeteria, internet…)
- Multi-item payment entry
- Automatic line_total calculation
- Payment history per student
- Card records per student
- Status (ACTIVE / BLOCKED / EXPIRED)
- Real-time balance updates (top-up simulation)
- Report faults in rooms
- Status changes (REPORTED, IN_PROGRESS, RESOLVED)
- Tracks who reported and who resolved each fault
- Login system with password hashing
- User roles (admin, front desk, cashier…)
- Module access restricted per role
- Multi-language interface (BS/RS + EN)
- Multiple themes (light/dark)
- User preferences are saved and loaded on login
The database uses MySQL and consists of ~15 tables:
- faculty, pavilion, room, bed
- student, accommodation
- service, payment, payment_item
- card
- fault
- employee
- app_user, role, user_role
The database creation script is located in the DBStarter folder.
- MVVM (Model–View–ViewModel)
- Entity Framework Core (MySQL provider)
- ResourceDictionary for languages and themes
- NavigationService for view switching
- RelayCommand for commands
- Validations and interactive UI following HCI guidelines
- Themes load dynamically at runtime
- Settings are persisted in the database
- Language can be switched without restarting the application
- Import
database.sql(schema) andinsert.sql(seed data), located in theDBStarterfolder, into MySQL - Update the connection string in
StudentDormDbContext.cs - Build → Start
Vedran Topić Course: Human–Computer Interaction Faculty of Electrical Engineering, University of Banja Luka


