Application de Gestion Des Utilisateurs

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 6

Application de Gestion des Utilisateurs (CRUD)

1. Description du Projet
o L’objectif de ce projet est de créer une application mobile en utilisant
le framework Flutter qui permettra de gérer les utilisateurs en effectuant les
opérations CRUD (Create, Read, Update, Delete) sur une base de données
SQLite.
o Cette application servira de guide pour les apprenants qui souhaitent
développer leurs compétences en programmation Flutter.

2. Objectifs du Projet
o Développer une application mobile interactive en utilisant Flutter pour gérer
des données utilisateur.
o Mettre en œuvre des opérations CRUD (Create, Read, Update, Delete) pour la
gestion des utilisateurs.
o Utiliser une base de données SQLite locale pour stocker et récupérer les
données utilisateur.
o Créer une interface utilisateur conviviale avec des écrans dédiés pour l’ajout,
l’édition, la visualisation et la suppression des utilisateurs.
o Organiser et structurer le code de manière modulaire pour une maintenance
facile et une extensibilité future.

3. Structure de la Base de Données


o Nous allons créer une base de données SQLite nommée ‘db_crud.db’ qui
contiendra une seule table appelée ‘users’. Voici la structure de la table :
o Tableau « users »
– **Id** (INTEGER) : Clé primaire pour identifier de manière unique chaque
utilisateur.
– **Name** (TEXT) : Champ pour stocker le nom de l’utilisateur.
– **Contact** (TEXT) : Champ pour stocker le numéro de contact de
l’utilisateur.
– **Description** (TEXT) : Champ pour stocker une description (exemple :
informations supplémentaires sur l’utilisateur).

4. Structure du Projet
o Le projet sera organisé en suivant la structure de répertoires suivante :
«`
Lib

├── db_helper
│ ├── database_connection.dart : Gestion de la connexion à la base de
données.
│ └── repository.dart : Opérations CRUD génériques pour la base de
données.

├── modèle
│ └── User.dart : Définition du modèle « User » pour représenter les
données d’un utilisateur.

├── screens
│ ├── AddUser.dart : Écran pour ajouter un nouvel utilisateur.
│ ├── EditUser.dart : Écran pour éditer les informations d’un utilisateur
existant.
│ ├── ViewUsers.dart : Écran pour afficher la liste des utilisateurs et
effectuer des opérations CRUD.
│ └── home.dart : Écran principal ou page d’accueil de l’application.

├── services
│ └── UserService.dart : Service spécifique pour gérer la logique métier
des utilisateurs.

└── main.dart : Point d’entrée de l’application contenant la fonction
main().
«`
o db_helper: Ce dossier contient tous les fichiers relatifs à la gestion de la
base de données. Il sert d’abstraction pour vos opérations CRUD et la
gestion de la connexion à la base de données.
o modèle: Ce dossier contient les modèles de données de votre application.
Dans ce cas, vous avez un modèle User qui représente les données d’un
utilisateur.
o screens: Ici, vous avez tous les écrans/UI de votre application. Chaque
fichier représente une page ou un écran distinct. C’est une bonne pratique
car cela permet de séparer et de gérer chaque écran individuellement.
o services: Les services sont une couche d’abstraction entre vos écrans/UI
et vos opérations de données. Dans ce cas, UserService fournit des
méthodes spécifiques pour gérer la logique métier des utilisateurs.
o main.dart: C’est le point d’entrée de votre application. C’est le fichier qui
est exécuté en premier lorsque votre application démarre.
o Cette structure est logique, modulaire et facilite la gestion et l’évolutivité de
votre application. Elle permet également une meilleure collaboration entre
les développeurs car chaque composant ou fonctionnalité est bien séparé.

5. Fonctionnalités Clés
o L’application offrira les fonctionnalités suivantes :
▪ 1. **Ajouter un Utilisateur** : Les utilisateurs pourront ajouter de nouvelles
entrées avec leur nom, numéro de contact et une description.
▪ 2. **Afficher la Liste des Utilisateurs** : Une liste de tous les utilisateurs
existants sera affichée avec des fonctionnalités pour éditer et supprimer
chaque utilisateur.
▪ 3. **Éditer un Utilisateur** : Les utilisateurs pourront modifier les
informations d’un utilisateur existant.
▪ 4. **Supprimer un Utilisateur** : Les utilisateurs pourront supprimer un
utilisateur de la liste.

6. Objectifs d’apprentissage
o Ce projet permettra aux apprenants de développer les compétences
suivantes :
– Création et gestion d’une base de données SQLite dans Flutter.
– Mise en place de l’architecture de base pour une application Flutter.
– Gestion de l’interface utilisateur avec des écrans pour l’ajout, l’édition et
la visualisation des utilisateurs.
– Implémentation des opérations CRUD (Create, Read, Update, Delete)
sur la base de données SQLite.
– Organisation et structuration d’un projet Flutter pour une meilleure
maintenance.

7. Guide de réalisation
o Ce guide de projet fournira des instructions étape par étape, des exemples
de code et des ressources pour aider les apprenants à développer cette
application de gestion des utilisateurs.
o Fichier database_connection.dart
o Le fichier database_connection.dart est responsable de la gestion de la
connexion à la base de données SQLite dans votre application.
o ce fichier définit la classe DatabaseConnection qui gère la connexion à la base
de données SQLite en créant la base de données si elle n’existe pas et en
définissant la structure de la table « users ». Cela permet à d’autres parties de
votre application d’utiliser cette classe pour accéder à la base de données
SQLite de manière organisée.
o Voici une description détaillée du contenu de ce fichier :
o Importations de packages :
o import 'package:sqflite/sqflite.dart'; : Importe la bibliothèque sqflite, qui
fournit des fonctionnalités pour interagir avec les bases de données SQLite.
o import 'package:path/path.dart'; : Importe la bibliothèque path pour
manipuler les chemins de fichiers.
o import 'package:path_provider/path_provider.dart'; : Importe la
bibliothèque path_provider, qui permet d’obtenir le répertoire de stockage de
l’application.
o Définition de la classe DatabaseConnection :
o class DatabaseConnection : Déclare une classe nommée DatabaseConnection
pour gérer la connexion à la base de données SQLite.
o Méthode setDatabase() :
o Future<Database> setDatabase() async : Cette méthode asynchrone est
utilisée pour créer et configurer la connexion à la base de données SQLite.
o await getApplicationDocumentsDirectory() : Obtient le répertoire de
documents de l’application où la base de données sera stockée.
o var path = join(directory.path, 'db_users_crud'); : Crée le chemin complet
du fichier de base de données en joignant le répertoire de documents et le nom
de la base de données (‘db_users_crud’ dans ce cas).
o await openDatabase(path, version: 1, onCreate: _createDatabase); : Ouvre
la base de données SQLite en utilisant le chemin path, en spécifiant la version
(1) et en indiquant la fonction _createDatabase qui sera appelée si la base de
données n’existe pas.
o return database; : Renvoie la connexion à la base de données SQLite créée.
o Méthode _createDatabase() :
o Future<void> _createDatabase(Database database, int version) async : Cette
méthode privée asynchrone est appelée lors de la création de la base de
données.
o String sql = "CREATE TABLE users (...);" : Définit une requête SQL pour créer
une table appelée « users » avec des colonnes spécifiées (id, name, contact,
description).
o await database.execute(sql); : Exécute la requête SQL pour créer la table
dans la base de données.
o Fichier repository.dart
o Ce fichier repository.dart est responsable de l’encapsulation des opérations
CRUD (Create, Read, Update, Delete) pour interagir avec la base de données
SQLite à travers la classe Repository.
o Ce fichier repository.dart encapsule la logique d’accès à la base de données
SQLite en fournissant des méthodes pour effectuer des opérations CRUD.
o Il utilise la classe DatabaseConnection pour établir et gérer la connexion à la
base de données. Cette structure facilite la réutilisation des opérations de base
de données dans d’autres parties de l’application sans avoir à répéter la logique
d’accès à la base de données.
o Voici une description détaillée du contenu de ce fichier :
o Importations de packages :
o import
'package:projet_sqlite_users/db_helper/database_connection.dart'; :
Importe la classe DatabaseConnection depuis un autre fichier pour gérer la
connexion à la base de données.
o import 'package:sqflite/sqflite.dart';: Importe la bibliothèque sqflite, qui
fournit des fonctionnalités pour interagir avec les bases de données SQLite.
o Définition de la classe Repository :
o class Repository : Déclare une classe Repository qui sera responsable de
l’interaction avec la base de données.
Attribut _databaseConnection :
o late DatabaseConnection _databaseConnection; : Déclare un attribut
_databaseConnection de type DatabaseConnection qui sera utilisé pour gérer
la connexion à la base de données SQLite.
o Attribut statique _database :
o static Database? _database; : Déclare un attribut statique _database de type
Database pour stocker la référence à la base de données SQLite. La base de
données est partagée entre toutes les instances de la classe Repository.
o Méthode database :
o Future<Database?> get database async : Cette méthode permet d’obtenir la
connexion à la base de données asynchrone. Si la connexion n’a pas encore
été établie, elle appelle la méthode setDatabase() de _databaseConnection
pour la créer.
o if (_database != null): Vérifie si la connexion à la base de données existe
déjà.
o _database = await _databaseConnection.setDatabase(); : Si la connexion
n’existe pas, elle est créée en appelant setDatabase() de la classe
DatabaseConnection.
o return _database; : Renvoie la connexion à la base de données.
o Méthodes CRUD :
o Expliquer
insertData(table, data) async, readData(table) async,
readDataById(table, itemId) async,
updateData(table, data) async,
deleteDataById(table, itemId) async : Ces méthodes effectuent
respectivement les opérations CRUD sur la base de données en utilisant la
connexion obtenue par la méthode database. Elles prennent en paramètres le
nom de la table (table) et les données associées (data ou itemId pour certaines
méthodes)
.
o Fichier user.dart
o Quel est le but de cette classe User ?
o Etablir la raison d’être de la classe User et introduire le concept de modèle de
données.
o Quels attributs (variables membres) devez-vous définir dans la classe User
pour représenter un utilisateur ?
o Identifier les attributs nécessaires pour stocker les données d’un utilisateur,
tels que id, name, contact, et description.
o Pourquoi certains attributs sont-ils définis comme int? et d’autres comme
String? ?
o Le type de données des attributs et pourquoi ils pourraient être définis comme
optionnels (int?, String?) ou non-optionnels (int, String).
o Quelle est la méthode userMap destinée à faire ?
o La méthode userMap est utilisée pour convertir un objet User en un Map de
type qui peut être utilisé pour insérer des données dans la base de
données SQLite.
o Quels attributs de la classe User sont inclus dans le Map retourné par userMap
?
o Ils devraient identifier que les attributs id, name, contact, et description sont
inclus dans le Map.
o Pourquoi y a-t-il un point d’exclamation (!) après name et contact dans la
méthode userMap ?
o Expliquez-leur le concept de non-nullabilité et pourquoi ces attributs peuvent
être forcés (!) s’ils sont censés toujours contenir une valeur non nulle.
o Comment utiliseriez-vous cette classe User dans votre application ?
o Réfléchir à l’utilisation de la classe User pour créer, lire, mettre à jour et
supprimer des utilisateurs dans l’application.

Vous aimerez peut-être aussi

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy