4.3.3. Schéma multidimensionnel de l'entrepôt
de données
Page | 55

Fig. IV-4 : Base de données
multidimensionnelle
4.4.4. Quelques interfaces graphiques et code source de
l'application 4.3.4.1. Système transactionnel
Dans cette partie nous faisons un extrait des interfaces
graphiques et code source de notre application transactionnelle
implémentée en langage de programmation C#.
A. Extrait des interfaces graphiques
Les formulaires suivants sont les interfaces principales de notre
application. Il s'agit de :
A.1. Le formulaire MDI
Il s'agit ici du formulaire parent qui supporte tous les autres
formulaires de l'application. Il possède des menus qui sont des liens
vers les différentes interfaces de travail. Le voici :
Page | 56

Fig. IV-5 : Formulaire MDI
A.2. Enregistrement de l'agent
Le point de départ est l'identification de l'agent.
Cette opération se réalise à travers ce formulaire dont le
point d'entrée est le menu « Gestion », sous-menu «
Nouvel agent » :

Page | 57
Fig. IV-6 : Formulaire
d'identification de l'agent
A.3. Assignation des tâches
Après avoir identifié l'agent, la prochaine
étape consiste à lui assigner les tâches. Voici le
formulaire permettant de réaliser cette opération :

Fig. IV-7 : Formulaire d'assignation des
tâches
A.4. Suivi des réalisations
À ce stade, il faut pouvoir indiquer pour chacune des
tâches assignées, si elle a été
réalisée, la durée. Voici le formulaire permettant de le
faire :

Page | 58
Fig. IV-8 : Formulaire de suivi des
réalisations
A.5. Analyse des performances
Le but de ce système est de pouvoir fournir des
indicateurs précis et claires sur lesquels les décideurs pourront
s'articuler afin de fonder leurs décisions. Nous rappelons en passant
nos trois indicateurs de performances : Nombre de tâches
assignées, nombre de réalisations et la durée de
réalisation. Ce formulaire que nous présentons ici a pour but de
faciliter les analyses sur quatre dimensions : Temps, Agent, Service et
Fonction. Le voici :

Fig. IV-9 : Formulaire d'analyse
B. Extrait du code source de l'application
Ci-dessous nous présentons l'extrait du code source de
l'application transactionnelle en se basant sur les opérations des mises
à jour et celles liées à l'extraction de données,
transformation et chargement (ETL). Pour des questions d'espace, certaines
méthodes seront présentées uniquement en prototype. La
classe ci-après en donne les détails :
class Class_Manip_Bd
{
//Propriétés
private OleDbConnection Connexion_Bd;
|
Page | 59
private OleDbConnection Connexion_Dm;
private OleDbCommand Commande;
private OleDbDataReader Lecture;
private string Requete;
private string Chaine_Connexion_Bd;
private string Chaine_Connexion_Dm;
private string Chaine_Decisionnel;
public Class_Manip_Bd()
{
//this.Requete=requete;
this.Chaine_Connexion_Bd =
@"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=C:\Gestion_Performance\BD_Performance.accdb";
this.Connexion_Bd = new
OleDbConnection(this.Chaine_Connexion_Bd);
this.Chaine_Connexion_Dm =
@"Provider=Microsoft.ACE.OLEDB.12.0;
Data
Source=C:\Gestion_Performance\DM_Gestion_Performance.accdb";
this.Connexion_Dm = new
OleDbConnection(this.Chaine_Connexion_Dm);
}
/*public Class_Manip_Bd(bool decisionnel, string requete)
{
//System.Windows.Forms.MessageBox.Show("On Y est !");
this.Requete = requete;
this.Chaine_Decisionnel = "server=CARITAS-LUEBO-1; user id=sa;
pwd=CARITAS-LUEBO; database=SD_GETION_REDEVANCES";
this.Connexion = new OleDbConnection(this.Chaine_Decisionnel);
}*/
public void Mise_A_Jour(string r_Bd)
{
//System.Windows.Forms.MessageBox.Show(Requete);
this.Commande = new OleDbCommand(r_Bd, this.Connexion_Bd);
this.Connexion_Bd.Open();
this.Commande.ExecuteNonQuery();
this.Connexion_Bd.Close();
System.Windows.Forms.MessageBox.Show("Mise à jour
effectuée avec succès !");
}
//
public void Mise_A_Jour(string r_Bd, int msg) {
//System.Windows.Forms.MessageBox.Show(Requete); this.Commande =
new OleDbCommand(r_Bd, this.Connexion_Bd); this.Connexion_Bd.Open();
this.Commande.ExecuteNonQuery();
this.Connexion_Bd.Close();
Page | 60
}
//
public void Mise_A_Jour(string r_Dm, bool Dm) {
//System.Windows.Forms.MessageBox.Show(Requete);
this.Commande = new OleDbCommand(r_Dm, this.Connexion_Dm);
this.Connexion_Dm.Open();
this.Commande.ExecuteNonQuery();
this.Connexion_Dm.Close();
//System.Windows.Forms.MessageBox.Show("Mise à jour
effectuée avec succès !");
}
//
public void Mise_A_Jour(string r_Bd, string r_Dm) {
//System.Windows.Forms.MessageBox.Show(Requete);
this.Commande = new OleDbCommand(r_Bd, this.Connexion_Bd);
this.Connexion_Bd.Open();
this.Commande.ExecuteNonQuery();
this.Connexion_Bd.Close();
//
this.Commande = new OleDbCommand(r_Dm, this.Connexion_Dm);
this.Connexion_Dm.Open();
this.Commande.ExecuteNonQuery();
this.Connexion_Dm.Close();
System.Windows.Forms.MessageBox.Show("Mise à jour
effectuée avec
succès !");
}
/*public void Mise_A_Jour(string r_Bd, int msg)
{
//System.Windows.Forms.MessageBox.Show(Requete);
this.Commande = new OleDbCommand(r_Bd, this.Connexion_Dm);
this.Connexion_Dm.Open();
this.Commande.ExecuteNonQuery();
this.Connexion_Dm.Close();
//
}*/
public int Nouveau_Numero(string table, string champ)
{
int nNum = 0;
string snNum = "0";
this.Commande = new OleDbCommand("SELECT MAX("+champ+") AS
nNum FROM "+table, this.Connexion_Bd);
this.Connexion_Bd.Open();
this.Lecture = this.Commande.ExecuteReader();
while (this.Lecture.Read())
Page | 61
{
snNum+=this.Lecture[0].ToString();
}
this.Lecture.Close();
this.Connexion_Bd.Close();
nNum=(int.Parse(snNum))+1;
return nNum;
}
public int Nouveau_Numero(string table, string champ, bool Dm)
{
int nNum = 0;
string snNum = "0";
this.Commande = new OleDbCommand("SELECT MAX(" + champ + ")
AS nNum FROM " + table, this.Connexion_Dm);
this.Connexion_Dm.Open();
this.Lecture = this.Commande.ExecuteReader();
while (this.Lecture.Read())
{
snNum += this.Lecture[0].ToString();
}
this.Lecture.Close();
this.Connexion_Dm.Close();
nNum = int.Parse(snNum) + 1;
return nNum;
}
public bool Rechercher(string r_Bd, int n,
System.Windows.Forms.TextBox[] txt)
{
bool trouver = false;
this.Commande = new OleDbCommand(r_Bd, this.Connexion_Bd);
this.Connexion_Bd.Open();
this.Lecture = this.Commande.ExecuteReader();
int i = 0;
while (this.Lecture.Read())
{
while (i < n)
{
txt[i].Text = this.Lecture[i].ToString(); i++;
}
trouver = true;
}
this.Lecture.Close();
this.Connexion_Bd.Close();
return trouver;
Page | 62
}
public bool Rechercher(string r_Dm, int n,
System.Windows.Forms.TextBox[] txt, bool Dm)
{
bool trouver = false;
this.Commande = new OleDbCommand(r_Dm, this.Connexion_Dm);
this.Connexion_Dm.Open();
this.Lecture = this.Commande.ExecuteReader();
int i = 0;
while (this.Lecture.Read())
{
while (i < n)
{
txt[i].Text = this.Lecture[i].ToString(); i++;
}
trouver = true;
}
this.Lecture.Close();
this.Connexion_Dm.Close();
return trouver;
}
public void Charge_Combo_Au_Chargement(string r_Bd,
System.Windows.Forms.ComboBox Combo)
{
Combo.Items.Clear();
this.Commande = new OleDbCommand(r_Bd, this.Connexion_Bd);
this.Connexion_Bd.Open();
this.Lecture = this.Commande.ExecuteReader();
while (this.Lecture.Read())
{
Combo.Items.Add(this.Lecture[0].ToString());
}
this.Lecture.Close();
this.Connexion_Bd.Close();
}
public void
Charge_Taches_Data(System.Windows.Forms.DataGridView
dt)
{
dt.Rows.Clear();
this.Commande = new OleDbCommand("SELECT IdTache, Designation
FROM t_TACHE", this.Connexion_Bd);
this.Connexion_Bd.Open();
this.Lecture = this.Commande.ExecuteReader();
while (this.Lecture.Read())
Page | 63
{
dt.Rows.Add();
dt.Rows[dt.Rows.Count - 1].Cells[1].Value =
this.Lecture["IdTache"].ToString();
dt.Rows[dt.Rows.Count - 1].Cells[2].Value =
this.Lecture["Designation"].ToString();
}
this.Lecture.Close();
this.Connexion_Bd.Close();
}
//
public void Charge_Assignations_Agent_Data(int
idAgent,System.Windows.Forms.DataGridView dt)
{
dt.Rows.Clear();
this.Commande = new OleDbCommand("SELECT IdAssignation,
t_Assignation.IdTache, Designation FROM t_TACHE INNER JOIN
t_Assignation
ON t_Assignation.IdTache=t_TACHE.IdTache WHERE
IdAgent="+idAgent,
this.Connexion_Bd);
this.Connexion_Bd.Open();
this.Lecture = this.Commande.ExecuteReader();
while (this.Lecture.Read())
{
dt.Rows.Add();
dt.Rows[dt.Rows.Count - 1].Cells[1].Value =
this.Lecture["IdAssignation"].ToString();
dt.Rows[dt.Rows.Count - 1].Cells[2].Value =
this.Lecture["IdTache"].ToString();
dt.Rows[dt.Rows.Count - 1].Cells[3].Value =
this.Lecture["Designation"].ToString();
}
this.Lecture.Close();
this.Connexion_Bd.Close();
}
public void
Charge_Data_Au_Chargement(System.Windows.Forms.DataGridView
Liste)
{
Liste.Rows.Clear();
this.Commande = new OleDbCommand(this.Requete,
this.Connexion_Bd);
this.Connexion_Bd.Open();
this.Lecture = this.Commande.ExecuteReader();
string[] Ligne = new string[7];
while (this.Lecture.Read())
{
Ligne[1] = this.Lecture[0].ToString();
|
Page | 64
Ligne[2] = this.Lecture[1].ToString(); Ligne[3] =
this.Lecture[2].ToString(); Ligne[4] = this.Lecture[3].ToString();
Liste.Rows.Add(Ligne);
}
this.Lecture.Close();
this.Connexion_Bd.Close();
Liste.Columns[5].DefaultCellStyle.BackColor =
System.Drawing.Color.Fuchsia;
Liste.Columns[6].DefaultCellStyle.BackColor =
System.Drawing.Color.Fuchsia;
}
public void
Par_Rapport_AuxAgents(System.Windows.Forms.DataGridView Tableau)
{
int totalAssignations = 0;
int totalRealisations = 0;
double totalDuree = 0;
string[] ligne = new string[5];
Tableau.Rows.Clear();
//
Tableau.ColumnCount = 5;
Tableau.Columns[0].HeaderText = "Id. Agent";
Tableau.Columns[1].HeaderText = "Nom, Post nom et
Prénom";
Tableau.Columns[1].Width = 400;
Tableau.Columns[2].HeaderText = "Nbre de tâches
assignées";
Tableau.Columns[3].HeaderText = "Nbre de tâches
réalisées";
Tableau.Columns[4].HeaderText = "Duree Moyenne";
this.Commande=new OleDbCommand("SELECT D_AGENT.IdAgent,
Nom, PostNom, Prenom FROM D_AGENT",this.Connexion_Dm);
this.Connexion_Dm.Open();
this.Lecture = this.Commande.ExecuteReader();
int n=0;
while (this.Lecture.Read())
{
ligne[0] = this.Lecture["IdAgent"].ToString();
ligne[1] =
this.Lecture["Nom"].ToString()+"-"+this.Lecture["PostNom"].ToString()+"-"+this.Lecture["Prenom"].ToString();
OleDbCommand Cmd = new OleDbCommand("SELECT
SUM(NbreDeTachesAssignees) AS nbAssignations, SUM(NbreDeTachesRealisees) AS
nbRealisations, AVG(DureeDeRealisation) AS moyenneDuree FROM F_ANALYSE WHERE
IdAgent=" + ligne[0], this.Connexion_Dm);
OleDbDataReader Lire = Cmd.ExecuteReader(); while
(Lire.Read())
Page | 65
{
ligne[2] = Lire["nbAssignations"].ToString();
ligne[3] = Lire["nbRealisations"].ToString();
ligne[4] = Lire["moyenneDuree"].ToString();
}
Lire.Close();
totalAssignations += int.Parse("0"+ligne[2]);
totalRealisations+=int.Parse("0"+ligne[3]);
totalDuree+=double.Parse("0"+ligne[4]);
n++;
Tableau.Rows.Add(ligne);
}
this.Lecture.Close();
this.Connexion_Dm.Close();
ligne[0] = "";
ligne[1] = "TOTAL";
ligne[2] = totalAssignations.ToString();
ligne[3] = totalRealisations.ToString();
ligne[4] = (totalDuree / n).ToString();
Tableau.Rows.Add(ligne);
}
|
4.5. Conclusion partielle
Ce chapitre a été entièrement
consacré au déploiement et à l'implémentation du
système d'aide à la décision pour la gestion des
performances des travailleurs. Nous avons commencé par le
déploiement du système OLTP avant de chuter sur le système
OLAP. Un système OLTP dans ce contexte joue le rôle de source de
données pour le système OLAP. Les interfaces graphiques et codes
sources pour chacun de ces systèmes ont été
présentés.
? Centraliser les données relatives aux agents de la
Fonction Publique,
Page | 66
|