# pieolive/mycalculator_project architecture

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

- Interactive diagram: https://gitdiagram.com/pieolive/mycalculator_project
- Repository: https://github.com/pieolive/mycalculator_project

## Overview

This is a small interactive Java calculator. The user selects standard or scientific mode, chooses an operation, supplies operands, sees a result, then may repeat or quit. Both modes include arithmetic; scientific mode also supports single-value sine, cosine, and tangent in radians. The behavior is implemented in one source file, so the graph keeps those stages as components of that runtime rather than implying separate modules.

Main entry points: [`src/myCalculator.java`](https://github.com/pieolive/mycalculator_project/blob/main/src/myCalculator.java) (Mode selection)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_calculator["Calculator runtime"]
  node_runtime["Calculator workflow<br/>[myCalculator.java]"]
  node_mode["Mode selection<br/>[myCalculator.java]"]
  node_arithmetic["Arithmetic operations<br/>[myCalculator.java]"]
  node_trig["Trigonometry<br/>[myCalculator.java]"]
  node_result["Result output<br/>[myCalculator.java]"]
  node_repeat["Repeat or quit<br/>[myCalculator.java]"]
end

node_user(("User"))

node_user -->|"starts program"| node_runtime
node_runtime -->|"prompts for mode"| node_mode
node_mode -->|"routes arithmetic"| node_arithmetic
node_mode -->|"routes trig"| node_trig
node_user -->|"enters operation and numbers"| node_arithmetic
node_user -->|"enters operation and radians"| node_trig
node_arithmetic -->|"prints calculation"| node_result
node_trig -->|"prints calculation"| node_result
node_result -->|"prompts next step"| node_repeat
node_user -->|"chooses repeat or quit"| node_repeat
node_repeat -->|"repeats workflow"| node_runtime

click node_runtime "https://github.com/pieolive/mycalculator_project/blob/main/src/myCalculator.java"
click node_mode "https://github.com/pieolive/mycalculator_project/blob/main/src/myCalculator.java"
click node_arithmetic "https://github.com/pieolive/mycalculator_project/blob/main/src/myCalculator.java"
click node_trig "https://github.com/pieolive/mycalculator_project/blob/main/src/myCalculator.java"
click node_result "https://github.com/pieolive/mycalculator_project/blob/main/src/myCalculator.java"
click node_repeat "https://github.com/pieolive/mycalculator_project/blob/main/src/myCalculator.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_runtime,node_mode,node_arithmetic,node_trig,node_result,node_repeat,node_user toneBlue
```

## Components

### Calculator runtime

- [Calculator workflow](https://github.com/pieolive/mycalculator_project/blob/main/src/myCalculator.java): `src/myCalculator.java`
- [Mode selection](https://github.com/pieolive/mycalculator_project/blob/main/src/myCalculator.java): `src/myCalculator.java`
- [Arithmetic operations](https://github.com/pieolive/mycalculator_project/blob/main/src/myCalculator.java): `src/myCalculator.java`
- [Trigonometry](https://github.com/pieolive/mycalculator_project/blob/main/src/myCalculator.java): `src/myCalculator.java`
- [Result output](https://github.com/pieolive/mycalculator_project/blob/main/src/myCalculator.java): `src/myCalculator.java`
- [Repeat or quit](https://github.com/pieolive/mycalculator_project/blob/main/src/myCalculator.java): `src/myCalculator.java`

### Other components

- **User**

## Connections

- User → Calculator workflow: starts program (evidence: `src/myCalculator.java`)
- Calculator workflow → Mode selection: prompts for mode (evidence: `src/myCalculator.java`)
- Mode selection → Arithmetic operations: routes arithmetic (evidence: `src/myCalculator.java`)
- Mode selection → Trigonometry: routes trig (evidence: `src/myCalculator.java`)
- User → Arithmetic operations: enters operation and numbers (evidence: `src/myCalculator.java`)
- User → Trigonometry: enters operation and radians (evidence: `src/myCalculator.java`)
- Arithmetic operations → Result output: prints calculation (evidence: `src/myCalculator.java`)
- Trigonometry → Result output: prints calculation (evidence: `src/myCalculator.java`)
- Result output → Repeat or quit: prompts next step (evidence: `src/myCalculator.java`)
- User → Repeat or quit: chooses repeat or quit (evidence: `src/myCalculator.java`)
- Repeat or quit → Calculator workflow: repeats workflow (evidence: `src/myCalculator.java`)
