Mar.27

TP17 : Gestion de Bibliothèque en mode déconnecté (emprunt)

Objectif

Compléter l’application des Gestion de Bibliothèque en mode déconnecté.

Questions

Partie serveur :

  1. Dans la base bibliotheque, crée les tables suivantes :

Partie client :

  1. Créer l’interface suivante : 
  2. Créer les objets nécessaires et le code réalisant les travaux demandés :
    1.  Créer les objets nécessaires et le code réalisant les travaux demandés :
    2.  Au choix d’un adhérent, son nom et ses emprunts passés sont affichées.
    3.  Au choix d’un thème, la liste de tous les livres de ce thème est affichée.
    4.  Après le choix d’un livre et d’une date d’emprunt, le bouton « Enregistrer » permet d’enregistrer l’emprunt dans la table Emprunt et de l’ajouter dans le DataGridView.

Correction

 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace TP17_Biblio_Fin
{
    public partial class Form1 : Form
    {
        SqlConnection conn = new SqlConnection("server = DESKTOP-EIALG0J\\SQLEXPRESS; database = bibliotheque; integrated security = SSPI");
        DataSet ds = new DataSet();
        SqlCommand cmd = new SqlCommand();
        SqlDataAdapter da = new SqlDataAdapter();
        int postion = 0;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            conn.Open();
            da = new SqlDataAdapter("select * from Theme", conn);
            da.Fill(ds, "Theme");

            da = new SqlDataAdapter("select * from Livre", conn);
            da.Fill(ds, "Livre");

            da = new SqlDataAdapter("select * from Adherent", conn);
            da.Fill(ds, "Adherent");

            da = new SqlDataAdapter("select * from Emprunt", conn);
            da.Fill(ds, "Emprunt");

            DataColumn[] PK_Theme = new DataColumn[1];
            PK_Theme[0] = ds.Tables["Theme"].Columns[0];
            ds.Tables["Theme"].PrimaryKey = PK_Theme;

            DataColumn[] PK_Livre = new DataColumn[1];
            PK_Livre[0] = ds.Tables["Livre"].Columns[0];
            ds.Tables["Livre"].PrimaryKey = PK_Livre;

            DataColumn[] PK_Adherent = new DataColumn[1];
            PK_Adherent[0] = ds.Tables["Adherent"].Columns[0];
            ds.Tables["Adherent"].PrimaryKey = PK_Adherent;

            DataColumn[] PK_Emprunt = new DataColumn[3];
            PK_Emprunt[0] = ds.Tables["Emprunt"].Columns[0];
            PK_Emprunt[1] = ds.Tables["Emprunt"].Columns[1];
            PK_Emprunt[2] = ds.Tables["Emprunt"].Columns[2];
            ds.Tables["Adherent"].PrimaryKey = PK_Emprunt;


            ds.Relations.Add("Rel_Adherent_Emprunt", ds.Tables["Adherent"].Columns["CodeAdherent"], ds.Tables["Emprunt"].Columns["CodeAdherent"]);
            ds.Relations.Add("Rel_Livre_Emprunt", ds.Tables["Livre"].Columns["CodeLivre"], ds.Tables["Emprunt"].Columns["CodeLivre"]);
            ds.Relations.Add("Rel_Theme_Livre", ds.Tables["Theme"].Columns["CodeTheme"], ds.Tables["Livre"].Columns["CodeTheme"]);
            conn.Close();

            codeAdherent.DataSource = ds.Tables["Adherent"];
            codeAdherent.DisplayMember = ds.Tables["Adherent"].Columns[0].ColumnName;
            codeAdherent.ValueMember = ds.Tables["Adherent"].Columns[1].ColumnName;
            codeAdherent.SelectedIndex = -1;

            theme.DataSource = ds.Tables["Theme"];
            theme.DisplayMember = ds.Tables["Theme"].Columns[1].ColumnName;
            theme.ValueMember = ds.Tables["Theme"].Columns[0].ColumnName;
            theme.SelectedIndex = -1;

        }

        private void codeAdherent_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if (codeAdherent.SelectedIndex != -1)
            {
                dv.Rows.Clear();
                nomBox.Text = codeAdherent.SelectedValue.ToString();
                int x = int.Parse(codeAdherent.GetItemText(codeAdherent.SelectedItem));
                for (int i = 0; i < ds.Tables["Emprunt"].Rows.Count; i++)
                {
                    if (int.Parse(ds.Tables["Emprunt"].Rows[i][0].ToString()) == x)
                    {
                        int pos = int.Parse(ds.Tables["Emprunt"].Rows[i][1].ToString())-1;
                        DataRow ligne = ds.Tables["Emprunt"].Rows[pos].GetParentRow("Rel_Livre_Emprunt");
                        if (ds.Tables["Emprunt"].Rows[i][3].ToString() != "")
                        {
                            dv.Rows.Add(ligne[1], ((DateTime)ds.Tables["Emprunt"].Rows[i][2]).ToString("dd-MM-yyyy"), ((DateTime)ds.Tables["Emprunt"].Rows[i][3]).ToString("dd-MM-yyyy"));
                        }
                        else {
                            dv.Rows.Add(ligne[1], ((DateTime)ds.Tables["Emprunt"].Rows[i][2]).ToString("dd-MM-yyyy"));
                        }
                    }
                }
            }

        }

        private void theme_SelectionChangeCommitted(object sender, EventArgs e)
        {
            listLivre.Items.Clear();
            if (theme.SelectedIndex != -1)
            {
                int pos = int.Parse(theme.SelectedValue.ToString()) - 1;
                DataRow[] lignes = ds.Tables["Theme"].Rows[pos].GetChildRows("Rel_Theme_Livre");
                for (int i = 0; i < lignes.Length; i++)
                {
                    listLivre.Items.Add(lignes[i][1].ToString());
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            DataRow ligne = ds.Tables["Emprunt"].NewRow();
            ligne[0] = codeAdherent.Text;

            DataRow[] lv;
            lv = ds.Tables["Livre"].Select("TitreLivre Like '%" + listLivre.SelectedItem.ToString() + "%'");

            ligne[1] = lv[0][0].ToString();
            ligne[2] = dateEmprunt.Text;
            
            ds.Tables["Emprunt"].Rows.Add(ligne);
            codeAdherent_SelectionChangeCommitted( sender,  e);
        }

        
    }
}
TP
Share this Story:
  • facebook
  • twitter
  • gplus

About Hassan EL Bahi

Assistant Professor at Cadi ayyad University.

Comments(3)

  1. salma
    2409 days ago

    ou est la correction

  2. marwane
    2407 days ago

    pas de correction ?

    • Sami
      324 days ago

      Mrc monsieur Hassan pour votre aider

Leave a comment

Comment