Gestion de cd avec sauvegarde des données

Description

Cette application permet de gérer des CD et aussi que lors de sa fermeture sauvegarde les données dans CD.dll et lors de son ouverture les lit.

Source / Exemple :


#include <iostream.h> // Cout, cin, cerr ... (les flux)
#include <conio.h> // Pour textcolor();textbackground();...
#include <conio.c> // Le même pour Dev-C++
#include <fstream.h> // Pour ifstream et ofstream (fichier)
#include <stdlib.h> // Pour system("pause");...
#include <string.h> // Manipulation des chaînes de caractères
#include <stdio.h>

struct gestioncd
{
char nom[100+1];
char desc[100+1];
char end[100+1];
int qte;
};

gestioncd cd[1000+1];
int nbr=0;
int fal=0;

char tnom[100+1];
char tdesc[100+1];
char tend[100+1];
int tqte;

int cherche(char rdchaine[],char chainear[])
{
int nbchainear=0;
for (int i=0;chainear[i]!='\0';i++){nbchainear++;}
int nbrdchaine=0;
for (int i=0;rdchaine[i]!='\0';i++){nbrdchaine++;}
if (nbchainear>nbrdchaine){return 0;}
int y=0;
for (int x=0;x<nbrdchaine;x++)
{
    if (rdchaine[x]==chainear[y]){y++;}
    else 
    {
        if (y==nbchainear){return 1;}
        else {y=0;}
    }
}
if (y!=nbchainear){return 0;}
}

int recup()
{
    ifstream fichiero("CD.dll");
    if (!fichiero){return 0;}
    char verif[5000+1];
    double verif2;
    fichiero >> verif;
    if (strcmp(verif,"Gestion")!=0){return 0;}
    fichiero >> verif;
    if (strcmp(verif,"CD")!=0){return 0;}
    fichiero >> verif;
    if (strcmp(verif,"version")!=0){return 0;}
    fichiero >> verif2;
    if (verif2!=1.0){return 0;}
    fichiero >> nbr;
    for (int i=0;i<nbr;i++)
    {
        fichiero >> verif;
        
        if (strcmp(verif,"eNOMe")!=0){return 0;}
        
        cd[i].nom[0]='\0';
        
        for (;strcmp(verif,"eDESCe")!=0;)
        {
        
            fichiero >> verif;
            
            if (strcmp(verif,"eDESCe")!=0 && strcmp(verif,"eNULLe")!=0)
            {
                        strcat(cd[i].nom,verif);
                        strcat(cd[i].nom," ");
            }
            
        }
    
        if (strcmp(verif,"eDESCe")!=0){return 0;}

        cd[i].desc[0]='\0';
        
        for (;strcmp(verif,"eENDe")!=0;)
        {
        
            fichiero >> verif;
            
            if (strcmp(verif,"eENDe")!=0 && strcmp(verif,"eNULLe")!=0)
            {
                        strcat(cd[i].desc,verif);
                        strcat(cd[i].desc," ");
            }
            
        }
        
        if (strcmp(verif,"eENDe")!=0){return 0;}
        
        cd[i].end[0]='\0';
        
        for (;strcmp(verif,"eQTEe")!=0;)
        {
        
            fichiero >> verif;
            
            if (strcmp(verif,"eQTEe")!=0 && strcmp(verif,"eNULLe")!=0)
            {
                        strcat(cd[i].end,verif);
                        strcat(cd[i].end," ");
            }
            
        }
        
        if (strcmp(verif,"eQTEe")!=0){return 0;}
        
        fichiero >> cd[i].qte;
        
    }
    fichiero >> verif;
    if (strcmp(verif,"eFINe")!=0){return 0;}
    fichiero.close();
    return 1;
}

int sauv()
{
    remove("CD.dll");
    ofstream fichiers("CD.dll");
    if (!fichiers){return 0;}
    fichiers << "Gestion CD version 1.0 " << nbr << " ";
    for (int i=0;i<nbr;i++)
    {
    fichiers << "eNOMe ";
    if (cd[i].nom[0]=='\0'){fichiers << "eNULLe ";}
    else {fichiers << cd[i].nom << " ";}
    fichiers << "eDESCe ";
    if (cd[i].desc[0]=='\0'){fichiers << "eNULLe ";}
    else {fichiers << cd[i].desc << " ";}
    fichiers << "eENDe ";
    if (cd[i].end[0]=='\0'){fichiers << "eNULLe ";}
    else {fichiers << cd[i].end << " ";}
    fichiers << "eQTEe ";
    fichiers << cd[i].qte << " ";
    }
    fichiers << "eFINe";
    fichiers.close();
    return 1;
}

int c=1;int b=15;

int trouv(char couleur[100],int *varia)
{
if (strcmp(couleur,"bleu")==0)
{
clrscr();
cout << "\n\nBleu comment ?\n\n\t- Fonce (f)\n\t- Clair (c)\n\t- Flash (l)\n\t- Turquoise (t)\n\n\t\tVotre choix : ";
char choix;
cin >> choix;
if (choix=='f' || choix=='c' || choix=='t' || choix=='l')
{
if (choix=='f')*varia=1;
if (choix=='c')*varia=9;
if (choix=='t')*varia=3;
if (choix=='l')*varia=11;
return 1;
}
else cout << "Mauvais choix !";return 0;
}

if (strcmp(couleur,"blanc")==0){*varia=15;return 1;}

if (strcmp(couleur,"vert")==0){
clrscr();
cout << "\n\nVert comment ?\n\n\t- Clair (c)\n\t- Fonce (f)\n\t- Kaki (k)\n\n\t\tVotre choix : ";
char choix;cin >> choix;
if (choix=='c'||choix=='f'||choix=='k'){if (choix=='c'){*varia=10;}if (choix=='f'){*varia=2;}if (choix=='k'){*varia=6;}return 1;
}
else {cout << "Mauvais choix !";return 0;}
}

if (strcmp(couleur,"rouge")==0)
{
clrscr();
cout << "\n\nRouge comment ?\n\n\t- Rouge (r)\n\t- Bordeau (b)\n\n\t\tVotre choix : ";
char choix;cin >> choix;
if (choix=='r'||choix=='b'){if (choix=='r') *varia=12;else *varia=4;return 1;}
else {cout << "Mauvais choix !";return 0;}
}

if (strcmp(couleur,"violet")==0){
clrscr();
cout << "\n\nViolet comment ?\n\n\t- Clair (c)\n\t- Fonce (f)\n\n\t\tVotre choix : ";
char choix;cin >> choix;
if (choix=='c'||choix=='f'){if (choix=='c') *varia=13;else *varia=5;return 1;}
else {cout << "Mauvais choix !";return 0;}
}

if (strcmp(couleur,"gris")==0)
{
clrscr();
cout << "\n\nGris comment ?\n\n\t- Clair (c)\n\t- Fonce (f)\n\n\t\tVotre choix : ";
char choix;cin >> choix;
if (choix=='c'||choix=='f'){if (choix=='c') *varia=7;else *varia=8;return 1;}
else {cout << "Mauvais choix !";return 0;}
}

if (strcmp(couleur,"jaune")==0){*varia=14;return 1;}
if (strcmp(couleur,"noir")==0){*varia=0;return 1;}
}

void couleur()
{
clrscr();
gotoxy(10,3);
char couleur[100];
int trouve=0;
while (!trouve)
{clrscr();
cout << "\n\n\tEntrez la couleur du texte : ";
cin.getline(couleur,sizeof(couleur));
trouve = trouv(couleur,&c);
}
trouve=0;
while (!trouve)
{clrscr();
cout << "\n\n\tEntrez la couleur du fond : ";
cin.getline(couleur,sizeof(couleur));
trouve = trouv(couleur,&b);
}
}

void ajoutcd()
{
cout << flush;
clrscr();
if (nbr>(sizeof(cd)-1)){cout << "\n\n\n\tNombre maximal de CD depase !\n\n\n\tAppuyer sur une touche pour revenir au menu";system("pause>nul");return;}
cout << "\n\nEntrez le titre du cd numero " << nbr <<" : "; 
cin.getline(tnom,sizeof(tnom));
cout << "\n\nEntrez sa description : ";
cin.getline(tdesc,sizeof(tdesc)-1);
cout << "\n\nEntrez son endroit de rangement : ";
cin.getline(tend,sizeof(tend)-1);
cout << "\n\nEntrez la quantite : ";
cin >> tqte;
char debug[1+1];cin.getline(debug,sizeof(debug)); 
if (cin.fail()){cin.clear();fal=1;}
clrscr();
cout << "\n\n\tVoici les informations :\n\nNumero du CD : " << nbr;
cout << "\n\nNom : " << tnom;
cout << "\n\nDescription : " << tdesc;
cout << "\n\nEndroit de rangement : " << tend;
cout << "\n\nQuantite : " << tqte;
cout << "\n\n\nAppuyez sur \"o\" ou \"O\" puis sur entrer pour confirmer sinon Entrer.";
textcolor(b);char choix[1+1];cin.getline(choix,sizeof(choix));textcolor(c);
if (choix[0]=='o' || choix[0]=='O')
{
strcpy(cd[nbr].nom,tnom);
strcpy(cd[nbr].desc,tdesc);
strcpy(cd[nbr].end,tend);
cd[nbr].qte=tqte;
nbr++;
}
cout << flush;
tnom[0]='\0';
tdesc[0]='\0';
tend[0]='\0';
tqte=0;
}

void voircd()
{
    clrscr();
    if (nbr==0)
    {
        gotoxy(10,5);cout << "AUCUN CD ENREGISTRE !\n\n\n";
        cout << "Appuyez sur une touche pour revenir au menu.";
        system("pause>nul");
        return;
    }
    cout << "VOICI LA LISTE DES CD :\n\n";
    int limit=0;
    for (int i=0;i<nbr;i++,limit++)
    {
        if (limit>15)
        {
                cout <<"\n\nAppuyez sur une touche pour voir la suite";
                system("pause>nul");
                clrscr();
                cout <<"VOICI LA LISTE DES CD (suite):\n\n";
                limit=0;
        }
        cout << "Nom du CD numero "<<i<<" : "<<cd[i].nom<<endl;
    }
    cout << "\n\nAppuyez sur une touche pour retourner au menu.";
    system("pause>nul");
    return;
}

void voirnumero()
{
    clrscr();
    if (nbr==0)
    {
        gotoxy(10,5);cout << "AUCUN CD ENREGISTRE !\n\n\n";
        cout << "Appuyez sur une touche pour revenir au menu.";
        system("pause>nul");
        return;
    }
    cout << "\n\n\nEntrez le numero : ";int num;cin >> num;char debug[1+1];cin.getline(debug,sizeof(debug));fal=0;
    if (cin.fail()){cin.clear();fal=1;}
    if (num>=nbr)
    {
        gotoxy(10,5);cout << "\n\nCE CD N\'EXISTE PAS !\n\n\n";
        cout << "Appuyez sur une touche pour revenir au menu.";
        system("pause>nul");
        return;
    }
    clrscr();
    cout << "\n\n\tVoici les informations :\n\nNumero du CD : " << num;
    cout << "\n\nNom : " << cd[num].nom;
    cout << "\n\nDescription : " << cd[num].desc;
    cout << "\n\nEndroit de rangement : " << cd[num].end;
    cout << "\n\nQuantite : " << cd[num].qte;
    cout << "\n\n\nAppuyez sur une touche pour retourner au menu.";
    system("pause>nul");
}

void modifnum()
{
    clrscr();
    if (nbr==0)
    {
        gotoxy(10,5);cout << "AUCUN CD ENREGISTRE !\n\n\n";
        cout << "Appuyez sur une touche pour revenir au menu.";
        system("pause>nul");
        return;
    }
    cout << "\n\n\nEntrez le numero du CD a modifier : ";
    int num;cin >> num;char debug[1+1];cin.getline(debug,sizeof(debug));
    fal=0;if (cin.fail()){cin.clear();fal=1;}
    if (num>=nbr)
    {
        gotoxy(10,5);cout << "\n\nCE CD N\'EXISTE PAS !\n\n\n";
        cout << "Appuyez sur une touche pour revenir au menu.";
        system("pause>nul");
        return;
    }
    clrscr();
    cout << "Entrez les informations concernant le CD a modifier.\n";
    cout << "Si le champ est vide il sera considere comme inchange\n";
    cout << "Sauf pour la quantitee qui est obligatoire !\n\n";
    cout << "\n\nEntrez le titre du cd numero " << num <<" : "; 
    cin.getline(tnom,sizeof(tnom));
    cout << "\n\nEntrez sa description : ";
    cin.getline(tdesc,sizeof(tdesc)-1);
    cout << "\n\nEntrez son endroit de rangement : ";
    cin.getline(tend,sizeof(tend)-1);
    cout << "\n\nEntrez la quantite : ";
    cin >> tqte;cin.getline(debug,sizeof(debug));
    fal=0;if (cin.fail()){cin.clear();fal=1;}
    clrscr();
    cout << "\n\n\tVoici les informations change sur le CD numero : " << num;
    cout << "\n";
    if (tnom[0]!='\0')cout << "\n\nNom : " << tnom;
    if (tdesc[0]!='\0')cout << "\n\nDescription : " << tdesc;
    if (tend[0]!='\0')cout << "\n\nEndroit de rangement : " << tend;
    cout << "\n\nQuantite : " << tqte;
    cout << "\n\n\nAppuyez sur \"o\" ou \"O\" puis sur entrer pour confirmer sinon Entrer.";
    textcolor(b);
    char choix[1+1];cin.getline(choix,sizeof(choix));textcolor(c);
    if (choix[0]=='o' || choix[0]=='O')
    {
        if (tnom[0]!='\0')strcpy(cd[num].nom,tnom);
        if (tdesc[0]!='\0')strcpy(cd[num].desc,tdesc);
        if (tend[0]!='\0')strcpy(cd[num].end,tend);
        cd[num].qte=tqte;
    }
    cout << flush;
    tnom[0]='\0';
    tdesc[0]='\0';
    tend[0]='\0';
    tqte=0;
}

void supp()
{
nbr=0;
}

void rech()
{
clrscr();
char bb[100+1];
cout << "\n\n\n\nEntrez le mot ou le morceau de mot a rechercher : ";
cin.getline(bb,sizeof(bb));
int nbfois=0;
for (int i=0;i<nbr;i++)
{
    int result=cherche(cd[i].nom,bb);
    if (result)
    {
        if (!nbfois)
        {
                clrscr();cout << "\tRESULTAT DE LA RECHERCHE : \n\n" ;nbfois++;
        }
        
        if (nbfois>=15)
        {
                cout << "\n\nAppuyez sur une touche pour la suite...";
                system("pause>nul");clrscr();
                cout << "\tRESULTAT DE LA RECHERCHE (suite)";nbfois=1;
        }
        
    cout << "Num\x82ro : " << i << "\tnom : " << cd[i].nom << endl;
    
    }
}

if (!nbfois)
{
    cout << "\n\n\nAUCUN OBJET TROUVE !\n\n";
}

cout << "Appuyez sur une touche pour retourner au menu";
system("pause>nul");
}

int main()
{
int succes;
succes=recup();
if (!succes){textcolor(12);textbackground(15);clrscr();cout << "Erreur dans la recuperation des donnees !";system("pause>nul");}
while(1)
{
succes=sauv();
if (!succes){textcolor(12);textbackground(15);clrscr();cout << "Erreur dans la sauvegarde des donnees !";system("pause>nul");}
fal=0;if (cin.fail()){cin.clear();fal=1;}
textcolor(c);textbackground(b);clrscr();
cout << "\n\n\tBienvenu dans le programme de gestion de CD\n\n\n";
cout << "\tQue voulez-vous faire ?\n";
cout << "\n\t\t- Ajouter un CD (a)(A)";
cout << "\n\t\t- Voir un cd avec le numero (n)ou(N)";
cout << "\n\t\t- Voir tous les CD (v)ou(V)";
cout << "\n\t\t- Modifier un CD avec le numero (m)ou(M)";
cout << "\n\t\t- Supprimer toute les donnees (s) ou (S)";
cout << "\n\t\t- Rechercher parmi les noms (r) ou (R)";
cout << "\n\t\t- Changer la couleur de fond et du texte (c)ou(C)";
cout << "\n\t\t- Quitter (q)(Q)";
cout << "\n\n\t\t\tVotre choix : ";
char choix[1+1];cin.getline(choix,sizeof(choix));
switch (choix[0])
{
case 'r' :
case 'R' : rech();break;
case 's' :
case 'S' : supp();break;
case 'm' :
case 'M' : modifnum();break;
case 'n' :
case 'N' : voirnumero();break;
case 'v' :
case 'V' : voircd();break;
case 'A' :
case 'a' : ajoutcd();break;
case 'C' :
case 'c' : couleur();break;
case 'q' :
case 'Q' : return 0;
default : cout << "\n\nMauvais choix !\n\nAppuyez sur une touche pour retaper le choix";system("pause>nul");break;
}
}
}

Conclusion :


Bonjour ceci est ma première source alors un peu d'indulgence.

Cette application est fonctionnelle et sans bug connu.
Si vous décelez un bug merci de m'en avertir par mail à webmaster@jscv.com

Cette application permet de gérer des CD et aussi que lors de sa fermeture sauvegarde les données dans CD.dll et lors de son ouverture les lit.
Donc si vous voulez gérer vos CD c'est idéal vu que les donnés sont toujours conservées et que si vous ne supprimez pas les données vous pouvez par exemple continuer le lendemain à faire l'invetaire.

Compilé et testé sous Dev-C++

Amusez-vous bien !

Vous pouvez aussi visiter mon site www.victorlogiciels.com

Coasne Victor (13 1/2 ans au moment de la source) 15 ans

-------------------------------------

HISTORIQUE DES MODIFICATIONS :

Vendredi 4 Juin 2004 -> Ajout du module de recherche dans les noms.

-------------------------------------

Merci de donner votre note ainsi que mettre vos commentaires !!!

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.