Skip to content

Salma803/Personal_Finance_V

Repository files navigation

FinanceApp - Système de Gestion de Budget Multi-Comptes

Application Qt Widgets en C++ avec architecture MVC stricte pour la gestion de budget personnel.

📋 Description

FinanceApp est un système de gestion de budget permettant de :

  • Gérer plusieurs comptes (courant, épargne)
  • Enregistrer des opérations (revenus et dépenses)
  • Catégoriser les opérations
  • Suivre les budgets mensuels
  • Filtrer et exporter les données

🏗️ Architecture

Architecture MVC stricte

Le projet respecte une architecture MVC (Model-View-Controller) stricte :

  • Modèle métier (model_metier/) : Classes métier pures, sans dépendance Qt
  • Repositories (database/) : Accès aux données (DAO pattern)
  • Modèles Qt (qt_models/) : Adapter le modèle métier pour Qt (QAbstractItemModel)
  • Vue/Contrôleur (ui/) : Interface utilisateur et contrôleur

Structure du projet

FinanceApp/
├── model_metier/          # Modèle métier (UML → C++)
│   ├── Utilisateur.h/cpp
│   ├── Compte.h/cpp
│   ├── CompteCourant.h/cpp
│   ├── CompteEpargne.h/cpp
│   ├── Operation.h/cpp
│   ├── Revenu.h/cpp
│   ├── Depense.h/cpp
│   ├── Categorie.h/cpp
│   ├── Budget.h/cpp
│   ├── Transfert.h/cpp
│   └── Frequence.h
│
├── database/              # Couche de persistance
│   ├── DatabaseManager.h/cpp
│   ├── OperationRepository.h/cpp
│   └── CompteRepository.h/cpp
│
├── qt_models/            # Modèles Qt (QAbstractItemModel)
│   ├── OperationTableModel.h/cpp
│   └── CompteListModel.h/cpp
│
└── ui/                   # Interface utilisateur
    ├── MainWindow.h/cpp
    └── MainWindow.ui

🛠️ Technologies utilisées

  • C++17
  • Qt 6/5 (Widgets)
  • SQLite (base de données)
  • CMake (build system)
  • Doxygen (documentation)

📦 Compilation

Prérequis

  • Qt 6 ou Qt 5 (avec composants Widgets et Sql)
  • CMake 3.16+
  • Compilateur C++17

Étapes de compilation

mkdir build
cd build
cmake ..
cmake --build .

📚 Documentation

La documentation Doxygen peut être générée avec :

doxygen Doxyfile

La documentation HTML sera générée dans le dossier docs/html/.

🎯 Points clés de l'architecture

Séparation MVC

  1. Modèle métier : Classes métier pures (pas de dépendance Qt)
  2. Repositories : Pattern DAO pour l'accès aux données
  3. Modèles Qt : QAbstractItemModel pour adapter le modèle métier à Qt
  4. Contrôleur : MainWindow coordonne l'interaction

Traduction UML → SQLite

  • Classes abstraites → champ type dans les tables
  • Relations UML → clés étrangères SQLite
  • Associations → tables de liaison si nécessaire

Rôle des QAbstractItemModel

  • OperationTableModel : Affiche les opérations dans une QTableView
  • CompteListModel : Affiche les comptes dans une QListView
  • QSortFilterProxyModel : Filtrage et tri des données

⚠️ Interdictions respectées

  • ✅ Pas de SQL dans l'UI
  • ✅ Pas de logique métier dans les vues
  • ✅ Pas d'héritage Qt dans le modèle métier
  • ✅ Pas de tout-en-un MainWindow

📝 Fonctionnalités implémentées

  • ✅ Affichage de la liste des opérations (QTableView)
  • ✅ Affichage des détails d'une opération sélectionnée
  • ✅ Création/édition/suppression d'opérations
  • ✅ Filtrage par date, type, catégorie
  • ✅ Gestion des comptes (création, suppression)
  • ✅ Export JSON
  • ✅ Architecture MVC stricte
  • ✅ Persistance SQLite
  • ✅ Documentation Doxygen

🔄 Améliorations futures

  • Implémentation complète du chargement des opérations depuis la DB
  • Interface de gestion des catégories
  • Calcul et affichage du budget mensuel
  • Export PDF
  • Gestion des transferts entre comptes
  • Graphiques de dépenses

👥 Auteurs

FinanceApp Team - Projet universitaire Génie Logiciel

📄 Licence

Projet académique - Usage éducatif

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published