# axb2002/guichetatm architecture

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

## Overview

ATM Simulator is a Windows desktop application for customer banking and ATM administration, backed by MySQL. The intended customer flow is login, account selection, then banking operations with updated balances and transaction history; administrators manage customers, accounts, ATM cash, and account services. Sampled code confirms database initialization, customer authentication/account persistence, and transfer and withdrawal database access. Other documented capabilities are represented by their source paths, but their internal wiring is not asserted because those implementations were not sampled.

Main entry points: [`ATM1/ATM1/Program.cs`](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/Program.cs) (Startup and schema), [`ATM1/ATM1/Customer.cs`](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/Customer.cs) (Customer access), [`ATM1/ATM1/Form1.cs`](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/Form1.cs) (Login screen), [`ATM1/ATM1/MainMenu.cs`](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/MainMenu.cs) (Main menu)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application and access"]
  node_program["Startup and schema<br/>[Program.cs]"]
  node_login["Login screen<br/>[Form1.cs]"]
  node_menu["Main menu<br/>[MainMenu.cs]"]
  node_context["User context<br/>[UserContext.cs]"]
end

subgraph group_customer["Customer banking"]
  node_deposit["Deposit<br/>[panel_deposit.cs]"]
  node_withdraw["Withdrawal"]
  node_transfer["Transfer<br/>[panel_Transfer.cs]"]
  node_billpay["Bill payment"]
  node_balance["Balance view"]
  node_history["Transaction history"]
end

subgraph group_admin["ATM administration"]
  node_customer_create["Create customer"]
  node_account_create["Create account"]
  node_access["Manage access"]
  node_atm_cash["Manage ATM cash"]
  node_interest["Pay savings interest"]
  node_mortgage["Mortgage withdrawal"]
  node_credit_line["Increase credit line"]
  node_shutdown["ATM shutdown<br/>[adminControl.cs]"]
end

subgraph group_domain["Banking model"]
  node_customer_model["Customer access<br/>[Customer.cs]"]
  node_account_model["Account types<br/>[Account.cs]"]
  node_transaction_model["Transaction model<br/>[Transaction.cs]"]
end

node_customer_actor(("Customer"))
node_admin_actor(("Administrator"))
node_mysql[("MySQL database")]

node_program -->|"checks and creates schema"| node_mysql
node_program -->|"launches"| node_login
node_customer_actor -->|"enters credentials"| node_login
node_customer_model -->|"authenticates and persists"| node_mysql
node_customer_model -->|"loads accounts"| node_account_model
node_transfer -->|"reads and updates accounts; records transaction"| node_mysql
node_withdraw -->|"checks ATM cash; updates account and records transaction"| node_mysql
node_customer_actor -->|"uses banking menu"| node_menu
node_admin_actor -->|"uses admin options"| node_menu

click node_program "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/Program.cs"
click node_login "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/Form1.cs"
click node_menu "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/MainMenu.cs"
click node_context "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/UserContext.cs"
click node_customer_model "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/Customer.cs"
click node_account_model "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/Account.cs"
click node_transaction_model "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/Transaction.cs"
click node_deposit "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_deposit.cs"
click node_withdraw "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_userWithdraw.cs"
click node_transfer "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_Transfer.cs"
click node_billpay "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_bill_payment.cs"
click node_balance "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_show_balance.cs"
click node_history "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_View_Transactions.cs"
click node_customer_create "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_customer_create.cs"
click node_account_create "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_Account_create.cs"
click node_access "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_Manage_Acccess.cs"
click node_atm_cash "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_add_to_atm.cs"
click node_interest "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_pay_Interest.cs"
click node_mortgage "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_WithdrawMoney.cs"
click node_credit_line "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/Panel_Increase_loc.cs"
click node_shutdown "https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/adminControl.cs"

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_program,node_login,node_menu,node_context toneBlue
class node_deposit,node_withdraw,node_transfer,node_billpay,node_balance,node_history,node_mysql toneAmber
class node_customer_create,node_account_create,node_access,node_atm_cash,node_interest,node_mortgage,node_credit_line,node_shutdown toneMint
class node_customer_model,node_account_model,node_transaction_model toneRose
class node_customer_actor,node_admin_actor toneIndigo
```

## Components

### Application and access

- [Startup and schema](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/Program.cs): `ATM1/ATM1/Program.cs`
- [Login screen](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/Form1.cs): `ATM1/ATM1/Form1.cs`
- [Main menu](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/MainMenu.cs): `ATM1/ATM1/MainMenu.cs`
- [User context](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/UserContext.cs): `ATM1/ATM1/UserContext.cs`

### Customer banking

- [Deposit](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_deposit.cs): `ATM1/ATM1/panel_deposit.cs`
- [Withdrawal](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_userWithdraw.cs): `ATM1/ATM1/panel_userWithdraw.cs`
- [Transfer](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_Transfer.cs): `ATM1/ATM1/panel_Transfer.cs`
- [Bill payment](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_bill_payment.cs): `ATM1/ATM1/panel_bill_payment.cs`
- [Balance view](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_show_balance.cs): `ATM1/ATM1/panel_show_balance.cs`
- [Transaction history](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_View_Transactions.cs): `ATM1/ATM1/panel_View_Transactions.cs`

### ATM administration

- [Create customer](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_customer_create.cs): `ATM1/ATM1/panel_customer_create.cs`
- [Create account](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_Account_create.cs): `ATM1/ATM1/panel_Account_create.cs`
- [Manage access](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_Manage_Acccess.cs): `ATM1/ATM1/panel_Manage_Acccess.cs`
- [Manage ATM cash](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_add_to_atm.cs): `ATM1/ATM1/panel_add_to_atm.cs`
- [Pay savings interest](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_pay_Interest.cs): `ATM1/ATM1/panel_pay_Interest.cs`
- [Mortgage withdrawal](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/panel_WithdrawMoney.cs): `ATM1/ATM1/panel_WithdrawMoney.cs`
- [Increase credit line](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/Panel_Increase_loc.cs): `ATM1/ATM1/Panel_Increase_loc.cs`
- [ATM shutdown](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/adminControl.cs): `ATM1/ATM1/adminControl.cs`

### Banking model

- [Customer access](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/Customer.cs): `ATM1/ATM1/Customer.cs`
- [Account types](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/Account.cs): `ATM1/ATM1/Account.cs`
- [Transaction model](https://github.com/axb2002/guichetatm/blob/main/ATM1/ATM1/Transaction.cs): `ATM1/ATM1/Transaction.cs`

### Other components

- **Customer**
- **Administrator**
- **MySQL database**

## Connections

- Startup and schema → MySQL database: checks and creates schema
- Startup and schema → Login screen: launches
- Customer → Login screen: enters credentials
- Customer access → MySQL database: authenticates and persists
- Customer access → Account types: loads accounts
- Transfer → MySQL database: reads and updates accounts; records transaction
- Withdrawal → MySQL database: checks ATM cash; updates account and records transaction
- Customer → Main menu: uses banking menu
- Administrator → Main menu: uses admin options
