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); }
//****************************************************************** // // Ce bouton est là pour se déboguer // à retirer pour la remise du projet // //******************************************************************* private void btnAfficher_Click(object sender, EventArgs e) { string s = ""; SEmploye emp = default(SEmploye); int pos = 0; m_FSE.Seek(0, SeekOrigin.Begin); for (int i = 0; pos < m_FSE.Length; i++) { emp.Lire(pos, m_FSE, m_BRE); s += "Numéro d'employé : " + (emp.Nom).ToString() + "\tNom : " + (emp.Nom).ToString() + "\tSalaire : " + (emp.Salaire).ToString() + "\n"; pos = (int)this.m_FSE.Position; } MessageBox.Show(s); }
private void btnRechercher_Click(object sender, EventArgs e) { int i = 0, NoEmploye; m_BRE = new BinaryReader(m_FSE); SEmploye PEmp = new SEmploye(); bool ConversionNo = Int32.TryParse(txtNumero.Text, out NoEmploye); if (!ConversionNo)//Savoir si on a pu trouver le dossier associé au numéro. { MessageBox.Show("Vous devez entrer un numéro d'employé valide pour le rechercher.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } while (i < m_NbreEnrg && m_Index[i].Cle != NoEmploye) { i++; } if (i == m_NbreEnrg && m_Index[i].Cle != NoEmploye) { MessageBox.Show("L'employé que vous essayez de trouver n'existe pas.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); btnModifier.Enabled = false; btnSupprimer.Enabled = false; txtNom.Text = ""; txtSalaire.Text = ""; return; } else { long Position = m_Index[i].Position; PEmp.Lire(Position, m_FSE, m_BRE); Affichage(PEmp); btnModifier.Enabled = true; btnSupprimer.Enabled = true; } }
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); }
private void Affichage(SEmploye Employe) { txtNumero.Text = Employe.NoEmp.ToString(); txtNom.Text = Employe.Nom; txtSalaire.Text = Employe.Salaire.ToString(); }