Grand système de gestion d'informations de cahiers de devoirs en C++

#include<iostream>
#include<windows.h>//Utiliser avec system("cls"); pour réaliser l'opération d'effacement d'écran
#include <fstream>//Le fichier d'en-tête inclus dans l'opération de fichier
#include<stdio.h > //Le fichier d'en-tête qui doit être inclus lors de l'utilisation de Sleep()
#include <cstring>
#include<iomanip>
en utilisant l'espace de noms std ;
const unsigned short MAX =11 ;
class book
{ private:     string bookEntrynumber;//book registration number     string bookname;// Nom du livre     string authorname;//nom de l'auteur     string booktype;//classification du livre     string publishaddress;//unité d'édition du livre     string publishtime;//heure de publication du livre     string bookprice;//prix du livre public:     book* next;     chaîne getbookEntrynumber()//la fonction get réalise que les données privées sont appelées en dehors de la classe     {












        retourner le numéro d'entrée du livre ;
    }
    string getbookname()
    {         return bookname;     }     string getauthorname()     {         renvoie le nom de l'auteur ;     }     string getbooktype()     {         return booktype;     }     string getpublishaddress()     {         renvoie l'adresse de publication ;     }     string getpublishtime()     {         renvoie l'heure de publication ;     }     string getbookprice()     {         return bookprice ;     }























    ami istream &     opérateur>>(istream& in, book& p);book& p);//overload output
    void m_bookEntrynumber()//input book data book_Entry_number
    {         cin >> bookEntrynumber;     }     void m_bookname()//input book data book_name     {         cin >> bookname;     }     void m_authorname()//input Book data author_name     {         cin >> authorname;     }     void m_booknumber()// input book data book_number     {         cin >> booktype;     }     void m_publishaddress()// input book data publish_address     {         cin >> publishaddress;     }


















    void m_publishtime()// données de livre d'entrée temps de publication
    {         cin >> heure de publication ;     }     void m_bookprice()// données de livre d'entrée prix_livre     {         cin >> prix de livre ;     }     void Exchangebook (livre* q);//échange d'informations sur le livre } ; istream& operator>>(istream& in, book& p)//Implement surcharged input {     in >> p.bookEntrynumber >> p.bookname >> p.authorname >> p.booktype >> p.publishaddress >> p.publishtime > > p .bookprice;     return in; } ostream& operator<<(ostream& out, book& p)//Réaliser une sortie surchargée (la largeur de données de sortie fixe est MAX, alignée à gauche, { out << setw     (MAX) << setiosflags(ios :: gauche) << p.bookEntrynumber << "\t\t" ;
















    out << setw(MAX) << setiosflags(ios::left) << p.bookname << "\t\t" ;
    out << setw(MAX) << setiosflags(ios::left) << p.authorname << "\t\t" ;
    out << setw(MAX) << setiosflags(ios::left) << p.booktype << "\t\t" ;
    out << setw(MAX) << setiosflags(ios::left) << p.publishaddress << "\t\t" ;
    out << setw(MAX) << setiosflags(ios::left) << p.publishtime << "\t\t" ;
    out << setw(MAX) << setiosflags(ios::left) << p.bookprice << endl;
    revenir;
}
class LibraryManager//图书馆管理类
{ public :





    void showbook(book* q);//Afficher les informations du livre
    void Deletebook(book** q);//Supprimer les informations du livre
    void amendbook(book* q);//Modifier les informations du livre
    void FINDbook(book* q);// Rechercher des informations sur le livre
    void sortbook(book* q);//Trier par prix du livre
    void Exchangebook(book* q);//Utiliser pour l'échange d'informations lors du tri
    void SaveData(book* q);//Enregistrer les données du livre dans un nouveau fichier Medium
    int initbook(book** q);//Lire les informations du livre à partir du fichier
private:
    book* abook;//Le pointeur de classe de livre pointe vers l'en-tête de la liste chaînée
    book* zbook;//Le pointeur de classe de livre pointe vers la fin de la liste chaînée
};
LibraryManager:: LibraryManager()//Constructeur de la classe de gestion de bibliothèque
{     abook = NULL;     initbook(&abook);//Transmettre l'adresse principale de la liste chaînée à init_book } int LibraryManager::initbook (book** q)//Lit depuis le fichier Book information {     int j = 0;// utilisé pour compter le nombre d'informations lues






    ifstream infile("Book information.txt", ios::in);//Lire les données du fichier information.txt du livre
    if (!infile)
    {         cout << "Le chargement du livre a échoué" << endl; // Échec du chargement du livre         Sleep(200);         system("cls");         return 0;     }     while (!infile.eof())     {         book* temp;         temp = new book;         infile >> (*temp);         if (infile. eof() ) { break; }//Lire jusqu'à la fin du fichier, end         j++;         if (*q == NULL)//Vérifier si la liste chaînée est une liste chaînée vide         {             temp->next = NULL;             *q = temp ;         }         else         {             temp->suivant = NULL;




















            (zbook)->next = temp;
        }
        zbook = temp;
    }
    if (j == 0) {         cout << "Le fichier livre est vide" << endl;         Sleep(200);         system("cls");     }     else      {         cout << "Lire les données du fichier" << endl;         Sleep(300);         system("cls");     }     infile.close();     return 1; } void LibraryManager ::Menu() {     cout << "------------Bienvenue dans le système de gestion des informations de la bibliothèque ------------------" << endl;     cout << " 1---Augmenter les informations sur le livre 2---Afficher les informations sur le livre" << endl;     cout << " 3---Supprimer les informations sur le livre 4---Modifier les informations sur le livre" << endl;


















    cout << " 5---Rechercher des informations sur le livre 6---Trier par prix" << endl;
    cout << " 7--Enregistrer les données du livre dans un nouveau fichier et quitter le système" << endl;
    cout << " - ------------------------------------------------- - ---" << endl;
    cout << "Veuillez entrer votre choix--->";
    char m;
    try 
    {         cin >> m;         if (m < '1' || m>'8') throw - 1;     }     catch (int)     {         cout << "Saisie incorrecte, veuillez ré-entrer" << endl;         cin >> m;     }     switch (m)//Réalisation de la fonction selon le choix de l'utilisateur     {     case '1' :Addbook(&abook); break;//Add book information     case '2': showbook(abook); break;//Display book information     case '3': Deletebook(&abook); break;//Delete book information













    case '4': amendbook(abook); break;//Modify book information
    case '5': FINDbook(abook); break;//Find book information
    case '6': sortbook(abook); break;//Selon login Numéro
    de cas de tri '7' : SaveData(abook); cout << "Bienvenue à utiliser la prochaine fois" << endl; exit(0); break;//Enregistrer les données du livre dans un nouveau cas de fichier '
    8' : initbook( &abook ); break;
    }
}//Lire les informations sur le livre à partir du fichier
void LibraryManager ::Addbook(book** q)//Add book information
{     char m;     cout << "Please enter book information" << endl;     book* p;//Define book class pointer     p = new book;//Apply for storage for p Espace     cout <<"numéro du livre nom du livre nom de l'auteur du livre classification du livre unité d'édition du livre heure de publication du livre prix du livre" << endl;     cin >> *p;     if (*q == NULL) //vérifier si la liste chaînée est vide     {








        p->next = NULL;
        *q = p;
    }//Si la liste chaînée est vide, pointez l'en-tête de la liste chaînée vers p
    else
    {         p->next = NULL;//p est l'avant-dernier nœud, et le le pointeur suivant enregistre la queue La valeur d'adresse du nœud, p pointe vers le nœud final         (zbook)->next = p;//Si la liste chaînée n'est pas vide, pointez la fin de la liste chaînée vers p     }     zbook = p ;     cout << "Ajout réussi, si vous souhaitez continuer l'ajout : oui c, non d : " << endl;     cin >> m;     while (m != 'c' && m != 'd')     {         cout << "Erreur de saisie, veuillez saisir à nouveau :" << endl;         cin >> m;     }     if (m == 'c')     {         Addbook(&abook);         exit(0);     }     else     {         cout << "Retour au menu, veuillez ne pas opérer" << endl;         Sleep(200);




















        system("cls");//Effacer
        le menu de l'écran();
        exit(0);
    }
}
void LibraryManager::showbook(book* q)//Afficher les informations sur le livre
{     book* m = q;//Définir le pointeur de classe de livre Pointez sur l'adresse de la liste chaînée     int k = 0, j = 0;//k contrôle le saut de ligne, j enregistre le livre livre     cout << "numéro du livre nom du livre nom de l'auteur du livre classification du livre unité d'édition du livre heure de publication du livre livre prix du livre" << endl;     tandis que (m != NULL)     {         cout << *m << endl;         k++; j++;         if (k > 10)//Chaque 11 sauts de ligne de données         {             cout << endl << endl; k = k - 11;         }         m = m- >suivant     }     cout << "affichage total" << j << "ce livre" << endl;














    system("pause");
    cout << "Retour au menu, veuillez ne pas opérer" << endl;
    Sleep(200);
    system("cls");
    Menu();
    exit(0);
}
void LibraryManager: : amendbook(book* q)//Modify book information
{     string mp;     char h;     book* p, ctemp;     p = q;     cout << "Veuillez saisir le numéro d'accession du livre à modifier : saisissez NON pour revenir à le menu" << endl ;     cin >> mp;     if (mp == "NO") { system("cls"); Menu(); exit(0); }//revenir au menu     while (p != NULL)     {         if (p->getbookEntrynumber() == mp)break;//found         else { p = p->next; }     }     if (p == NULL)//not found     {         cout << "Aucun tel livre" << endl; 















        Sleep(300);
        amendbook(q);
        exit(0);
    }
    else
    {         system("cls");         ctemp = *p;         cout << "Voici les informations sur le livre :         " << endl; cout << "Numéro du livre, titre du livre, nom de l'auteur du livre, classification du livre, unité d'édition du livre, heure de publication du livre, prix du livre" << endl; cout << *p << endl ; cout         <<         " ********************************" << endl;         cout << "Numéro de livre 0" < < endl;         cout << "Nom du livre 1" << endl;         cout << "Nom de l'auteur du livre 2" << endl;         cout << "Catégorie du livre 3" << endl;         cout << "Unité d'édition du livre 4" << endl;         cout << "Temps de publication du livre 5" << endl;cout << "Temps de publication du livre 5" << endl;cout << "Temps de publication du livre 5" << endl;












p->m_bookEntrynumber(); casser;         case '1':p->m_bookname(); casser;         case '2':p->m_authorname(); casser;



















        case '3':p->m_booknumber(); casser;
        case '4':p->m_publishaddress(); casser;
        case '5':p->m_publishtime(); casser;
        case '6':p->m_bookprice(); casser;
        cas '7' :











        Menu();
        exit(0);
    }
};
void LibraryManager::SaveData(book* q)//Enregistrer les données du livre dans un nouveau fichier ((si le fichier n'existe pas, en créer un nouveau) { book*
m     = q; livre* btemp ;     fstream outfile("Informations sur le livre.txt", ios::out);// Informations sur le livre.txt     if (!outfile)     {         cout << "Échec de l'enregistrement du fichier du livre" << endl;         exit( 0);     }     while ( m != NULL)//La liste chaînée n'est pas vide     {         outfile << *m;//Enregistrer les données dans la liste chaînée en tant que fichier d'entrée et en publier un         btemp = m;         m = m ->next;         delete btemp;//Release Linked list space     }     outfile.close();//Fermer le fichier } void LibraryManager::FINDbook(book* q)//Find book information {


















    char p;
    cout << "Rechercher des livres par nom d'auteur (veuillez saisir n)" << endl;
    cout << "Rechercher des livres par nom de livre (veuillez saisir s)" << endl;
    cout << "Retour au menu (veuillez saisir entrez f)" << endl;
    essayez
    {         cin >> p;         if (p!='n'&&p!='s'&&p!='f') throw - 1 ;     }     catch (int)     {         cout << "Erreur de saisie, veuillez ré-entrer" << endl;         cin >> p;     }     if (p == 'n')     {         string j;         livre* z;         z = q;         int i = 0;         cout << "Veuillez saisir le nom de l'auteur du livre à rechercher" << endl;         cin >> j;         while (z != NULL)         {


















            if (z->getauthorname() == j)//Ce livre a été trouvé
            {                 cout << "Les informations sur le livre sont les suivantes" << endl;                 cout << "ID du livre Nom du livre Nom de l'auteur du livre Catégorie du livre Éditeur de ce livre Heure de publication de ce livre Prix du livre" << endl;                 cout << *z;                 z = z->next;                 i++;             }             else { z = z->next; }//Not found, continue to search         }         if (z == NULL)//Finalement introuvable         {             cout << "Aucun livre de ce type" << endl;             Sleep(200);             FINDbook(q);             exit(0);         }sinon         {

















            system("pause");
            system("cls");
            Menu();
            sortie(0);
        }
    }

    else if(p=='s')// Recherche par titre de livre
    {         string j;         livre* z;         z = q;         int i = 0;         cout << "Veuillez saisir le titre du livre que vous souhaitez rechercher" < < endl;         cin >> j;         tandis que (z != NULL)         {             if (z->getbookname() == j)//Ce livre a été trouvé             {                 cout << "Les informations sur le livre sont les suivantes" << endl;                 cout << "Numéro du livre nom du livre nom de l'auteur du livre Classification des livres Unité d'édition du livre Heure de publication du livre Prix du livre" << endl;                 cout << *z;                 z = z->next;                 i++;             }             else { z = z->next; }//not found, keep looking

















        }
        if (z == NULL)//Finalement introuvable
        {             cout << "Aucun tel livre" << endl;             Sleep(200);             FINDbook(q);             exit(0);         }         else         {             system("pause") ;             system("cls");             Menu();             exit(0);         }     }     else if (p == 'f')     {         system("pause");         system("cls");         Menu();         exit( 0);     } } void LibraryManager::Deletebook(book** q)//Delete book information {























    string m;//Le numéro d'enregistrement du livre à saisir
    book* w; book* ww;
    w = *q;
    cout << "Veuillez saisir le numéro d'enregistrement du livre à supprimer" << endl;
    cin >> m;
    if (w ->getbookEntrynumber() == m)//Trouver le livre à partir de la tête de la liste chaînée
    {         cout << "Les informations d'origine du livre sont les suivantes" << endl;         cout <<"Livre number Nom du livre Nom du livre Nom de l'auteur du livre Classification du livre Unité d'édition de ce livre Date de publication de ce livre Prix du livre de ce livre" << endl;         cout << *w;         (*q) = (*q)->next;/ /Déplacer l'en-tête de la liste chaînée vers la position suivante         delete w;// Libérer l'adresse d'en-tête de la liste chaînée d'origine         cout << "Les informations sur le livre ont été supprimées" << endl;         Sleep(300);         system("cls ");         Menu();         sortie(0); <ai=17> if (w == NULL)//finally not found         {












sortie(0);         }         tandis que (w != NULL)


















        {             if (w->getbookEntrynumber() == m)break;             else             {                 ww = w;//Verrouiller l'adresse suivante du livre cible                 w = w->next;             }         }         if (w == NULL)         {             cout < < "Le livre est introuvable" << endl << "Returning" << endl;             Sleep(500);             Deletebook(q);             exit(0);         }     }     Sleep(200);     system("cls");     Menu ();     exit(0); } void LibraryManager::sortbook(book* q)//Trier par prix (trier toute la liste chaînée) {     book* p = q,* m = q;























    int Long = 0, i, j;
    char k;
    cout << "1. Trier par prix croissant 2. Trier par prix décroissant" << endl;
    try
    {         cin >> k;         if (k < '1' || k >'2') throw - 1;     }     catch (int)     {         cout << "Erreur de saisie, veuillez ré-entrer" << endl;         cin >> k;     }     while (m != NULL)//Si la liste chaînée est vide     {         Long++;//Calculer la longueur de la liste chaînée         m = m->next;     }     m = q;     for (i = 0; i < Long - 1; i++)     {         p = m;         pour ( j = 0; j < Long - 1; j++)         {             si (k == '1')              {





















                if (p->getbookprice() > p->next->getbookprice())//Trier par croissance des prix
                {                     p->Exchangebook(p->next);                 }             }             if (k == '2')              {                 if (p->getbookprice() < p->next->getbookprice())//Trier par prix dans l'ordre décroissant                 {                     p->Exchangebook(p->next);                 }             }             p = p->next;         }     }     cout << "Les livres sont en cours de tri, veuillez patienter" << endl;     Sleep(200);     system("cls");     Menu();     exit(0); }void book::Exchangebook(book* q)//changer les paramètres du livre




















{     chaîne book_Entry_number = this->getbookEntrynumber();     chaîne nom_livre = this->getbookname();     chaîne nom_auteur = this->getnom_auteur();     chaîne book_number = this->getbooktype();     string publish_address = this->getpublishaddress();     chaîne publier_heure = this->getpublishtime();     string book_price = this->getbookprice();     this->bookEntrynumber = q->getbookEntrynumber();     this->bookname = q->getbookname();     this->authorname = q->getauthorname();     this->booktype = q->getbooktype();     this->publishaddress = q->getpublishaddress();     this->publishtime = q->getpublishtime();













    this->bookprice = q->getbookprice();
    q->bookEntrynumber = book_Entry_number ;
    q->bookname = book_name ;
    q->nom_auteur = nom_auteur ;
    q->booktype = book_number ;
    q->adresse_publiée = adresse_publiée ;
    q->publier l'heure = publier_heure ;
    q->bookprice = book_price ;
}
int main()
{     Gestionnaire de LibraryManager ;     manager.Menu();//调用菜单     return 0; }




 

Guess you like

Origin blog.csdn.net/qq_64605223/article/details/122294980