# badis-95r/sae_c_gestionetudiant architecture

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

- Interactive diagram: https://gitdiagram.com/badis-95r/sae_c_gestionetudiant
- Repository: https://github.com/badis-95r/sae_c_gestionetudiant

## Overview

This C command-line application manages a BUT student cohort from enrollment through grades, semester decisions and annual reporting. Users enter commands; the main loop dispatches them to feature handlers, which operate on promotion and student records and print results. The annual jury applies validation, compensation and progression rules, while course-history display presents semester results. The graph uses the single source file for all implementation nodes. Some handler relationships and capabilities are documented in the README; only excerpts of the source were available, so unshown internal calls are not inferred.

Main entry points: [`SAE_C.c`](https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c) (Command loop)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["Command Interface"]
  node_main["Command loop<br/>[SAE_C.c]"]
end

subgraph group_records["Student Records"]
  node_promotion["Promotion state<br/>[SAE_C.c]"]
  node_enrollment["Enrollment<br/>[SAE_C.c]"]
  node_student_list["Student listing<br/>[SAE_C.c]"]
end

subgraph group_academic["Academic Progress"]
  node_grade_entry["Grade entry<br/>[SAE_C.c]"]
  node_transcript["Course history<br/>[SAE_C.c]"]
  node_grade_display["Grade display<br/>[SAE_C.c]"]
  node_annual_average["Annual averages<br/>[SAE_C.c]"]
end

subgraph group_administration["Administration"]
  node_status_admin["Status changes<br/>[SAE_C.c]"]
  node_jury["Semester jury<br/>[SAE_C.c]"]
  node_annual_rules["Annual decisions<br/>[SAE_C.c]"]
  node_cohort_report["Yearly report<br/>[SAE_C.c]"]
end

node_user(("Command-line user"))

node_user -->|"enters commands"| node_main
node_main -->|"dispatches INSCRIRE"| node_enrollment
node_main -->|"dispatches ETUDIANTS"| node_student_list
node_main -->|"dispatches NOTE"| node_grade_entry
node_main -->|"dispatches CURSUS"| node_transcript
node_main -->|"dispatches status commands"| node_status_admin
node_main -->|"dispatches JURY"| node_jury
node_main -->|"dispatches BILAN"| node_cohort_report
node_enrollment -->|"updates records"| node_promotion
node_grade_entry -->|"records grades"| node_promotion
node_status_admin -->|"updates status"| node_promotion
node_transcript -->|"formats grades"| node_grade_display
node_jury -->|"applies decisions"| node_annual_rules
node_annual_rules -->|"calculates averages"| node_annual_average
node_jury -->|"updates progression"| node_promotion
node_cohort_report -->|"summarizes cohort"| node_promotion

click node_main "https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c"
click node_promotion "https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c"
click node_enrollment "https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c"
click node_student_list "https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c"
click node_grade_entry "https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c"
click node_transcript "https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c"
click node_grade_display "https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c"
click node_status_admin "https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c"
click node_jury "https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c"
click node_annual_rules "https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c"
click node_annual_average "https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c"
click node_cohort_report "https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c"

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_main,node_user toneBlue
class node_promotion,node_enrollment,node_student_list toneAmber
class node_grade_entry,node_transcript,node_grade_display,node_annual_average toneMint
class node_status_admin,node_jury,node_annual_rules,node_cohort_report toneRose
```

## Components

### Command Interface

- [Command loop](https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c): `SAE_C.c`

### Student Records

- [Promotion state](https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c): `SAE_C.c`
- [Enrollment](https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c): `SAE_C.c`
- [Student listing](https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c): `SAE_C.c`

### Academic Progress

- [Grade entry](https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c): `SAE_C.c`
- [Course history](https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c): `SAE_C.c`
- [Grade display](https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c): `SAE_C.c`
- [Annual averages](https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c): `SAE_C.c`

### Administration

- [Status changes](https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c): `SAE_C.c`
- [Semester jury](https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c): `SAE_C.c`
- [Annual decisions](https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c): `SAE_C.c`
- [Yearly report](https://github.com/badis-95r/sae_c_gestionetudiant/blob/master/SAE_C.c): `SAE_C.c`

### Other components

- **Command-line user**

## Connections

- Command-line user → Command loop: enters commands (evidence: `README.md`)
- Command loop → Enrollment: dispatches INSCRIRE (evidence: `SAE_C.c`)
- Command loop → Student listing: dispatches ETUDIANTS (evidence: `README.md`)
- Command loop → Grade entry: dispatches NOTE (evidence: `README.md`)
- Command loop → Course history: dispatches CURSUS (evidence: `README.md`)
- Command loop → Status changes: dispatches status commands (evidence: `README.md`)
- Command loop → Semester jury: dispatches JURY (evidence: `README.md`)
- Command loop → Yearly report: dispatches BILAN (evidence: `README.md`)
- Enrollment → Promotion state: updates records (evidence: `README.md`)
- Grade entry → Promotion state: records grades (evidence: `README.md`)
- Status changes → Promotion state: updates status (evidence: `SAE_C.c`)
- Course history → Grade display: formats grades (evidence: `SAE_C.c`)
- Semester jury → Annual decisions: applies decisions (evidence: `README.md`)
- Annual decisions → Annual averages: calculates averages (evidence: `SAE_C.c`)
- Semester jury → Promotion state: updates progression (evidence: `README.md`)
- Yearly report → Promotion state: summarizes cohort (evidence: `README.md`)
