Affichage des articles dont le libellé est dotnet. Afficher tous les articles
Affichage des articles dont le libellé est dotnet. Afficher tous les articles

samedi 29 novembre 2014

Réalisation d'une application de gestion de scolarité (Dotnet)

Présentation de l'application:

- Interface d'accueil:

C’est la fenêtre principale de l’application  permettant le choix  d’un mode d’accès (déconnecté ou connecté).





- Interface de travail:

Cette interface offre la possibilité à l’utilisateur de choisir un élément parmi les menus disponibles.


- Menus d'application:

Chaque menu comprend plusieurs sous menu concernant l’affichage, l’ajout, la modification et la suppression.




- Gestion de base:

  • Table étudiant
Une fois  cliqué sur le sous menu liste étudiant, l’utilisateur peut visualiser la table étudiant récupéré à partir de la base de donnée.


L’utilsateur a la possibilité d'ajouter un étudiant dans la base de données à travers cette interface:


Pour modifier un étudiant,il suffit de cliquer sur l’onglet modifier, la liste déroulante  associée  va se charger par les champs de la table étudiant. Après avoir choisi un numéro, les textbox seront remplis et l’utilisateur aura la main pour modifier ces champs.




C’est la même procédure  que celle relative à la modification.
NB : les captures des interfaces pour le mode déconnecté sont les même que celles du mode déconnecté.


  • Table note:
C’est l’interface qui permet à l’utilisateur de choisir dans la liste déroulante un numéro d’étudiant pour lequel on va afficher les notes par étudiant.



- Quitter l'application:

L'onglet quitter permet à la fois de revenir à la fenêtre d’accueil pour changer le mode d’accès ou de quitter l’application





lundi 23 juin 2014

Mini projet en recherche opérationnelle

Réalisation d’une application modélisant l’algorithme 

 DIJKSTRA, sous la plateforme C# .net

Introduction:

Présentant de grands avantages de rapidité, cet algorithme ne permet que la recherche des chemins de longueur minimale et pour des graphes pondérés par des poids positifs.

Cet algorithme, autorisant la recherche d’un chemin minimal entre deux sommets I (initial) et F (final). se décompose en quatre phases, comme suit :
























           



Le principe est le suivant : on affecte provisoirement le poids maximal (+ ∞) à tous les sommets, sauf pour le sommet initial de poids 0 et ses successeurs (recevant le poids de l’arc les reliant à I) ; tant que c’est possible, on diminue les poids provisoires qui deviennent définitifs (un sommet affecté d’un poids définitif est dit marqué) lorsque leur diminution devient impossible.

Remarque :
Il se peut que l’algorithme se termine avant que tous les sommets ne soient marqués (cf. l’alternative du début de la phase 3) ; cela voudra dire qu’aucun des chemins passant par ces sommets non marqués ne sera un chemin de longueur minimale.

            Exemple :            
            Cherchons dans le graphe G ci-dessous, un chemin minimal de I à F, en utilisant l’algorithme de DIJKSTRA-MOORE, ce qui est possible les poids étant tous positifs.

































                 Dans la dernière colonne ( Σ ), on a indiqué successivement l’entrée des sommets. Pour retrouver un chemin minimal, on lit le tableau de droite à gauche. Le dernier sommet entré est le sommet final F : dans la colonne F, est indiqué (toujours en dernière position) le poids définitif attribué à F, qui est aussi la longueur minimale du chemin et qui vaut ici 23. De plus, le prédécesseur de F qui a contribué à donner son poids à F, est P : on lit dans la colonne P que le prédécesseur (ayant contribué à donner son poids définitif à P) est L. Puis la colonne L va nous donner le prédécesseur qui est E ; la colonne E nous donne ensuite D, la colonne D nous donne B, celle de B nous donne A et celle de A nous donne I. Le chemin de longueur minimale reliant I à F est donc : [I, A, B, D, E, L, P, F] et sa longueur est 23.

                Remarque : 
                La présence de circuits dans le graphe G interdit son partage en niveau et donc l’utilisation de la version présentée de l’algorithme de FORD. De même, la recherche d’un chemin de longueur maximale, n’a aucun sens.


Interfaces de l'application:

               L'application permet de dessiner différents points via des coordonnées (x,y), et permet de les relier tout en donnant une valeur équivalente à chaque arc. Ainsi, On obtient un graphe sur la carte de la forme principale.  Ceci sera bien illustré dans les captures d'écran suivantes représentant les différentes étapes de la mise en œuvre de l’application :















Après l’insertion de tous les points et arcs, on obtient un graphe :



























Ensuite l’utilisateur sélectionne le point de départ et celui de l’arrivée, l’application applique alors l’algorithme du Dijkstra et visualise le chemin de coût minimal en rouge, tout en mentionnant le coût minimal au niveau de chaque point de passage :





















                N.B :
                L’application permet d’enregistrer les graphes sous format <xml> et de les réouvrir, afin d’éviter les efforts inutiles.

samedi 24 mai 2014

Application mobile : mini SGBD

I- Objet:

 Ce tutoriel consiste à  la réalisation d’un mini SGBD sur des périphériques mobiles, cette application offre les fonctionnalités suivantes:

-          La création d’une BD ;
-          La création d’une table ;
-          L’insertion des enregistrements ;
-          L’affichage.

 II- Présentation de l’application:

       1. L’accueil :


Code source du Form1 « démarrage » :

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace applicationMobile
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
         private void button1_Click(object sender, EventArgs e)
        {
            gestion.F2=new ajouBD();
            gestion.F2.Show();
        }
         private void button2_Click(object sender, EventArgs e)
        {
            gestion.tab = new table();
            gestion.tab.Show();
        } 
        private void button4_Click(object sender, EventArgs e)
        {
            gestion.aff = new affich();
            gestion.aff.Show();
        }       
    }
}

  2. Création de la BD :

 Pour la BD on doit remplir les deux champs permettant l’accès à l’application et cliquer après sur le bouton « Valider»(fig3).On aura  le choix (fig4)  entre enregistrer dans le répertoire par défaut ou choisir un autre dossier en utilisant la boite « enregistrer sous »(fig5). Pour vérifier, il suffit d’aller chercher le fichier avec « explorateur des fichier » du mobile(fig6).


Code source relatif à l’ajout de la BD:

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;

namespace applicationMobile
{
    public partial class ajouBD : Form
    {
        public ajouBD()
        {
            InitializeComponent();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            DialogResult res=MessageBox.Show("Enregistrer le fichier dans le repertoire par default:mydoc","enregistrement:",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1);
            try
            {
                if (res == DialogResult.Yes)
                {                   
                    SqlCeEngine bd = new SqlCeEngine("DataSource=\\My Documents\\" + tB1.Text + ".sdf;Pwd=" + tB2.Text);
                    if (!bd.Verify())
                    {
                        bd.CreateDatabase();
                        this.Close();
                    }
                    else { MessageBox.Show("Le nom existe deja !!!!"); }
                                    }
                else
                {
                    SaveFileDialog diag = new SaveFileDialog();
                    diag.FileName = tB1.Text;
                    diag.Filter = "fichier BD|*.sdf";
                    diag.ShowDialog();
                    SqlCeEngine bd = new SqlCeEngine("DataSource=" + diag.FileName + ";Pwd=" + tB2.Text);
                    bd.CreateDatabase();
                    this.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("error: " + ex.Message, "Alert:");
            }
        }
        }
}

 3. Gestion des tables :

En ce qui concerne la gestion des tables, on a le choix entre la création des tables, leur suppression et l’ajout des enregistrements(fig7).

Code source de la Form « gestion des tables »:

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace applicationMobile
{
    public partial class table : Form
    {
        public table()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            gestion.F3 = new ajoutab();
            gestion.F3.Show();
            gestion.colonn = "";
        }
            private void button4_Click(object sender, EventArgs e)
        {
            gestion.F4 = new insert();
            gestion.F4.Show();
        }
         private void button2_Click(object sender, EventArgs e)
        {
            gestion.sup = new supp();
            gestion.sup.Show();
        }
         private void button6_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}