Vous êtes sur la page 1sur 36

République Tunisienne

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique


Université de Tunis El Manar
École Nationale d’Ingénieurs de Tunis

Département Génie Electrique

Mini Projet C++

Sujet 1 : Gestion de vente de boutique d’appareils et


d’outils électriques et électroniques

Réalisé par :
Amal Jellali
Radhi Beldi
Classe : 2AGE2

Encadré par :
Mme Amira Kallel
Mme Latifa Guessmi
Année universitaire 2020/2021
Remerciements

Nous tenons à témoigner toute notre gratitude à Mme Amira KALLEL &
Mme Latifa Guessmi nos encadrantes à l’ENIT, pour leurs conseils, leur dis-
ponibilités et pour le temps qu’elles ont consacré à nous apporter les outils
méthodologiques indispensables à la conduite de cette gestion d’application.
Table des matières

Table des figures iv

Liste des tableaux vi

Introduction générale 1

1 Généralités et Etude préliminaire du projet 2


1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Présentation des logiciels . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 Qt Creator . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2 SQL-Lite . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.3 Db Browser for SQLite . . . . . . . . . . . . . . . . . . . 3
1.3 QCustomPlot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Etude préliminaire du projet . . . . . . . . . . . . . . . . . . . . 5
1.4.1 Modèle relationnel . . . . . . . . . . . . . . . . . . . . . 5
1.5 Relations et clés . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6 Schéma relationnel . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.7 Création des tables sur Db Browser . . . . . . . . . . . . . . . . 9
1.7.1 DB Browser . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.7.2 Structure de notre base de données . . . . . . . . . . . . 9
1.7.2.1 Table Produit . . . . . . . . . . . . . . . . . . . 9
1.7.2.2 Table Ventes . . . . . . . . . . . . . . . . . . . 10
1.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2 Développement de la solution proposée 11


2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Réalisation de l’interface graphique d’accueil MainWindow . . . 11
2.2.1 Configuration des boutons liés à l’interface MainWindow 15
2.2.1.1 bouton LogIn . . . . . . . . . . . . . . . . . . . 15
ii
2.3 Réalisation de l’interface graphique SecDialog . . . . . . . . . . 17
2.4 Réalisation de l’interface graphique Produit . . . . . . . . . . . 20
2.5 Réalisation de l’interface graphique Ventes . . . . . . . . . . . . 24
2.6 Fonctionnement et validation . . . . . . . . . . . . . . . . . . . 27
2.6.1 Interface MainWindow . . . . . . . . . . . . . . . . . . . 27
2.6.2 Interface SecDialog . . . . . . . . . . . . . . . . . . . . . 27
2.6.3 L’interface Produit . . . . . . . . . . . . . . . . . . . . . 28
2.6.4 L’interface Ventes . . . . . . . . . . . . . . . . . . . . . . 28
2.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Conclusion générale 29

iii
Table des figures

1.1 Logo du logiciel Qt Creator . . . . . . . . . . . . . . . . . . . . 3


1.2 Logo du logiciel Db Browser . . . . . . . . . . . . . . . . . . . . 4
1.3 Logo du QCustomPlot . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Modèle relationnel pour la table Produit . . . . . . . . . . . . . 5
1.5 Relation et clés pour les tables Produit Ventes . . . . . . . . . 7
1.6 Schéma Relationel . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7 Table Produit sur Db Browser . . . . . . . . . . . . . . . . . . . 9
1.8 Table Ventes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1 Design développé dans MainWindow.ui . . . . . . . . . . . . . . 11
2.2 Objects design ajoutés à la fenêtre MainWindow . . . . . . . . . 12
2.3 Fenêtre MainWindow obtenue . . . . . . . . . . . . . . . . . . . 14
2.4 Messages à l’appui sur le bouton LogIn . . . . . . . . . . . . . . 14
2.5 Configuration du bouton LogIn (1) . . . . . . . . . . . . . . . . 15
2.6 Configuration du bouton LogIn (2) . . . . . . . . . . . . . . . . 16
2.7 Connexion OpenClose avec Sqlite-Base de données . . . . . . . . 16
2.8 Design développé dans SecDialog.ui . . . . . . . . . . . . . . . . 17
2.9 Fenêtre consultation accès . . . . . . . . . . . . . . . . . . . . . 17
2.10 Les données d’accès . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.11 Objects design ajoutés à la fenêtre SecDialog . . . . . . . . . . . 18
2.12 les onglets ”Bienvenue” et ”Consulter accès” . . . . . . . . . . . . 19
2.13 L’onglet ”A propos” . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.14 Fenêtre Produit . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.15 Objects design ajoutés à la fenêtre Produit . . . . . . . . . . . . 21
2.16 les fonctions Save Produit & Update Produit . . . . . . . . . . . 21
2.17 Fonction Delete Produit . . . . . . . . . . . . . . . . . . . . . . 22
2.18 Fonction Load Produit . . . . . . . . . . . . . . . . . . . . . . . 22
2.19 Importer un champs d’enregistrement . . . . . . . . . . . . . . . 23
2.20 Fenêtre Ventes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.21 Objects design ajoutés à la fenêtre Ventes . . . . . . . . . . . . 24
iv
2.22 Liason via un CombBox . . . . . . . . . . . . . . . . . . . . . . 25
2.23 les fonctions Save Ventes & Update Ventes . . . . . . . . . . . . 25
2.24 La fonction Delete Ventes . . . . . . . . . . . . . . . . . . . . . 26
2.25 La fonction Delete Ventes . . . . . . . . . . . . . . . . . . . . . 26
2.26 L’interface MainWindow . . . . . . . . . . . . . . . . . . . . . . 27
2.27 L’interface SecDialog . . . . . . . . . . . . . . . . . . . . . . . . 27
2.28 L’interface Produit . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.29 L’interface Ventes . . . . . . . . . . . . . . . . . . . . . . . . . . 28

v
Liste des tableaux

vi
Introduction générale

De nos jours, les applications mobiles et grapiques représentent les domaines


les plus reconnus dans le monde entier.

Ce présent travail englobe notre mini projet qu’on a eu la chance de subir


dans l’école National d’Ingénieurs de Tunis. Il vise à la réalisation d’une inter-
face graphique permettant de générer des statistiques de Vente des appareils
électriques et électroniques suite à une gestion des données liées à ce contexte.

Le travail sur ce projet consiste, tout d’abord à bien étudier le cahier de


charge puis à établir le schéma relationnel de nos tables. Ensuite, on passera à
l’étape suivante qui est le développement du code de notre interface graphique et
pour en conclure, on validera notre application via l’exécution des des différents
fonctionnalités.

1
Chapitre 1

Généralités et Etude préliminaire du projet

1.1 Introduction
Puisqu’il s’agit d’un nouvel outil de programmation C ++, il est nécessaire
de commencer par des recherches préliminaires sur les logiciels utilisés dans la
réalisation de notre mini-projet.

1.2 Présentation des logiciels


1.2.1 Qt Creator
Qt Creator est un environnement de développement intégré multiplateforme
faisant partie du framework Qt. Il est donc orienté pour la programmation en
C++.
Il intègre directement dans l’interface un débogueur, un outil de création d’inter-
faces graphiques, des outils pour la publication de code sur Git et Mercurial ainsi
que la documentation Qt. L’éditeur de texte intégré permet l’autocomplétion
ainsi que la coloration syntaxique. Qt Creator utilise sous Linux le compilateur
gcc. Il peut utiliser MinGW ou le compilateur de Visual Studio sous Windows.
Qt Creator a été traduit en français par l’équipe Qt de Developpez.com.

2
Figure 1.1 – Logo du logiciel Qt Creator

1.2.2 SQL-Lite
SQLite est un système de base de données ou une bibliothèque proposant un
moteur de base de données relationnelles. Il repose sur une écriture en C, un
langage de programmation impératif, et sur une accessibilité via le langage SQL
(Structured Query Language). SQLite présente la particularité d’être directe-
ment intégré aux programmes et dans l’application utilisant sa bibliothèque
logicielle.
Avec SQLite, la base de données est intégralement stockée dans un fichier in-
dépendant du logiciel.

1.2.3 Db Browser for SQLite


Db Browser for SQLite est un outil open source graphique de haute qualité
pour créer, concevoir et modifier des fichiers de base de données compatibles
avec SQLite. L’interface utilisée est de type tableur familière.

• Les tables créées à l’aide de DB Browser à l’aide du système de base de don-


nées SQLite, en plus de l’interface graphique offerte par Qt Creator, nous
permettront de créer une application accessible à toute catégorie d’utilisa-
teurs vu sa facilité d’utilisation. En plus, cette combinaison garantit une
meilleure optimisation pour l’administrateur qui sera capable de contrôler
3
et de manipuler facilement les statistiques des ventes des appareils élec-
triques et électroniques.

Figure 1.2 – Logo du logiciel Db Browser

1.3 QCustomPlot
QCustomPlotest un widget Qt C ++ pour le traçage et la visualisation des
données. Il n’a plus de dépendances et est bien documenté. Cette bibliothèque
de traçage se concentre sur la création de tracés 2D, de graphiques et de gra-
phiques de bonne qualité de publication, ainsi que sur des performances élevées
pour les applications de visualisation en temps réel. Jetez un oeil aux didacti-
ciels de configuration et de traçage de base pour commencer.

Figure 1.3 – Logo du QCustomPlot

4
1.4 Etude préliminaire du projet
Le but de cette application est de développer une interfaces graphique per-
mettant de gérer (ajout, suppression , modification. . .) des Produit «appareils
électriques et électroniques».
Cette application doit permettre le suivie des Ventes de chaque produit déjà
dans le stock, et d’établir des statistiques de vente suite à une collecte des don-
nées liées à ce contexte.
Deux tables sont traitées dans ce chapitre. La première table «Produits » définit
par ses champs (Référence, Nom, Stock, Prix) et la deuxième table « Ventes »
définit par ses champs (Numéro, Référence, Date, Quantité, Prix de Ventes)

1.4.1 Modèle relationnel


Le modèle de données relationnel représente une base de données comme un
ensemble de :
• relations tables à deux dimensions) qui contiennent un ensemble de n-
uplets ou tuples (les lignes ou enregistrements de la table) dont les entrées
(des valeurs qui peuvent être de type nombre texte booléen ou bien NULL)
appartiennent à un domaine
• des attributs (les colonnes de la table), dont les noms peuvent servir de
clefs

Figure 1.4 – Modèle relationnel pour la table Produit


5
1.5 Relations et clés
Les relations d’une base sont connectées par certaines des valeurs qu’elles
contiennent : chaque enregistrement d’une table contient un groupe d’informa-
tions relatives à un sujet et les différents sujets sont connexes.

Par exemple : les relations Produits et Ventes sont connectées puisque l’ob-
jectif de la base de données est de gérer la vente de produits.
Ces liens existants entre les informations sont stockés dans les champs (attri-
buts) des enregistrements sous forme de clés.

Pour une relation donnée, une clé est un groupe d’attributs permettant
d’identifier un unique enregistrement de la relation.

• clé primaire : c’est l’une des clés candidates de la relation, choisie pour être
utilisée comme clé étrangère dans une autre relation
• clé étrangère : attribut d’une relation dont les valeurs sont des références
à une clé primaire d’une autre relation.
Pour préserver l’intégrité d’une base de données, le SGBD se charge de vérifier
que toutes les valeurs d’une clef étrangère d’une relation correspondent bien à
des valeurs présentes dans la clef primaire de l’autre relation.

6
Figure 1.5 – Relation et clés pour les tables Produit Ventes

1.6 Schéma relationnel


Les tables constituent la structure logique du modèle.
Un schéma de relation précise le nom de la relation ainsi que la liste des attri-
buts avec leurs domaines.
On peut représenter un schéma de relation sous une forme graphique, par
exemple à l’aide d’un diagramme :

7
Figure 1.6 – Schéma Relationel

On peut aussi le noter plus simplement sous la forme du nom de la relation


suivi de la liste de ses attributs.

• Produits ( Référence , Nom, Stock,Prix).


• Ventes ( Numéro , Référence , Date, Quantité) Dans cette notation,les clés
primaires apparaissent soulignées ,les clés étrangères précédées d’un #.
8
On peut également préciser les domaines des différents attributs :

• Produits Référence : TEXT, Nom : TEXT, En stock : BOOL, Prix : REAL)


• Ventes Numéro : INT, Référence : TEXT, Date : DATE, Quantité : INT,
Prix de ventes : REAL)

1.7 Création des tables sur Db Browser


1.7.1 DB Browser
DB Browser for SQLite est un outil visuel open source de haute qualité pour
créer, concevoir et modifier des fichiers de base de données compatibles avec
SQLite Il est destiné aux utilisateurs et aux développeurs qui souhaitent créer,

rechercher et modifier des bases de données en utilisant une interface familière


de type feuille de calcul et les commandes SQL complexes n’ont pas besoin
d’être apprises

1.7.2 Structure de notre base de données


1.7.2.1 Table Produit

Figure 1.7 – Table Produit sur Db Browser

9
1.7.2.2 Table Ventes

Figure 1.8 – Table Ventes

1.8 Conclusion
Dans ce chapitre préliminaire, on a étudié les différentes relations entre les
deux tables nécessaires pour gérer convenablement notre application. Cepen-
dant, dans le deuxième chapitre nous allons traiter la connection entre les tables
crées sur le Db Browser et et le code saisie sur le QtCreator et de gérer par la
suite les statistiques des ventes via QCustomPlot.

10
Chapitre 2

Développement de la solution proposée

2.1 Introduction
Dans ce chapitre nous vous proposons la solution que nous avons conçue et
implémentée pour répondre aux exigences du cahier des charges.

2.2 Réalisation de l’interface graphique d’accueil MainWindow


Le but de cette étape est de réaliser l’interface graphique d’accueil représentée
par la figure 2.1

Figure 2.1 – Design développé dans MainWindow.ui


11
Elle contient :
• Deux champs de texte (Nom et mot de passe)
• Deux « radio boutons » pour identifier le rôle de la personne qui utilise
l’application (Administrateur, Utilisateur)
• Un bouton poussoir (Login)
La réalisation de cette étape se divise en plusieurs sous-étapes qu’on développera
dans la suite.

On commence par l’ajout des icones souhaités dans MainWindow.ui comme


le montre la figure 2.2

Figure 2.2 – Objects design ajoutés à la fenêtre MainWindow

Comme montré dans la figure 2-1, notre interface se compose d’un « groupBox
» qui contient les deux « radioButton » Utilisateur et Administrateur, les deux
« labels » pour la saisie de Username et Password et d’un « pushButton » qui
12
désigne la bouton LogIn. L’interface contient aussi un espace image « Label pic
» à droite du « groupBox ».

Par la suite, on va traiter la configuration de ces boutons et au code corres-


pendant dans mainwindow.cpp et mainwindow.h.

Le bouton LogIn est programmé de façon à permettre l’accès aux fenêtres


suivantes qu’aux personnes inscrites dans le fichier.txt nommé « myfile.txt »
dans notre projet.

On a associer à ce fichier le type « user » qui n’est accessible qu’à l’utilisateur


dans la suite.

En cas des entrées non trouvées dans le fichier.txt, l’appui sur le bouton LogIn
engendre l’apparition d’un message qui indique la présence d’une erreur. Sinon,
si les informations entrées correspondent à un utilisateur dans le fichier.txt,
l’appui sur le bouton LogIn provoque l’apparition d’un message « hello user» si
le consultant est un utilistateur.

Enfin, si les informations entrées correspondent à un administrateur dans le


fichier.txt, l’appui sur le bouton LogIn provoque l’apparition d’un message «
hello admin ».

En plus, afin d’assurer la sécurité lors de l’utilisation, nous avons programmé


la saisie du mot de passe de façon que le mot de passe soit invisible lors de sa
saisie.

13
La figure 2.3 montre la fenêtre mainwindow obtenue.

Figure 2.3 – Fenêtre MainWindow obtenue

On montre aussi les messages à l’appui sur bouton LOGIN dans la figure 2.4.

Figure 2.4 – Messages à l’appui sur le bouton LogIn

14
2.2.1 Configuration des boutons liés à l’interface MainWindow
2.2.1.1 bouton LogIn

Figure 2.5 – Configuration du bouton LogIn (1)

15
Figure 2.6 – Configuration du bouton LogIn (2)

Pour connecter notre code sur Qt à la base de données Gestion des ventes crées
sur Db Browser, nous avons saisi le code suivant sur MainWindow.h :

Figure 2.7 – Connexion OpenClose avec Sqlite-Base de données

16
2.3 Réalisation de l’interface graphique SecDialog
Le but de cette étape est de réaliser la fenêtre correspondante à l’administra-
teur et à l’utilisateur représentée par la figure 2.8.

Figure 2.8 – Design développé dans SecDialog.ui

Les deux consultants Admin et User peuvent accéder à la table Produit et la


table Ventes et gérer les statistiques des ventes.
A travers cette interface, l’administrateur peut consulter aussi la liste des per-
sonnes qui peuvent se connecter à l’application ainsi que leus rôles (utilisa-
teur/administrateur).

Figure 2.9 – Fenêtre consultation accès

17
Pour vérifier les données de connexions à l’application, on doit comparer les
données saisites à celles enregistrées dans le fichier « myfile.txt ». Pour cela, on
charge les données enegistrées dans un vecteur de type ”user” et un autre de
type ”administrateur”.
Avec le bouton ”write” on peut modifier la liste des personnes ayant l’accès et
avec le bouton ” read” on peut juste y consulter.

Figure 2.10 – Les données d’accès

Comme montré dans la figure 2-7, notre interface se compose d’un « tabWid-
get» qui contient les 3 onglets « Widget» Bienvenu, Consulter accès et A propos.

Figure 2.11 – Objects design ajoutés à la fenêtre SecDialog

18
L’onglet bienvenue contient une image et un label « Bienvenue » et deux
pushbButton pour accéder aux tables ; Produit et Ventes , l’onglet «à propos»
contient un texte qui décrit l’application alors que l’onglet «Consulter accès»
permet d’accéder aux données d’accès.

On montre aussi l’allure des graphes après l’exécution du programme.

Figure 2.12 – les onglets ”Bienvenue” et ”Consulter accès”

Figure 2.13 – L’onglet ”A propos”

19
2.4 Réalisation de l’interface graphique Produit
Grâce à l’interface Produit, on peut gérer les fonctions Save, Update et
Delete qui permettent respectivement l’ajout, la modification et la supression
des appareils électriques et électroniques de notre table.

Figure 2.14 – Fenêtre Produit

Comme montré dans la figure 2-14, notre interface se compose d’un «groupBox»
qui contient les «radioButton» lié aux attributs de la table Produit ainsi que
leurs «labels» associés pour la saisie.
On y trouve aussi les «pushButton» qui désigne les différentes fonctionnalités
qu’on peut gérer à travers la table Produit ;Save, Update, Delete, un pushBut-
ton Load table qui permet de télécharger les données sur Db Browser et les
afficher dans le TableView.

20
Figure 2.15 – Objects design ajoutés à la fenêtre Produit

Les fonctions associées aux boutons développées dans Produit.cpp, sont les sui-
vantes :

Figure 2.16 – les fonctions Save Produit & Update Produit

21
Figure 2.17 – Fonction Delete Produit

La fonction qui permet de télécharger les données à partir de la base de données


Gestion des ventes est la suivante :

Figure 2.18 – Fonction Load Produit

Une autre fonction est traitée de telle manière lorsque on appuie sur n’im-
porte quelle enregistrement, tout le champs correspondant à cette enregistre-
ment/ligne s’affiche.

22
Figure 2.19 – Importer un champs d’enregistrement

23
2.5 Réalisation de l’interface graphique Ventes
On aura pour intérêt à travers cette interaface de permettre aux utilisateurs
ainsi qu’aux administrateurs d’accéder à la table Ventes et de gérer les statis-
tiques de ventes.
L’interface se compose d’un « groupBox » qui contient les «radioButton » lié
aux attributs de la table Ventes ainsi que leurs « labels » associés pour la saisie.
Il existe également les boutons qui font référence aux différentes fonctionnalités
pouvant être gérées via la table des ventes telle que l’ajout, la modification et
la suppression d’un enregistrement sans oublier de charger les données sur Db
Browser et de les afficher dans la TableView.

Figure 2.20 – Fenêtre Ventes

Figure 2.21 – Objects design ajoutés à la fenêtre Ventes


24
Un ComboBox est mis pour faire la liason entre les deux tables à travers le clé
primaire Référence dans la table Produit et le clé étrangère dans la table Ventes.

Figure 2.22 – Liason via un CombBox

Les différentes fonctions liés à la classe ventes sont traitées dans ventes.cpp.

Figure 2.23 – les fonctions Save Ventes & Update Ventes

25
Figure 2.24 – La fonction Delete Ventes

Figure 2.25 – La fonction Delete Ventes

26
2.6 Fonctionnement et validation
2.6.1 Interface MainWindow

Figure 2.26 – L’interface MainWindow

2.6.2 Interface SecDialog

Figure 2.27 – L’interface SecDialog

27
2.6.3 L’interface Produit

Figure 2.28 – L’interface Produit

2.6.4 L’interface Ventes

Figure 2.29 – L’interface Ventes

2.7 Conclusion
Dans ce chapitre, on a tout d’abord présenté à propos la manière d’utiliser
notre interface graphique des statistiques de ventes des appareils électriques et
électroniques et on s’est terminé par la validation de son bon fonctionnement.

28
Conclusion générale

La gestion d’une application sur QtCreator a pu répondu à des objectifs de


cours bien définis qui permettront l’intégration et la consolidation des connais-
sances acquises, ainsi que l’acquisition de connaissances et d’habiletés nouvelles.

Grâce à cette expérience on a enrichie nos connaissances en programmation


en language c++ à travers le Qt Creator et le résultat concret nous a permis
un apprentissage en perpétuelle confrontation avec la réalité.

En résumé, ce mini-projet se prête bien aux cours qui visent à développer le


sens de l’engagement et de l’implication ; les habiletés de travail individuel et
en équipe ; les compétences à la communication et le développement personnel
de l’étudiant.

29

Vous aimerez peut-être aussi