Voilà la première version de mon application console qui gère des stagiaires (ajout,suppression,modif....) mais en cette première version en aborderons pas les fichiers alors il nous est utile de travailler avec les structures d'içi le problème de perte d'infos à chaque fermeture de la console mais la deuxième version manipule les fichiers
deuxième version :
http://www.vbfrance.com/codes/GESTION-STAGIAIRES-AVEC-FICHIER_49490.aspx
Source / Exemple :
Imports System.IO
Structure result
Dim note(), nbnot, moyenne As Double
Dim mention As String
End Structure
Structure stagiaire
Dim n As Integer
Dim nom, niveau, groupe As String
Dim age As Integer
Dim result As result
End Structure
Module Module1
Dim stag() As stagiaire
Dim x, nbstg As Integer
Function age()
Dim anénais As Integer
age:
Console.Write("entrez l'année de naissance du stagiaire:")
Try
anénais = Console.ReadLine
Catch e As InvalidCastException
Console.WriteLine("invalide")
GoTo age
End Try
Return Year(Now()) - anénais
End Function
Sub find()
Console.Title = "GESTION DES STAGIAIRES - rechercher un stagiaire"
deb:
Console.Clear()
Console.ForegroundColor = ConsoleColor.Blue
Console.WriteLine()
Console.WriteLine("")
Console.WriteLine(" GESTION DES STAGIARES ")
Console.WriteLine("")
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine()
Console.WriteLine(" --Rechercher un stagiaire--")
Console.WriteLine()
saisi:
Console.WriteLine("entrez le numéro du stagiaire à chercher")
Try
x = Console.ReadLine
Catch ex As InvalidCastException
GoTo saisi
End Try
Console.WriteLine("Recherche terminée")
Console.WriteLine()
If x <= nbstg And x > 0 Then
For i = 0 To UBound(stag)
If stag(i).n = x Then
x = i
Exit For
End If
Next
Console.WriteLine(stag(x).n & " " & stag(x).nom & " " & stag(x).niveau & stag(x).groupe & " il as " & stag(x).age & " ans")
If stag(x).result.moyenne <> Nothing Then
If stag(x).niveau = "1" Then
Console.WriteLine(" Sa moyenne de la " & 1 & " ère année: " & stag(x).result.moyenne & stag(x).result.mention)
Else
Console.WriteLine(" Sa moyenne de la " & stag(x).niveau & " ème année: " & stag(x).result.moyenne & stag(x).result.mention)
End If
End If
Console.WriteLine("stagiaire trouvé")
ElseIf x <= nbstg Or x < 0 Then
GoTo deb
Else
Console.WriteLine("stagiaire introuvable")
End If
Console.WriteLine()
Console.WriteLine("appuyer sur entrée pour revenir au menu principale")
Console.ReadLine()
End Sub
Sub MAJ()
Dim MAJ As New Collection
Dim i As Integer
Dim a As ConsoleKey
Console.Clear()
Console.Title = "GESTION DES STAGIAIRES - Mise à jour des stagiaires"
Console.ForegroundColor = ConsoleColor.Blue
Console.WriteLine()
Console.WriteLine("")
Console.WriteLine(" GESTION DES STAGIARES ")
Console.WriteLine("")
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine()
Console.WriteLine(" --Mettre à jour les données d'un stagiaire--")
Console.WriteLine()
'la liste des stagiaires disponible
Console.WriteLine("Les stagiaires disponible :")
Console.WriteLine()
If nbstg <> 0 Then
For i = 0 To UBound(stag)
Console.WriteLine("le stagiaire numéro : " & stag(i).n & stag(i).nom)
Next
'le menu du mise à jour(en collection)
MAJ.Add(" 1- son nom >")
MAJ.Add(" < 2- son age >")
MAJ.Add(" < 3- son niveau >")
MAJ.Add(" < 4- son groupe >")
MAJ.Add(" < 5- ses notes")
Console.WriteLine()
test:
Console.WriteLine("entrez le numéro du stagiaire à modifié: ")
Try
x = Console.ReadLine
Catch e As InvalidCastException
Console.WriteLine("entrez un numéro valide (parmit la liste des stagiaires disponible")
GoTo test
End Try
For i = 0 To UBound(stag)
If stag(i).n = x Then
x = i
a = True
Exit For
End If
Next
'exception levée à l'erreur de saisie du numéro
If a = True Then
Console.WriteLine()
Console.WriteLine("qu'est ce que vous voulez lui modifier?")
i = 1
Do Until a = ConsoleKey.Escape
Console.Clear()
Console.WriteLine()
Console.ForegroundColor = ConsoleColor.Blue
Console.WriteLine("")
Console.WriteLine(" GESTION DES STAGIARES ")
Console.WriteLine("")
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine("4- Mise à jour")
Try
Console.WriteLine(MAJ(i))
'le choix du niveau du mise à jour
a = Console.ReadKey.Key
If a = ConsoleKey.RightArrow Then
i += 1
End If
If a = ConsoleKey.LeftArrow Then
i -= 1
End If
If a = ConsoleKey.Enter Then
Console.WriteLine()
If i = 1 Then
Console.WriteLine("son ancien nom: " & stag(x).nom)
Console.Write("Entrez son nouveau nom: ")
stag(x).nom = Console.ReadLine
MsgBox("le nom du stagiaire numéro " & stag(x).n & " a été modifié", MsgBoxStyle.OkOnly)
ElseIf i = 2 Then
Console.WriteLine("son ancien age: " & stag(x).age)
stag(x).age = age()
MsgBox("l'age du stagiaire numéro " & stag(x).n & " a été modifié", MsgBoxStyle.OkOnly)
ElseIf i = 3 Then
Console.WriteLine("son ancien niveau: " & stag(x).niveau)
Console.Write("Entrez son nouveau niveau: ")
stag(x).niveau = Console.ReadLine
MsgBox("le niveau du stagiaire numéro " & stag(x).n & " a été modifié", MsgBoxStyle.OkOnly)
ElseIf i = 4 Then
Console.WriteLine("son ancien groupe: " & stag(x).groupe)
Console.Write("Entrez son nouveau groupe: ")
stag(x).groupe = Console.ReadLine
MsgBox("le groupe du stagiaire numéro " & stag(x).n & " a été modifié", MsgBoxStyle.OkOnly)
ElseIf i = 5 Then
Dim p As Boolean = True
'ajouter des notes
Console.WriteLine(" 1- lui ajouter des notes")
'refaire les notes depuis le 0
Console.WriteLine(" 2- entrer ses notes depuis le debut")
a = Console.ReadLine
Console.Clear()
If a = 1 Then
Call note()
ElseIf a = 2 Then
stag(x).result.nbnot = 0
Call note()
End If
End If
End If
'exception levée à l'arrivée au début ou la fin de la collection
Catch e As IndexOutOfRangeException
If i = 0 Then
i = 5
Else
i = 1
End If
End Try
Loop
Else
Console.WriteLine("personne n'est ajouté encore, ajoutez les en entrant ""1"" sur le menu principale")
GoTo test
End If
'exception levée si le numéro du stagiaire est hors de limite
Else
Console.WriteLine("personne n'est ajouté encore, ajoutez les en entrant ""1"" sur le menu principale")
Console.ReadLine()
End If
End Sub
Sub del()
Dim i, j As Integer
Dim c As Boolean = False
Console.Title = "GESTION DES STAGIAIRES - supprimé un stagiaire"
Console.Clear()
Console.ForegroundColor = ConsoleColor.Blue
Console.WriteLine()
Console.WriteLine("")
Console.WriteLine(" GESTION DES STAGIARES ")
Console.WriteLine("")
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine()
Console.WriteLine(" --supprimé un stagiaire--")
Console.WriteLine()
Console.WriteLine("1- les non admis")
Console.WriteLine("2- par numéro le numéro du stagiaire")
x = Console.ReadLine
If x = 1 Then
Dim o As Integer
Call trie_moy(o)
For k = 0 To UBound(stag)
If stag(k).result.mention = " non admis" Then
o += 1
End If
Next
nbstg = nbstg - o
ReDim Preserve stag(nbstg - 1)
ElseIf x = 2 Then
If nbstg <> 0 Then
Console.WriteLine("Les stagiaires disponible :")
'la liste des stagiaires disponible
For i = 0 To UBound(stag)
Console.WriteLine("le stagiaire numéro : " & stag(i).n & stag(i).nom)
Next
Console.WriteLine("entrez le numéro du stagiaire à supprimé")
Try
x = Console.ReadLine
Dim possibl As Boolean
For i = 0 To UBound(stag)
If stag(i).n = x Then
x = i
possibl = True
Exit For
End If
Next
If possibl = True Then
possibl = False
If MsgBox("voulez vous le supprimé?", MsgBoxStyle.Information + MsgBoxStyle.YesNo, "Comfirmation") = MsgBoxResult.Yes Then
'ecraser le stagiaire numéro x
For j = x To nbstg - 2
stag(j) = stag(j + 1)
Next
'stagiaire supprimé
c = True
nbstg = UBound(stag)
ReDim Preserve stag(UBound(stag))
If c = True Then
MsgBox("stagiaire supprimé avec succès", MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, "terminée")
c = False
End If
Else
MsgBox("aucun stagiaire n'est supprimé", MsgBoxStyle.OkOnly + MsgBoxStyle.ApplicationModal, "")
Exit Sub
End If
Else
Console.WriteLine("aucun stagiaire n'as ce numéro")
Console.WriteLine("appuyer sur entrée pour revenir au menu principale")
Console.ReadLine()
End If
'exception levée à l'erreur de saisie du numéro
Catch e As InvalidCastException
Console.WriteLine("entrez un numéro valide (parmit la liste des stagiaires disponible")
Console.ReadLine()
End Try
Else
Console.WriteLine("personne n'est ajouté encore, ajoutez les en entrant ""1"" sur le menu principale")
Console.ReadLine()
End If
End If
End Sub
Sub ajout()
Dim rep As MsgBoxResult
Console.Clear()
Console.Title = "GESTION DES STAGIAIRES - Ajouter un stagiaire"
Console.ForegroundColor = ConsoleColor.Blue
Console.WriteLine()
Console.WriteLine("")
Console.WriteLine(" GESTION DES STAGIARES ")
Console.WriteLine("")
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine()
Console.WriteLine(" --Ajouter un stagiaire--")
Console.WriteLine()
x = nbstg
Console.WriteLine("l'élève numéro: " & x + 1)
ReDim Preserve stag(x)
stag(x).n = x + 1
Console.Write("entrez le nom du stagiaire: ")
stag(x).nom = Console.ReadLine
Console.Write("le niveau du stagiaire: ")
stag(x).niveau = Console.ReadLine
Console.Write("le groupe du stagiaire: ")
stag(x).groupe = Console.ReadLine
stag(x).age = age()
nbstg = nbstg + 1
rep = MsgBox("il as des notes?", MsgBoxStyle.Information + MsgBoxStyle.YesNo, "")
If rep = MsgBoxResult.Yes Then
Call note()
Else
Console.WriteLine()
Console.WriteLine("vous pouvez lui attribué ces notes apres,en tapons ""4"" au menu principale")
Console.WriteLine()
Console.WriteLine("appuyer sur entrée pour revenir au menu principale")
Console.ReadLine()
End If
End Sub
Sub note()
Dim note As Integer
Console.Title = "GESTION DES STAGIAIRES - Les notes"
Console.Clear()
Console.WriteLine()
Console.WriteLine("N.I.:tapez -1 si vs avez terminé")
Console.WriteLine()
Do Until note = -1
t: Console.WriteLine("entrez la " & stag(x).result.nbnot + 1 & "ème note ")
Try
note = Console.ReadLine
Catch ex As InvalidCastException
Console.WriteLine("veuillez saisir une note valide")
GoTo t
End Try
If note <> -1 And note >= 0 And note <= 20 Then
ReDim Preserve stag(x).result.note(stag(x).result.nbnot)
stag(x).result.note(stag(x).result.nbnot) = note
stag(x).result.nbnot = stag(x).result.nbnot + 1
ElseIf note <> -1 And (note < 0 Or note > 20) Then
Console.WriteLine()
Console.WriteLine("voyons comme même une note ne peut pas être supérieure à 20 ou inférieur à 0!!")
Console.WriteLine()
Else
Exit Do
End If
Loop
Call moyenne()
End Sub
Sub trie_moy(ByRef o)
Dim k As Integer
Dim z As stagiaire
For k = 0 To UBound(stag)
For j = k + 1 To UBound(stag)
If stag(k).result.moyenne < stag(j).result.moyenne Then
z = stag(k)
stag(k) = stag(j)
stag(j) = z
End If
Next
Next
End Sub
Sub moyenne()
Dim i As Integer
Dim s As Double = 0
For i = 0 To stag(x).result.nbnot - 1
s = s + stag(x).result.note(i)
Next
If stag(x).result.nbnot <> Nothing Then
stag(x).result.moyenne = FormatNumber(s / stag(x).result.nbnot)
Call mention()
End If
End Sub
Sub mention()
If stag(x).result.moyenne >= 10 Then
stag(x).result.mention = " admis"
Else
stag(x).result.mention = " non admis"
End If
End Sub
Sub liste()
Dim i As Integer = 1
Dim a As ConsoleKey
If nbstg <> 0 Then
Dim trie As New Collection
trie.Add("1- par numéro >")
trie.Add("< 2- par nom >")
trie.Add("< 3- par moyenne")
Do Until a = ConsoleKey.Enter Or a = ConsoleKey.Escape
Console.Clear()
Console.Title = "GESTION DES STAGIAIRES - La liste des stagiaires"
Console.ForegroundColor = ConsoleColor.Blue
Console.WriteLine()
Console.WriteLine("")
Console.WriteLine(" GESTION DES STAGIARES ")
Console.WriteLine("")
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine()
Console.WriteLine(" --La liste des stagiaires--")
Console.WriteLine()
Try
Console.WriteLine(trie(i))
a = Console.ReadKey.Key
If a = ConsoleKey.RightArrow Or a = ConsoleKey.UpArrow Then
i += 1
ElseIf a = ConsoleKey.LeftArrow Or a = ConsoleKey.DownArrow Then
i -= 1
End If
Catch e As IndexOutOfRangeException
If i = 0 Then
i = 3
Else
i = 1
End If
End Try
Loop
Dim z As stagiaire
If a = ConsoleKey.Enter Then
Console.WriteLine(" 1- croissant")
Console.WriteLine(" 2- décroissant")
a:
Try
Console.Write("choix: ")
a = Console.ReadLine
Catch ex As InvalidCastException
Console.WriteLine("entrez ""1"" pour croissant ou bien ""2"" pour décroissant")
GoTo a
End Try
If i = 1 Then ' trie par numéro
If a = 1 Then ' par numéro croissant
For k = 0 To UBound(stag)
For j = k + 1 To UBound(stag)
If stag(k).n > stag(j).n Then
z = stag(k)
stag(k) = stag(j)
stag(j) = z
End If
Next
Next
ElseIf a = 2 Then ' numéro décroissant
For k = 0 To UBound(stag)
For j = k + 1 To UBound(stag)
If stag(k).n < stag(j).n Then
z = stag(k)
stag(k) = stag(j)
stag(j) = z
End If
Next
Next
End If
'-------------------------------------------
ElseIf i = 2 Then ' trie par nom
If a = 1 Then 'nom croissant
For k = 0 To UBound(stag)
For j = k + 1 To UBound(stag)
If stag(k).nom > stag(j).nom Then
z = stag(j)
stag(j) = stag(k)
stag(k) = z
End If
Next
Next
End If
If a = 2 Then 'nom décroissant
For k = 0 To UBound(stag)
For j = k + 1 To UBound(stag)
If stag(k).nom < stag(j).nom Then
z = stag(j)
stag(j) = stag(k)
stag(k) = z
End If
Next
Next
End If
'-----------------------------------------
ElseIf i = 3 Then ' trie par moyenne
If a = 1 Then 'moyenne croisante
For k = 0 To UBound(stag)
For j = k + 1 To UBound(stag)
If stag(k).result.moyenne > stag(j).result.moyenne Then
z = stag(k)
stag(k) = stag(j)
stag(j) = z
End If
Next
Next
ElseIf a = 2 Then 'moyenne décroissante
Dim o As Integer = 0
Call trie_moy(o)
End If
End If
'-------------------------------
If a = 1 Or a = 2 Then
For i = 0 To UBound(stag) 'Affichage
Console.WriteLine()
Console.WriteLine(stag(i).n & " " & stag(i).nom & " " & stag(i).niveau & stag(i).groupe & " il as " & stag(i).age & " ans")
If stag(i).result.moyenne <> Nothing Then
If stag(i).niveau = "1" Then
Console.WriteLine(" Sa moyenne de la " & 1 & " ère année: " & stag(i).result.moyenne & stag(i).result.mention)
Else
Console.WriteLine(" Sa moyenne de la " & stag(i).niveau & " ème année: " & stag(i).result.moyenne & stag(i).result.mention)
End If
Else
Console.WriteLine(" il as pas encore de note")
End If
Next
ElseIf a = ConsoleKey.Escape Then
Exit Sub
Else
Console.WriteLine("entrez ""1"" pour croissant ou bien ""2"" pour décroissant")
GoTo a
End If
ElseIf a = ConsoleKey.Escape Then 'a= échap
Exit Sub
End If
Else ' nbstg=0
Console.WriteLine("personne n'est ajouté encore, ajoutez les en entrant ""1"" sur le menu principale")
End If
Console.WriteLine()
Console.WriteLine("appuyer sur entrée pour revenir au menu principale")
Console.ReadLine()
End Sub
Sub resultat()
Console.WriteLine("entrez le numéro du stagiaire")
x = Console.ReadLine
Dim possibl As Boolean
For i = 0 To UBound(stag)
If stag(i).n = x Then
x = i
possibl = True
Exit For
End If
Next
If possibl = True Then
For i = 0 To stag(x).result.nbnot - 1
Console.WriteLine("la note numéro " & i + 1 & ":" & stag(x).result.note(i))
Next
Console.ReadLine()
Else
Console.WriteLine("aucun stagaire n'as ce numéro")
End If
End Sub
Sub son()
If File.Exists(My.Application.Info.DirectoryPath & "\house.wav") = True Then
My.Computer.Audio.Play(My.Application.Info.DirectoryPath & "\house.wav", AudioPlayMode.BackgroundLoop)
Else
MsgBox("Fichier Son introuvable", , "Erreur Son")
End If
End Sub
Sub Main()
If MsgBox("Du son?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Call son()
End If
Dim i As Integer = 1
Dim a As ConsoleKey
Dim p As Boolean = False
Dim menu As New Collection
With menu
.Add("1- ajouter un stagaire >")
.Add("< 2- la liste des stagiaires >")
.Add("< 3- rechercher un stagiaire >")
.Add("< 4- mise à jour des données d'un stagiaire >")
.Add("< 5- supprimer un stagiaire")
End With
Do Until a = ConsoleKey.Escape
Console.Title = "GESTION DES STAGIAIRES"
Console.Clear()
Console.ForegroundColor = ConsoleColor.Blue
Console.WriteLine()
Console.WriteLine("")
Console.WriteLine(" GESTION DES STAGIARES ")
Console.WriteLine("")
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine()
Try
Console.WriteLine(menu(i))
a = Console.ReadKey.Key
If a = ConsoleKey.RightArrow Or a = ConsoleKey.DownArrow Then
i += 1
End If
If a = ConsoleKey.LeftArrow Or a = ConsoleKey.UpArrow Then
i -= 1
End If
If a = ConsoleKey.Escape Then
If MsgBox("Quitter?", MsgBoxStyle.YesNo, "") = MsgBoxResult.Yes Then
Exit Sub
Else
a = -1
Exit Try
End If
End If
Catch e As IndexOutOfRangeException
If i = 0 Then
i = 6
Else
i = 1
End If
End Try
If a = ConsoleKey.Enter Then
If i = 1 Then
Call ajout()
ElseIf i = 2 Then
Call liste()
ElseIf i = 3 Then
Call find()
ElseIf i = 4 Then
Call MAJ()
ElseIf i = 5 Then
Call del()
End If
End If
Loop
End Sub
'réaliser par Ahmed
'Ahmed04@hotmail.fr
End Module
Conclusion :
Attention!!! ce Code doit être éxécuté en mode CONSOLE
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.