MINIS TE RE DE L EN S EIGN E MENT SU PE RI E UR ET DE LA RECHE RCHE SCIENTIFIQUE DI RE CTI ON G EN E RALE DES ÉT UD ES T ECHN OLOGI QUES ’ ’
I N S T I T U T S U P E R I E U R D E S É T U D E S T E C H N O L O G I Q U E S - J E N D O U B A
DE L L INFORMATIQUE DE PARTEMENT TECHNOLOGIES D ’ ’
SUPPORT DES TRAVAUX PRATIQUES
ATELIER PROGRAMMATION EVENEMENTIELLE V ER SION 2.0
ENSEIGNANTS : MOHAMED SLITI HAITHEM MEZNI MANEL ZOGHLAMI
Année universitaire 2014/2015 2014/2015
Fiche Matière Matière Objectifs général
Cet atelier vise à faire acquérir à l’apprenant la capacité de programmer des applications à interface graphique accédant à des bases de données. Objectifs Spécifiques
Connaître et manipuler manipuler l'environnement l'environnement de développement Visual Studio/ VB.net
Concevoir une interface graphique en VB.Net.
Programmer une application simple en VB.Net.
Interagir avec une base de données en VB.Net.
Pré-requis
Algorithmique, programmation, base de données. Public cible Profil :
Sciences et technologies en Technologies de l’inf ormatique ormatique
Spécialités :
Développement Développement des Systèmes d ’Information (DSI) Réseaux et services informatique (RSI)
Niveau : Semestre :
2 2
Déroulement
Durée :
15 semaines
Volume horaire :
3 heures TP/semaine
Evaluation
Un examen de TP
Exercices supplémentaires à domicile
Moyens et Outils Pédagogiques
Exposé informel
Tableau
Vidéo projecteur
Fascicule de TP
Outils utilisé : Microsoft Visuel Basic 2010 Express
Atelier Programmation Evénementielle
Table des Matières TP N° 0 : Prése ntation de l’Environn ement de Développement ....................................... ............................................... ........ 2 TP N° 1 : Première interface V B……..………………..…………………………………….... 7 Correction TP N°1 ………….. ……....................................... ........................................................... ......................................... ............................... .......... 9 TP N° 2 : Types de données …..……………………………………………. ............... ……. .12 Correction TP N° 2…………...……....................................... ........................................................... ......................................... ............................. ........ 14 TP N° 3 : Structures condit ionnelles………..…..…………………………………………….16 C15orrection TP N° 3 ………….. …….................................................. ....................................................................... ................................. ........... 20 TP N° 4 : Structures itérative s………..…..……………………………………………. ......... 24 Correction TP N° 4 ………….. ……...................................... .......................................................... ......................................... ............................. ........ 27 TP N° 5 : Accès aux bases de données ……..…..……………………………………………. 29 Correction TP N° 5 ………….. …… ...................................... .......................................................... ......................................... ............................. ........ 32 Exercices supplémentaires ………….. …… ........................................ ............................................................ .................................... ................ 37
1
Atelier Programmation Evénementielle
TP N° 0 – Présentation de l’Environnement de Développement Objectifs :
Découvrir l’Environnement de Développement (IDE).
Explorer quelques quelques propriétés de contrôles et conventions de programmation programmation en VB.NET.
Apprendre les étapes étapes de création et de programmation d ’une application VB.NET simple.
Volume horaire :
3 heures
Contenu du TP
Dans ce TP, la séance se déroule comme suit :
Présentation de la fenêtre principale de l’environnement Microsoft Visual Basic 2010 Express.
Présentation de la boite à outils.
Présentation de la fenêtre propriétés
Présentation de la fenêtre de l’éditeur de code
Présentation d’autres fenêtres (exemple : explorateur de projets, explorateur d ’objets, etc.).
1
Atelier Programmation Evénementielle
L’Environnement
de Développement de VB.NET
Nous allons opter pour l'utilisation de l'environnement gratuit: Microsoft Visual Basic 2010 Express. (On peut aussi utiliser Microsoft Visual Studio).
Fenêtre principale :
À partir de cette fenêtre, l’étudiant commence à découvrir les différents composants, leurs rôles et les différentes fonctionnalités offertes par l’outil Visual Basic 2008 Express.
L’étudiant sera aussi capable de manipuler la barre d ’outils afin de créer son propre projet VB. L’étudiant apprendra comment crée ou ouvrir un projet, ajouter des fenêtres, exécuter ou déboguer déboguer un programme, etc. Boite à outils :
Cette fenêtre est parmi les composants de base qui seront exploités dans les séances de TP puisqu’elle permettra à l’étudiant de manipuler les contrôles offerts (boutons de commandes, zones de texte, etc.). Dans cette partie, l ’étudiant sera capable de :
2
Atelier Programmation Evénementielle
Enumérer les contrôles contrôles les plus utilisés et le rôle de chaque contrôle.
Connaitre les différentes conventions d’uti lisation (exemple : préfixes).
Apprendre les étapes étapes à suivre pour pour ajouter ajouter un contrôle à une fenêtre.
Remarque :
l’utilisation des préfixes est facultative, mais elle est préférable pour distinguer
entre les types des différents contrôles (exemple : dans le cas où deux contrôles portent le mêm nom). Voici un des exemples de préfixes :
3
Atelier Programmation Evénementielle
Fenêtre Propriétés :
À partir de cette fenêtre, l’étudiant commence à découvrir les principales propriétés de quelques composants, et les propriétés communes.
4
Atelier Programmation Evénementielle
Fenêtre de code :
Dans cette fenêtre, l ’étudiant commence à écrire son premier code simple afin de programmer les contrôles qu ’il a utilisés.
5
Atelier Programmation Evénementielle
TP N° 1 – Première application VB Objectifs :
Concevoir des interfaces simples en VB.NET.
Définir les propriétés des objets en VB.NET.
Ecrire un programme minimal en VB.NET.
Compiler et exécuter un programme en VB.NET.
Volume horaire :
3 heures
6
Atelier Programmation Evénementielle
TP N° 1 – Première application VB Exercice 1 :
L’objectif du de cet exercice est de construire étape par étape un programme VB qui permet de calculer et afficher la somme, le produit et la division de deux entiers saisis par l’utilisateur. 1. Concevoir l’interface VB. 2. Dresser un tableau tableau contenant les contrôles, contrôles, leurs rôles et leurs propriétés. 3. Programmer le bouton Calculer pour qu’il effectue la somme, le produit et la division. Exercice 2:
Nous allons concevoir une application qui permet de permuter deux entiers x et y. L’application devra devra avoir l ’a pparence suivante :
1. Donner les propriétés propriétés de chaque chaque contrôle utilisé. 2. Programmer le bouton Permuter pour qu ’il déclenche la permutation des deux entiers x et y. 3. Modifier l’interface de l ’a pplication et le code de la procédure btnPermuter_Click pour qu ’on puisse afficher le résultat de la permutation sans modifier le contenu des champs de saisi, en utilisant : a. Le contrôle Label b. La fonction fonction prédéfinie prédéfinie de VB.NET VB.NET : MsgBox. (Syntaxe : MsgBox Message)
7
Atelier Programmation Evénementielle
Correction TP N° 1 Exercice 1:
1.
2. Contrôle
Rôle
Propriétés
Label
Demander à l ’utilisateur de saisir a
Text = Donnez a
Label
Demander à l ’utilisateur de saisir b
Text = Donnez b
Textbox
Zone de saisie de a
Textbox
Zone de saisie de b
Button Label
Calculer la somme, le produit et la division Afficher la somme de a et b
Label
Afficher le produit de a et b
Label
Afficher la division de a par b
Fenêtre
Fenêtre de l’application
Name = txta Text = vide Name = txtb Text = vide Name = btnCalculer btnCalculer Text = Calculer Name = lblSomme Text = vide Name = lblProduit lblProduit Text = vide Name = lblDivision lblDivision Text = vide Name = frmCalcul Text = Calcul
8
Atelier Programmation Evénementielle
3. Public Class Form1 Private Sub btnCalcul_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalcul.Click Dim a, b, s, p As Integer Dim d As Double a = txta.Text b = txtb.Text s = a + b p = a * b d = a / b lblSomme.Text = "Somme = " & s lblProduit.Text = "Produit = " & p lblDivision.Text = "Division = " & d End Sub End Class
Exercice 2:
1. Contrôle
Label Label Textbox Textbox Button
Rôle
Propriété s
Demander à l ’utilisateur de saisir Text= Donnez la valeur de x x Demander à l ’utilisateur de saisir Text = Donnez la valeur de y y Zone de saisie de x Name = txtX Text = vide Zone de saisie de y Name = txtY Text = vide Permuter x et y Name = btnPermuter Text = Permuter
2. Public Class Form1 Private Sub btnPermuter_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPermuter.Click Dim x, y, tmp As Integer x = txtX.Text y = txtY.Text tmp = x x= y y = tmp txtX.Text = x txty.Text = y End Sub End Class
9
Atelier Programmation Evénementielle
3. a. Public Class Form1 Private Sub btnPermuter_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPermuter.Click Dim x, y, tmp As Integer x = txtX.Text y = txtY.Text tmp = x x= y y = tmp lblx.Text = "X = " & x lbly.Text = "Y = " & y End Sub End Class
b. Public Class Form1 Private Sub btnPermuter_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPermuter.Click Dim x, y, tmp As Integer x = txtX.Text y = txtY.Text tmp = x x= y y = tmp MsgBox(" X = " & x & " Y = " & y) End Sub End Class
10
Atelier Programmation Evénementielle
TP N° 2 – Types de données Objectifs :
Déclarer correctement des constantes constantes et des des variables variables en VB.NET
Connaitre les différents types de données en VB.NET
Faire la différence entre une variable globale globale et et variable locale en en VB.NET. VB.NET.
Manipuler les différentes différent es fonctions prédéfinies pour chaque type de données en VB.NET.
Volume horaire :
6 heures
11
Atelier Programmation Evénementielle
TP N° 2 – Types de données Exercice 1 :
On veut concevoir une application qui permet déterminer le jour de naissance et calculer l ’âge d’une personne selon les coordonnées entrées par l ’utilisateur. Il s’agit de créer cr éer un programme qui permet de réaliser les étapes suivantes :
Inciter l’utilisateur à saisir son nom et son prénom et les stocker dans des variables. Lui demander sa date de naissance.
Mémoriser les jours de la semaine dans une structure de données composée afin de les utiliser pour déterminer le jour de naissance de l ’utilisateur.
Calculer l’âge.
Générer le message suivant :
[Nom & Prénom]
" Votre jour de naissance est le " [JourNaissance] " et vous avez " [age]
"ans" 1. Donnez l ’interface de l’application et dressez le tableau des propriétés des contrôles utilisés. 2. Donnez le code nécessaire pour réaliser ces étapes. Exercice 2:
L’objectif de cet exercice est de créer une application VB qui permet de lire un entier n (de 4 chiffres) et afficher le produit et la somme de ses chiffres. L ’interface à réaliser est la suivante:
Programmez le bouton Calculer pour pouvoir calculer la somme et le produit des chiffres de l ’entier n.
12
Atelier Programmation Evénementielle
Correction TP N° 2 Exercice 1:
1.
Contrôle
Rôle
Label
Demander à l’utilisateur de saisir son nom
Label
Demander à l’utilisateur de saisir son prénom
Textbox
Zone de saisie du nom
Textbox
Zone de saisie du prénom
Label Textbox
Demander à l’utilisateur de saisir sa date de Naissance Zone de saisie de la date de naissance
Button
Déterminer l’âge et le jour de naissance
Propriétés Text = Donnez votre nom : Text = Donnez votre prénom : Name = txtNom Text = vide Name = txtPrénom Text = vide Text = Donnez votre date de naissance : Name = txtDate Text = vide Name = btnage Text = Age
13
Atelier Programmation Evénementielle
2. Public Class Form1 Private Sub btnage_Click(ByVal btnage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnage.Click Dim nom, prenom, nameJour As String Dim jour, age As Integer Dim Dnaissance As Date Dim T() As String = {"dimanche" {"dimanche", , "lundi" "lundi", , "mardi" "mardi", , "mercredi" "mercredi", , "jeudi" "jeudi", , "vendredi", "vendredi" , "samedi" "samedi"} } nom = txtNom.Text prenom = txtPrenom.Text txtPrenom.Text Dnaissance = CDate CDate(txtDate.Text) (txtDate.Text) jour = Weekday(Dnaissance) Weekday(Dnaissance) nameJour = T(jour - 1) age = Year(Now) - Year(Dnaissance) Year(Dnaissance) MsgBox(nom & " " & prenom & " Votre jour de naissance est le " & nameJour & " et vous avez " & age & " ans", ans", MsgBoxStyle.Information, MsgBoxStyle.Information, "Date de Naissance") Naissance" ) End Sub End Class
Exercice 2: Public Class Form1 Private Sub btnCalculer_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculer.Click Dim nbr, m, c, d, u, somme, produit As Integer nbr = txtnbr.Text m = nbr \ 1000 c = (nbr Mod 1000) \ 100 d = ((nbr Mod 1000) Mod 100) \ 10 u = nbr Mod 10 somme = m + c + d + u produit = m * d * u * c lblproduit.Text = produit lblsomme.Text = somme End Sub End Class
14
Atelier Programmation Evénementielle
TP N° 3 – Struct Structures ures condition conditionne nell lles es Objectifs :
Utiliser les structures de contrôles conditionnelles dans un code code VB.NET.
Volume horaire :
6 heures
15
Atelier Programmation Evénementielle
TP N° 3 – Struct Structure uress condition conditionne nell lles es Exercice 1:
L’objectif de cette application est d ’ef fectuer fectuer une opération arithmétique selon le type d’opération choisi à partir de la liste déroulante. déroulante. L ’a pplication a l’apparence suivante :
1. Donner, sous forme d’un tableau, les différents contrôles utilisés et leurs propriétés. orm_Load( ) les lignes nécessaires au remplissage du contrôle 2. Ajouter à la procédure F orm_Load(
ComboBox. Utilisé pour cela : tems.Add Add pour ajouté a. La méthode I tems. ajouté un texte au ComboBox. ComboBox.
b. La propriété Sel Sel ectedI ctedI n dex dex pour initialiser le texte du contrôle ComboBox ComboBox au premier Choix 3. Programmer le bouton Calculer pour vérifier si les l es valeurs de a et b sont numériques et affiche le résultat de l ’o pération dans dans une boite de dialogue. dialogue. Exercice 2: Jeu « porte-bonheur »
Le principe du jeu consiste à trouver le numéro porte-bonheur pour une personne après avoir choisir l’option qui correspond à son état civil et saisir sa date de naissance. Principe du calcul du numéro :
Cas d’une personne célibataire : mois+jour+3
Cas d’une personne marié : mois+jour+2
Cas d’une personne divorcé : mois+jour+1
16
Atelier Programmation Evénementielle
Ecrire la procédure btnrechercher_click() qui permet de calculer et d ’afficher dans une boite de dialogue le numéro porte-bonheur à partir des informations i nformations saisies. Remarque :
La fonction DatePart() : Retourne une partie spécifique de la date spécifiée. Elle peut être le jour, le mois, etc. Exemple : Dim dA As Date= Today() nJour =DatePart("d", dA) 'Retourne le jour du mois (entre 1 et 31) nMois =DatePart("m", dA) 'Retourne le mois (entre 1 et 12) Exercice 3 :
Soit l’application suivante :
17
Atelier Programmation Evénementielle
1.
Donner, sous forme d’un tableau, les différents composants graphiques de l’interface cidessus et leurs propriétés.
2.
orm_Load( ) les lignes nécessaires au remplissage du contrôle Ajouter à la procédure F orm_Load(
ComboBox au moment de chargement char gement de la fenêtre avec : périphériques périp hériques d ’entrées, périphériques de sorties et périphériques périphériques d’E/S. 3.
Programmer le bouton Ajouter pour ajouter un périphérique p ériphérique à la liste correspondante correspondante au type choisi. Suite à chaque ajout, le nombre d ’élément de la liste est mis à jour et le champ de saisie est initialisé.
4. Programmer le bouton Reti Ret i r er pé r i ph é r i qu e pour retirer d’une liste le périphérique dont le nom est saisi par l'utilisateur. 5. Programmer le bouton Vider qui permet de vider la liste de périphériques dont le type est choisie par l ’utilisateur.
18
Atelier Programmation Evénementielle
Correction TP N° 3 Exercice 1:
1. Contrôle
Label Label Textbox Textbox Label comboBox Bouton
Rôle
Demander à l ’utilisateur de saisir a Demander à l ’utilisateur de saisir b Zone de saisie de a Zone de saisie de b Demander à l ’utilisateur de choisir une opération Lister les opérations Déterminer le résultat selon le type d’opération
Propriétés
Text = Donnez a Text = Donnez b Name = txta ; Text = vide Name = txtb ; Text = vide Text = Choisissez une Opération : Name = cmbopération Name = btncalculer btncalculer Text = Calculer
Public Class frmopération
2.
Private Sub Form1_Load(ByVal Form1_Load(ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles MyBase.Load MyBase.Load cmbopération.Items.Add("Addition" "Addition") ) cmbopération.Items.Add("Soustraction" "Soustraction") ) cmbopération.Items.Add("Multiplication" "Multiplication") ) cmbopération.Items.Add("Division" "Division") ) cmbopération.Items.Add("Division entière") entière") cmbopération.Items.Add("reste de la division" division") ) cmbopération.SelectedIndex cmbopération.SelectedIndex = 0 End Sub
3.
Private Sub btncalculer_Click( btncalculer_Click(ByVal ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles btncalculer.Click If Not IsNumeric(txta.Text) Or Not IsNumeric(txtb.Text) Then MsgBox("paramètres MsgBox("paramètres incorrectes", incorrectes", MsgBoxStyle MsgBoxStyle.Exclamation, .Exclamation, "erreur" "erreur") ) Exit Sub End If Dim op As String Dim a, b As Integer Dim res As Double op = cmbopération.Text cmbopération.Text a = CInt CInt(txta.Text) (txta.Text) b = CInt CInt(txtb.Text) (txtb.Text) Select Case op Case "Addition" res = a + b MsgBox(a & "+" & b & "=" & res, MsgBoxStyle MsgBoxStyle.Information, .Information, "Résultat" "Résultat") ) Case "Soustraction" res = a - b
19
Atelier Programmation Evénementielle
MsgBox(a & "-" & b & Case "Multiplication" res = a * b MsgBox(a & "*" & b & Case "Division" res = a / b MsgBox(a & "/" & b & Case "Division entière" res = a \ b MsgBox(a & "\" & b & Case Else res = a Mod b MsgBox(a & "mod" & b End Select End Sub End Class
"=" & res, MsgBoxStyle MsgBoxStyle.Information, .Information, "Résultat" "Résultat") )
"=" & res, MsgBoxStyle MsgBoxStyle.Information, .Information, "Résultat" "Résultat") )
"=" & res, MsgBoxStyle MsgBoxStyle.Information, .Information, "Résultat" "Résultat") )
"=" & res, MsgBoxStyle MsgBoxStyle.Information, .Information, "Résultat" "Résultat") )
& "=" & res, MsgBoxStyle MsgBoxStyle.Information, .Information, "Résultat" "Résultat") )
Exercice 2: Public Class Form1 Private Sub cmdrechercher_Click(ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles cmdrechercher.Click Dim d As Date Dim j, num, m, nb As Integer If txtdate.Text = "" Then MsgBox("veuillez MsgBox("veuillez saisir saisir correctement votre date de naissance", MsgBoxStyle.Exclamation, MsgBoxStyle .Exclamation, "erreur" "erreur") ) txtdate.Text = "" Exit Sub End If d = CDate CDate(txtdate.Text) (txtdate.Text) j = DatePart("d" DatePart("d", , d) m = DatePart("m" DatePart("m", , d) If optcelib.Checked optcelib.Checked = True Then num = 3 If optmarié.Checked optmarié.Checked = True Then num = 2 If optdivorcé.Checked optdivorcé.Checked = True Then num = 1 nb = j + m + num MsgBox("votre MsgBox("votre numéro porte bonheur est:" & nb, MsgBoxStyle MsgBoxStyle.Information, .Information, "jeu" "jeu") ) txtdate.Text = "" End Sub End Class
Exercice 3: Public Class Form2
2.
Private Sub Form2_Load(ByVal Form2_Load(ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles MyBase.Load MyBase.Load cmbtype.Items.Add("périphériq "périphérique ue d'entrèe" d'entrèe") ) cmbtype.Items.Add("périphériq cmbtype.Items.Add( "périphérique ue de sortie" sortie") ) cmbtype.Items.Add("périphériq cmbtype.Items.Add( "périphérique ue d'E/S" d'E/S") ) cmbtype.SelectedIndex cmbtype.SelectedIndex = 0 End Sub
20
Atelier Programmation Evénementielle
3.
Private Sub btnajouter_Click( btnajouter_Click(ByVal ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles btnajouter.Click If txtp.Text = "" Then MsgBox("veuillez MsgBox("veuillez saisir un périphèrique", périphèrique", MsgBoxStyle MsgBoxStyle.Exclamation, .Exclamation, "erreur") "erreur" ) Exit Sub End If If cmbtype.Text = "périphériq "périphérique ue d'entrèe" Then lste.Items.Add(txtp.Text) txtp.Text = "" lblnbe.Text = CStr CStr(lste.Items.Count) (lste.Items.Count) Else If cmbtype.Text = "périphérique de sortie" Then lsts.Items.Add(txtp.Text) txtp.Text = "" lblnbs.Text = CStr CStr(lsts.Items.Count) (lsts.Items.Count) Else lstes.Items.Add(txtp.Text) txtp.Text = "" lblnbes.Text = CStr CStr(lstes.Items.Count) (lstes.Items.Count) End If End If End Sub
4.
Private Sub btnretirer_Click( btnretirer_Click(ByVal ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles btnretirer.Click If cmbtype.Text = "périphériq "périphérique ue d'entrèe" Then lste.Items.Remove(txtp.Text) txtp.Text = "" lblnbe.Text = CStr CStr(lste.Items.Count) (lste.Items.Count) Else If cmbtype.Text = "périphérique de sortie" Then lsts.Items.Remove(txtp.Text) txtp.Text = "" lblnbs.Text = CStr CStr(lsts.Items.Count) (lsts.Items.Count) Else lstes.Items.Remove(txtp.Text) txtp.Text = "" lblnbes.Text = CStr CStr(lstes.Items.Count) (lstes.Items.Count) End If End If End Sub
5.
Private Sub btnvider_Click(ByVal btnvider_Click(ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles btnvider.Click If cmbtype.Text = "périphériq "périphérique ue d'entrèe" Then lste.Items.Clear() lblnbe.Text = "pas de périphérique" Else If cmbtype.Text = "périphérique de sortie" Then
21
Atelier Programmation Evénementielle
lsts.Items.Clear() lblnbs.Text = "pas de périphérique" Else lstes.Items.Clear() lblnbes.Text = "pas de périphérique" périphérique" End If End If End Sub End Class
22
Atelier Programmation Evénementielle
TP N° 4 – Structures itératives Objectifs :
Utiliser les structures de contrôles itératives dans un code code VB.NET.
Volume horaire :
6 heures
23
Atelier Programmation Evénementielle
TP N° 4 – Structures itératives Exercice 1:
On se propose de créer une application qui permet de déterminer le nombre de mots dans une phrase. Ajouter Ajouter les lignes lignes de code nécessaire nécessairess au bouton de commande. commande.
Exercice 2:
On souhaite concevoir une application qui permet de saisir à chaque fois un entier et de
l’insérer dans un contrôle ListBox. Chaque insertion doit être contrôlée : il s’agit d’insérer l’entier dans une position bien déterminée pour garder l’ordre croissant des éléments de la liste.
1. Donner, sous forme
d’un tableau, les différents contrôles utilisés uti lisés et leurs propriétés.
24
Atelier Programmation Evénementielle
2. Programmer r er pour qu’il permet de réaliser les étapes suivantes : Programmer le bouton I n sé
-
Vérifier si l’utilisateur a saisi un nombre entier.
-
Déterminer la position d’insertion de cet entier.
- Insérer le nombre entier dans la zone de liste. Utiliser pour cela la syntaxe syntaxe suivante : NomListBox.Items.Insert(Position d’inser ti on, texte) texte)
-
Initialiser le champ de saisi.
Exercice 3
On désire créer une application qui permet de gérer et consulter les notes des étudiants. L’interface ci-dessous permet d ’ajouter les notes des étudiants. Elle dispose aussi de trois
boutons d’o ptions permettant permettant à l’enseignant de filtrer les notes selon plusieurs critères :
Le premier bouton d’option permet de parcourir le tableau TabNotes (tableau de notes) et afficher dans l’ob jet ListBox les notes supérieures supérieures à 10.
Le deuxième deuxi ème bouton d’option p ermet d’afficher toutes les notes.
Le troisième bouton d’option permet de parcourir le tableau et affiche dans l’objet ListBox les meilleures notes (notes supérieures à 17).
1. Déclarer le tableau TabNotes
2. Programmez le bouton Ajouter qui permet d’a jouter une note note dans l’ob jet ListBox et dans le tableau TabNotes. Une note doit être comprise entre 0 et 20. 3. Ecrire le code de la procédure évènementielle évènementielle optSuperieure10_CheckedChanged qui, suite à la sélection du premier bou ton d’option, effectue le filtrage nécessaire.
25
Atelier Programmation Evénementielle
Correction TP N° 4 Exercice 1: Public Class Form1 Private Sub btnCalculer_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculer.Click Dim phr As String Dim car As Char Dim nbr_espaces, i As Integer nbr_espaces = 0 phr = Trim(txtPhrase.Text) For i = 1 To Len(phr) car = Mid(phr, i, 1) If car = " " Then nbr_espaces = nbr_espaces + 1 End If Next MsgBox("Cette MsgBox("Cette phrase contient " & nbr_espaces + 1 & " mot(s)", mot(s)", MsgBoxStyle.Information, "Nombre de mots") mots") End Sub End Class
Exercice 2:
6. Contrôle
Label TextBox ListBox Bouton
Propriétés
Text = Donnez l’entier à insérer Name = txta ; Text = vide Name = lstNombres Name = btninsérer Text = Insérer
7. Public Class frminsertion Private Sub btninsérer_Click( btninsérer_Click(ByVal ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles btninsérer.Click If Not IsNumeric(txtNombre.Text) Or txtNombre.Text txtNombre.Text = " " Or CInt(txtNombre.Text) CInt (txtNombre.Text) Mod 1 <> 0 Then MsgBox("veuillez MsgBox("veuillez saisir saisir un entier" entier", , MsgBoxStyle MsgBoxStyle.Exclamation, .Exclamation, "Insertion controlée") controlée" ) txtNombre.Text txtNombre.Text = " " txtNombre.Focus() Exit Sub End If Dim NBR, POS, NbrList As Integer NBR = txtNombre.Text
26
Atelier Programmation Evénementielle
NbrList = lstNombres.Items.Count lstNombres.Items.Count POS = 0 Do While POS <= NbrList - 1 If NBR < lstNombres.Items.Item(POS) Then Exit Do Else POS = POS + 1 End If Loop lstNombres.Items.Insert(PO lstNombres.Items.Insert(POS, S, NBR) txtNombre.Text = " " txtNombre.Focus() End Sub End Class
Exercice 3 1. Dim TabNotes(30) As Double
2. Private Sub cmdAjouter_Click( cmdAjouter_Click(ByVal ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAjouter.Click If Not IsNumeric(txtNote.Text) Or Val(txtNote.Text) Val(txtNote.Text) < 0 Or Val(txtNote.Text) > 20 Then MsgBox("Note MsgBox("Note incorrecte") incorrecte") Exit Sub End If nbNotes = nbNotes + 1 TabNotes(nbNotes TabNotes(nbNotes - 1) = Val(txtNote.Text) Val(txtNote.Text) lstNotes.Items.Add(txtNote.Text) txtNote.Clear() End Sub
3. Private Sub optSup10_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles optSup10.CheckedChanged lstNotes.Items.Clear() For i = 0 To nbNotes - 1 If TabNotes(i) >= 10 Then lstNotes.Items.Add(TabNotes(i)) Next End Sub
27
Atelier Programmation Evénementielle
TP N° 5 – Accès aux Bases de Données (VB.NET – Microsoft Office Access 2007)
Objectifs :
Utiliser Utili ser SGBD Access 2007 pour accéder aux données en VB.NET.
Intégrer Intégrer des des requêtes SQL dans un programme VB.NET.
Utiliser SQL pour la sélection et la mise à jour des données dans un programme VB.NET.
Assimiler les deux modes d ’accès aux bases de données : Mode connecté et Mode déconnecté.
Volume horaire :
12 heures
28
Atelier Programmation Evénementielle
TP N° 5 – Accès aux Bases de Données (VB.NET – Microsoft Office Access 2007)
Partie 1 : Accès au données en mode connecté
E n on cé: On désire désire développer développer une application application qui permet de gérer gérer les films. Les enregistrées
dans
la
base
« Film.mdb »
contenant
la
table
Données sont suivante:
film
(titre,Genre,Année,Budget). L’interface de l’application est la suivante :
1. Donner les différents différents composants de cette cette interface et citer citer leurs propriétés. 2. Déclarer la variable de connexion Cn et la variable de commande Cmd. 3. Ecrire la procédure frmGestionFilm_Load() qui permet, au démarrage de l’application, de se connecter à la base de données « Film.mdb » et d’initialiser l’o bjet Cmd et de remplir le contrôle contrôle ComboBox ComboBox avec avec les genres genres de de film
suivantes: Action, Comédie,
Drame, Horreur et Science fiction. 4. Programmer les différents boutons de l’interface.
29
Atelier Programmation Evénementielle
Partie2 : Accès au données en mode non connecté
E n on cé: On désire
développer
une application
permettant d'ajouter, modifier, supprimer et
rechercher un film (en utilisant le mode déconnecté). Lors du chargement du formulaire, on doit charger l'objet DataSet. L’interface de l’application est la suivante :
30
Atelier Programmation Evénementielle
Correction TP N° 5 Partie 1 : Accès au données en mode connecté 'Il faut importer les NameSpaces nécessaires nécessaires Imports System.Data.OleDb Public Class frmGestionFilm
2. Dim cn As OleDbConnection Dim cmd As OleDbCommand Dim rd As OleDbDataReader
3. Private Sub frmGestionFilm_Load(ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles MyBase.Load MyBase.Load 'Il faut créer un objet connection 'Il faut donner les paramètres Provider= et Data source= 'Dans le cas d'une base Access le provider (le moteur à 'utiliser est le moteur OLEDB Jet 4. cn = New OleDbConnection ("provider=microsoft.jet.oleDb.4.0; data source=C:\Users\hp\Desktop\ source=C:\Use rs\hp\Desktop\qqqqq\1er qqqqq\1er niveau\cours vb\BDfilm1.mdb" ) 'Il faut ouvrir la connexion: cn.Open() 'Il faut créer un objet Command: cmd = cn.CreateCommand() cn.CreateCommand() 'Inisialisation 'Inisialisa tion du ComboBox: cmbgenre.Items.Add("Action" "Action") ) cmbgenre.Items.Add("Comédie" "Comédie") ) cmbgenre.Items.Add("Drame" "Drame") ) cmbgenre.Items.Add("Horreur" "Horreur") ) cmbgenre.Items.Add("Science Fiction") Fiction") cmbgenre.SelectedIndex cmbgenre.SelectedIndex = -1 End Sub
5. Private Sub cmdajouter_Click( cmdajouter_Click(ByVal ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles cmdajouter.Click cmd.CommandText cmd.CommandText = "insert into film values('" & Txttitre.Text & "','" & cmbgenre.SelectedItem.ToS cmbgenre.SelectedItem.ToString tring & "','" & txtannée.Text txtannée.Text & "'," & txtbudget.Text & ")" Dim Res As Integer = cmd.ExecuteNonQuery() cmd.ExecuteNonQuery() If (Res = 0) Then MsgBox("Echec MsgBox("Echec d'ajout", d'ajout", MsgBoxStyle MsgBoxStyle.Information, .Information, "Ajouter film" film") ) Else MsgBox(" MsgBox(" film ajouté avec succès", succès", MsgBoxStyle MsgBoxStyle.Information, .Information, "Ajouter film") film" ) End If Call initialiser() End Sub
31
Atelier Programmation Evénementielle
Private Sub cmdmodifier_Click( cmdmodifier_Click(ByVal ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles cmdmodifier.Click cmd.CommandText cmd.CommandText = " Update film Set genre='" & cmbgenre.SelectedItem.ToSt cmbgenre.SelectedItem.ToString ring & "', année='" & txtannée.Text & "',budget=" & txtbudget.Text txtbudget.Text & " where titre='" & Txttitre.Text & "';" Dim Res As Integer = cmd.ExecuteNonQuery() cmd.ExecuteNonQuery() If (Res = 0) Then MsgBox("la MsgBox("la modification à échouer", échouer", MsgBoxStyle MsgBoxStyle.Information, .Information, "Modifier film") film" ) Else MsgBox("modificatio MsgBox("modification n effectuée avec succès", MsgBoxStyle MsgBoxStyle.Information, .Information, "Modifier film") film") End If Call Initialiser() End Sub Private Sub cmdsupprimer_Click(ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles cmdsupprimer.Click cmd.CommandText cmd.CommandText = "delete from film where titre='" & Txttitre.Text & "';" Dim Res As Integer = cmd.ExecuteNonQuery() cmd.ExecuteNonQuery() If (Res = 0) Then MsgBox(" MsgBox(" la supression à échouer", échouer", MsgBoxStyle MsgBoxStyle.Information, .Information, "supprimer film") film" ) Else MsgBox("suppression MsgBox("suppression effectuée effectuée avec succès", MsgBoxStyle MsgBoxStyle.Information, .Information, "Supprimer film") film") End If Call Initialiser() End Sub
Private Sub cmdrechercher_Click(ByVal sender As System.Object System.Object, , ByVal e As System.EventArgs System.EventArgs) ) Handles cmdrechercher.Click cmd.CommandText cmd.CommandText = "SELECT * FROM film WHERE titre ='" + Txttitre.Text + "';" rd = cmd.ExecuteReader cmd.ExecuteReader If rd.Read Then txtannée.Text = rd.GetValue(0) rd.GetValue(0) cmbgenre.SelectedItem cmbgenre.SelectedItem = rd.GetValue(1) rd.GetValue(1) txtbudget.Text txtbudget.Text = rd.GetValue(3) Else MsgBox("Film MsgBox("Film inexistant.", inexistant.", MsgBoxStyle MsgBoxStyle.Exclamation, .Exclamation, "Films" "Films") ) End If rd.Close() End Sub Private Sub Initialiser() Txttitre.Clear() cmbGenre.SelectedIndex cmbGenre.SelectedIndex = -1 txtannée.Clear() txtbudget.Clear() End Sub End Class
32
Atelier Programmation Evénementielle
Partie2 : Accès au données en mode non connecté Imports System.Data.OleDb Public Class frmFilms Private FilmConnection As OleDbConnection ' Déclaration Film Commande Private Cmd As OleDbCommand ' Déclaration Film DataAdapter Private FilmDataAdapter As OleDbDataAdapter ' Déclaration Film DataSet Private FilmDataSet As New DataSet() ' Déclaration Film DataTable Private FilmDataTable As DataTable ' Déclaration Film DataRow (ligne) Private FilmDataRow As DataRow Private CmdBuilder As OleDbCommandBuilder Private numFilm As Int32 Private Sub frmFilms_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Instanciation d'un Film Connexion FilmConnection = New OleDbConnection() 'Donner à la propriété ConnectionString les paramètres de connexion FilmConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= E:\Enseignement\Programmation evennementielle\Projets\TP_Accès_aux_Données\BDFilms.mdb;" 'Ouvrir la connexion FilmConnection.Open() 'Instancer un Film Commande Cmd = New OleDbCommand("SELECT * FROM Film;") 'Instancer un Film Adapter FilmDataAdapter = New OleDbDataAdapter(Cmd) 'initialiser l'Film Command Cmd.Connection() = FilmConnection 'Avec l'aide de la propriété Fill du DataAdapter charger le DataSet FilmDataAdapter.Fill(FilmDataSet,"Film") 'Mettre dans un Film DataTable une table du DataSet FilmDataTable = FilmDataSet.Tables("Film") End Sub Private Sub cmdAjouter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAjouter.Click FilmDataRow = FilmDataSet.Tables("Film").NewRow() FilmDataRow("Titre") = txtTitre.Text FilmDataRow("Gentre") = cmbGenre.SelectedItem.ToString FilmDataRow("Année") = Int32.Parse(txtAnnée.Text) FilmDataRow("Durée") = Int32.Parse(txtDurée.Text) FilmDataRow("Budget") = Double.Parse(txtBudget.Text) FilmDataSet.Tables("Film").Rows.Add(FilmDataRow) 'Pour modifier les valeurs changées dans le DataAdapter CmdBuilder = New OleDbCommandBuilder(FilmDataAdapter) 'Mise à jour FilmDataAdapter.Update(FilmDataSet,"Film") 'On vide le DataSet et on le 'recharge' de nouveau. FilmDataSet.Clear() FilmDataAdapter.Fill(FilmDataSet,"Film") FilmDataTable = FilmDataSet.Tables("Film") MsgBox("Film ajouté.", MsgBoxStyle.Information, "Films")
33
Atelier Programmation Evénementielle
Call Initialiser() End Sub Private Sub cmdModifier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdModifier.Click 'Extraire l'enregistrement courant FilmDataRow = FilmDataSet.Tables("Film").Rows(numFilm) 'Modifier les valeurs des champs en récupérant le contenu FilmDataRow("Titre") = txtTitre.Text FilmDataRow("Gentre") = cmbGenre.SelectedItem.ToString FilmDataRow("Année") = Int32.Parse(txtAnnée.Text) FilmDataRow("Durée") = Int32.Parse(txtDurée.Text) FilmDataRow("Budget") = Double.Parse(txtBudget.Text) 'Pour modifier les valeurs changées dans le DataAdapter CmdBuilder = New OleDbCommandBuilder(FilmDataAdapter) 'Mise à jour FilmDataAdapter.Update(FilmDataSet,"Film") 'On vide le DataSet et on le 'recharge' de nouveau. FilmDataSet.Clear() FilmDataAdapter.Fill(FilmDataSet,"Film") FilmDataTable = FilmDataSet.Tables("Film") MsgBox("Film modifié.", MsgBoxStyle.Information, "Films") Call Initialiser() cmdModifier.Enabled = False cmdSupprimer.Enabled = False End Sub Private Sub Initialiser() txtTitre.Clear() cmbGenre.SelectedIndex = -1 txtAnnée.Clear() txtDurée.Clear() txtBudget.Clear() txtTitre.Focus() End Sub Private Sub cmdSupprimer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSupprimer.Click FilmDataSet.Tables("Film").Rows(numFilm).Delete() CmdBuilder = New OleDbCommandBuilder(FilmDataAdapter) FilmDataAdapter.Update(FilmDataSet,"Film") FilmDataSet.Clear() FilmDataAdapter.Fill(FilmDataSet,"Film") FilmDataTable = FilmDataSet.Tables("Film") MsgBox("Film supprimé.", MsgBoxStyle.Information, "Films") Call Initialiser() cmdModifier.Enabled = False cmdSupprimer.Enabled = False End Sub Sub txtTitre_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)Handles txtTitre.KeyPress Dim Touche As Integer Touche = Microsoft.VisualBasic.Asc(e.KeyChar) If Touche = Keys.Enter Then Dim i As Integer Private
For i = 0 To FilmDataTable.Rows.Count - 1 If FilmDataTable.Rows(i).Item("Titre") = txtTitre.Text Then numFilm = i
34
Atelier Programmation Evénementielle
Exit For End If Next If i < FilmDataTable.Rows.Count FilmDataTable.Rows.Count Then txtAnnée.Text = FilmDataTable.Rows(numFilm).Ite FilmDataTable.Rows(numFilm).Item( m("Année" "Année") ) cmbGenre.SelectedItem cmbGenre.SelectedItem = FilmDataTable.Rows(numFilm). FilmDataTable.Rows(numFilm).Item( Item("Gentre" "Gentre") ) txtDurée.Text = FilmDataTable.Rows(numFil FilmDataTable.Rows(numFilm).Item( m).Item("Durée" "Durée") ) txtBudget.Text txtBudget.Text = FilmDataTable.Rows(numFilm).Item( FilmDataTable.Rows(numFilm).Item("Budget" "Budget") ) cmdModifier.Enabled cmdModifier.Enabled = True cmdSupprimer.Enabled cmdSupprimer.Enabled = True Else MsgBox("Film MsgBox("Film inexistant.", inexistant.", MsgBoxStyle.Exclamation, MsgBoxStyle.Exclamation, "Films" "Films") ) End If Exit Sub End If If Touche = Keys.Escape Keys.Escape Then Call Initialiser() cmdModifier.Enabled cmdModifier.Enabled = False cmdSupprimer.Enabled cmdSupprimer.Enabled = False End If End Sub End Class
35
Atelier Programmation Evénementielle
Exercices supplémentaires
36
Atelier Programmation Evénementielle
Exercice 1
L’interface ci-dessous permet de résoudre une équation de second degré: f(x)=0, sachant que f(x)=ax²+bx+c et tels que a, b et c sont des entiers, avec a non nul.
Développez la procédure événementielle cmdResoudre_click qui permet d'afficher les solutions selon les cas suivant : Pour Δ=b²-4ac
Si Δ>0 alors x 1= (-b+√ Δ)/2a et x 2 = (-b-√ Δ)/2a
Si Δ=0 alors x= -b/2a
Si Δ<0 alors pas de solution
Exercice 2
L’interface ci-dessous permet de gérer les étudiants inscrits à un ensemble de formations. 4
5 1
6
8 2
7 3
37
Atelier Programmation Evénementielle
1. Donner, sous forme d’un tableau, les différents composants graphiques spécifiés par les flèches (numérotés (numérotés de 1 à 8) et leurs propriétés en en respectant respectant les conventions conventions de nommage. Composant Numéro
Propriétés Type
1 2
….. 2. Développer la procédure Form_Load() qui permet au moment de chargement de la fenêtre de remplir le contrôle ComboBox avec les formations suivantes: Java, VB.Net et SQL. 3. Développer la procédure liée au bouton Ajouter permettant d'ajouter un étudiant à la liste correspondante à la formation choisie. Suite à chaque nouvelle inscription, le nombre d’étudiants par formation doit être mis à jour (le nombre est affiché dans l'interface sous chaque liste). 4. Programmer le bouton Retir Retir er i nscripti nscripti on pour retirer d’une formation l'étudiant dont le nom est saisi par l'utilisateur. 5. Programmer Programmer le bouton Ann uler formation qui permet d’annuler une formation dont le nom est sélectionné par l'utilisateur. Annuler une formation revient à vider la liste concernée. 6. Programmer le bouton Chercher formation permettant d’afficher la formation d’un étudiant dont le nom est saisi par l ’utilisateur. (2.5) On donne:
nomListe.Items.Item(i) nomListe.Items.Item(i) retourne l'item l'item d'indice i
Exercice 3
1. Donner une boucle boucle en VB.NET permettant de demander demander un nombre nombre inférieur à 10 jusqu'à jusqu'à ce que l'utilisateur saisisse la bonne valeur. 2. Donner le code VB.NET associé au clique sur le bouton "Connexion" et permettant d'ouvrir une autre fenêtre nommée "form2" si le mot de passe et l'identifiant sont égaux au mot "iset".
38
Atelier Programmation Evénementielle
3. Donnez au moins moins une méthode méthode pour que le mot de passe passe saisi par par un utilisateur s’affiche sous forme d ’étoiles (*). Exercice 4
L’interface ci-dessous permet au bibliothécaire de gérer les emprunts effectués par les étudiants de l ’ISET de Jendouba. Les données d ’emprunts sont enregistrées dans la base « Biblio.mdb » contenant les tables suivantes : Etudiant (CIN, NCE, Nom, No m, Prénom, Adresse, CodeGroupe) Livre (ISBN, CodeL, Titre, Année, Editeur, nbExemplaires) Emprunt (NCE, CodeL, DateEmprunt, DateRetour)
r i f i er permet au bibliothécaire de vérifier si l’étudiant désirant emprunter Le bouton V é
un nouveau livre a rendu tous les livres qu’il a déjà empruntés. S’il existe un livre non rendu, le bibliothécaire ne peut pas pa sser l’emprunt (boutons Disponibilité et Enregistrer emprunt désactivés).
39
Atelier Programmation Evénementielle
Le bouton Disponibilité permet (après avoir saisi le code du livre) de vérifier si le livre à emprunter est disponible. Si le nombre d ’exemplaires disponibles est différent de 0, le bouton Enregistrer emprunt sera activé pour enregistrer l ’opération.
Le bouton Enregistrer emprunt permet d’enregistrer l’opération d’emprunt et de mettre à jour le nombre d ’exemplaires disponibles.
Le bouton Rendr e li vre permet (après avoir saisi le numéro de la carte d ’étudiant et le code du livre) de récupérer un livre déjà emprunté (c'est-à-dire ajouter la date de retour) et de mettre à jour le nombre d’exemplaires disponibles.
Questions :
1. Donner les différents composants de cette interface et citer leurs propriétés. 2. Déclarer la variable de connexion Cn et la variable de commande Cmd. 3. Ecrire la procédure frmGestionEmprunts_Load qui permet, au démarrage de
l’application, de se connecter à la base de données « Biblio.mdb » et d ’initialiser l’objet Cmd . 4. Programmer les différents boutons de l’interface. Remarque :
Utiliser les objets OleDbCommand et OleDbDataReader pour manipuler la base
de données « Biblio.mdb ».
40