# marciohardcore/sed_group12 architecture

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

- Interactive diagram: https://gitdiagram.com/marciohardcore/sed_group12
- Repository: https://github.com/marciohardcore/sed_group12

## Overview

This is a C++ console carpool-listing and ride-sharing application. Users register or log in, manage accounts and credits, publish or browse rides, submit booking requests, and drivers process requests; ratings provide feedback after rides. Guests can view eligible listings, while administrators inspect users and carpools. The graph follows the console menu and the sampled controller, view, validation, and persistence code. Some menu and controller implementations were only partially sampled, so uncertain call links are omitted.

Main entry points: [`src/model/FileManager.cpp`](https://github.com/marciohardcore/sed_group12/blob/main/src/model/FileManager.cpp) (File manager), [`src/utils/Menu.cpp`](https://github.com/marciohardcore/sed_group12/blob/main/src/utils/Menu.cpp) (Application menu), [`src/controller/CarpoolController.cpp`](https://github.com/marciohardcore/sed_group12/blob/main/src/controller/CarpoolController.cpp) (Carpool operations), [`src/main.cpp`](https://github.com/marciohardcore/sed_group12/blob/main/src/main.cpp) (Program entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Console interaction"]
  node_app["Program entry<br/>[main.cpp]"]
  node_menu["Application menu<br/>[Menu.cpp]"]
  node_guestview["Guest listings<br/>[GuestView.cpp]"]
  node_adminview["Admin views<br/>[AdminView.cpp]"]
end

subgraph group_accounts["Accounts and access"]
  node_userctrl["Account operations<br/>[UserController.cpp]"]
  node_validator["Input validation<br/>[InputValidator.cpp]"]
  node_identity["Identity verification"]
  node_user["User model<br/>[User.cpp]"]
end

subgraph group_rides["Rides and feedback"]
  node_carpoolctrl["Carpool operations"]
  node_listing["Carpool listing<br/>[CarpoolListing.cpp]"]
  node_booking["Booking requests<br/>[Booking.cpp]"]
  node_rating["Ratings<br/>[RatingSystem.cpp]"]
end

subgraph group_persistence["File persistence"]
  node_files["File manager<br/>[FileManager.cpp]"]
  node_usersdata[("User records<br/>[user.dat]")]
  node_carpooldata[("Carpool records<br/>[carpool.dat]")]
  node_requestdata[("Request records<br/>[request.dat]")]
  node_ratingdata[("Rating records<br/>[rating.dat]")]
end

node_rider(("Guest or member"))
node_admin(("Administrator"))

node_rider -->|"starts"| node_app
node_admin -->|"starts"| node_app
node_app -->|"runs menu"| node_menu
node_menu -->|"shows listings"| node_guestview
node_menu -->|"manages account"| node_userctrl
node_menu -->|"manages rides"| node_carpoolctrl
node_menu -->|"loads requests"| node_files
node_menu -->|"validates input"| node_validator
node_menu -->|"uses ratings"| node_rating
node_menu -->|"opens admin views"| node_adminview
node_userctrl -->|"reads and saves"| node_files
node_carpoolctrl -->|"reads and saves"| node_files
node_guestview -->|"loads listings"| node_files
node_adminview -->|"loads records"| node_files
node_files -->|"reads and writes"| node_usersdata
node_files -->|"reads and writes"| node_carpooldata
node_files -->|"reads and writes"| node_requestdata
node_files -->|"reads and writes"| node_ratingdata
node_files -->|"creates objects"| node_user
node_files -->|"creates objects"| node_listing
node_files -->|"creates objects"| node_booking
node_files -->|"creates objects"| node_rating
node_carpoolctrl -->|"saves ratings"| node_rating
node_validator -->|"checks usernames"| node_usersdata

click node_app "https://github.com/marciohardcore/sed_group12/blob/main/src/main.cpp"
click node_menu "https://github.com/marciohardcore/sed_group12/blob/main/src/utils/Menu.cpp"
click node_guestview "https://github.com/marciohardcore/sed_group12/blob/main/src/view/GuestView.cpp"
click node_adminview "https://github.com/marciohardcore/sed_group12/blob/main/src/view/AdminView.cpp"
click node_userctrl "https://github.com/marciohardcore/sed_group12/blob/main/src/controller/UserController.cpp"
click node_validator "https://github.com/marciohardcore/sed_group12/blob/main/src/utils/InputValidator.cpp"
click node_identity "https://github.com/marciohardcore/sed_group12/blob/main/src/controller/IdentityVerifier.cpp"
click node_user "https://github.com/marciohardcore/sed_group12/blob/main/src/model/User.cpp"
click node_carpoolctrl "https://github.com/marciohardcore/sed_group12/blob/main/src/controller/CarpoolController.cpp"
click node_listing "https://github.com/marciohardcore/sed_group12/blob/main/src/model/CarpoolListing.cpp"
click node_booking "https://github.com/marciohardcore/sed_group12/blob/main/src/controller/Booking.cpp"
click node_rating "https://github.com/marciohardcore/sed_group12/blob/main/src/utils/RatingSystem.cpp"
click node_files "https://github.com/marciohardcore/sed_group12/blob/main/src/model/FileManager.cpp"
click node_usersdata "https://github.com/marciohardcore/sed_group12/blob/main/src/data/user.dat"
click node_carpooldata "https://github.com/marciohardcore/sed_group12/blob/main/src/data/carpool.dat"
click node_requestdata "https://github.com/marciohardcore/sed_group12/blob/main/src/data/request.dat"
click node_ratingdata "https://github.com/marciohardcore/sed_group12/blob/main/src/data/rating.dat"

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_menu,node_guestview,node_adminview toneBlue
class node_userctrl,node_validator,node_identity,node_user toneAmber
class node_carpoolctrl,node_listing,node_booking,node_rating toneMint
class node_files,node_usersdata,node_carpooldata,node_requestdata,node_ratingdata toneRose
class node_rider,node_admin toneIndigo
```

## Components

### Console interaction

- [Program entry](https://github.com/marciohardcore/sed_group12/blob/main/src/main.cpp): `src/main.cpp`
- [Application menu](https://github.com/marciohardcore/sed_group12/blob/main/src/utils/Menu.cpp): `src/utils/Menu.cpp`
- [Guest listings](https://github.com/marciohardcore/sed_group12/blob/main/src/view/GuestView.cpp): `src/view/GuestView.cpp`
- [Admin views](https://github.com/marciohardcore/sed_group12/blob/main/src/view/AdminView.cpp): `src/view/AdminView.cpp`

### Accounts and access

- [Account operations](https://github.com/marciohardcore/sed_group12/blob/main/src/controller/UserController.cpp): `src/controller/UserController.cpp`
- [Input validation](https://github.com/marciohardcore/sed_group12/blob/main/src/utils/InputValidator.cpp): `src/utils/InputValidator.cpp`
- [Identity verification](https://github.com/marciohardcore/sed_group12/blob/main/src/controller/IdentityVerifier.cpp): `src/controller/IdentityVerifier.cpp`
- [User model](https://github.com/marciohardcore/sed_group12/blob/main/src/model/User.cpp): `src/model/User.cpp`

### Rides and feedback

- [Carpool operations](https://github.com/marciohardcore/sed_group12/blob/main/src/controller/CarpoolController.cpp): `src/controller/CarpoolController.cpp`
- [Carpool listing](https://github.com/marciohardcore/sed_group12/blob/main/src/model/CarpoolListing.cpp): `src/model/CarpoolListing.cpp`
- [Booking requests](https://github.com/marciohardcore/sed_group12/blob/main/src/controller/Booking.cpp): `src/controller/Booking.cpp`
- [Ratings](https://github.com/marciohardcore/sed_group12/blob/main/src/utils/RatingSystem.cpp): `src/utils/RatingSystem.cpp`

### File persistence

- [File manager](https://github.com/marciohardcore/sed_group12/blob/main/src/model/FileManager.cpp): `src/model/FileManager.cpp`
- [User records](https://github.com/marciohardcore/sed_group12/blob/main/src/data/user.dat): `src/data/user.dat`
- [Carpool records](https://github.com/marciohardcore/sed_group12/blob/main/src/data/carpool.dat): `src/data/carpool.dat`
- [Request records](https://github.com/marciohardcore/sed_group12/blob/main/src/data/request.dat): `src/data/request.dat`
- [Rating records](https://github.com/marciohardcore/sed_group12/blob/main/src/data/rating.dat): `src/data/rating.dat`

### Other components

- **Guest or member**
- **Administrator**

## Connections

- Guest or member → Program entry: starts
- Administrator → Program entry: starts
- Program entry → Application menu: runs menu
- Application menu → Guest listings: shows listings
- Application menu → Account operations: manages account
- Application menu → Carpool operations: manages rides
- Application menu → File manager: loads requests
- Application menu → Input validation: validates input
- Application menu → Ratings: uses ratings
- Application menu → Admin views: opens admin views
- Account operations → File manager: reads and saves
- Carpool operations → File manager: reads and saves
- Guest listings → File manager: loads listings
- Admin views → File manager: loads records
- File manager → User records: reads and writes
- File manager → Carpool records: reads and writes
- File manager → Request records: reads and writes
- File manager → Rating records: reads and writes
- File manager → User model: creates objects
- File manager → Carpool listing: creates objects
- File manager → Booking requests: creates objects
- File manager → Ratings: creates objects
- Carpool operations → Ratings: saves ratings
- Input validation → User records: checks usernames
