Application Python développée en programmation orientée objet (POO) permettant la gestion complète de contacts à l’aide d’une interface graphique réalisée avec PyQt6 et d’une base de données SQLite.
L’application offre à l’utilisateur la possibilité d’ajouter, de modifier, de supprimer et de valider des contacts comprenant un nom, un prénom, un numéro de téléphone et une adresse courriel. Les données saisies font l’objet d’une validation rigoureuse effectuée lors de l’enregistrement afin de garantir l’intégrité et la cohérence des informations stockées.
La persistance des données est assurée par une base de données SQLite, manipulée via une couche d’accès dédiée qui isole la logique SQL du reste de l’application.
Le projet intègre également une page web statique en HTML et CSS, accessible depuis la section « Aide et à propos de » de l’interface graphique.
Concepts utilisés :
Encapsulation, séparation des responsabilités, validation centralisée des données,
programmation orientée objet.
Technologies et modules utilisés :
PyQt6, SQLite, re (expressions régulières), HTML5, CSS3.
Classe responsable de l’interface graphique permettant l’ajout et la modification d’un contact.
- Affichage des champs de saisie (QLineEdit)
- Gestion des boutons Enregistrer / Annuler
- Validation des champs via la classe
Catch - Mise en évidence visuelle des champs invalides
- Positionnement automatique du focus sur le champ en erreur
Classe métier représentant un contact. Elle encapsule les attributs suivants :
- nom
- prenom
- telephone
Classe responsable de l’accès à la base de données SQLite.
- Ajout d’un contact
- Modification d’un contact existant
- Isolation de la logique SQL du reste de l’application
Classe dédiée à la validation des données utilisateur. Toutes les règles de validation sont centralisées afin de garantir la cohérence et la maintenabilité du code.
- Obligatoires
- Acceptent les lettres, accents, espaces, tirets et apostrophes
- Exemples valides : Jean-Pierre, O'Connor
- Obligatoire
- Contient uniquement chiffres, espaces, parenthèses et tirets
- Longueur comprise entre 7 et 20 caractères
- Obligatoire
- Respecte un format standard (utilisateur@domaine.extension)
- Accepte lettres, chiffres, points, tirets et underscores
- Ajout de contacts
- Modification de contacts existants
- Validation centralisée des données
- Validation en temps réel avec retour visuel
- Mise en évidence du champ invalide (bordure rouge)
- Placement automatique du curseur sur le champ en erreur
- Messages d’erreur explicites
- Persistance des données via SQLite
Le menu principal présente la liste des contacts et les boutons interactifs suivants :
- Ajouter
- Modifier
- Supprimer
- Actualiser
- Aide et à propos de
- Quitter
L’utilisateur saisit les informations du contact. Si un champ est invalide :
- Le champ concerné est encadré en rouge
- Le focus est automatiquement placé dessus
- Un message d’erreur explicatif est affiché
L'utilisateur doit sélectionner le contact à modifier. Ensuite, les données existantes sont préchargées dans le formulaire. Après validation, les modifications sont enregistrées en base de données.
L'utilisateur doit sélectionner le contact à supprimer avant de cliquer sur le bouton. Ensuite, les données existantes sont supprimées et les modifications sont enregistrées en base de données.
Bouton menant à une page web rédigée en html et css. Cette page présente un l'informaiton sur l'application et sur les développeurs.
Projet réalisé par Eric De Celles, Valérie Ouellet et William Bourbonnière dans dans le cadre du cours 420-2PR-BB Programmation orientée objet. Collège Bois-de-Boulogne 15/01/2026



















