Calcul cours

Résolu
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021 - 8 mai 2021 à 15:01
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 - 24 mai 2021 à 09:16
Bonjour, comment vous allez?
J'ai créé une application pour gérer les cours et devoirs d'un établissement.
Il fallait d'abord que je crée une table enseignant qui permettra de voir quel enseignant on peut prendre pour le cour en voyant son temps libre , le nombre d'heure qu'il proposera et la matière qu'il fera.
Apres avoir fait pour l'enseignant, j'ai créé la table cours, qui permet d'insérer des données à partir du formulaire cours. Ce que je voudrais c'est que ca fasse des calcul en arrière pour nous permettre de savoir a tout moment le nombre d'heure qui reste a l'enseignant à chaque fois que j'ajouterai une séance de cours.
Je sais pas comment y arrivé a cela. Si vous pouviez m'aider.
Merci.

18 réponses

Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
8 mai 2021 à 19:27
Bonjour

Tu veux faire ça dans C# ou dans la base de données ?
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
8 mai 2021 à 21:16
dans C#
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
8 mai 2021 à 21:44
J'imagine que tu as écrit une classe Enseignant et une classe Cours.

Peux tu les poster?
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
8 mai 2021 à 22:13
D'accord.
Pour enseignant:


Pour cours:
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
8 mai 2021 à 23:27
Puisque tu veux faire ça dans C#; la base de données ne m'intéresse pas.
Je t'ai demandé les classe C#.
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
Modifié le 9 mai 2021 à 01:40
Ah oui je n'avais pas bien compris

........................Pour enseignant: c'est la partie lorsque l'administrateur approuve la demande de l'enseignant..............
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Threading.Tasks;
using System.Text;
using System.Windows.Forms;
using WindowsFormsApp1.BLL;
using WindowsFormsApp1.DAL;
using WindowsFormsApp1.TOOL;
using MySql.Data.MySqlClient;

namespace WindowsFormsApp1.Windows_Form.enseignant
{
    public partial class modifierense : Form
    {
        //Appel des controleurs , info et chaines de connexion
        databasehelper dh = new databasehelper();
        MySqlDataReader dr;
        operateurcontroleur opc = new operateurcontroleur();
        operateurinfo opi = new operateurinfo();
        FormCollection listform;
        DataSet ds1, ds2, ds3;

        //variable
        bool result;

        private UserControl modiens;
        public modifierense(UserControl mde)
        {
            InitializeComponent();
            this.modiens = mde;
        }

        private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {

        }

        private void button4_TextChanged(object sender, EventArgs e)
        {
            
        }

        private void button4_BackColorChanged(object sender, EventArgs e)
        {
            
        }

        private void txtdemande_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (txtdemande.Text == "Accepter")
                {

                    button4.FlatAppearance.MouseOverBackColor = Color.ForestGreen;
                    button4.FlatAppearance.MouseDownBackColor = Color.ForestGreen;
                    
                }
                else if (txtdemande.Text == "En attente")
                {
                    button4.FlatAppearance.MouseOverBackColor = Color.Orange;
                    button4.FlatAppearance.MouseDownBackColor = Color.Orange;
                    
                }
                else if (txtdemande.Text == "Refuser")
                {
                    button4.FlatAppearance.MouseOverBackColor = Color.Red;
                    button4.FlatAppearance.MouseDownBackColor = Color.Red;
                    
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void modifierense_Load(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
           
        }
       
        private void button4_Click(object sender, EventArgs e)
        {
            try
            {

                if (MessageBox.Show("Voulez vous modifier cet programme enseignant?", "GSED", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {

                    dh.ExecuteNonQuery("update enseignant set demande_de_permission = '" + txtdemande.Text.Replace("'", "''") + "' where code_enseignant='" + txtcodeenseignant.Text + "' ");

                    MessageBox.Show("Le Programme enseignant modifié avec succès", "GSED");
                    (modiens as UCenseignant).affie();

                    txtnom.Text = "";
                    txtnom.Focus();
                    txtfiliere.Focus();
                    txtfiliere.Text = "";
                    txtniveau.Text = "";
                    txtniveau.Focus();
                    txtmatiere.Text = "";
                    txtmatiere.Focus();
                    txtcours.Text = "";
                    txtcours.Focus();
                    txtdevoir.Text = "";
                    txtdevoir.Focus();
                    txttotal.Text = "";
                    txttotal.Focus();
                    txtfiliere.Focus();
                    txtfiliere.Text = "";
                    txtniveau.Text = "";
                    txtniveau.Focus();
                    txtmatiere.Text = "";
                    txtmatiere.Focus();
                    txtsemaine.Text = "";
                    txtsemaine.Focus();

                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}



........................................................................................................Pour le cours:.....................................................................
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Threading.Tasks;
using System.Text;
using System.Windows.Forms;
using WindowsFormsApp1.BLL;
using WindowsFormsApp1.DAL;
using WindowsFormsApp1.TOOL;
using MySql.Data.MySqlClient;
using WindowsFormsApp1.user_controler;

namespace WindowsFormsApp1.Windows_Form.cours
{
    public partial class ajoutcours : Form
    {
        databasehelper dh = new databasehelper();
        MySqlDataReader dr;
        operateurcontroleur opc = new operateurcontroleur();
        operateurinfo opi = new operateurinfo();
        FormCollection listform;
        DataSet ds1, ds2, ds3,ds4,ds5,ds6;

        //variable
        bool result;

        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtsalle_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void txttotal_TextChanged(object sender, EventArgs e)
        {
            
        }

        private void label7_Click(object sender, EventArgs e)
        {

        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
          
          
        }

        private void txtfin_ValueChanged(object sender, EventArgs e)
        {
            //calcul d'heure

            TimeSpan rr = TimeSpan.Parse(txtfin.Text) - TimeSpan.Parse(txtdebut.Text);
            txttotal.Text = rr.ToString();
        }

        private void txtdebut_ValueChanged(object sender, EventArgs e)
        {
           
            //calcul d'heure

            TimeSpan rr = TimeSpan.Parse(txtfin.Text) - TimeSpan.Parse(txtdebut.Text);
            txttotal.Text = rr.ToString();
        }

        private UserControl ajoucou;

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            
           
        }

        public ajoutcours(UserControl ajc)
        {
            InitializeComponent();
            this.ajoucou = ajc;

            txtcodecours.Enabled = false;
            txttotal.Enabled = false;
        
        }

        private void ajoutcours_Load(object sender, EventArgs e)
        {
            try
            {
                


                //charger les noms des matieres
                ds1 = dh.ExecuteDataSet("select distinct nom_matiere from matiere order by nom_matiere asc");
                txtmatiere.DataSource = ds1.Tables[0];
                txtmatiere.DisplayMember = "nom_matiere";
                txtmatiere.Text = "";

                //charger les noms des filieres 
                ds2 = dh.ExecuteDataSet("select distinct abrege from filiere order by abrege asc");
                txtfiliere.DataSource = ds2.Tables[0];
                txtfiliere.DisplayMember = "abrege";
                txtfiliere.Text = "";

                //charger les noms des niveaux
                ds3 = dh.ExecuteDataSet("select distinct abrege from niveau order by abrege asc");
                txtniveau.DataSource = ds3.Tables[0];
                txtniveau.DisplayMember = "abrege";
                txtniveau.Text = "";

                //charger les noms des enseignants
                ds4 = dh.ExecuteDataSet("select distinct nom_enseignant from enseignant where demande_de_permission='Accepter' order by nom_enseignant asc  ");
                txtenseig.DataSource = ds4.Tables[0];
                txtenseig.DisplayMember = "nom_enseignant";
                txtenseig.Text = "";

                //charger les noms des salles
                ds5 = dh.ExecuteDataSet("select distinct numero from salle order by numero asc");
                txtsalle.DataSource = ds5.Tables[0];
                txtsalle.DisplayMember = "numero";
                txtsalle.Text = "";
             
               
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            try
            {


                if (txtmatiere.Text == "" || txtfiliere.Text == "" || txtniveau.Text == "" || txtenseignant.Text == "" || date.Text == "" || txtdebut.Text == "" || txtfin.Text == "" || txttotal.Text == "" || txtjour.Text == "" ||txtsalle.Text=="")
                {
                    MessageBox.Show("Désolé tous les champs doivent être renseignés", "GSED");
                }
                else
                {


                    dh.ExecuteNonQuery("insert into cours (code_matiere,code_filiere,code_niveau, code_enseignant,date,heure_debut,heure_fin,nbr_heure,jour,salle ) values ('" + txtmatiere.Text.Replace("'", "''") + "', '" + txtfiliere.Text.Replace("'", "''") + "','" + txtniveau.Text.Replace("'", "''") + "','" + txtenseig.Text.Replace("'", "''") + "','" + DateTime.Now.ToString("yyyy/MM/dd") + "','" + txtdebut.Text.Replace("'", "''") + "','" + txtfin.Text.Replace("'", "''") + "','" + txttotal.Text.Replace("'", "''") + "','" + txtjour.Text.Replace("'", "''") + "','" + txtsalle.Text.Replace("'", "''") + "')");

                    MessageBox.Show("La séance a été enregistré avec succès");
                    (ajoucou as UCcours).affic();
                    txtmatiere.Text = "";
                    txtmatiere.Focus();
                    txtfiliere.Text = "";
                    txtfiliere.Focus();
                    txtniveau.Text = "";
                    txtniveau.Focus();
                    txtenseignant.Text = "";
                    txtenseignant.Focus();
                    date.Text = "";
                    date.Focus();
                    txtdebut.Focus();
                    txtdebut.Text = "";
                    txtfin.Text = "";
                    txtfin.Focus();
                    txttotal.Text = "";
                    txttotal.Focus();
                    txtjour.Text = "";
                    txtjour.Focus();
                    txtsalle.Text = "";
                    txtsalle.Focus();


                }




            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
9 mai 2021 à 08:20
OK.

Tu as indiqué précédement que tu débutes. On y est tous passé c'est pas un problème.

Là où ça peut devenir un problème, c'est de le faire en dépit du bon sens.
Le bon sens, c'est de commencer par apprendre les bases.
J'émets l'hypothèse que tu as sauté cette étape, car le code que tu présentes c'est du bricolage.

La majorité des bons cours (même les gratuits) font apprendre à écrire et manipuler des objets métiers (classes) bien avant de traiter de l'interface graphique.
Celui de Tahé par exemple https://tahe.developpez.com/dotnet/csharp/ traite les classes au chapitre 2 et winform au chapitre 5.
C'est à dire, que selon cette progression, tu es sensé savoir te servir correctement des objets métiers, bien avant d'avoir poser un bouton ou un datetimepicker sur un formulaire.

Le meilleur conseil que je puisse te donner, c'est de prendre quelques jours pour suivre le cours de Tahé de A à Z. Ensuite de réfléchir au fait que je t'ai parlé de classe Enseignant et de classe Cours.
Et enfin de revenir pour qu'on avance en C#
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
10 mai 2021 à 09:58
D'accord.
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
13 mai 2021 à 14:54
Bonjour, Je viens de voir le cours sur les classes, au début je voulais faire dans C# et j'ai remarqué que c'était compliqué donc je préfère que ca soit dans la base de donnée.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
13 mai 2021 à 18:00
Dans la base de données, je sais pas faire.
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021 > Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024
14 mai 2021 à 17:22
Mais comme ca, pourquoi ne pas me montrer comment le faire. j'ai regarde la formation de la personne que vous m'avez envoyé mais rien. Ce que j'ai retenu c'est comment créer une classe. Mais je sais pas comment vous voulez que je fasse avec les deux classes. Si vous pouvez me guider, ca sera bien vraiment.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656 > kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
14 mai 2021 à 17:59
Selon ce que je comprends de ton besoin, il te faut au moins 2 classes:
  • Enseignant
  • Cours.


Ensuite il me manque des éléments pour savoir si Enseignant doit disposer d’une collection de cours, ou par exemple d’une collection de mois (ou de semaines) qui eux même dispose d’une collection de cours, ou encore ça pourrait être les cours qui disposent d’une collection d’enseignants….

C’est pourquoi je t’ai demandé de me proposer ces 2 classes et de me dire comment tu l’envisages
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021 > Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024
14 mai 2021 à 18:41
Pour moi, enseignant doit disposer d'une collection de cours, qui veut dire qu'a tout moment lorsqu'on veut ajouter un cours a chaque fois on se réfère a l'enseignant et cela nous permettra de savoir le nombre d'heure qui lui reste a tout moment.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656 > kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
14 mai 2021 à 19:49
Ok mais ce nombre d'heure c'est par semaines, par mois, par année, pour toute sa vie?
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
Modifié le 14 mai 2021 à 10:54
D'accord pas de souci.
J'ai essayé d'une autre façon pour le calcul. J'envoie une photo de mon formulaire ajoutcours:

Vous verrez une partie un peu grisé, qui concerne la table enseignant:

Car je me disais que c'est possible de faire un appel de enseignant sur le formulaire pour faire les calculs d'heure, mais le souci c'est que le deux textbox où on met l'heure total concerne le champ nbr_heure_total_rest dans la table enseignant. Et l'autre textbox qui est le reste , c'est a ce niveau qu'il y'aura le resultat du calcul. Je veux faire ( Heure total - nombre d'heure). J'ai essayé d'appliquer un timespan mais ca ne marche pas.
Merci
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
16 mai 2021 à 12:02
Un exemple au plus simple (notamment, je n'ai pas vérifié que l'heure de fin est après l'heure de début, ni que 2 plages ne peuvent pas se chevaucher...)

Enseignant
using System;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Linq;

namespace Tests
{
    class Enseignant
    {
        public Enseignant(string LeNom, TimeSpan LaDureeCoursPrevue)
        {
            Nom = LeNom;
            DureeCoursPrevue = LaDureeCoursPrevue;
            Creneaux.CollectionChanged += Creneaux_CollectionChanged;
        }


        /// <summary>
        /// Quand la collection subit un changement
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Creneaux_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
        {
            switch(e.Action)
            {
                case NotifyCollectionChangedAction.Add:
                case NotifyCollectionChangedAction.Remove:
                case NotifyCollectionChangedAction.Reset:
                case NotifyCollectionChangedAction.Replace:
                    DureeCoursRestant = DureeCoursPrevue - TimeSpan.FromHours(Creneaux.OfType<Cours>().Sum(cours => cours.Duree.TotalHours));
                    break;
            }
        }

        /// <summary>
        /// Nom de l'enseignant
        /// </summary>
        public string Nom { get; private set; }

        /// <summary>
        /// Creneaux de l'enseignant
        /// </summary>
        public ObservableCollection<Creneau> Creneaux { get; private set; } = new ObservableCollection<Creneau>();

        /// <summary>
        /// Durée de cours prévue
        /// </summary>
        public TimeSpan DureeCoursPrevue { get; private set; }

        /// <summary>
        /// Durée de cours restant
        /// </summary>
        public TimeSpan DureeCoursRestant { get; private set; }
    }
}


Les 3 classes Creneau
using System;

namespace Tests
{
    /// <summary>
    /// Définit un créneau
    /// </summary>
    abstract class Creneau
    {
        protected string info;

        protected Creneau(DateTime LeDebut, DateTime LaFin)
        {
            debut = LeDebut;
            fin = LaFin;
        }

        protected DateTime debut;
        /// <summary>
        /// Debut du créneau horaire
        /// </summary>
        public DateTime Debut
        {
            get { return debut; }
            set { debut = value; }
        }


        private DateTime fin;
        /// <summary>
        /// Fin du créneau horaire
        /// </summary>
        public DateTime Fin
        {
            get { return fin; }
            set { fin = value; }
        }

        /// <summary>
        /// Fin du créneau horaire
        /// </summary>
        public TimeSpan Duree
        {
            get { return fin - debut; }
        }

        public override string ToString()
        {
            return string.Format(
 @"{0}
Le {1:dd/MM/yyyy}
De {1:HH:mm} à {2:HH:mm}
Durée {3}
",
info, Debut,Fin, Duree);
        }
    }

    class Cours : Creneau
    {
        public Cours(DateTime LeDebut, DateTime LaFin, string LaMatiere) : base(LeDebut, LaFin)
        {
            info = LaMatiere;
        }

        public string Matiere { get { return info; } }

    }

    class Abscence : Creneau
    {
        public Abscence(DateTime LeDebut, DateTime LaFin, string LaRaison) : base(LeDebut, LaFin)
        {
            info = LaRaison;
        }

        public string Raison { get { return info; } }
    }
}


Création d'un enseignant, affectation d'indispos et de cours
            Enseignant en = new Enseignant("Prof", TimeSpan.FromHours(5));
            en.Creneaux.Add(new Abscence(DateTime.Parse("01/06/2021 8:00"), DateTime.Parse("01/06/2021 18:00"), "Congés"));

            DateTime pasLesJeudisPM = DateTime.Parse("03/06/2021 12:00");

            while(pasLesJeudisPM.Month < 7)
            {
                en.Creneaux.Add(new Abscence(pasLesJeudisPM, pasLesJeudisPM.AddHours(6), "Pas les jeudis après midi"));
                pasLesJeudisPM = pasLesJeudisPM.AddDays(7);
            }

            string duree1 = en.DureeCoursRestant.ToString();

            en.Creneaux.Add(new Cours(DateTime.Parse("02/06/2021 8:00"), DateTime.Parse("02/06/2021 9:00"), "Maths"));

            string duree2 = en.DureeCoursRestant.ToString();

            en.Creneaux.Add(new Cours(DateTime.Parse("04/06/2021 11:00"), DateTime.Parse("04/06/2021 12:00"), "Maths"));

            string duree3 = en.DureeCoursRestant.ToString();

            foreach (Creneau cr in en.Creneaux)
                Console.WriteLine(cr);
            

            Console.WriteLine("durée 1 {0}", duree1);
            Console.WriteLine("durée 2 {0}", duree2);
            Console.WriteLine("durée 3 {0}", duree3);


Et le résultat dans la console

0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
18 mai 2021 à 16:30
Bonjour, vraiment merci .
J'ai utilise une autre méthode pour le calcul de l'heure , voici:


le problème est que a chaque fois que j'essaie d'ouvrir le formulaire qui contient le calcul il y'a un souci: le formulaire heure ne s'ouvre pas. j'ai mis le calcul dans les textbox .Pour que des qu'on ouvre on commence a faire les calculs mais rien a faire toujours pareil.
Je me suis di au lieu de faire un textbox pour l'heure vaut mieux faire deux un pour l'heure et l'autre pour la minute en convertissant le string en entier.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
18 mai 2021 à 18:44
Je t'ai déjà dit que le texte ça peut servir à afficher une donnée temporelle de façon compréhensible pour l'homme, mais en aucun c'est une donnée.

Les textbox ne servent pas à faire des calculs. Ca sert à afficher et à saisir (si on ne sait pas saisir directement la donnée). Les calculs se font à partir des données.

Dans l'absolue, il en va de même pour le formulaire son job c'est d'afficher et de permettre la saisie ou le lancement d'actions.
Calculer et faire les actions, c'est le job des objets "métiers". Si cette façon de penser le code ne te convient pas, choisit un langage moins objet, voire pas du tout objet.

J'essaye de te donner les indications pour coder correctement et efficacement, mais si tu ne veux pas en tenir compte, je ne peux rien pour toi.

Ok dans mon exemple, je n'ai pas pris en compte les devoirs, mais je ne sais pas ce que tu appelles devoir.
Pour moi ça a 2 sens
  • l'élève qui a du travail à faire chez lui (je ne vois pas le lien avec les heures de l'enseignant)
  • une épreuve notée (on dit devoir sur table) mais c'est pendant les heures de cours

J'imagine que ça un autre sens pour toi et qu'il est important que ce soit séparé.
Et bien, il suffit de dériver une 3 classes, de faire la somme des cours, la somme des devoirs et la somme des 2 précédentes, dans la classe métier.

Dans ce formulaire, il ne devrait jamais y avoir de textbox, le résultat d'un calcul s'affiche, il ne se saisit pas. Pour afficher, il faut un label par exemple, et un seul par info (voire un seul pour toutes les infos).
D'ailleurs un formulaire rien que pour ça est-ce nécessaire?
Une info bulle sur la liste de enseignant ferait le job aussi.

0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
18 mai 2021 à 20:10
D'accord je vais faire ce que tu as di. Mais chez nous on a les heures de devoirs et les heures de cours et c'est la sommation qui nous donne l'heure totale de l'enseignant.
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
23 mai 2021 à 19:25
la méthode que vous venez de me montrer la , j'ai appliqué a mon formulaire cours et ca marche et j'ai utilisé en plus de cela une autre méthode qu'une personne dans ce groupe avait montré. Ce que j'essaie de faire c'est que a chaque fois que j'ajoute une heure de cours pour cette filière , il faut que ca fasse une décrémentation sur l'heure totale de cours que cette personne doit donner a cette filière (qui se passe dans la table enseignant).
je vous envois une photo sur le cour et l'autre sur la partie enseignant
photo de la liste de cours regarde la partie sélectionnée qui correspond a la partie sélectionnée de enseignant:

photo ajout cour:


Photo de la liste des enseignant, toujours sur la partie sélectionnée:
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
23 mai 2021 à 20:18
Il faut que tu postes les codes concernés
0
kfaycal Messages postés 44 Date d'inscription vendredi 16 avril 2021 Statut Membre Dernière intervention 24 mai 2021
23 mai 2021 à 23:18
D'accord voici pour le formulaire ajoutcour:
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Threading.Tasks;
using System.Text;
using System.Windows.Forms;
using WindowsFormsApp1.BLL;
using WindowsFormsApp1.DAL;
using WindowsFormsApp1.TOOL;
using MySql.Data.MySqlClient;
using WindowsFormsApp1.user_controler;

namespace WindowsFormsApp1.Windows_Form.cours
{
    public partial class ajoutcours : Form
    {
        databasehelper dh = new databasehelper();
        MySqlDataReader dr;
        operateurcontroleur opc = new operateurcontroleur();
        operateurinfo opi = new operateurinfo();
        FormCollection listform;
        DataSet ds1, ds2, ds3,ds4,ds5,ds6, ds7,ds8;

        //variable
        bool result;

        private UserControl ajoucou;
        public ajoutcours(UserControl ajc)
        {
            InitializeComponent();
            this.ajoucou = ajc;

           
            txtnb.Enabled = false;
            txtenseig.Enabled = false;
            txtmatiere.Enabled = false;
            txtfiliere.Enabled = false;
            txtniveau.Enabled = false;
            txtrest.Enabled = false;
            txttotal.Enabled = false;
        }
        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtsalle_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void txttotal_TextChanged(object sender, EventArgs e)
        {
            string Total = txttotal.Text;
            string nombre = txtnb.Text;
            string[] T = Total.Split(':');
            string[] Nbr = nombre.Split(':');
            //pour l'heure
            int T0 = int.Parse(T[0]);
            int Nbr0 = int.Parse(Nbr[0]);
            //Pour les minutes
            int T1 = int.Parse(T[1]);
            int Nbr1 = int.Parse(Nbr[1]);
            //Pour les secondes
           int T2= int.Parse(T[2]);
             int Nbr2 = int.Parse(Nbr[2]);
            
            int restheure = T0 - Nbr0;
            int restminute = T1 + Nbr1;
            int restsecond = T2 + Nbr2;
            if(int.Parse(Nbr[1]) > int.Parse(T[1]))
            {
               
                restheure = restheure - 1;
                restminute = 60 - int.Parse(Nbr[1]);
              
               
            }
            string resultat = restheure.ToString() + ":" + restminute.ToString() + ":" + restsecond.ToString();
            txtrest.Text = resultat.ToString();
        }

        private void label7_Click(object sender, EventArgs e)
        {

        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
          
          
        }

        private void txtfin_ValueChanged(object sender, EventArgs e)
        {
          

            TimeSpan rr = TimeSpan.Parse(txtfin.Text) - TimeSpan.Parse(txtdebut.Text);
            txtnb.Text = rr.ToString();
        }

        private void txtdebut_ValueChanged(object sender, EventArgs e)
        {
          
        }

        private void txttotal_SelectedIndexChanged(object sender, EventArgs e)
        {
           
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //calcul d'heure

            //TimeSpan rr = TimeSpan.Parse(txtrest1.Text) - TimeSpan.Parse(txtnb.Text);
            //txtreste.Text = rr.ToString();
        }

        private void txtrest1_ValueChanged(object sender, EventArgs e)
        {
            
        }

        private void txttotal1_TextChanged(object sender, EventArgs e)
        {
           
        }

        private void btnfermer_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtrest1_TextChanged(object sender, EventArgs e)
        {
        }

        private void txttotal_SelectedIndexChanged_1(object sender, EventArgs e)
        {
            
        }

        

        private void txteneig_SelectedIndexChanged(object sender, EventArgs e)
        {
            ds6 = dh.ExecuteDataSet("select distinct nom_enseignant from enseignant where code_enseignant ='" + txtcden.Text + "'  ");
            txtenseig.DataSource = ds6.Tables[0];
            txtenseig.DisplayMember = "nom_enseignant";
            txtenseig.Text = "";

            ds1 = dh.ExecuteDataSet("select distinct code_matiere from enseignant where code_enseignant ='" + txtcden.Text + "'  ");
            txtmatiere.DataSource = ds1.Tables[0];
            txtmatiere.DisplayMember = "code_matiere";
            txtmatiere.Text = "";

            ds2 = dh.ExecuteDataSet("select distinct code_filiere from enseignant where code_enseignant ='" + txtcden.Text + "'  ");
            txtfiliere.DataSource = ds2.Tables[0];
            txtfiliere.DisplayMember = "code_filiere";
            txtfiliere.Text = "";

            ds3 = dh.ExecuteDataSet("select distinct code_niveau from enseignant where code_enseignant ='" + txtcden.Text + "'  ");
            txtniveau.DataSource = ds3.Tables[0];
            txtniveau.DisplayMember = "code_niveau";
            txtniveau.Text = "";

            ds7 = dh.ExecuteDataSet("select distinct heure_cours_rest from enseignant where code_enseignant ='" + txtcden.Text + "'  ");
            txttotal.DataSource = ds7.Tables[0];
            txttotal.DisplayMember = "heure_cours_rest";
            txttotal.Text = "";

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            
           
        }

       

        private void ajoutcours_Load(object sender, EventArgs e)
        {
            try
            {


                //charger les noms des enseignants
                ds4 = dh.ExecuteDataSet("select distinct code_enseignant from enseignant where demande_de_permission='Accepter' order by nom_enseignant asc  ");
                txtcden.DataSource = ds4.Tables[0];
                txtcden.DisplayMember = "code_enseignant";
                txtcden.Text = "";

                //charger les noms des salles
                ds5 = dh.ExecuteDataSet("select distinct numero from salle order by numero asc");
                txtsalle.DataSource = ds5.Tables[0];
                txtsalle.DisplayMember = "numero";
                txtsalle.Text = "";


            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            try
            {
                string Total = txttotal.Text;
                string nombre = txtnb.Text;
                string[] T = Total.Split(':');
                string[] Nbr = nombre.Split(':');
                //pour l'heure
                int T0 = int.Parse(T[0]);
                int Nbr0 = int.Parse(Nbr[0]);
                //Pour les minutes
                int T1 = int.Parse(T[1]);
                int Nbr1 = int.Parse(Nbr[1]);
                //Pour les secondes
                int T2 = int.Parse(T[2]);
                int Nbr2 = int.Parse(Nbr[2]);
                string nbr = Nbr0.ToString();
                string nb = Nbr1.ToString();
                string th = T0.ToString();
                string tm = T1.ToString();
                if (txtmatiere.Text == "" || txtfiliere.Text == "" || txtniveau.Text == "" || txtenseignant.Text == "" || date.Text == "" || txtdebut.Text == "" || txtfin.Text == "" || txtnb.Text == "" || txtjour.Text == "" || txtsalle.Text == "")
                {
                    MessageBox.Show("Désolé tous les champs doivent être renseignés", "GSED");
                }
                else
            {
                    if (Nbr0 > T0)
                    {
                        MessageBox.Show("Désolé vous pouvez pas ajouter une séance de '" + nbr + "'h'" + nb + "'mn alors qu'il vous reste un total de '" + th + "'h'" + tm + "'mn", "GSED", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                    else
                    {
                        dh.ExecuteNonQuery("insert into cours (code_matiere,code_filiere,code_niveau, code_enseignant,date,heure_debut,heure_fin,nbr_heure,jour,salle ) values ('" + txtmatiere.Text.Replace("'", "''") + "', '" + txtfiliere.Text.Replace("'", "''") + "','" + txtniveau.Text.Replace("'", "''") + "','" + txtenseig.Text.Replace("'", "''") + "','" + DateTime.Now.ToString("yyyy/MM/dd") + "','" + txtdebut.Text.Replace("'", "''") + "','" + txtfin.Text.Replace("'", "''") + "','" + txtnb.Text.Replace("'", "''") + "','" + txtjour.Text.Replace("'", "''") + "','" + txtsalle.Text.Replace("'", "''") + "')");
                        dh.ExecuteNonQuery("update enseignant set heure_cours ='"+txtrest.Text.Replace("'", "''") + "' where code_enseignant='" + txtcden.Text + "' ");

                        MessageBox.Show("La séance a été enregistré avec succès");
                        (ajoucou as UCcours).affic();
                        txtmatiere.Text = "";
                        txtmatiere.Focus();
                        txtfiliere.Text = "";
                        txtfiliere.Focus();
                        txtniveau.Text = "";
                        txtniveau.Focus();
                        txtenseig.Text = "";
                        txtenseig.Focus();
                        date.Text = "";
                        date.Focus();
                        txtdebut.Focus();
                        txtdebut.Text = "";
                        txtfin.Text = "";
                        txtfin.Focus();
                        txtnb.Text = "";
                        txtnb.Focus();
                        txtjour.Text = "";
                        txtjour.Focus();
                        txtsalle.Text = "";
                        txtsalle.Focus();
                    }
                


            }




        }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
24 mai 2021 à 09:16
Hier, sur l'autre discussion je t'ai dit que ce code c'est pourri au point que j'ai supprimé le message en question. Pourquoi me le reproposes tu aujourd'hui?


As tu réellement suivi le cours de Tahé?
As tu essayé de comprendre l'exemple que je t'ai posté le 16 mai ? (normalement après le cours de Tahé ça aurait du être largement possible)
0
Rejoignez-nous