# 037g/cissp_test_sim architecture

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

- Interactive diagram: https://gitdiagram.com/037g/cissp_test_sim
- Repository: https://github.com/037g/cissp_test_sim

## Overview

This is a terminal-based CISSP practice-exam simulator. The user selects a question count, answers presented questions, receives correctness feedback, and sees score and skip totals. `main.py` controls the session and results; `helpers.py` handles terminal presentation and input; `questengine.py` loads, randomizes, and evaluates questions from the JSON bank. The graph reflects the sampled runtime code and README; it does not assume behavior beyond those sources.

Main entry points: [`main.py`](https://github.com/037g/cissp_test_sim/blob/master/main.py) (Session and results), [`helpers.py`](https://github.com/037g/cissp_test_sim/blob/master/helpers.py) (Question prompts), [`questengine.py`](https://github.com/037g/cissp_test_sim/blob/master/questengine.py) (Question engine), [`bank/cissp_questions.json`](https://github.com/037g/cissp_test_sim/blob/master/bank/cissp_questions.json) (CISSP question bank)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_session["Exam session"]
  node_main["Session and results<br/>[main.py]"]
end

subgraph group_interaction["Terminal interaction"]
  node_helpers["Question prompts<br/>[helpers.py]"]
end

subgraph group_content["Question content"]
  node_engine["Question engine<br/>[questengine.py]"]
  node_bank["CISSP question bank"]
end

node_user(("Exam taker"))
node_terminal["Terminal"]

node_user -->|"enters responses"| node_terminal
node_terminal -->|"provides session input"| node_main
node_main -->|"creates and scores"| node_engine
node_main -->|"requests prompts"| node_helpers
node_main -->|"prints results"| node_terminal
node_helpers -->|"gets and checks answers"| node_engine
node_helpers -->|"displays questions"| node_terminal
node_engine -->|"loads questions"| node_bank

click node_main "https://github.com/037g/cissp_test_sim/blob/master/main.py"
click node_helpers "https://github.com/037g/cissp_test_sim/blob/master/helpers.py"
click node_engine "https://github.com/037g/cissp_test_sim/blob/master/questengine.py"
click node_bank "https://github.com/037g/cissp_test_sim/blob/master/bank/cissp_questions.json"

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 toneBlue
class node_helpers toneAmber
class node_engine,node_bank toneMint
class node_user,node_terminal toneIndigo
```

## Components

### Exam session

- [Session and results](https://github.com/037g/cissp_test_sim/blob/master/main.py): `main.py`

### Terminal interaction

- [Question prompts](https://github.com/037g/cissp_test_sim/blob/master/helpers.py): `helpers.py`

### Question content

- [Question engine](https://github.com/037g/cissp_test_sim/blob/master/questengine.py): `questengine.py`
- [CISSP question bank](https://github.com/037g/cissp_test_sim/blob/master/bank/cissp_questions.json): `bank/cissp_questions.json`

### Other components

- **Exam taker**
- **Terminal**

## Connections

- Exam taker → Terminal: enters responses
- Terminal → Session and results: provides session input (evidence: `main.py`)
- Session and results → Question engine: creates and scores (evidence: `main.py`)
- Session and results → Question prompts: requests prompts (evidence: `main.py`)
- Session and results → Terminal: prints results (evidence: `main.py`)
- Question prompts → Question engine: gets and checks answers (evidence: `helpers.py`)
- Question prompts → Terminal: displays questions (evidence: `helpers.py`)
- Question engine → CISSP question bank: loads questions (evidence: `questengine.py`)
