Example #1
0
        private void btnModifier_Click(object sender, EventArgs e)
        {
            SEmploye emp = default(SEmploye);
            int      NoEmploye, i = 0;
            double   SalEmploye;
            bool     Conversion;

            //Conversion UI en variables
            Conversion = Int32.TryParse(txtNumero.Text, out NoEmploye);
            Conversion = Double.TryParse(txtSalaire.Text, out SalEmploye);

            /// Validate
            if (!Conversion)
            {
                MessageBox.Show("Vous devez entrer des informations valides pour faire des modifications", "Erreur",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            while (NoEmploye != m_Index[i].Cle)
            {
                i++;
                if (i == m_NbreEnrg)
                {
                    MessageBox.Show("L'employé que vous essayez d'effacer n'existe pas.", "Erreur",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                if (NoEmploye == m_Index[i].Cle && m_Index[i].ADetruire == true)
                {
                    MessageBox.Show("Cet employé a été supprimé.", "Erreur",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }

            emp.NoEmp   = NoEmploye;
            emp.Nom     = txtNom.Text;
            emp.Salaire = SalEmploye;

            //Écrire le nouvel employé à la fin du fichier
            m_FSE.Seek(0, SeekOrigin.End);
            long position = m_FSE.Position;

            emp.Ecrire(m_FSE, m_BWE);

            //Ajouter au tableau d'indice après
            m_Index[i].Position  = position;//Ne pas mettre fin du fichier mais la position du pointeur
            m_Index[i].Cle       = NoEmploye;
            m_Index[i].ADetruire = false;

            MessageBox.Show("Vos changements ont été effectués avec succès.", "Félicitations !",
                            MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            return;
        }
Example #2
0
        private void Save_(object sender, EventArgs e)
        {
            int        NbEmploye  = 0;
            SEmploye   emp        = default(SEmploye);
            FileStream Temporaire = new FileStream(Directory.GetCurrentDirectory() + @"\Replacement.tmp",
                                                   FileMode.Create, FileAccess.Write, FileShare.None);
            BinaryWriter BWE = new BinaryWriter(Temporaire);

            for (int i = 0; i < m_NbreEnrg; i++) // Transférer tout le fichier d'index dans le nouveau fichier temporaire
            {
                bool Flag = !m_Index[i].ADetruire;
                if (Flag)
                {
                    emp.Lire(m_Index[i].Position, m_FSE, m_BRE);
                    m_Index[i].Position = Temporaire.Position;
                    emp.Ecrire(Temporaire, BWE);
                    NbEmploye++;
                }
            }
            //On ferme tout
            m_BRE.Close();
            m_FSE.Close();
            m_BWE.Close();
            BWE.Close();
            Temporaire.Close();

            File.Replace("Replacement.tmp", "Employes.don", "Employe.bak");
            //On réécrit les bonnes valeurs qui doivent êtres présentes dans le fichier
            FileStream   FichierIndex = new FileStream(Directory.GetCurrentDirectory() + @"\Index.ndx", FileMode.Truncate, FileAccess.Write, FileShare.None);
            BinaryWriter bwe          = new BinaryWriter(FichierIndex);
            string       Signature    = "Index Employés";

            FichierIndex.Seek(0, SeekOrigin.Begin);

            bwe.Write(Signature);
            bwe.Write(NbEmploye);

            //Réécriture
            for (int i = 0; i < m_NbreEnrg; i++) // Transférer tout le fichier d'index dans le nouveau fichier temporaire
            {
                bool Flag = !m_Index[i].ADetruire;
                if (Flag)
                {
                    bwe.Write(m_Index[i].ADetruire);
                    bwe.Write(m_Index[i].Cle);
                    bwe.Write(m_Index[i].Position);
                }
            }
            FichierIndex.Close();
            bwe.Close();
            this.Form1_Load(sender, e);
        }
Example #3
0
        private void btnAjouter_Click(object sender, EventArgs e)
        {
            int    NoEmploye;
            string NomEmploye;
            double SalEmploye;
            SIndex Ind = new SIndex();
            bool   ConversionNo, ConversionSal;

            m_BWE = new BinaryWriter(m_FSE);

            //Conversion des textbox dans les variables
            NomEmploye    = txtNom.Text;
            ConversionNo  = Int32.TryParse(txtNumero.Text, out NoEmploye);
            ConversionSal = Double.TryParse(txtSalaire.Text, out SalEmploye);

            /// Validate
            if (!ConversionNo)
            {
                MessageBox.Show("Vous devez entrer un numéro d'employé valide pour l'indexer.", "Erreur",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (!ConversionSal)
            {
                MessageBox.Show("Le salaire de l'employé que vous essayez d'enregistrer est invalide.", "Erreur",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (NomEmploye == "")
            {
                MessageBox.Show("Le nom de l'employé que vous essayez d'enregistrer est invalide.", "Erreur",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            int  i;
            long pos  = GetEmploye(NoEmploye, out i);
            bool flag = pos != -1;

            if (i == -1)
            {
                MessageBox.Show("Vous ne pouvez pas ajouter cet employé puisqu'il est déjà existant.", "Erreur",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            //Association a la structure
            SEmploye Employe = new SEmploye();

            Employe.NoEmp   = NoEmploye;
            Employe.Nom     = NomEmploye;
            Employe.Salaire = SalEmploye;

            m_FSE.Seek(0, SeekOrigin.End);
            long Pointer = m_FSE.Position; // Savoir la position initiale de la struct

            Employe.Ecrire(m_FSE, m_BWE);

            //Associate Index
            m_NbreEnrg++;
            m_Index[m_NbreEnrg - 1].Position  = Pointer;
            m_Index[m_NbreEnrg - 1].Cle       = NoEmploye;
            m_Index[m_NbreEnrg - 1].ADetruire = false;


            MessageBox.Show("Votre nouvel employé a été enregistré avec succès.", "Félicitations !",
                            MessageBoxButtons.OK, MessageBoxIcon.Information);
        }