# aadisrimenon/reva-student-management-system-java architecture

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

- Interactive diagram: https://gitdiagram.com/aadisrimenon/reva-student-management-system-java
- Repository: https://github.com/aadisrimenon/reva-student-management-system-java

## Overview

This is an in-memory, console-based university student management system. The principal workflow starts with a console user choosing an operation in `Main`: student records are registered or searched and sorted through `StudentService`, grades and semester fees are calculated, and record and department-fee reports are displayed. Faculty records support the university-directory polymorphism demonstration. The model defines student/person and payable/reporting contracts; there is no persistent database or external service. The README documents the evaluator demonstrations, but their individual control flow is not fully sampled.

Main entry points: [`src/com/reva/sms/main/Main.java`](https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/main/Main.java) (Menu and handlers), [`src/com/reva/sms/service/StudentService.java`](https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/service/StudentService.java) (Student records), [`src/com/reva/sms/model/Student.java`](https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/model/Student.java) (Student), [`src/com/reva/sms/model/Faculty.java`](https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/model/Faculty.java) (Faculty)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_console["Console workflow"]
  node_main["Menu and handlers<br/>[Main.java]"]
end

subgraph group_services["Student services"]
  node_student_service["Student records"]
end

subgraph group_models["University model"]
  node_student["Student<br/>[Student.java]"]
  node_faculty["Faculty<br/>[Faculty.java]"]
  node_person["Person base<br/>[Person.java]"]
  node_department["Department rates<br/>[Department.java]"]
  node_payable["Payable contract<br/>[Payable.java]"]
  node_reportable["Reportable contract<br/>[Reportable.java]"]
end

subgraph group_calculations["Assessments"]
  node_grade["Grade calculation"]
  node_fee["Fee calculation<br/>[FeeCalculator.java]"]
end

node_user(("Console user"))

node_user -->|"chooses operations"| node_main
node_main -->|"manages records"| node_student_service
node_main -->|"requests grades"| node_grade
node_main -->|"requests fees"| node_fee
node_student_service -->|"creates and manages"| node_student
node_student_service -->|"stores faculty"| node_faculty
node_student_service -->|"groups fee analytics"| node_department
node_fee -->|"reads credit rates"| node_department
node_student -->|"extends"| node_person
node_faculty -->|"extends"| node_person
node_student -->|"implements"| node_payable
node_payable -->|"extends"| node_reportable

click node_main "https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/main/Main.java"
click node_student_service "https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/service/StudentService.java"
click node_student "https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/model/Student.java"
click node_faculty "https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/model/Faculty.java"
click node_person "https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/model/Person.java"
click node_department "https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/model/Department.java"
click node_payable "https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/model/Payable.java"
click node_reportable "https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/model/Reportable.java"
click node_grade "https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/service/GradeCalculator.java"
click node_fee "https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/service/FeeCalculator.java"

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_student_service toneAmber
class node_student,node_faculty,node_person,node_department,node_payable,node_reportable toneMint
class node_grade,node_fee toneRose
```

## Components

### Console workflow

- [Menu and handlers](https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/main/Main.java): `src/com/reva/sms/main/Main.java`

### Student services

- [Student records](https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/service/StudentService.java): `src/com/reva/sms/service/StudentService.java`

### University model

- [Student](https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/model/Student.java): `src/com/reva/sms/model/Student.java`
- [Faculty](https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/model/Faculty.java): `src/com/reva/sms/model/Faculty.java`
- [Person base](https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/model/Person.java): `src/com/reva/sms/model/Person.java`
- [Department rates](https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/model/Department.java): `src/com/reva/sms/model/Department.java`
- [Payable contract](https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/model/Payable.java): `src/com/reva/sms/model/Payable.java`
- [Reportable contract](https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/model/Reportable.java): `src/com/reva/sms/model/Reportable.java`

### Assessments

- [Grade calculation](https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/service/GradeCalculator.java): `src/com/reva/sms/service/GradeCalculator.java`
- [Fee calculation](https://github.com/aadisrimenon/reva-student-management-system-java/blob/main/src/com/reva/sms/service/FeeCalculator.java): `src/com/reva/sms/service/FeeCalculator.java`

### Other components

- **Console user**

## Connections

- Console user → Menu and handlers: chooses operations
- Menu and handlers → Student records: manages records
- Menu and handlers → Grade calculation: requests grades
- Menu and handlers → Fee calculation: requests fees
- Student records → Student: creates and manages
- Student records → Faculty: stores faculty
- Student records → Department rates: groups fee analytics
- Fee calculation → Department rates: reads credit rates
- Student → Person base: extends
- Faculty → Person base: extends
- Student → Payable contract: implements
- Payable contract → Reportable contract: extends
