Cours-Gratuit
  • Accueil
  • Blog
  • Cours informatique
home icon Cours gratuits » Cours informatique » Cours programmation » Cours langage C » Applications langage c

Application console de gestion cabinet médicale avec le langage C

Application console de gestion cabinet médicale avec le langage C
Participez au vote ☆☆☆☆☆★★★★★
Page suivante pour Télécharger

Application console de gestion cabinet médicale avec le langage C

Cet article propose en détaille une application console de gestion cabinet médicale avec le langage C en utilisant la POO.

On utilise dans cette application :

  • L'héritage
  • Le polymorphisme
  • La surcharge des méthodes
  • L'accès aux fichiers <fstream>
  • Le cryptage des fichiers
  • L'utilisation des dates/heures
  • Le formatage des données <sstream, strstream>
  • Avec un propre couche présentation (classes d'interface)

Vous pourrez télécharger le fichier au format zip il contient le code sources complet

Extrait du code source :

#include "console.h"

void InterfaceGraphique(Cconsole & Cout)

{

            Cout.TailleEcran(100, 50);

            Cout.set_window_title("ESPRIT # 1C-INFO-01   Mini Projet POO C++");

            Cout.AfficherModeleDeBase();

            Cout.AfficherClesDeNavigation();

            Cout.DessinerFrame(5,8,90,30,"   CONNEXION   ");

            Cout.AfficherCurseur(true);

return;

}

… … … …

#include "Reglements.h"

void DessinerInterfaceReglement(Cconsole &console)

{

            //Ecrire textes:

            console.set_text_background(InternalFrameBackGroundColor);

            console.set_text_foreground(InternalFrameTextColor);

            console.set_cursor_position(9,13); cout << "Date r" << E_AccentGrave << "glement :           [jj/mm/aaaa]";

            console.set_cursor_position(9,17); cout << "Heure r" << E_AccentGrave << "glement:       [HH:mm]";

            console.set_cursor_position(9,21); cout << "Code patient   :";

            console.set_cursor_position(9,25); cout << "Visite " << A_AccentGrave << " payer :           [jj/mm/aaaa]     Heure :";

            console.set_cursor_position(9,29); cout << "Mnt honoraire :           Mnt d" << E_AccentAigue << "j" << A_AccentGrave << " pay" << E_AccentAigue << " :";

            console.set_cursor_position(9,33); cout << "Mnt " << A_AccentGrave << " payer   :";

            console.set_cursor_position(71,10); cout << SmplCoinHautGauche << SmplHorizontale << " Impay" << E_AccentAigue << "s patient: " << SmplHorizontale << SmplCoinHautDroite;

            console.set_cursor_position(71,11);

            cout << SmplVerticale << "                   " << SmplVerticale;

            console.set_cursor_position(71,12);

            cout << SmplVerticale << " Dat visite" << SmplVerticale << " Impay" << E_AccentAigue << " " << SmplVerticale;

            console.set_cursor_position(71,13);

            cout << SmplVerticale << " " << CharString(10,SmplHorizontale) << char(197) << CharString(7,SmplHorizontale) << " " << SmplVerticale;

            for(int i=14 ; i < 34 ; i++)       {console.set_cursor_position(71,i);

                                                                                                          cout << SmplVerticale << " .........." << SmplVerticale << "....... " << SmplVerticale;}

            console.set_cursor_position(71,34);cout << SmplVerticale << " " << CharString(10,SmplHorizontale) << char(193) << CharString(7,SmplHorizontale) << " " << SmplVerticale;

            console.set_cursor_position(71,35);cout << SmplVerticale << " TOTAL : .......... " << SmplVerticale;

            console.set_cursor_position(71,36); cout << SmplCoinBasGauche << CharString(20,SmplHorizontale) << SmplCoinBasDroite;

            console.ConstruireChampsDeSaisie(62,25,5,true); //Un champs pour l'affichage seulement

}

void ResetInterfaceReglements(Cconsole &console, Interface & Reglement_Interface)

{

            Reglement_Interface[0]->SetValue(DateSystFormatee());

            Reglement_Interface[1]->SetValue(HeureSystFormatee());

            for (int i = 2; i<4; i++) Reglement_Interface[i]->SetValue("");

            Reglement_Interface[4]->SetValue((float)0);

            console.SetFieldText(21,37,CharString(34,' '),InternalFrameBackGroundColor,InternalFrameTextColor);//Effacer un éventuel affichage du nom patient

            console.SetFieldText(25,62,CharString(5,' '),FieldBackGroundColor,FieldForeGroundColor);//Effacer un éventuel affichage de l'heure visite relative

            console.SetFieldText(29,26,"       ",InternalFrameBackGroundColor,FieldForeGroundColor);//Effacer un éventuel affichage de l'honoraire visite relative

            console.SetFieldText(29,52,"       ",InternalFrameBackGroundColor,FieldForeGroundColor);//Effacer un éventuel affichage du mnt déja payé de la visite relative

            Reglement_Interface[0]->SetFocus();

            Reglement_Interface.SetIndexChampsEnCours(0);

return;

}

void AfficherImpayesPatient(Cconsole &console, vector<Reglement> &ListeDesReglements,vector<Visite> &ListeDesVisites, string patient)

{          //Effacer touts les impayés éventuellement affichés

            COORD AnciennePosition = {console.get_current_position_x() , console.get_current_position_y()}; // Garder la position actuelle du curseur

            console.set_text_background(InternalFrameBackGroundColor);

            console.set_text_foreground(InternalFrameTextColor);

            for(int i=14 ; i < 34 ; i++)       {console.set_cursor_position(71,i);

                                                                                                          cout << SmplVerticale << " .........." << SmplVerticale << "....... " << SmplVerticale;}

            console.SetFieldText(35,72," TOTAL : ..........",InternalFrameBackGroundColor,InternalFrameTextColor);

            if (patient.length() == 0) goto ret; //Appel pour nettoyage du tableau

            int NumLigne = 14; //Num ligne d'affichage tableau

            float TotalImpayePatient = 0;

            for(unsigned int i=0;i<ListeDesVisites.size();i++)

                        if (ListeDesVisites[i].getPatient() == patient)

                        {                      float TotalPayeVisite = 0;

                                               for(unsigned int j=0;j<ListeDesReglements.size();j++)

                                               if (ListeDesReglements[j].getPatient() == ListeDesVisites[i].getPatient() &&

                                                           ListeDesReglements[j].getDatVisite().str() == ListeDesVisites[i].getDate().str() &&

                                                           ListeDesReglements[j].getHeureVisite().str() == ListeDesVisites[i].getHeure().str())

                                                           TotalPayeVisite += ListeDesReglements[j].getPaye();

                                               if (TotalPayeVisite < ListeDesVisites[i].getHonoraire()) //Visite pas encore totalement payée!

                                               {

                                                           TotalImpayePatient += ListeDesVisites[i].getHonoraire() - TotalPayeVisite;

                                                           char ligne18[19]; sprintf_s(ligne18,"%s%c%s",ListeDesVisites[i].getDate().str().c_str(), SmplVerticale, FloatToRightStr(ListeDesVisites[i].getHonoraire() - TotalPayeVisite,7,'.').c_str());

            console.SetFieldText(NumLigne,73,string(ligne18),InternalFrameBackGroundColor,InternalFrameTextColor);

                                                           NumLigne++;

                                               }

                        }

            console.SetFieldText(35,72," TOTAL : " + FloatToRightStr(TotalImpayePatient,10,'.'),InternalFrameBackGroundColor,InternalFrameTextColor);

ret:

            console.set_text_background(FieldBackGroundColor);

            console.set_text_foreground(FieldForeGroundColor);

            console.set_cursor_position(AnciennePosition.X,AnciennePosition.Y); // Restituer la position actueelle du curseur

return;

}

void TryToDisplayPatient_EcranReglements(Cconsole &console, string patient, vector<Patient> &ListPatients)

{

            string CodePatient = trim(patient);

            string NomEtPrenom;

            for(unsigned int i = 0; i < ListPatients.size(); i++)

                        if(ListPatients[i].getCode() == CodePatient) // Patient existant

                                   {

                                   NomEtPrenom = ListPatients[i].getNom() + " " + ListPatients[i].getPrenom();

                                   NomEtPrenom.resize(34,' ');

            console.SetFieldText(21,37,NomEtPrenom,InternalFrameBackGroundColor,InternalFrameTextColor);

                                    return;

                                   }

console.SetFieldText(21,37,CharString(34,' '),InternalFrameBackGroundColor,InternalFrameTextColor);

}

void TryToDisplayVisite_EcranReglement(Cconsole &console, string datereglement, string heurereglement, string patient, string datevisite, vector<Visite> &ListeDesVisites,vector<Reglement> &ListeDesReglements) //S'il s'agit de l'un des champs (DateVisite ou Patient), et s'il a été changé, afficher l'heure Visite correspondante

{

            string DateVisiteFieldValue = trim(datevisite);

            string PatientFieldValue = trim(patient);

            for(unsigned int i = 0; i<ListeDesVisites.size(); i++)

                        if((ListeDesVisites[i].getDate().str() == DateVisiteFieldValue)&&(ListeDesVisites[i].getPatient() == PatientFieldValue)) // Visite existante

                        {

console.SetFieldText(25,62,ListeDesVisites[i].getHeure().str(),FieldBackGroundColor,FieldForeGroundColor);

                                   char buff[10];

                                   sprintf_s(buff, "%4.3f",ListeDesVisites[i].getHonoraire());

            console.SetFieldText(29,26,string(buff),InternalFrameBackGroundColor,FieldForeGroundColor);

float TotalPayeVisite = 0;

                                   for(unsigned int j=0;j<ListeDesReglements.size();j++)

                                   if (ListeDesReglements[j].getPatient() == PatientFieldValue &&

                                               ListeDesReglements[j].getDatVisite().str() == DateVisiteFieldValue &&

                                               ListeDesReglements[j].getHeureVisite().str() == (console.GetFieldText(25,62,66)) &&

                                               (ListeDesReglements[j].getDate().str() != datereglement ||

                                               ListeDesReglements[j].getHeure().str() != heurereglement))// Somme de tous les reglements de la visite sauf celui qui est affiché (en cours de modif)

                                                           TotalPayeVisite += ListeDesReglements[j].getPaye();

                                   sprintf_s(buff, "%4.3f",TotalPayeVisite);                             console.SetFieldText(29,52,string(buff),InternalFrameBackGroundColor,FieldForeGroundColor);

return;

                        }

            console.SetFieldText(25,62,"    ",   FieldBackGroundColor,                         FieldForeGroundColor);

            console.SetFieldText(29,26,"       ",InternalFrameBackGroundColor,FieldForeGroundColor);

            console.SetFieldText(29,52,"       ",InternalFrameBackGroundColor,FieldForeGroundColor);

            return;

}

bool VisiteCompletementPayee(Cconsole &console,Interface &Reglement_Interface)

{

float MntHonoraire = StrToFloat(console.GetFieldText(29,26,33));

float MntDejaPaye = StrToFloat(console.GetFieldText(29,52,59));

float MntAPayer;     Reglement_Interface[4]->GetValue(&MntAPayer);

if(MntDejaPaye + MntAPayer > MntHonoraire)

            {

            char StrAide [150]; //Taille max d'un message d'info help

            sprintf_s(StrAide,"La somme du montant saisi       et celui d%cj%c pay%c d%cpasse       le montant d'honoraire visite.",E_AccentAigue,A_AccentGrave,E_AccentAigue,E_AccentAigue);

            console.Aide(StrAide);

            Reglement_Interface.SetIndexChampsEnCours(4);

            Reglement_Interface[4]->SetErrorBackground();

            Reglement_Interface[4]->SetFocus();

            _putch(7);

            return true;

            }

return false;

}

bool VerifierDifferenceDates(Cconsole &console, Interface &Reglement_Interface)

{   //Vérifier si la date visite est inférieure à la date reglement

BP_Date DateReglement;     Reglement_Interface[0]->GetValue(&DateReglement);

BP_Date DateVisite;             Reglement_Interface[3]->GetValue(&DateVisite);

if(DateReglement.gettimet() < DateVisite.gettimet())

            {

            char StrAide [150]; //Taille max d'un message d'info help

            sprintf_s(StrAide,"La date du r%cglement ne peut pas %ctre inf%crieure %c celle de       la visite.",E_AccentGrave,E_AccentCirconflexe, E_AccentAigue,A_AccentGrave);

            console.Aide(StrAide);

            Reglement_Interface.SetIndexChampsEnCours(0);

            Reglement_Interface[0]->SetErrorBackground();

            Reglement_Interface[0]->SetFocus();

            _putch(7);

            return false;

            }

if(DateReglement.gettimet() == DateVisite.gettimet())

{         

            BP_Date HeureReglement;   Reglement_Interface[1]->GetValue(&DateReglement);

            BP_Date HeureVisite;

            HeureVisite.setformat("hh:nn");

            HeureVisite.set(console.GetFieldText(25,62,66));

            if(HeureReglement.gettimet() < HeureVisite.gettimet())   // Cas très rare mais possible!

            {

                        char StrAide [150]; //Taille max d'un message d'info help

                        sprintf_s(StrAide,"L'heure du r%cglement ne peut pas %ctre inf%crieure %c celle de       la visite.",E_AccentGrave,E_AccentCirconflexe, E_AccentAigue,A_AccentGrave);

                        console.Aide(StrAide);

                        Reglement_Interface.SetIndexChampsEnCours(1);

                        Reglement_Interface[1]->SetErrorBackground();

                        Reglement_Interface[1]->SetFocus();

                        _putch(7);

                        return false;

            }

}

return true;

}

void TryToDisplayReglement(Cconsole &console, Interface & Reglement_Interface,vector<Reglement> &ListeDesReglements, vector<Visite> &ListeDesVisites, vector<Patient> &ListPatients) //S'il s'agit de l'un des champs clé (Date ou heure), et s'il a été changé, afficher le reglement s'il est existant

{

            string FirstFieldValue = Reglement_Interface[0]->GetStrValue();

            string SecondFieldValue = Reglement_Interface[1]->GetStrValue();

            unsigned short Tmp_IndexChampsEnCours = Reglement_Interface.GetIndexChampsEnCours(); //Indispensable lors d'un écran à clés multiples

            COORD AnciennePosition = {console.get_current_position_x() , console.get_current_position_y()}; // Garder la position actueelle du curseur

            for(unsigned int i = 0; i<ListeDesReglements.size(); i++)

                        if((ListeDesReglements[i].getDate().str() == FirstFieldValue)&&(ListeDesReglements[i].getHeure().str() == SecondFieldValue)) // Reglement existant

                        {

                                   Reglement_Interface[2]->SetValue (ListeDesReglements[i].getPatient());

                                   Reglement_Interface[3]->SetValue (ListeDesReglements[i].getDatVisite().str());

                                   Reglement_Interface[4]->SetValue (ListeDesReglements[i].getPaye());

                                   TryToDisplayPatient_EcranReglements(console, Reglement_Interface[2]->GetStrValue(), ListPatients);

                                   TryToDisplayVisite_EcranReglement(console,Reglement_Interface[0]->GetStrValue(),Reglement_Interface[1]->GetStrValue(),Reglement_Interface[2]->GetStrValue(),Reglement_Interface[3]->GetStrValue(),ListeDesVisites,ListeDesReglements);

                                   console.set_cursor_position(AnciennePosition.X,AnciennePosition.Y); // Restituer la position actueelle du curseur

                                   char StrHelp [200];

                                   sprintf_s(StrHelp,"R%glement existant! Vous pouvez       le modifier ou le supprimer.",E_AccentGrave);

                                   console.Aide(StrHelp);

                                   return;

                        }

Decouvrir ces documents

  • Application en langage C sur la gestion de stock

    Application en langage C sur la gestion de stock

  • Lettre de motivation destinée à un cabinet de recrutement

    Lettre de motivation destinée à un cabinet de recrutement

  • Application en langage C pour la gestion des absences

    Application en langage C pour la gestion des absences

  • Gestion des notes d'une classe application en langage C

    Gestion des notes d'une classe application en langage C

  • Application de gestion bancaire avec JAVA

    Application de gestion bancaire avec JAVA

  • Lettre de motivation pour le poste de secrétaire médicale

    Lettre de motivation pour le poste de secrétaire médicale

  • Application sur la gestion de vente avec JAVA

    Application sur la gestion de vente avec JAVA

  • Application JAVA sur la gestion club de sport

    Application JAVA sur la gestion club de sport

Articles connexes

  • Quelle formation pour devenir manipulateur d'électroradiologie médicale?
  • Application Python : gestion des comptes
  • TOP logiciels de gestion et planning d'horaire journalier et hebdomadaire
  • Google révolutionne l'accès à l'information médicale grâce à l'Intelligence Artificielle (IA)
  • Quelles études pour devenir auxiliaire de puériculture ?
  • Exercice Visual Basic : Mini application de gestion de petit commerce
  • Exercices Gestion utilisateurs locaux, permissions NTFS partages
  • Exercice VB: Gestion d'Article
  • Contactez-nous
  • A propos de nous
  • On recrute
  • Rechercher dans le site
  • Politique de confidentialité
  • Droit d'auteur/Copyright
  • Conditions générales d'utilisation
  • Plan du site
  • Accueil
  • Blog
  • Finance et compta.
  • Formations Pro.
  • Logiciels & Apps
  • Organisation
  • Cours informatique
  • Aide à la rédaction
  • Etudes et Metiers
  • Science et Tech
  • Titans de la Tech
id 11354 02