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; }
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); }
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); }