Exercice VB: Gestion des réservations et des séjours pour Hôtel

On désire informatiser la gestion des réservations et des séjours pour l’hôtel Ibis :

Pour les séjours, on enregistre la date d’entrée, le type de séjour (Journalier, Semaine, Weekend) et la durée du séjour. Pour un séjour Semaine, la durée est 7j., pour type Weekend la durée est 3j., et pour le type Journalier la durée est le nombre de jours souhaités par le client.

Le schéma relationnel de la base de données est le suivant :

Client (IdClient, NomClient, AdresseClient, TelClient)

Réservation (CodeReservation, IdClient, Date, PensionComplete)

Sejour (NumSejour, CodeReservation, DateSejour, TypeSejour, DureeSejour)

ReservationAnnulee (CodeReservation, IdClient, DateAnnulation)

Travail à faire :

  1. Création de la BD
  1. a. Créer la base de données Sous SQL SERVER en respectant le schéma relationnel ci-dessus, les principales caractéristiques des champs doivent être déduites.

Réaliser une interface utilisateur conviviale et ergonomique pour  l’application de gestion des réservations.

  1. 2) Gestion des Clients 
  1. Ecrire le code pour les boutons (premier, suivant, précédent, dernier) en affichant le message de débordement.
  2. Ecrire le code pour le bouton Ajout en vérifiant la contrainte de remplissage de tous les champs et l'unicité du code client.
  3. Ecrire le code pour le bouton  Supprimer 
  4. Ecrire le code pour le bouton  Modifier 
  5. Ecrire le code pour le bouton Rechercher pour afficher les informations correspondantes ou afficher un message de non existence.
  1. 3) Gestion des réservations 
  1. Ecrire le code qui permet d’afficher les informations d’un Client (Nom, Téléphone) dès qu’on choisit le numéro du client dans le combo
  2. Ecrire le code  pour ajouter les informations de réservations dans la table réservation. 
  1. Gestion séjour 
  1. Réaliser l'interface de la feuille "Ajout d’un séjour"
  2. Le numéro de réservation est rempli à partir de la table réservation dans une liste
  3. Le numéro de séjour est auto incrémenté 
  4. Le type de séjour est un combo qui contient (journalier, Week end, Semaine).
  5. le bouton Nouveau permet d’effacer les zones de texte.
  6. Le bouton Ajouter permet l’ajout d’un nouveau séjour dans la table Séjour. Vérifier l’unicité de l’enregistrement, si non message d’erreur.
  1. 5) Feuille  Réservation par type
  1. Réaliser la feuille "Réservation par type" pour afficher toutes les réservations et la durée de séjour pour un type de séjour donné à partir d'un combo
  2. En bas de la feuille ajouter un label qui affiche le nombre des réservations affichées dans la grille. 
  1. 6) Réservation annulée 

Ecrire  un programme pour gérer les réservations annulées tel que :

  1. Sur la feuille de « Ajout de réservation » ajouter en bas la partie « Annulation de réservation », placer un bouton « Annuler ». Quand on clique sur ce bouton, le numéro de la réservation à annuler est saisi dans un « Inputbox ». 
  2. Le programme vérifie d’abord si le numéro de réservation fourni est enregistré dans la table « Réservation », puis après une confirmation de l’utilisateur, ajoute la réservation annulée dans la table « Réservation annulée ». 
  3. La réservation annulée est supprimée de la table « Réservation ». 
  1. 7) Etat 
  1. Créer un état d’édition de toutes les Réservations réalisées avec les séjours pour chaque réservation. 
  2. b. Sur la feuille « Ajout de séjour » placer un bouton « Imprimer facture » qui permet d’imprimer la facture pour un séjour d’après les règles :
  • Séjour journalier – 480 dh /jour
  • Séjour week-end – 320 dh /jour
  • Séjour semaine   – 260 dh /jour
  • Si le client a choisi une pension complète ajouter 100 dh par jour.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459Public Class Facturation Inherits System.Windows.Forms.Form Private Sub Facturation_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim etat As New sejour CrystalReportViewer1.ReportSource = etat End SubEnd Class-------------------------------------------------------------------------------Imports System.Data.SqlClient Public Class Gestion_des_clients Inherits System.Windows.Forms.Form Dim pos, i, trouvé As Integer Dim mot_rech, var As String  Private Sub Gestion_des_clients_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load cmd = New SqlCommand cmd.Connection = cn cmd.CommandText = "select * from client" da = New SqlDataAdapter(cmd) ds = New DataSet da.Fill(ds, "client")  End Sub  Private Sub bt_premier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_premier.Click pos = 0 txb_id.Text = ds.Tables("client").Rows(0).Item(0)  txb_nom.Text = ds.Tables("client").Rows(0).Item(1) txb_adresse.Text = ds.Tables("client").Rows(0).Item(2) txb_tel.Text = ds.Tables("client").Rows(0).Item(3)  End Sub  Private Sub bt_dernier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_dernier.Click pos = ds.Tables("client").Rows.Count - 1  txb_id.Text = ds.Tables("client").Rows(pos).Item(0) txb_nom.Text = ds.Tables("client").Rows(pos).Item(1) txb_adresse.Text = ds.Tables("client").Rows(pos).Item(2) txb_tel.Text = ds.Tables("client").Rows(pos).Item(3)  End Sub  Private Sub bt_precedent_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_precedent.Click If pos > 0 Then pos = pos - 1 txb_id.Text = ds.Tables("client").Rows(pos).Item(0) txb_nom.Text = ds.Tables("client").Rows(pos).Item(1) txb_adresse.Text = ds.Tables("client").Rows(pos).Item(2) txb_tel.Text = ds.Tables("client").Rows(pos).Item(3) Else MsgBox("c est le premier enregistrement") End If  End Sub  Private Sub bt_suivant_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_suivant.Click If pos Then pos = pos + 1 txb_id.Text = ds.Tables("client").Rows(pos).Item(0) txb_nom.Text = ds.Tables("client").Rows(pos).Item(1) txb_adresse.Text = ds.Tables("client").Rows(pos).Item(2) txb_tel.Text = ds.Tables("client").Rows(pos).Item(3) Else MsgBox("c est le dernier enregistrement") End If  End Sub  Private Sub bt_ajouter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_ajouter.Click  If txb_id.Text = "" Or txb_nom.Text = "" Or txb_adresse.Text = "" Or txb_tel.Text = "" Then MsgBox("vous devez remplir toutes les champs")  Else  ds.Tables("client").Constraints.Add("pk1", ds.Tables("client").Columns("id_client"), True) row = ds.Tables("client").NewRow  row.Item(0) = txb_id.Text row.Item(1) = txb_nom.Text row.Item(2) = txb_adresse.Text row.Item(3) = txb_tel.Text Try ds.Tables("client").Rows.Add(row)  odb = New SqlCommandBuilder(da) da.Update(ds, "client")  ds.Clear() da.Fill(ds, "client")  'dt = ds.Tables("client") MessageBox.Show("enregistrement effectué...", "Enregistrer", MessageBoxButtons.OK)  Catch ex As Exception MsgBox(ex.Message) init() Exit Sub End Try End If  End Sub  Private Sub bt_supprimer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_supprimer.Click  var = MessageBox.Show("voulez vous supprimer cette enregistrement", "Supprimer", MessageBoxButtons.YesNo)  If var = vbYes Then ds.Tables("client").Rows(pos).Delete()  odb = New SqlCommandBuilder(da) da.Update(ds, "client")  ds.Clear() da.Fill(ds, "client")  dt = ds.Tables("client")  MessageBox.Show("l'enregistrement a etais supprimer", "Supprimer", MessageBoxButtons.OK) ElseIf var = vbNo Then MessageBox.Show("suppretion annuler...", "Supprimer", MessageBoxButtons.OK)  End If  End Sub Sub init() txb_id.Text = "" txb_nom.Text = "" txb_adresse.Text = "" txb_tel.Text = "" End Sub  Private Sub bt_modifier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_modifier.Click  'row = ds.Tables("client").Rows(pos)  ds.Tables("client").Rows(pos).Item(0) = txb_id.Text ds.Tables("client").Rows(pos).Item(1) = txb_nom.Text ds.Tables("client").Rows(pos).Item(2) = txb_adresse.Text ds.Tables("client").Rows(pos).Item(3) = txb_tel.Text   odb = New SqlCommandBuilder(da) da.Update(ds, "client")  ds.Clear() da.Fill(ds, "client") dt = ds.Tables("client") MessageBox.Show("modification effectué.......", "Modifier", MessageBoxButtons.OK)  End Sub   Private Sub bt_rechercher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_rechercher.Click pos = 0 trouvé = 0  mot_rech = InputBox("taper le Cin du client") dt = ds.Tables("client") While pos If mot_rech = dt.Rows(pos).Item(0) Then  txb_id.Text = dt.Rows(pos).Item(0) txb_nom.Text = dt.Rows(pos).Item(1) txb_adresse.Text = dt.Rows(pos).Item(2) txb_tel.Text = dt.Rows(pos).Item(3)  trouvé += 1 Exit While  Else pos += 1 End If End While  If trouvé = 0 Then  var = MessageBox.Show("ce client ne figure pas sur la liste", "erreur", MessageBoxButtons.OK)  txb_id.Text = "" txb_nom.Text = "" txb_adresse.Text = "" txb_tel.Text = ""  End If End SubEnd Class----------------------------------------------------------------------------- Imports System.Data.SqlClient Public Class Gestion_des_réservations Inherits System.Windows.Forms.Form Private Sub Gestion_des_réservations_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load cmd = New SqlCommand cmd.Connection = cn cmd.CommandText = "select * from client" da = New SqlDataAdapter(cmd) ds = New DataSet da.Fill(ds, "client")  cb_num_client.DataSource = ds.Tables(0) cb_num_client.DisplayMember = "id_client" cb_num_client.Text = "" 'cb_num_client.ValueMember = "id_client"   End Sub  Private Sub cb_num_client_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cb_num_client.SelectedIndexChanged Dim i As Integer For i = 0 To ds.Tables("client").Rows.Count - 1 If cb_num_client.Text = ds.Tables("client").Rows(i).Item(0) Then lbl_nom.Text = ds.Tables("client").Rows(i).Item(1) lbl_tel.Text = ds.Tables("client").Rows(i).Item(3) End If Next End Sub  Private Sub bt_ajout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_ajout.Click cmd = New SqlCommand cmd.Connection = cn cmd.CommandText = "select * from Réservation" da = New SqlDataAdapter(cmd) ds = New DataSet da.Fill(ds, "Réservation") row = ds.Tables("Réservation").NewRow row.Item(0) = txb_cod_reservation.Text row.Item(1) = cb_num_client.Text row.Item(2) = txb_date.Text row.Item(3) = txb_pension.Text  ds.Tables("Réservation").Rows.Add(row)  odb = New SqlCommandBuilder(da) da.Update(ds, "Réservation") MsgBox("ajout effecuté")  End Sub    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_annuler.Click   Dim pos, trouvé As Integer Dim mot_rech, var As String  pos = 0 trouvé = 0 mot_rech = InputBox("taper le code_réservation à supprimer")  cmd = New SqlCommand cmd.Connection = cn cmd.CommandText = "select * from Réservation " da = New SqlDataAdapter(cmd) ds = New DataSet da.Fill(ds, "Réservation")    While pos If ds.Tables("Réservation").Rows(pos).Item(0) = mot_rech Then  var = MessageBox.Show("voulez vous vraiment supprimer cet enregistrement", "supprimer", MessageBoxButtons.YesNo) If var = "6" Then cmd = New SqlCommand cmd.Connection = cn cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = "annuler_reservation"  cmd.Parameters.Add("@mot", SqlDbType.Int) cmd.Parameters.Add("@dat", SqlDbType.DateTime) cmd.Parameters(0).Value = mot_rech cmd.Parameters(1).Value = txb_date_annulation.Text  cmd.ExecuteNonQuery()  MsgBox("effectué") End If  trouvé += 1 Exit While Else pos += 1 End If  End While  If trouvé = 0 Then  MessageBox.Show("ce numéro ne figure pas sur la liste", "erreur", MessageBoxButtons.OK)  End If  End SubEnd Class------------------------------------------------------------------------------ Imports System.Data.SqlClient Public Class Gestion_séjour Inherits System.Windows.Forms.Form  Private Sub Gestion_séjour_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load remplir_list()  End Sub Sub remplir_list() cmd = New SqlCommand cmd.Connection = cn cmd.CommandText = "select * from Réservation" da = New SqlDataAdapter(cmd) ds = New DataSet da.Fill(ds, "Réservation")  ListBox1.DataSource = ds.Tables(0) ListBox1.DisplayMember = "code_reservation"  'cb_num_client.ValueMember = "id_client" End Sub  Private Sub bt_ajouter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_nouveau.Click TextBox1.Text = "" ComboBox1.Text = "" TextBox2.Text = "" End Sub  Private Sub bt_ajouter_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_ajouter.Click cmd = New SqlCommand cmd.Connection = cn cmd.CommandText = "select * from sejour" da = New SqlDataAdapter(cmd) ds = New DataSet da.Fill(ds, "sejour") row = ds.Tables("sejour").NewRow  'Try ' row(1) = ListBox1.SelectedItem ' row(2) = TextBox1.Text ' row(3) = ComboBox1.Text ' row(4) = TextBox2.Text 'Catch ex As Exception ' MsgBox(ex.Message) 'End Try   'ds.Tables("sejour").Rows.Add(row) 'odb = New SqlCommandBuilder(da) 'da.Update(ds, "sejour") 'MsgBox("enregistrement effectué")  End Sub  Private Sub bt_imprimer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_imprimer.Click Dim frm As New Facturation  Dim etat As New sejour frm.CrystalReportViewer1.ReportSource = etat frm.CrystalReportViewer1.SelectionFormula = "{Sejour.NumSejour}=" & TextBox3.Text frm.Show()    End SubEnd Class------------------------------------------------------------------------------Imports System.Data.SqlClient Module Module1 Dim str As String = "data source='.';initial catalog=FF_V9_2007;integrated security=sspi" Public cn As New SqlConnection(str) Public ds As DataSet Public da As SqlDataAdapter Public cmd As SqlCommand Public dt As DataTable Public row As DataRow Public odb As SqlCommandBuilder End Module----------------------------------------------------------------------------- Public Class Form1 Inherits System.Windows.Forms.Form   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load cn.Open()  End Sub   Private Sub MenuItem6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem6.Click Dim frm As New Gestion_des_réservations frm.Show() End Sub  Private Sub MenuItem7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem7.Click Dim frm As New Gestion_séjour frm.Show() End Sub  Private Sub MenuItem8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem8.Click Dim frm As New Réservation_par_type frm.Show() End Sub  Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click Dim frm As New Gestion_des_clients frm.Show() End Sub   Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)   End SubEnd Class------------------------------------------------------------------------------ Imports System.Data.SqlClient Public Class Réservation_par_type Inherits System.Windows.Forms.Form  Private Sub Réservation_par_type_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load cmd = New SqlCommand cmd.Connection = cn cmd.CommandText = "select * from sejour" da = New SqlDataAdapter(cmd) ds = New DataSet da.Fill(ds, "sejour")  ComboBox1.DataSource = ds.Tables(0) ComboBox1.DisplayMember = "TypeSejour"   End Sub  Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged cmd = New SqlCommand cmd.Connection = cn cmd.CommandText = "select CodeReservation,DureeSejour from sejour where TypeSejour='" & ComboBox1.Text & "'" da = New SqlDataAdapter(cmd) ds = New DataSet da.Fill(ds, "sejour") DataGrid1.DataSource = ds.Tables(0) cmd = New SqlCommand cmd.Connection = cn cmd.CommandText = "select count(*) from sejour where TypeSejour='" & ComboBox1.Text & "'" Dim i As Integer i = cmd.ExecuteScalar Label3.Text = i End Sub End Class
Article publié le 08 Janvier 2012