WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Modélisation et implémentation d'un système décisionnel pour l'analyse de performance à  la direction provinciale de la fonction publique Kasa௠central


par Adrien Jean Pierre TSHIBUANDA TSHIMANGA
Université de Kananga UNIKAN - Licencié en informatique  2024
  

précédent sommaire suivant

Extinction Rebellion

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

précédent sommaire suivant






Extinction Rebellion





Changeons ce systeme injuste, Soyez votre propre syndic





"L'imagination est plus importante que le savoir"   Albert Einstein