# agnare/monitoringdbs architecture

> Architecture diagram of the GitHub repository agnare/monitoringdbs, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/agnare/monitoringdbs
- Repository: https://github.com/agnare/monitoringdbs

## Overview

Monitoring DBS is a Windows desktop applicant-record system. Users authenticate, manage applicant records and search or review the trash; the main form coordinates those actions through a controller, which updates the in-memory database and persists it to students.dat. Separate capabilities include Excel import, school analysis, and year-filtered statistics with CSV export. The main-form excerpt is partial, so links for documented features whose handlers are not visible are omitted; authentication is documented, but its integration with the main window is not shown.

Main entry points: [`MonitoringDBS/MainForm.h`](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/MainForm.h) (Main form), [`MonitoringDBS/Controller.cpp`](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/Controller.cpp) (Application controller), [`MonitoringDBS/FileManager.cpp`](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/FileManager.cpp) (File manager), [`MonitoringDBS/Database.cpp`](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/Database.cpp) (Applicant records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop interface"]
  node_login["Login form<br/>[LoginForm.h]"]
  node_main["Main form<br/>[MainForm.h]"]
  node_addedit["Record editor<br/>[AddEditForm.h]"]
  node_searchform["Search form<br/>[SearchForm.h]"]
  node_specialform["School results"]
end

subgraph group_domain["Applicant management"]
  node_controller["Application controller<br/>[Controller.cpp]"]
  node_database["Applicant records<br/>[Database.cpp]"]
  node_applicant["Applicant entity<br/>[Abitura.h]"]
  node_entity["Base entity<br/>[Entity.h]"]
end

subgraph group_analytics["Analysis and import"]
  node_importer["Excel importer<br/>[ExcelImporter.cpp]"]
  node_importinterface["Importer interface<br/>[IImporter.h]"]
  node_calculator["Statistics calculator"]
  node_report["Statistics report<br/>[StatisticsReport.h]"]
  node_statsform["Statistics form<br/>[StatisticsForm.h]"]
end

subgraph group_persistence["Local persistence"]
  node_filemanager["File manager<br/>[FileManager.cpp]"]
  node_datafile[("Applicant data file<br/>[students.dat]")]
end

node_user(("User"))

node_user -->|"enters credentials"| node_login
node_login -.->|"grants access"| node_main
node_user -->|"manages records"| node_main
node_main -->|"requests operations"| node_controller
node_main -->|"opens editor"| node_addedit
node_main -->|"opens search"| node_searchform
node_main -->|"dispatches import"| node_importer
node_main -->|"requests analysis"| node_calculator
node_main -.->|"shows results"| node_specialform
node_controller -->|"mutates and queries"| node_database
node_database -->|"stores records"| node_applicant
node_applicant -->|"inherits from"| node_entity
node_controller -->|"loads and saves"| node_filemanager
node_filemanager -->|"serializes records"| node_database
node_filemanager -->|"reads and writes"| node_datafile
node_importer -->|"implements"| node_importinterface
node_statsform -->|"calculates report"| node_calculator
node_calculator -->|"produces"| node_report
node_statsform -->|"exports CSV"| node_report

click node_login "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/LoginForm.h"
click node_main "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/MainForm.h"
click node_addedit "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/AddEditForm.h"
click node_searchform "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/SearchForm.h"
click node_specialform "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/SpecialSearchForm.h"
click node_controller "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/Controller.cpp"
click node_database "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/Database.cpp"
click node_applicant "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/Abitura.h"
click node_entity "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/Entity.h"
click node_importer "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/ExcelImporter.cpp"
click node_importinterface "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/IImporter.h"
click node_calculator "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/StatisticsCalculator.h"
click node_report "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/StatisticsReport.h"
click node_statsform "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/StatisticsForm.h"
click node_filemanager "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/FileManager.cpp"
click node_datafile "https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/students.dat"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_login,node_main,node_addedit,node_searchform,node_specialform,node_user toneBlue
class node_controller,node_database,node_applicant,node_entity toneAmber
class node_importer,node_importinterface,node_calculator,node_report,node_statsform toneMint
class node_filemanager,node_datafile toneRose
```

## Components

### Desktop interface

- [Login form](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/LoginForm.h): `MonitoringDBS/LoginForm.h`
- [Main form](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/MainForm.h): `MonitoringDBS/MainForm.h`
- [Record editor](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/AddEditForm.h): `MonitoringDBS/AddEditForm.h`
- [Search form](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/SearchForm.h): `MonitoringDBS/SearchForm.h`
- [School results](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/SpecialSearchForm.h): `MonitoringDBS/SpecialSearchForm.h`

### Applicant management

- [Application controller](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/Controller.cpp): `MonitoringDBS/Controller.cpp`
- [Applicant records](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/Database.cpp): `MonitoringDBS/Database.cpp`
- [Applicant entity](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/Abitura.h): `MonitoringDBS/Abitura.h`
- [Base entity](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/Entity.h): `MonitoringDBS/Entity.h`

### Analysis and import

- [Excel importer](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/ExcelImporter.cpp): `MonitoringDBS/ExcelImporter.cpp`
- [Importer interface](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/IImporter.h): `MonitoringDBS/IImporter.h`
- [Statistics calculator](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/StatisticsCalculator.h): `MonitoringDBS/StatisticsCalculator.h`
- [Statistics report](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/StatisticsReport.h): `MonitoringDBS/StatisticsReport.h`
- [Statistics form](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/StatisticsForm.h): `MonitoringDBS/StatisticsForm.h`

### Local persistence

- [File manager](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/FileManager.cpp): `MonitoringDBS/FileManager.cpp`
- [Applicant data file](https://github.com/agnare/monitoringdbs/blob/main/MonitoringDBS/students.dat): `MonitoringDBS/students.dat`

### Other components

- **User**

## Connections

- User → Login form: enters credentials
- Login form → Main form: grants access
- User → Main form: manages records
- Main form → Application controller: requests operations
- Main form → Record editor: opens editor
- Main form → Search form: opens search
- Main form → Excel importer: dispatches import
- Main form → Statistics calculator: requests analysis
- Main form → School results: shows results
- Application controller → Applicant records: mutates and queries
- Applicant records → Applicant entity: stores records
- Applicant entity → Base entity: inherits from
- Application controller → File manager: loads and saves
- File manager → Applicant records: serializes records
- File manager → Applicant data file: reads and writes
- Excel importer → Importer interface: implements
- Statistics form → Statistics calculator: calculates report
- Statistics calculator → Statistics report: produces
- Statistics form → Statistics report: exports CSV
