# rahulv17/student_course_registeration_system architecture

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

- Interactive diagram: https://gitdiagram.com/rahulv17/student_course_registeration_system
- Repository: https://github.com/rahulv17/student_course_registeration_system

## Overview

This is a console-based JDBC student-course registration system. A console user chooses an operation in RegistrationApp, which delegates business operations to RegistrationService; the service routes them to student, course, or enrollment DAOs, which issue SQL through a HikariCP connection pool to MySQL. The DAOs cover registration, batch inserts, transactional enrollment, queries and updates/deletes; enrollment queries include a stored procedure and a joined report. The graph follows shown calls and README-documented capabilities; unsampled database setup details are not inferred.

Main entry points: [`src/main/java/student_course/RegistrationApp.java`](https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/RegistrationApp.java) (Registration menu), [`src/main/java/student_course/util/StudentDBConnection.java`](https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/util/StudentDBConnection.java) (Hikari connection pool), [`src/main/java/student_course/service/RegistrationService.java`](https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/service/RegistrationService.java) (Registration logic), [`src/main/java/student_course/dao/StudentDAO.java`](https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/dao/StudentDAO.java) (Student operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Console interface"]
  node_app["Registration menu"]
end

subgraph group_business["Registration service"]
  node_service["Registration logic"]
  node_student_model["Student model<br/>[Student.java]"]
  node_course_model["Course model<br/>[Course.java]"]
end

subgraph group_data["Data access"]
  node_students["Student operations<br/>[StudentDAO.java]"]
  node_courses["Course operations<br/>[CourseDAO.java]"]
  node_enrollments["Enrollment operations<br/>[EnrollmentDAO.java]"]
end

subgraph group_persistence["Persistence"]
  node_pool["Hikari connection pool"]
  node_config["Database properties<br/>[db.properties]"]
  node_mysql[("MySQL database")]
  node_procedure["Student courses procedure<br/>[student_setup.sql]"]
end

node_user(("Console user"))

node_user -->|"chooses operation"| node_app
node_app -->|"dispatches requests"| node_service
node_service -->|"calls student operations"| node_students
node_service -->|"calls course operations"| node_courses
node_service -->|"calls enrollment operations"| node_enrollments
node_app -->|"creates student data"| node_student_model
node_app -->|"creates course data"| node_course_model
node_students -->|"maps records"| node_student_model
node_courses -->|"maps records"| node_course_model
node_students -->|"gets connections"| node_pool
node_courses -->|"gets connections"| node_pool
node_enrollments -->|"gets connections"| node_pool
node_pool -->|"loads settings"| node_config
node_students -->|"queries and writes"| node_mysql
node_courses -->|"queries and writes"| node_mysql
node_enrollments -->|"enrolls and reports"| node_mysql
node_enrollments -->|"calls procedure"| node_procedure
node_app -->|"closes pool"| node_pool

click node_app "https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/RegistrationApp.java"
click node_service "https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/service/RegistrationService.java"
click node_students "https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/dao/StudentDAO.java"
click node_courses "https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/dao/CourseDAO.java"
click node_enrollments "https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/dao/EnrollmentDAO.java"
click node_student_model "https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/model/Student.java"
click node_course_model "https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/model/Course.java"
click node_pool "https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/util/StudentDBConnection.java"
click node_config "https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/resources/db.properties"
click node_procedure "https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/resources/student_setup.sql"

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_service,node_student_model,node_course_model toneAmber
class node_students,node_courses,node_enrollments toneMint
class node_pool,node_config,node_mysql,node_procedure toneRose
```

## Components

### Console interface

- [Registration menu](https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/RegistrationApp.java): `src/main/java/student_course/RegistrationApp.java`

### Registration service

- [Registration logic](https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/service/RegistrationService.java): `src/main/java/student_course/service/RegistrationService.java`
- [Student model](https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/model/Student.java): `src/main/java/student_course/model/Student.java`
- [Course model](https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/model/Course.java): `src/main/java/student_course/model/Course.java`

### Data access

- [Student operations](https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/dao/StudentDAO.java): `src/main/java/student_course/dao/StudentDAO.java`
- [Course operations](https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/dao/CourseDAO.java): `src/main/java/student_course/dao/CourseDAO.java`
- [Enrollment operations](https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/dao/EnrollmentDAO.java): `src/main/java/student_course/dao/EnrollmentDAO.java`

### Persistence

- [Hikari connection pool](https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/java/student_course/util/StudentDBConnection.java): `src/main/java/student_course/util/StudentDBConnection.java`
- [Database properties](https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/resources/db.properties): `src/main/resources/db.properties`
- **MySQL database**
- [Student courses procedure](https://github.com/rahulv17/student_course_registeration_system/blob/main/src/main/resources/student_setup.sql): `src/main/resources/student_setup.sql`

### Other components

- **Console user**

## Connections

- Console user → Registration menu: chooses operation (evidence: `README.md`)
- Registration menu → Registration logic: dispatches requests (evidence: `src/main/java/student_course/RegistrationApp.java`)
- Registration logic → Student operations: calls student operations (evidence: `src/main/java/student_course/service/RegistrationService.java`)
- Registration logic → Course operations: calls course operations (evidence: `src/main/java/student_course/service/RegistrationService.java`)
- Registration logic → Enrollment operations: calls enrollment operations (evidence: `src/main/java/student_course/service/RegistrationService.java`)
- Registration menu → Student model: creates student data (evidence: `src/main/java/student_course/RegistrationApp.java`)
- Registration menu → Course model: creates course data (evidence: `src/main/java/student_course/RegistrationApp.java`)
- Student operations → Student model: maps records (evidence: `src/main/java/student_course/dao/StudentDAO.java`)
- Course operations → Course model: maps records (evidence: `src/main/java/student_course/dao/CourseDAO.java`)
- Student operations → Hikari connection pool: gets connections (evidence: `src/main/java/student_course/dao/StudentDAO.java`)
- Course operations → Hikari connection pool: gets connections (evidence: `src/main/java/student_course/dao/CourseDAO.java`)
- Enrollment operations → Hikari connection pool: gets connections (evidence: `src/main/java/student_course/dao/EnrollmentDAO.java`)
- Hikari connection pool → Database properties: loads settings (evidence: `src/main/java/student_course/util/StudentDBConnection.java`)
- Student operations → MySQL database: queries and writes (evidence: `src/main/java/student_course/dao/StudentDAO.java`)
- Course operations → MySQL database: queries and writes (evidence: `src/main/java/student_course/dao/CourseDAO.java`)
- Enrollment operations → MySQL database: enrolls and reports (evidence: `src/main/java/student_course/dao/EnrollmentDAO.java`)
- Enrollment operations → Student courses procedure: calls procedure (evidence: `src/main/java/student_course/dao/EnrollmentDAO.java`)
- Registration menu → Hikari connection pool: closes pool (evidence: `src/main/java/student_course/RegistrationApp.java`)
