# vikasachar27-jpg/employee_payroll_system architecture

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

- Interactive diagram: https://gitdiagram.com/vikasachar27-jpg/employee_payroll_system
- Repository: https://github.com/vikasachar27-jpg/employee_payroll_system

## Overview

This is a console-based employee payroll application. A user enters employee details and selects operations in PayrollApp; the app creates full-time or part-time employees and delegates employee management and payroll generation to PayrollService. The service stores employees, lists or searches them, and calculates payroll by calling each employee’s polymorphic salary method. The model provides shared employee/person data, departments, and the Payable contract. README documents the full-time salary formula; sampled source also shows the part-time calculation. The graph reflects the inspected runtime code.

Main entry points: [`src/main/PayrollApp.java`](https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/main/PayrollApp.java) (Payroll app), [`src/service/PayrollService.java`](https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/service/PayrollService.java) (Payroll service), [`src/model/Employee.java`](https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/model/Employee.java) (Employee), [`src/model/FullTimeEmployee.java`](https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/model/FullTimeEmployee.java) (Full-time employee)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_console["Console interface"]
  node_app["Payroll app<br/>[PayrollApp.java]"]
end

subgraph group_service["Payroll management"]
  node_payroll_service["Payroll service"]
end

subgraph group_model["Employee model"]
  node_employee["Employee<br/>[Employee.java]"]
  node_person["Person<br/>[Person.java]"]
  node_fulltime["Full-time employee"]
  node_parttime["Part-time employee"]
  node_payable["Payable contract<br/>[Payable.java]"]
  node_department["Department<br/>[Department.java]"]
end

node_user(("User"))

node_user -->|"enters choices"| node_app
node_app -->|"prints prompts"| node_user
node_app -->|"delegates operations"| node_payroll_service
node_app -->|"constructs"| node_fulltime
node_app -->|"constructs"| node_parttime
node_app -->|"parses department"| node_department
node_fulltime -->|"adds employee"| node_payroll_service
node_parttime -->|"adds employee"| node_payroll_service
node_payroll_service -->|"stores and searches"| node_employee
node_payroll_service -->|"calls salary calculation"| node_payable
node_payroll_service -->|"prints reports"| node_user
node_fulltime -->|"extends"| node_employee
node_parttime -->|"extends"| node_employee
node_employee -->|"extends"| node_person
node_employee -->|"implements"| node_payable
node_employee -->|"holds department"| node_department

click node_app "https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/main/PayrollApp.java"
click node_payroll_service "https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/service/PayrollService.java"
click node_employee "https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/model/Employee.java"
click node_person "https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/model/Person.java"
click node_fulltime "https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/model/FullTimeEmployee.java"
click node_parttime "https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/model/PartTimeEmployee.java"
click node_payable "https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/model/Payable.java"
click node_department "https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/model/Department.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_app,node_user toneBlue
class node_payroll_service toneAmber
class node_employee,node_person,node_fulltime,node_parttime,node_payable,node_department toneMint
```

## Components

### Console interface

- [Payroll app](https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/main/PayrollApp.java): `src/main/PayrollApp.java`

### Payroll management

- [Payroll service](https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/service/PayrollService.java): `src/service/PayrollService.java`

### Employee model

- [Employee](https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/model/Employee.java): `src/model/Employee.java`
- [Person](https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/model/Person.java): `src/model/Person.java`
- [Full-time employee](https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/model/FullTimeEmployee.java): `src/model/FullTimeEmployee.java`
- [Part-time employee](https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/model/PartTimeEmployee.java): `src/model/PartTimeEmployee.java`
- [Payable contract](https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/model/Payable.java): `src/model/Payable.java`
- [Department](https://github.com/vikasachar27-jpg/employee_payroll_system/blob/main/src/model/Department.java): `src/model/Department.java`

### Other components

- **User**

## Connections

- User → Payroll app: enters choices
- Payroll app → User: prints prompts
- Payroll app → Payroll service: delegates operations
- Payroll app → Full-time employee: constructs
- Payroll app → Part-time employee: constructs
- Payroll app → Department: parses department
- Full-time employee → Payroll service: adds employee
- Part-time employee → Payroll service: adds employee
- Payroll service → Employee: stores and searches
- Payroll service → Payable contract: calls salary calculation
- Payroll service → User: prints reports
- Full-time employee → Employee: extends
- Part-time employee → Employee: extends
- Employee → Person: extends
- Employee → Payable contract: implements
- Employee → Department: holds department
