Exercice Visual Basic : Classe Stagiaire

Entrer le code pour réaliser l'interface suivante:



123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276' Indiactions : ' On dispose d'un tableau T de stagiaires de (Nmax +1) stagiares maximum : ' Les indices de ce tableau vont de 0 à Nmax. Il n'est pas nécessaire de remplir ' tout le tableau. N (si >-1) nous indique l'indice du dernier stagiaire introduit dans le tableau. ' pos indique l'indice du stagiaire affiché sur la feuille Const Nmax As Integer = 3 Dim N As Integer, pos As Integer Dim T(Nmax) As Stagiaire ' Sub RecopierZonesDansEnreg(ByVal i As Byte) ' Recopie les données saisies (sur la feuille ) dans le stagiaire ' ayant l'indice i With T(i) .Ins = Val(TxtNumIns.Text) .Nom = Trim(TxtNom.Text) ' Trim élimine les espaces inutiles .Prenom = Trim(TxtPrénom.Text) .DateNaissance = TxtDateNais.Text .adresse = TxtAdr.Text .ville = Trim(CbVille.Text) .masculin = OptMasculin.Checked If Optetat1.Checked Then .etat = 1 ElseIf Optetat2.Checked Then .etat = 2 ElseIf Optetat3.Checked Then .etat = 3 ElseIf Optetat4.Checked Then .etat = 4 End If ' Nous disposons de trois langues : ReDim .langues(2) If ChecLang0.Checked Then .langues(0) = 1 Else .langues(0) = 0 If ChecLang1.Checked Then .langues(1) = 1 Else .langues(1) = 0 If ChecLang2.Checked Then .langues(2) = 1 Else .langues(2) = 0 .Note1 = TxtNote1.Text .Note2 = TxtNote2.Text .Note3 = TxtNote3.Text ' Je calcule ici la moyenne du stagiaire .Moy = (.Note1 + .Note2 + .Note3) / 3 End With End Sub Sub RecopierEnregDansZones(ByVal i As Byte) ' Montre les informations concernant le stagiaire d'indice i sur la feuille With T(i) TxtNumIns.Text = .Ins TxtNom.Text = .Nom TxtPrénom.Text = .Prenom TxtDateNais.Text = .DateNaissance TxtAdr.Text = .adresse CbVille.Text = .ville If .masculin Then OptMasculin.Checked = True Else OptFeminin.Checked = True End If Select Case .etat Case 1 ' Si le champs etat = 1 ==> activer Célibataire ' qui est la première option de l'état civil Optetat1.Checked = True Case 2 ' Si le champs etat = 2 ==> activer Marié(e) Optetat2.Checked = True Case 3 ' Si le champs etat = 3 ==> activer Divorcé(e) Optetat3.Checked = True Case 4 ' Si le champs etat = 4 ==> activer Veuf(ve) Optetat4.Checked = True End Select ChecLang0.Checked = (.langues(0) = 1) ChecLang1.Checked = (.langues(1) = 1) ChecLang2.Checked = (.langues(2) = 1) TxtNote1.Text = Format(.Note1, "0.00") TxtNote2.Text = Format(.Note2, "0.00") TxtNote3.Text = Format(.Note3, "0.00") TxtMoy.Text = Format((.Note1 + .Note2 + .Note3) / 3, "0.00") End With End Sub Private Sub Nouveau_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Nouveau.Click If N >= Nmax Then MsgBox("Vous n'avez plus le droit d'ajouter un stagiaire", MsgBoxStyle.Exclamation, "Attention") Exit Sub End If pos = N + 1 TxtNumIns.Text = "" TxtNom.Text = "" TxtPrénom.Text = "" TxtDateNais.Text = "" TxtAdr.Text = "" CbVille.Text = "Rabat" OptMasculin.Checked = True Optetat1.Checked = True ChecLang0.Checked = True ChecLang1.Checked = True ChecLang2.Checked = False TxtNote1.Text = "" TxtNote2.Text = "" TxtNote3.Text = "" TxtMoy.Text = "" TxtNumIns.Focus() End Sub Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing If MessageBox.Show("Voulez-vous fermer l'application?", "Fin de l'application", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.No Then e.Cancel = True End Sub Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load N = -1 pos = 0 End Sub Private Sub Premier_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Premier.Click If pos > 0 Then pos = 0 RecopierEnregDansZones(0) Else MsgBox("C'est le premier") End If End Sub Private Sub Dernier_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Dernier.Click If pos Then pos = N RecopierEnregDansZones(N) Else MsgBox("C'est le dernier") End If End Sub Private Sub Enregistrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Enregistrer.Click ' Cette procédure permet : ' - La modification lorsqu'on affiche un enregistrement existant ' - L'ajout si appel de la procédure Nouveau_Click ' Le seul cas où pos est égal à (N+1) est lorsqu'on a appelé ' la procédure Nouveau_Click. Ainsi, si j'enregistre dans ce cas, le N devra être incrémenté ' Et dans tous les cas (ajout ou modification), on enregistre à la position pos du tableau des stagiaires If pos = N + 1 Then N += 1 End If RecopierZonesDansEnreg(pos) End Sub Private Sub Quitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Quitter.Click Me.Close() End Sub Private Sub Precedent_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Precedent.Click If pos > 0 Then pos -= 1 RecopierEnregDansZones(pos) Else MsgBox("C'est le premier") End If End Sub Private Sub Rechercher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Rechercher.Click Dim NumInscription As Integer, Trouve As Boolean, i As Byte NumInscription = InputBox("Numéro d'inscription à rechercher", "Recherche") Trouve = False i = 0 While Not (Trouve) And (i If T(i).Ins = NumInscription Then Trouve = True pos = i RecopierEnregDansZones(i) Else i += 1 End If End While If Not Trouve Then MsgBox("Numéro introuvable") End Sub Private Sub Suivant_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Suivant.Click If pos Then pos += 1 RecopierEnregDansZones(pos) Else MsgBox("C'est le dernier") End If End Sub Private Sub Supprimer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Supprimer.Click Dim i As Byte ' S'il y'a au plus un stagiaire, signaler qu'il n'y en a plus : N = -1, et faire appel à Nouveau_Click pour ' rénitialiser les zones If (N Then N = -1 : Nouveau_Click(sender, e) : Exit Sub ' On veut supprimer le stagiaire d'indice pos : décalage des cellules ' Trace : ' T(pos)= T(pos+1) ' T(pos+1)= T(pos+2) ' ........ ' T(N-1)= T(N) For i = pos To N - 1 T(i) = T(i + 1) Next i 'Après suppression, diminuer la valeur de N N -= 1 ' Si on supprime le stagiaire qui se trouvait à la dernière position, on ' voudra afficher celui qui le précédait : celui-ci se trouve à la position N (la dernière) ' sinon ' le stagiaire qui suivait celui supprimé, va être affiché (T(pos)=T(pos+1)) ' Fin Si If pos > N Then pos = N ' Affichage du stagiaire d'indice pos RecopierEnregDansZones(pos) End Sub Private Sub Calculer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Calculer.Click ' Calcul et affichage de la moyenne TxtMoy.Text = Format((CSng(TxtNote1.Text) + CSng(TxtNote2.Text) + CSng(TxtNote3.Text)) / 3, "0.00") End Sub Private Sub Resultat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Resultat.Click Dim i As Integer, P As Boolean, St As Stagiaire, Msg As String Do P = False For i = 0 To N - 1 If T(i).Moy Then St = T(i) T(i) = T(i + 1) T(i + 1) = St P = True End If Next Loop Until P = False T(0).Clas = 1 For i = 1 To N If T(i - 1).Moy T(i).Moy Then T(i).Clas = i + 1 Else T(i).Clas = T(i - 1).Clas End If Next Msg = "N°" & vbTab & "Nom" & vbTab & "Prenom" & vbTab & "Date de naissance" & vbTab & "Note1" & vbTab & "Note2" & vbTab & "Note3" & vbTab & "Moyenne" & vbTab & "Classement" & vbCrLf For i = 0 To N With T(i) Msg &= .Ins & vbTab & .Nom & vbTab & .Prenom & vbTab & .DateNaissance & vbTab & .Note1 & vbTab & .Note2 & vbTab & .Note3 & vbTab & .Moy & vbTab & .Clas & vbCrLf End With Next 'MsgBox(Msg) txt1.Text = Msg End SubEnd Class----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Module Module1 Structure Stagiaire Dim Ins As Integer Dim Nom As String Dim Prenom As String Dim DateNaissance As Date Dim adresse, ville As String Dim masculin As Boolean Dim Note1, Note2, Note3, Moy As Single Dim etat As Byte Dim langues() As Byte Dim Clas As Byte End StructureEnd Module
Article publié le 06 Janvier 2012 Mise à jour le Samedi, 17 Décembre 2022 15:13 par GC Team