# hasan-butt/campus-management-system architecture

> Architecture diagram of the GitHub repository hasan-butt/campus-management-system, 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/hasan-butt/campus-management-system
- Repository: https://github.com/hasan-butt/campus-management-system

## Overview

Life at FAST is a Java campus-management system with academic-office, student/teaching-assistant, and instructor/FYP capabilities. Its intended workflows cover course and section administration, enrollment and coursework, attendance, and FYP management. The sampled services show several in-memory domain operations, but many listed features and persistence actions remain TODOs; FileManager is present, but no sampled service calls it. The only demonstrated application startup flow is Main creating the three services.

Main entry points: [`src/com/fast/campus/service/InstructorService.java`](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/service/InstructorService.java) (Instructor Service), [`src/com/fast/campus/service/AcademicOfficeService.java`](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/service/AcademicOfficeService.java) (Academic Office Service), [`src/com/fast/campus/service/StudentService.java`](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/service/StudentService.java) (Student And TA Service), [`src/com/fast/campus/Main.java`](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/Main.java) (Application Startup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_academic["Academic Office"]
  node_academic_service["Academic Office Service"]
  node_course["Course<br/>[Course.java]"]
  node_section["Section<br/>[Section.java]"]
  node_request["Student Requests<br/>[Request.java]"]
end

subgraph group_learning["Student And TA"]
  node_student_service["Student And TA Service"]
  node_enrollment["Enrollment<br/>[Enrollment.java]"]
  node_submission["Assignment Submission<br/>[Submission.java]"]
  node_assignment["Assignment<br/>[Assignment.java]"]
  node_feedback["Feedback<br/>[Feedback.java]"]
end

subgraph group_instructor["Instructor And FYP"]
  node_instructor_service["Instructor Service"]
  node_attendance["Attendance<br/>[Attendance.java]"]
  node_fyp_group["FYP Group<br/>[FYPGroup.java]"]
  node_fyp_meeting["FYP Meeting<br/>[FYPMeeting.java]"]
  node_fyp_evaluation["FYP Evaluation<br/>[FYPEvaluation.java]"]
  node_permanent_instructor["Permanent Instructor"]
end

subgraph group_shared["Shared Runtime"]
  node_main["Application Startup<br/>[Main.java]"]
  node_logger["Logger<br/>[Logger.java]"]
  node_file_manager["Flat File Utility<br/>[FileManager.java]"]
end

node_operator(("Operator"))

node_operator -->|"starts"| node_main
node_main -->|"creates"| node_academic_service
node_main -->|"creates"| node_student_service
node_main -->|"creates"| node_instructor_service
node_academic_service -->|"updates"| node_course
node_academic_service -->|"updates"| node_section
node_academic_service -->|"approves or rejects"| node_request
node_academic_service -->|"logs"| node_logger
node_student_service -->|"submits and evaluates"| node_submission
node_student_service -->|"reads and creates"| node_assignment
node_student_service -->|"adds"| node_feedback
node_student_service -->|"logs"| node_logger
node_instructor_service -->|"updates"| node_attendance
node_instructor_service -->|"updates"| node_fyp_group
node_instructor_service -->|"schedules"| node_fyp_meeting
node_instructor_service -->|"evaluates"| node_fyp_evaluation
node_instructor_service -->|"assigns TA through"| node_permanent_instructor
node_instructor_service -->|"logs"| node_logger
node_file_manager -->|"logs errors"| node_logger

click node_main "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/Main.java"
click node_academic_service "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/service/AcademicOfficeService.java"
click node_course "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Course.java"
click node_section "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Section.java"
click node_request "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Request.java"
click node_student_service "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/service/StudentService.java"
click node_enrollment "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Enrollment.java"
click node_submission "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Submission.java"
click node_assignment "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Assignment.java"
click node_feedback "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Feedback.java"
click node_instructor_service "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/service/InstructorService.java"
click node_attendance "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Attendance.java"
click node_fyp_group "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/FYPGroup.java"
click node_fyp_meeting "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/FYPMeeting.java"
click node_fyp_evaluation "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/FYPEvaluation.java"
click node_permanent_instructor "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/PermanentInstructor.java"
click node_logger "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/util/Logger.java"
click node_file_manager "https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/util/FileManager.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_academic_service,node_course,node_section,node_request toneBlue
class node_student_service,node_enrollment,node_submission,node_assignment,node_feedback toneAmber
class node_instructor_service,node_attendance,node_fyp_group,node_fyp_meeting,node_fyp_evaluation,node_permanent_instructor toneMint
class node_main,node_logger,node_file_manager toneRose
class node_operator toneIndigo
```

## Components

### Academic Office

- [Academic Office Service](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/service/AcademicOfficeService.java): `src/com/fast/campus/service/AcademicOfficeService.java`
- [Course](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Course.java): `src/com/fast/campus/model/Course.java`
- [Section](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Section.java): `src/com/fast/campus/model/Section.java`
- [Student Requests](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Request.java): `src/com/fast/campus/model/Request.java`

### Student And TA

- [Student And TA Service](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/service/StudentService.java): `src/com/fast/campus/service/StudentService.java`
- [Enrollment](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Enrollment.java): `src/com/fast/campus/model/Enrollment.java`
- [Assignment Submission](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Submission.java): `src/com/fast/campus/model/Submission.java`
- [Assignment](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Assignment.java): `src/com/fast/campus/model/Assignment.java`
- [Feedback](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Feedback.java): `src/com/fast/campus/model/Feedback.java`

### Instructor And FYP

- [Instructor Service](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/service/InstructorService.java): `src/com/fast/campus/service/InstructorService.java`
- [Attendance](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/Attendance.java): `src/com/fast/campus/model/Attendance.java`
- [FYP Group](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/FYPGroup.java): `src/com/fast/campus/model/FYPGroup.java`
- [FYP Meeting](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/FYPMeeting.java): `src/com/fast/campus/model/FYPMeeting.java`
- [FYP Evaluation](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/FYPEvaluation.java): `src/com/fast/campus/model/FYPEvaluation.java`
- [Permanent Instructor](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/model/PermanentInstructor.java): `src/com/fast/campus/model/PermanentInstructor.java`

### Shared Runtime

- [Application Startup](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/Main.java): `src/com/fast/campus/Main.java`
- [Logger](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/util/Logger.java): `src/com/fast/campus/util/Logger.java`
- [Flat File Utility](https://github.com/hasan-butt/campus-management-system/blob/main/src/com/fast/campus/util/FileManager.java): `src/com/fast/campus/util/FileManager.java`

### Other components

- **Operator**

## Connections

- Operator → Application Startup: starts
- Application Startup → Academic Office Service: creates
- Application Startup → Student And TA Service: creates
- Application Startup → Instructor Service: creates
- Academic Office Service → Course: updates
- Academic Office Service → Section: updates
- Academic Office Service → Student Requests: approves or rejects
- Academic Office Service → Logger: logs
- Student And TA Service → Assignment Submission: submits and evaluates
- Student And TA Service → Assignment: reads and creates
- Student And TA Service → Feedback: adds
- Student And TA Service → Logger: logs
- Instructor Service → Attendance: updates
- Instructor Service → FYP Group: updates
- Instructor Service → FYP Meeting: schedules
- Instructor Service → FYP Evaluation: evaluates
- Instructor Service → Permanent Instructor: assigns TA through
- Instructor Service → Logger: logs
- Flat File Utility → Logger: logs errors
