# jgrundy2/cop2373 architecture

> Architecture diagram of the GitHub repository jgrundy2/cop2373, 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/jgrundy2/cop2373
- Repository: https://github.com/jgrundy2/cop2373

## Overview

The repository contains three independent command-line programming exercises rather than one integrated product: ticket sales, email spam scoring, and monthly expense summaries. Each script prompts the user and prints its own result. The sampled source shows the ticket-sales and spam-scoring helper calls; the expense calculations are performed directly in its main function. The DOCX files and any unsampled contents are not mapped.

Main entry points: [`JaclynGrundy_ProgrammingExercise_2.py`](https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_2.py) (Spam checker), [`JaclynGrundy_ProgrammingExercise_1.py`](https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_1.py) (Ticket sales), [`JaclynGrundy_ProgrammingExercise_3.py`](https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_3.py) (Expense summary)

## Diagram (Mermaid)

```mermaid
flowchart TD

node_user(("User"))
node_ticket_app["Ticket sales"]
node_ticket_input["Ticket validation"]
node_ticket_result["Sales summary"]
node_spam_app["Spam checker"]
node_spam_terms["Spam terms"]
node_spam_match["Term matching"]
node_spam_result["Spam assessment"]
node_expense_app["Expense summary"]
node_expense_result["Expense report"]

node_user -->|"enters requests"| node_ticket_app
node_ticket_app -->|"requests quantity"| node_ticket_input
node_ticket_input -->|"returns valid count"| node_ticket_app
node_ticket_app -->|"prints totals"| node_ticket_result
node_user -->|"enters email"| node_spam_app
node_spam_app -->|"gets terms"| node_spam_terms
node_spam_app -->|"checks email"| node_spam_match
node_spam_match -->|"returns score and matches"| node_spam_app
node_spam_app -->|"prints assessment"| node_spam_result
node_user -->|"enters expenses"| node_expense_app
node_expense_app -->|"prints summary"| node_expense_result

click node_ticket_app "https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_1.py"
click node_ticket_input "https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_1.py"
click node_ticket_result "https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_1.py"
click node_spam_app "https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_2.py"
click node_spam_terms "https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_2.py"
click node_spam_match "https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_2.py"
click node_spam_result "https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_2.py"
click node_expense_app "https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_3.py"
click node_expense_result "https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_3.py"

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_user toneBlue
class node_ticket_app,node_ticket_input,node_ticket_result,node_spam_app,node_spam_terms,node_spam_match,node_spam_result,node_expense_app,node_expense_result toneTeal
```

## Components

### Other components

- **User**
- [Ticket sales](https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_1.py): `JaclynGrundy_ProgrammingExercise_1.py`
- [Ticket validation](https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_1.py): `JaclynGrundy_ProgrammingExercise_1.py`
- [Sales summary](https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_1.py): `JaclynGrundy_ProgrammingExercise_1.py`
- [Spam checker](https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_2.py): `JaclynGrundy_ProgrammingExercise_2.py`
- [Spam terms](https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_2.py): `JaclynGrundy_ProgrammingExercise_2.py`
- [Term matching](https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_2.py): `JaclynGrundy_ProgrammingExercise_2.py`
- [Spam assessment](https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_2.py): `JaclynGrundy_ProgrammingExercise_2.py`
- [Expense summary](https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_3.py): `JaclynGrundy_ProgrammingExercise_3.py`
- [Expense report](https://github.com/jgrundy2/cop2373/blob/master/JaclynGrundy_ProgrammingExercise_3.py): `JaclynGrundy_ProgrammingExercise_3.py`

## Connections

- User → Ticket sales: enters requests
- Ticket sales → Ticket validation: requests quantity
- Ticket validation → Ticket sales: returns valid count
- Ticket sales → Sales summary: prints totals
- User → Spam checker: enters email
- Spam checker → Spam terms: gets terms
- Spam checker → Term matching: checks email
- Term matching → Spam checker: returns score and matches
- Spam checker → Spam assessment: prints assessment
- User → Expense summary: enters expenses
- Expense summary → Expense report: prints summary
