# lerubz/cau_oop_project1_ architecture

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

- Interactive diagram: https://gitdiagram.com/lerubz/cau_oop_project1_
- Repository: https://github.com/lerubz/cau_oop_project1_

## Overview

This is a command-line student-record manager. A user selects insertion, search/listing, or sorting; the CLI validates and constructs records, while the singleton manager owns in-memory records and pipe-delimited file persistence. Searches and listings are sorted using a selectable strategy before the CLI displays results. The README is empty, so capabilities and wiring are based on the sampled source; the data file is supplied at runtime.

Main entry points: [`CAU_OOP_Project1/CAU_OOP_Project1.cpp`](https://github.com/lerubz/cau_oop_project1_/blob/master/CAU_OOP_Project1/CAU_OOP_Project1.cpp) (Menu and handlers), [`CAU_OOP_Project1/StudentManager.cpp`](https://github.com/lerubz/cau_oop_project1_/blob/master/CAU_OOP_Project1/StudentManager.cpp) (Student manager), [`CAU_OOP_Project1/Student.cpp`](https://github.com/lerubz/cau_oop_project1_/blob/master/CAU_OOP_Project1/Student.cpp) (Student model), [`CAU_OOP_Project1/file1.txt`](https://github.com/lerubz/cau_oop_project1_/blob/master/CAU_OOP_Project1/file1.txt) (Record file)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["Console interface"]
  node_app["Menu and handlers"]
end

subgraph group_records["Student records"]
  node_manager["Student manager<br/>[StudentManager.cpp]"]
  node_student["Student model<br/>[Student.cpp]"]
  node_data[("Record file<br/>[file1.txt]")]
end

subgraph group_sorting["Sorting"]
  node_strategy["Sort strategies<br/>[SortStrategy.cpp]"]
end

node_user(("User"))

node_user -->|"enters choices"| node_app
node_app -->|"initializes manager"| node_manager
node_manager -->|"loads and saves"| node_data
node_app -->|"constructs record"| node_student
node_app -->|"inserts or searches"| node_manager
node_manager -->|"reads fields"| node_student
node_manager -->|"sorts results"| node_strategy
node_app -->|"sets strategy"| node_manager
node_app -->|"displays results"| node_user

click node_app "https://github.com/lerubz/cau_oop_project1_/blob/master/CAU_OOP_Project1/CAU_OOP_Project1.cpp"
click node_manager "https://github.com/lerubz/cau_oop_project1_/blob/master/CAU_OOP_Project1/StudentManager.cpp"
click node_student "https://github.com/lerubz/cau_oop_project1_/blob/master/CAU_OOP_Project1/Student.cpp"
click node_data "https://github.com/lerubz/cau_oop_project1_/blob/master/CAU_OOP_Project1/file1.txt"
click node_strategy "https://github.com/lerubz/cau_oop_project1_/blob/master/CAU_OOP_Project1/SortStrategy.cpp"

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_app,node_user toneBlue
class node_manager,node_student,node_data toneAmber
class node_strategy toneMint
```

## Components

### Console interface

- [Menu and handlers](https://github.com/lerubz/cau_oop_project1_/blob/master/CAU_OOP_Project1/CAU_OOP_Project1.cpp): `CAU_OOP_Project1/CAU_OOP_Project1.cpp`

### Student records

- [Student manager](https://github.com/lerubz/cau_oop_project1_/blob/master/CAU_OOP_Project1/StudentManager.cpp): `CAU_OOP_Project1/StudentManager.cpp`
- [Student model](https://github.com/lerubz/cau_oop_project1_/blob/master/CAU_OOP_Project1/Student.cpp): `CAU_OOP_Project1/Student.cpp`
- [Record file](https://github.com/lerubz/cau_oop_project1_/blob/master/CAU_OOP_Project1/file1.txt): `CAU_OOP_Project1/file1.txt`

### Sorting

- [Sort strategies](https://github.com/lerubz/cau_oop_project1_/blob/master/CAU_OOP_Project1/SortStrategy.cpp): `CAU_OOP_Project1/SortStrategy.cpp`

### Other components

- **User**

## Connections

- User → Menu and handlers: enters choices
- Menu and handlers → Student manager: initializes manager
- Student manager → Record file: loads and saves
- Menu and handlers → Student model: constructs record
- Menu and handlers → Student manager: inserts or searches
- Student manager → Student model: reads fields
- Student manager → Sort strategies: sorts results
- Menu and handlers → Student manager: sets strategy
- Menu and handlers → User: displays results
