Le calcul du montant à payer par un malade pour une intervention chirurgicale dans une clinique spécialisée tient compte du cout d’intervention, du cout du matériel, des frais d’anesthésie, de la catégorie du malade et des frais d’hospitalisation. Le cout d’intervention est fonction du type de chirurgie et s’évalue suivant le tableau ci-après :
Type de chirurgies | Coût d’intervention (en $) |
---|---|
Chirurgie classique | 200 |
Chirurgie plastique | 600 |
Greffe de tissu | 650 |
Microchirurgie | 800 |
Transplantation d’organe | 1000/Organe |
Le cout d’intervention pour transplantation tient par ailleurs compte du nombre d’organes.
Une réduction sur le cout d’intervention sur le cout d’intervention est accordée uniquement aux malades des catégories déterminées dans le tableau ci-après.
Catégorie de malades | Réduction (en %) |
---|---|
Ayant droit | 50 |
Chômeur | 40 |
Les frais d’hospitalisation dépendent de nombre de jours et se calculent comme suit : de 0 à 14 jours, les frais journaliers d’hospitalisation sont fixés à 2$ et à partir du 15e jour, ces frais journaliers passent à 1.5$.
Proposez un programme en Visual basic.Net (Interface et codes) qui permette de calculer et d’afficher le montant à payer pour un malade quelconque.
Attention : L’utilisateur sélectionnera dans des ListBox la catégorie et le type de chirurgie. Après sélection du type de chirurgie, le cout d’intervention correspondant apparaitra automatiquement dans la zone de texte associée qui est en lecture seule. Si le type de chirurgie est la transplantation d’organes, l’étiquette nombre d’organes sera activée ainsi que sa zone de texte pour autoriser la lecture d’une valeur. Le cout matériel et le nombre de jours d’hospitalisation peuvent être saisis ou sélectionnés à travers des ComboBox correspondants.
Après un clic sur le bouton « Calcul », le programme calculera et affichera le montant à payer ainsi que les autres montants (réduction, frais d’hospitalisation).
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ListBox1.Items.Add("Chirurgie classique")
ListBox1.Items.Add("Chirurgie plastique")
ListBox1.Items.Add("Greffe de tissu")
ListBox1.Items.Add("Microchirurgie")
ListBox1.Items.Add("Transplantation d'organe")
ListBox2.Items.Add("Ayant droit")
ListBox2.Items.Add("Chomeur")
ListBox2.Items.Add("Autres")
TxtCoutInter.ReadOnly = True
Label_nbreOrgane.Enabled = False
TxtnbreOrgane.Enabled = False
TxtNP.ReadOnly = True
TxtReduction.ReadOnly = True
TxtFraisHosp.ReadOnly = True
End Sub
Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
If ListBox1.SelectedItem = "Chirurgie classique" Then
TxtCoutInter.Text = 200
ElseIf ListBox1.SelectedItem = "Chirurgie plastique" Then
TxtCoutInter.Text = 600
ElseIf ListBox1.SelectedItem = "Greffe de tissu" Then
TxtCoutInter.Text = 650
ElseIf ListBox1.SelectedItem = "Microchirurgie" Then
TxtCoutInter.Text = 800
ElseIf ListBox1.SelectedItem = "Transplantation d'organe" Then
Label_nbreOrgane.Enabled = True
TxtnbreOrgane.Enabled = True
End If
End Sub
Private Sub TxtnbreOrgane_TextChanged(sender As Object, e As EventArgs) Handles TxtnbreOrgane.TextChanged
Dim Nbre As Integer
Nbre = CInt(TxtnbreOrgane.Text)
TxtCoutInter.Text = (1000 * Nbre).ToString
End Sub
Private Sub BtnCalcul_Click(sender As Object, e As EventArgs) Handles BtnCalcul.Click
Dim coutInter, coutMat, fraisAnes, fraisHosp, nbre, red, np As Integer
Dim cat As String
'recuperation des informations
coutInter = Val(TxtCoutInter.Text)
coutMat = Val(ComboCoutMat.Text)
fraisAnes = Val(TxtFraisAnest.Text)
nbre = Val(ComboNbreJrs.Text)
cat = ListBox2.SelectedItem
If ListBox1.SelectedItem = "" Or ListBox2.SelectedItem = "" Or
ComboCoutMat.Text = "" Or ComboNbreJrs.Text = "" Or TxtFraisAnest.Text = "" Then
Console.WriteLine("Veuillez remplir tous les champs")
Else
'calcul de frais d'hospitalisation
Select Case (nbre)
Case 0 To 14
fraisHosp = nbre * 2
Case Is > 14
fraisHosp = 14 * 2 + (nbre - 14) * 1.5
Case Else
MsgBox("Nombre de jours incorrects")
End Select
TxtFraisHosp.Text = fraisHosp.ToString
'calcul de la reduction
If cat = "Ayant droit" Then
red = coutInter * 0.5
ElseIf cat = "Chomeur" Then
red = coutInter * 0.4
Else
red = 0
End If
TxtReduction.Text = red.ToString
np = coutInter + coutMat + fraisAnes + fraisHosp - red
TxtNP.Text = np.ToString
End If
End Sub
Private Sub BtnAnnuler_Click(sender As Object, e As EventArgs) Handles BtnAnnuler.Click
ListBox1.SelectedIndex = -1
ListBox2.SelectedIndex = -1
ComboCoutMat.Text = ""
ComboNbreJrs.Text = ""
TxtFraisAnest.Text = ""
TxtCoutInter.Text = ""
TxtNP.Text = ""
TxtReduction.Text = ""
TxtFraisHosp.Text = ""
TxtnbreOrgane.Text = ""
End Sub
Private Sub BtnQuitter_Click(sender As Object, e As EventArgs) Handles BtnQuitter.Click
End
End Sub
End Class
Voici l’interface :
Un magasin de la place organise le payement de ses employés à l’aide des rubriques : Salaire de base (Sb) et prime familiale (Pf). Les salaires de base exprimés en unité monétaire sont déterminés à partir des grades suivant le tableau ci-après :
Grade | Salaire de base |
---|---|
Gérant | 20 |
Comptable | 18 |
Caissier | 16 |
Facturier | 15 |
Livreur | 13 |
Vendeur | 11 |
La prime familiale est composée de deux parties : de la prime mariage (pm) et de la prime enfant (pe). La prime mariage est octroyée à tous les agents qui ne sont pas célibataires (c.à.d. mariés, divorcés ou veufs). Elle vaut 2% du salaire de base de l’agent. Ainsi, un agent de grade Facturier marié obtient une prime mariage de 15*2%=0.30 tandis qu’un agent de grade gérant célibataire n’obtient aucune prime mariage.
La prime enfant est calculée en fonction du nombre d’enfants vivants de moins de 19 ans. Elle est calculée de la manière suivante : jusqu’à 5 enfants, chacun génère une prime de 0.05, à partir du 6e enfant la prime devient 0.02 par enfant. Enfin, pas de prime à partir du 11e enfant.
On vous demande de gérer le bouton « Calculer» pour calculer la prime mariage, la prime enfant et le salaire net, le bouton « Initialiser» pour réinitialiser les objets et « Quitter » pour quitter le programme.
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ComboGrade.Items.Add("Gerant")
ComboGrade.Items.Add("Comptable")
ComboGrade.Items.Add("Caissier")
ComboGrade.Items.Add("Facturier")
ComboGrade.Items.Add("Livreur")
ComboGrade.Items.Add("Vendeur")
ComboEtat.Items.Add("Marié(e)")
ComboEtat.Items.Add("Celibataire")
ComboEtat.Items.Add("veuf(ve)")
ComboEtat.Items.Add("Divorcé(e)")
TxtPe.ReadOnly = True
TxtPm.ReadOnly = True
TxtSn.ReadOnly = True
TextSB.ReadOnly = True
End Sub
Private Sub ComboGrade_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboGrade.SelectedIndexChanged
Dim grade = ComboGrade.SelectedItem
If grade = "Gerant" Then
TextSB.Text = 20
ElseIf grade = "Comptable" Then
TextSB.Text = 18
ElseIf grade = "Caissier" Then
TextSB.Text = 16
ElseIf grade = "Facturier" Then
TextSB.Text = 15
ElseIf grade = "Livreur" Then
TextSB.Text = 13
ElseIf grade = "Vendeur" Then
TextSB.Text = 11
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim sn, sb, pe, pm, nef, pf As Single
Dim etat As String
'récuperation des informations
nef = Val(Txtnbre.Text)
sb = Val(TextSB.Text)
etat = ComboEtat.Text
If etat = "Celibataire" Then
pm = 0
Else
pm = 0.02 * sb
End If
Select Case (nef)
Case 0 To 5
pe = nef * 0.05
Case 6 To 10
pe = 5 * 0.05 + (nef - 5) * 0.02
Case Is > 10
pe = 5 * 0.05 + 5 * 0.02
Case Else
MsgBox("Nombre d'enfants incorrect", MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "ERREUR ")
End Select
pf = pe + pm
sn = sb + pf
TxtPe.Text = pe.ToString
TxtPm.Text = pm.ToString
TxtSn.Text = sn.ToString
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Txtnbre.Text = ""
TxtPe.Text = ""
TxtPm.Text = ""
Txtnbre.Text = ""
ComboEtat.Text = ""
ComboGrade.Text = ""
TextSB.Text = ""
TxtSn.Text = ""
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
End
End Sub
End Class
Soit l’interface utilisateur ci-après sur la facturation de la location véhicule :
Proposer des codes associés aux 3 boutons de commande, tels qu’en cliquant sur « Prix Net», le programme calcule et affiche le prix brut (sans réduction en fonction du prix horaire et du nombre d’heures), la réduction (15% du prix brut pour seulement la catégorie « Privilégié» et pas pour « autres» et le prix net (tenant compte de la réduction), en cliquant sur « Annuler», le programme est réinitialisé et en cliquant sur « Fermer», le programme s’arrête. (Indication : nommer les objets concernés par les initiales de leurs noms).
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ComboCat.Items.Add("Privilegié")
ComboCat.Items.Add("Autres")
ComboNbre.Items.Add("1")
ComboNbre.Items.Add("10")
ComboNbre.Items.Add("14")
ComboNbre.Items.Add("12")
ComboNbre.Items.Add("31")
ComboNbre.Items.Add("11")
ComboNbre.Items.Add("5")
ComboNbre.Items.Add("6")
ComboNbre.Items.Add("3")
ComboNbre.Items.Add("7")
TxtNp.ReadOnly = True
TxtPb.ReadOnly = True
TxtRed.ReadOnly = True
End Sub
Private Sub BtnPn_Click(sender As Object, e As EventArgs) Handles BtnPn.Click
Dim cat As String
Dim ph, nbre, prixBrut As Integer
Dim reduction, np As Single
'recuperation des informations
cat = ComboCat.Text
nbre = Val(ComboNbre.Text)
ph = Val(TxtPrixH.Text)
prixBrut = nbre * ph
TxtPb.Text = prixBrut.ToString
If cat = "Privilegié" Then
reduction = prixBrut * 0.15
Else
reduction = 0
End If
TxtRed.Text = reduction.ToString
np = prixBrut - reduction
TxtNp.Text = np.ToString
End Sub
Private Sub BtnAnnuler_Click(sender As Object, e As EventArgs) Handles BtnAnnuler.Click
TxtNp.Text = ""
TxtPb.Text = ""
TxtPrixH.Text = ""
TxtRed.Text = ""
ComboCat.Text = ""
ComboNbre.Text = ""
End Sub
Private Sub BtnFermer_Click(sender As Object, e As EventArgs) Handles BtnFermer.Click
Environment.Exit(0)
End Sub
End Class