Commerciaux Winform
BLOC 2
2.1.2 Modéliser une solution applicative
2.1.3 Utiliser des composants d’accès aux données
2.1.5 Réaliser des tests nécessaires à la validation ou à la mise en production
Vous disposez d’un début d’application ; les données sont déjà présentes dans un fichier sérialisé. Vous devez fournir une version graphique de l’application grâce aux objets WinForm de Visual Studio.
Missions
1 - Créer un Menu et un container MDI
- Ajoutez la DLL au projet
- Renommer
Form1
enMenu
- Ajouter en menu principal
Fichier
etCommercial
- Ajouter en sous menu de
Fichier
:Ouvrir
,Enregistrer
- Ajouter en sous menu de
Commercial
:Nouveau
,Nouvelle note de frais
,Visualiser Notes
Résultat attendu :
Nous allons nous intéresser à présent à une autre façon de gérer les multi fenêtres, il s’agit des MDI
- Ajoutez un container MDI en mettant, dans la fenêtre du menu, la propriété
IsMdiContainer
à True
Résultat attendu :
Résultat pour le WinForm :
Ajouter les sous menus
Ajouter le code
- Afficher le code du formulaire et ajouter le code suivant dans la classe.
private ServiceCommercial leService;
private string nomFichier;
- Double clicker sur le sous menu ouvrir et copier ce code
try
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.ShowDialog();
nomFichier = openFileDialog1.FileName;// contient le chemin
this.leService = PersisteCommercial.Charge(nomFichier);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
- Double clicker sur le sous menu
enregistrer
et copier ce code
try
{
PersisteServiceCommercial.Sauve(this.leService, nomFichier);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
2 - Ajouter le formulaire FrmAjoutCommercial
cas d’utilisation
Cas | Cas d’utilisation ajout commercial |
---|---|
1 | L’utilisateur demande l’ajout d’un commercial |
2 | Le système retourne le formulaire correspondant |
3 | L’utilisateur sélectionne une puissance parmi les puissances de la liste et une catégorie de véhicule |
4 | Le système enregistre ce nouveau commercial |
a- création du formulaire
- Créez les formulaires
FrmAjoutCommercial
- Ajouter les objets à
FrmAjoutCommercial
selon le schéma suivant. Nommez-les en fonction de leur type, par exemplelblNom
pour le label nom ettxtNom
pour la zone de text ou encorebtnValider
pour le bouton valider.
Résultat attendu FrmAjoutCommercial
:
b- ajout du code dans le formulaire
- Double clicker sur le sous menu correspondant
- Modifier le code ci dessous
- Tester l’ouverture du formulaire
private ServiceCommercial leService;
public FrmAjoutCommercial(ServiceCommercial leService)
{
InitializeComponent();
this.leService = leService;
}
Le formulaire doit s’ouvrir avec la listBox chargé avec les numéros de puissances
- Lancer l’évènement Load
- Résultat attendu
for (int i = 5; i < 25; i++)
this.lstPuissance.Items.Add(i);
Pour enregistrer ce nouveau commercial, on écrit le code dans l’événement click du bouton :
- Double clicker sur le bouton Valider
- Résultat attendu
int puissance = Convert.ToInt32(this.lstPuissance.SelectedItem.ToString());
char c = 'A';
if (this.rdBtB.Checked)
c = 'B';
if (this.rdBtC.Checked)
c = 'C';
Commercial cm = new Commercial(this.txtNom.Text, this.txtPrenom.Text, puissance, c);
leService.AjouterCommercial(cm);
Pour lier le formulaire au menu
- Double clicker sur le Menu Nouveau
- Résultat attendu
FrmAjoutCommercial f = new FrmAjoutCommercial(leService);
f.MdiParent = this;
f.Show();
Pour Fermer Le Formulaire
- Double clicker sur le bouton Fermer
- Résultat attendu
this.Close();
3 - Saisir une note de frais
cas d’utilisation
Cas | Cas d’utilisation ajout une note de frais |
---|---|
1 | L’utilisateur demande l’ajout d’une note de frais |
2 | Le système retourne le formulaire avec la liste de tous les commerciaux |
3 | L’utilisateur sélectionne un commercial, une date et type de frais |
4 | Le système enregistre cette nouvelle note de frais |
Cas | Cas Alternatif |
---|---|
3a | l’utilisateur sélectionne le type de frais « transport » |
Le système affiche le nombre de km à saisir | |
3b | l’utilisateur sélectionne le type de frais « repas » |
Le système affiche le nombre de km à saisir | |
3c | l’utilisateur sélectionne le type de frais « nuite » |
Le système affiche le nombre de km à saisir |
a- création du formulaire
- Créez les formulaires
FrmAjoutNote
- Ajouter les objets à
FrmAjoutNote
selon le schéma suivant.
FrmAjoutNote
:

b- ajout du code dans le formulaire
En vous aidant du formulaire précedent
- Modifier le formulaire
Menu
pour appeler le formulaire - Modifier
FrmAjoutNote
pour récupérer les informations de l’objetleService
- Ajouter la propriété privée
type
- Lancer l’évènement Load
- Résultat attendu
string s;
foreach(Commercial c in leService.LesCommerciaux)
{
s = $"{c.Nom} {c.Prenom}";
lstCommerciaux.Items.Add(s);
}
En fonction du type des notes de frais, on affecte une valeur à l’attribut type
- Double click sur le radio bouton
- Résultat attendu en fonction du radio bouton
this.grbKm.Visible = true;
this.grbMontant.Visible = false;
this.grbZone.Visible = false;
this.type = 'T';
Pour Repas
this.grbKm.Visible = false;
this.grbMontant.Visible = true;
this.grbZone.Visible = false;
this.type = 'R';
Pour Nuité
this.grbKm.Visible = false;
this.grbMontant.Visible = false;
this.grbZone.Visible = true;
this.type = 'N';
- Dans ServiceCommercial écrire la méthode
getCommercial
avec la signature suivante :
public Commercial getCommercial(string nom,string prenom)
Pour enregistrer cette nouvelle note, on écrit le code dans l’événement click du bouton :
try
{
// On récupère le nom et le prénom dans une chaine de caractères
string s = this.lstCommerciaux.SelectedItem.ToString();
// la variable tc est le séparateur
char[] tc = { ' ' };
// Slipt permet de découper une chaine de caractères en respectant le séparateur
string[] t = s.Split(tc);
string nom = t[0];
string prenom = t[t.Length - 1];
DateTime dt = this.dateTP.Value.Date;
Commercial c = leService.getCommercial(nom, prenom);
// Gestion de la region
char region = '1';
if (this.rdb2.Checked)
region = '2';
if (this.rdb3.Checked)
region = '3';
// Gestion du type de frais
switch (this.type)
{
case 'T': leService.AjouterNote(c, dt, Convert.ToInt32(this.txtKm.Text)); break;
case 'R': leService.AjouterNote(c, dt, Convert.ToDouble(this.txtMontant.Text)); break;
case 'N': leService.AjouterNote(c, dt, Convert.ToDouble(this.txtMontant.Text), region); break;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Pour lier le formulaire au menu
- Double clicker sur le Menu Ajouter une note de frais
- Résultat attendu
FrmAjoutNote f = new FrmAjoutNote(leService);
f.MdiParent = this;
f.Show();
Pour Fermer Le Formulaire
- Double clicker sur le bouton Fermer
- Résultat attendu
this.Close();
4 - Voir les notes de frais
cas d’utilisation
Cas | Cas d’utilisation ajout une note de frais |
---|---|
1 | L’utilisateur demande à voir les notes de frais |
2 | Le système retourne le formulaire avec la liste de tous les commerciaux |
3 | L’utilisateur sélectionne un commercial |
4 | Le système retourne la liste de toutes les notes de frais correspondant au commercial |
- Créez les formulaires
FrmVoirNotes
- Ajouter les objets à
FrmVoirNotes
selon le schéma suivant.
Résultat attendu FrmVoirNotes
:
b- ajout du code dans le formulaire
- Double clicker sur le sous menu correspondant
- Modifier le code ci dessous
- Tester l’ouverture du formulaire
private ServiceCommercial leService;
public FrmVoirNotes(ServiceCommercial leService)
{
InitializeComponent();
this.leService = leService;
}
Le formulaire doit s’ouvrir avec la listBox chargé avec les numéros de puissances
- Lancer l’évènement Load
- Résultat attendu
string s;
foreach (Commercial c in leService.LesCommerciaux)
{
s = $"{c.Nom} {c.Prenom}";
cmbCommerciaux.Items.Add(s);
}
En fonction du commercial sélectionné, chargement des notes de frais
- Double click sur le combobox
- Résultat attendu
this.lstNotes.Items.Clear();
string s = this.cmbCommerciaux.SelectedItem.ToString();
char[] tc = { ' ' };
string[] t = s.Split(tc);
string nom = t[0];
string prenom = t[t.Length - 1];
Commercial c = leService.getCommercial(nom, prenom);
foreach (NoteFrais nf in leService.MesNotes)
{
if (nf.LeCommercial.Nom == nom && nf.LeCommercial.Prenom == prenom)
{
string sn = nf.ToString();
this.lstNotes.Items.Add(sn);
}
}
Pour lier le formulaire au menu
- Double clicker sur le Menu Voir les notes
- Résultat attendu
FrmVoirNotes f = new FrmVoirNotes(leService);
f.MdiParent = this;
f.Show();
Pour Fermer Le Formulaire
- Double clicker sur le bouton Fermer
- Résultat attendu
this.Close();