Advertisement
MARSHAL327

Untitled

Nov 14th, 2019
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.71 KB | None | 0 0
  1. #include <fstream>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <iomanip>
  5. #include <conio.h>
  6. #include <iostream>
  7. #include <locale.h>
  8. #include <windows.h>
  9. using namespace std;
  10. const int d_n = 20;
  11. //-------------------------------------------
  12. struct book{
  13.     char autor[d_n];
  14.     char name[d_n];
  15.     char izdatelstvo[d_n];
  16.     char janr[d_n];
  17.     int d,m,g,cost;
  18.     book *next;
  19.     book *pred;
  20. };
  21. //-------------------------------------------
  22. book* dob(book* end, const book& s);
  23. book* dob_first(const book& s);
  24. book* udal(book* beg);
  25. book vvod_book();
  26. book*variant(book* beg,const book& s);
  27. void print(const book& s);
  28. void prosmotr(book* beg);
  29. void sort (const book*s);
  30. void searchname(book * beg);
  31. int read_file(char* filename, book** beg, book** end);
  32. int write_file(char* filename, book* temp);
  33. int menu();
  34. //--------îñíîâíàÿ ïðîãðàììà-----------------------------------
  35. int main(){
  36.     ShowWindow(GetConsoleWindow(), SW_MAXIMIZE); // ïîëíîýêðàííûé ðåæèì
  37.     setlocale(LC_ALL, "Rus");
  38.    
  39.     book *beg = NULL,
  40.     *end = NULL,input;
  41.     char filename[20];
  42.     int n=0;
  43.     while (1){
  44.         switch (menu())
  45.         {
  46.             case 1:
  47.                 if (beg)
  48.                 end = dob(end,vvod_book());
  49.                 else
  50.                 {
  51.                     beg = dob_first(vvod_book());
  52.                     end = beg;
  53.                 }
  54.                 n++;
  55.                 break;
  56.             case 2:
  57.                 beg = udal(beg);
  58.                 cout << "Íàæìèòå ëþáóþ êëàâèøó" << endl;
  59.                 n=0;
  60.                 cin.get();
  61.                 break;
  62.             case 3:
  63.                 prosmotr(beg);
  64.                 cout<<"!!!"<<n;
  65.                 cin.get();
  66.                 break;
  67.             case 4:
  68.                 write_file(filename,beg);
  69.                 break;
  70.             case 5:
  71.                 read_file(filename, &beg, &end);
  72.                 break;
  73.             case 6:
  74.             //  beg = variant();
  75.                 searchname(beg);
  76.                 break; 
  77.             case 7: return 0;
  78.             default:
  79.                 cout << "Âàì ñëåäóåò ââåñòè íîìåð îò 1 äî 5" << endl;
  80.                 cin.get();
  81.                 break;
  82.         }
  83.     }
  84.     return 0;
  85. }
  86.  
  87. //-----------------------------------------------------------------------------
  88. void searchname(book * beg)
  89. {
  90.     book *temp = beg;
  91.     char fname[d_n];
  92.      
  93.     system ("cls");
  94.      
  95.     if (!beg) {
  96.     MessageBox(0, "Ñïèñîê ïóñò", "Óâåäîìëåíèå", MB_ICONINFORMATION | MB_SETFOREGROUND);
  97.     return;
  98.     }
  99.      
  100.     cout << "Ââåäèòå íàçâàíèå êíèãè äëÿ ïîèñêà" << endl;
  101.     cin >> fname;
  102.      
  103.     while (temp) {
  104.         if (strcmp(fname, temp->name) == 0) {
  105.             cout<<"+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+"<<endl;
  106.             cout<<"|       Àâòîð       |      Íàçâàíèå      |   Èçäàòåëüñòâî   |      Æàíð      | Äàòà ïîñòóïëåíèÿ |   Ñòîèìîñòü   |"<<endl;
  107.             cout<<"+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+"<<endl;
  108.             print(*temp);
  109.             system ("pause");
  110.             return;
  111.         }
  112.         temp = temp->next;
  113.  
  114.     }
  115.     cout << "Êíèãè ñ òàêèì íàçâàíèåì íå íàéäåíî" << endl;
  116.     system ("pause");
  117. }
  118. //----------------------------------------------------------------
  119. sort(const book& s,book* beg){
  120. /*  if (!beg){
  121.         book*temp=new book;
  122.         if (!temp)
  123.         {
  124.             cout <<"Íå õâàòàåò ïàìÿòè!"<<endl;
  125.             return 0;
  126.         }
  127.         *temp=s;
  128.         temp->next=NULL;
  129.         beg=temp;
  130.         return beg;
  131.     }*/
  132.        
  133. //  book*T=new book;
  134. /*  book *temp=new book;
  135.     *temp=*beg;
  136.     book *temp2=new book;
  137.     *temp2=*beg->next; 
  138.     for (temp;temp->next!=NULL;temp->next)
  139.     {
  140.         for (temp2;temp2!=NULL;temp2->next)
  141.         {
  142.             if (s[temp].g != s[temp2].g)
  143.             {
  144.                 if(s[temp].g > s[temp2].g)
  145.                 {
  146.                     T=s[temp];
  147.                     s[temp]=s[temp2];
  148.                     s[temp2]=T;
  149.                     continue;
  150.                 }
  151.             }
  152.             else if (s[temp].m != s[temp2].m)
  153.             {
  154.                 if (s[temp].m > s[temp2].m)
  155.                 {
  156.                     T=s[temp];
  157.                     s[temp]=s[temp2];
  158.                     s[temp2]=T;
  159.                     continue;
  160.                 }
  161.             }
  162.             else if (s[temp].d > s[temp2].d)
  163.             {
  164.                 T=s[temp];
  165.                 s[temp]=s[temp2];
  166.                 s[temp2]=temp;
  167.             }
  168.         }
  169.     }*/
  170. }
  171.  
  172. //-----------------------------------------------------------------------------
  173. void prosmotr(book *beg)
  174. {
  175.     if (!beg)
  176.     {
  177.         cout << "ñïèñîê ïóñòîé" << endl;
  178.         cin.get();
  179.         return ;
  180.     }
  181.     book *temp = beg;
  182.  
  183.     cout<<"+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+"<<endl;
  184.     cout<<"|       Àâòîð       |      Íàçâàíèå      |   Èçäàòåëüñòâî   |      Æàíð      | Äàòà ïîñòóïëåíèÿ |   Ñòîèìîñòü   |"<<endl;
  185.     cout<<"+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+"<<endl;
  186.  
  187.     while (temp)
  188.     {
  189.         print(*temp);
  190.         temp = temp->next;
  191.     }
  192.    
  193.     cout<<"+———————————————————+————————————————————+——————————————————+————————————————+——————————————————+———————————————+"<<endl;
  194.     cin.get();
  195. }
  196.  
  197. //-----------------------------------------------------------------------------
  198. void print(const book& s)
  199. {
  200.  
  201. cout << "|" << s.autor << setw( 20 - strlen(s.autor) ) << "|";
  202. cout << s.name << setw( 21 - strlen(s.name) ) << "|";
  203. cout << s.izdatelstvo << setw( 19 - strlen(s.izdatelstvo) ) << "|";
  204. cout << s.janr << setw( 17 - strlen(s.izdatelstvo) ) << "|";
  205. if (s.d<10) cout << 0 << s.d << ".";
  206. if (s.m<10) cout << 0 << s.m << "." << s.g << setw( 19 ) << "|";
  207. cout << s.cost << setw( 16 ) << "|" << endl;
  208.  
  209. }
  210. //--------------ô-ÿ äîáàâëåíèÿ èëè ñîçäàíèÿ ýë-òà-------------------------------
  211. book* dob(book *end,const book& s)
  212. {
  213.     book *newE = new book;
  214.     *newE = s;
  215.     newE->next = 0;
  216.     end->next = newE;
  217.     end = newE;
  218.     return end;
  219. }
  220. //--------------ñîçäàíèå ïåðâîãî ýë-òà------------------------------
  221. book* dob_first(const book& s)
  222. {
  223.     book *beg = new book;
  224.     *beg = s;
  225.     beg->next = 0;
  226.     return beg;
  227. }
  228. //-----------------------------------------------------------------------------
  229. book vvod_book()
  230. {  
  231.     char buf[10];
  232.     book s;
  233.     cout << "Ââåäèòå àâòîðà:" << endl;
  234.     while (1){ 
  235.     cin>>s.autor;
  236.     if (atoi(s.autor)==0)
  237.     break;
  238.     cout<<"Îøèáêà ââîäà!"<<endl;
  239.     }
  240.     cout << "Ââåäèòå íàçâàíèå êíèãè:" << endl;
  241.     while (1){ 
  242.     cin>>s.name;
  243.     if (atoi(s.name)==0)
  244.     break;
  245.     cout<<"Îøèáêà ââîäà!"<<endl;
  246.     }
  247.     cout << "Ââåäèòå èçäàòåëüñòâî:" << endl;
  248.     while (1){ 
  249.     cin>>s.izdatelstvo;
  250.     if (atoi(s.izdatelstvo)==0)
  251.     break;
  252.     cout<<"Îøèáêà ââîäà!"<<endl;
  253.     }
  254.     cout << "Ââåäèòå æàíð:" << endl;
  255.    
  256.     while (1){ 
  257.     cin>>s.janr;
  258.     if (atoi(s.janr)==0)
  259.     break;
  260.     cout<<"Îøèáêà ââîäà!"<<endl;
  261.     }
  262.     cout << "Ââåäèòå äàòó ïîñòóïëåíèÿ:" << endl;
  263.     cout <<"Ââåäèòå äåíü:";
  264.     while(1){
  265.     cin>>s.d;
  266.     if ((s.d>=1)&&(s.d<=31))
  267.     break;
  268.     cout<<"Îøèáêà ââîäà!Âåäèòå ïðàâèëüíóþ äàòó!"<<endl;
  269.     }
  270.     cout <<"Ââåäèòå ìåñÿö:";
  271.     while(1){
  272.     cin>>s.m;
  273.     if ((s.m>=1)&&(s.m<=12))
  274.     break;
  275.     cout<<"Îøèáêà ââîäà!Âåäèòå ïðàâèëüíóþ äàòó!"<<endl;
  276.     }
  277.     cout <<"Ââåäèòå ãîä:";
  278.     while(1){
  279.     cin>>s.g;
  280.     if ((s.g>=1900)&&(s.g<=2050))
  281.     break;
  282.     cout<<"Îøèáêà ââîäà!Âåäèòå ïðàâèëüíóþ äàòó!"<<endl;
  283.     }
  284.     cout << "Ââåäèòå ñòîèìîñòü êíèãè:" << endl;
  285.     cin>>s.cost;
  286.     return s;
  287. }
  288.  
  289. //-----------------------------------------------------------------------------
  290. /*book* variant(book* beg,const book& s)
  291. {
  292.    
  293. if (!beg)
  294. {
  295.     book* temp=new book;
  296.     if(!temp)
  297.     {
  298.         cout<<"Íå õâàòàåò ïàìÿòè"<<endl;
  299.         return NULL;   
  300.     }
  301.     *temp = s;
  302.     temp->next=NULL;
  303.     beg=temp;
  304.     return beg;
  305. }
  306. book*new_book=new book;
  307. if (!new_book)
  308. {
  309.     cout<<"Íå õâàòàåò ïàìÿòè"<<endl;
  310.     return beg;    
  311. }
  312. book* temp=beg;
  313. *new_book=s;
  314. new_book->next=NULL;
  315. if (strcmp(new_book->name,temp->name)<=0)
  316. {
  317.     new_book->next=temp;
  318.     return new_book;
  319. }  
  320. else
  321. {
  322.     if(!temp->next&&strcmp(new_book->name,temp->name)>=0)
  323.     {
  324.         temp->next=new_book;
  325.         return beg;
  326.     }
  327. }
  328. while (temp->next->next && strcmp(new_book->name,temp->next->name)>=0)
  329. {
  330.     temp = temp->next;
  331. }
  332. if(!temp->next->next)
  333. {
  334.     if(strcmp(new_book->name,temp->next->name)>=0)
  335.     {
  336.         temp->next->next=new_book;
  337.         return beg;
  338.     }
  339.     else
  340.     {
  341.         new_book->next=temp->next;
  342.         temp->next=new_book;
  343.         return beg;
  344.     }
  345.     }
  346.     else
  347.     {
  348.         new_book->next=temp->next;
  349.         temp->next=new_book;
  350.         return beg;
  351.     }
  352. }*/
  353. //-----------------------------------------------------------------------------
  354.  
  355. //-----------------------------------------------------------------------------
  356. int read_file(char* filename,book** beg, book** end)
  357. {
  358.     cout<<"Ââåäèòå íàçâàíèå ôàéëà"<<endl;
  359.     cin>>filename;
  360.     ifstream fin(filename,ios::in);
  361.     if (!fin)
  362.     {
  363.     cout<<"Íåò ôàéëà"<<filename<<endl;
  364.     return 1;
  365.     }
  366.     book s;
  367.     *beg = 0;
  368.     fin.seekg(0, ios::beg);
  369.     while (fin>>s.autor)
  370.     {
  371.         fin>>s.name;
  372.         fin>>s.izdatelstvo;
  373.         fin>>s.janr;
  374.         fin>>s.d;
  375.         fin>>s.m;
  376.         fin>>s.g;
  377.         fin>>s.cost;
  378.         if (*beg)
  379.             *end=dob(*end,s);
  380.         else
  381.         {
  382.             *beg=dob_first(s); *end=*beg;
  383.         }
  384.     }
  385.     cout<<"Ñ÷èòûâàíèå ïðîøëî óñïåøíî"<<endl;
  386.     cin.get();
  387.     cin.get();
  388.     return 0;
  389. }
  390. //-----------------------------------------------------------------------------
  391. int write_file(char* filename, book* temp)
  392. {
  393.     cout<<"Ââåäèòå íàçâàíèå ôàéëà"<<endl;
  394.     cin>>filename;
  395.     ofstream fout(filename, ios_base::app); // îòêðûòèå ôàéëà
  396.     if (!fout)
  397.     {
  398.         cout << "Íå ìîãó îòêðûòü ôàéë äëÿ çàïèñè" << endl;
  399.         return 1;
  400.     }
  401.     while (temp)// ïîêà temp!=0 âûâîäèì ýë-òû â ôàéë
  402.     {
  403.         fout << temp->autor << endl;
  404.         fout << temp->name << endl;
  405.         fout << temp->izdatelstvo << endl;
  406.         fout << temp->janr << endl;
  407.         fout << temp->d<< endl;
  408.         fout <<temp->m<< endl;
  409.         fout <<temp->g<< endl;
  410.         fout << temp->cost << endl;
  411.         temp = temp->next;
  412.     }
  413.     cout << "Äàííûå ñîõðàíåíû â ôàéëå: " << filename << endl;
  414.     cout << "==============================" << endl;
  415.     cout << "Íàæìèòå ëþáóþ êëàâèøó" << endl;
  416.     cin.get();
  417.     return 0;
  418. }
  419. //-----------------------------------------------------------------------------
  420. //-----------------------------------------------------------------------------
  421. int menu()
  422. {
  423.     char buf[10];
  424.     int item;
  425.     do
  426.     {
  427.         system("CLS");
  428.         cout << "1 - Ñîçäàòü ñïèñîê èëè äîáàâèòü íîâûé ýë-ò" << endl;
  429.         cout << "2 - Óäàëåíèå âñåõ ýëåìåíòîâ ñïèñêà" << endl;
  430.         cout << "3 - Ïðîñìîòð ñïèñêà" << endl;
  431.         cout << "4 - Çàïèñü äàííûõ â ôàéë" << endl;
  432.         cout << "5 - ×òåíèå èç ôàéëà" << endl;
  433.         cout << "6 - 5 ñàìûõ ñòàðûõ êíèã" << endl;
  434.         cout << "7 - Âûõîä"<< endl;
  435.         cout << "============================" << endl;
  436.         cout << "Ââåäèòå íîìåð ïóíêòà ìåíþ" << endl;
  437.         cin >> buf;
  438.         cin.get();
  439.         item = atoi(buf);
  440.         if (!item)
  441.         {
  442.             cout << "Âàì ñëåäóåò ââîäèòü ÷èñëî îò 1 äî 7" << endl;
  443.             cin.get();
  444.         }
  445.     }
  446.     while (!item);
  447.     return item;
  448. }
  449. //-----------------------------------------------------------------------------
  450. book* udal(book *beg)
  451. {
  452.     book *temp;
  453.     if (!beg)
  454.     {
  455.         cout << "ñïèñîê ïóñòîé" << endl;
  456.         cin.get();
  457.         return 0;
  458.     }
  459.     while (beg)
  460.     {
  461.         temp = beg;
  462.         beg = beg->next;
  463.         delete temp;
  464.     }
  465.     cout << "==============================" << endl;
  466.     cout << "====óäàëåíèå ïðîøëî óñïåøíî===" << endl;
  467.     cout << "==============================" << endl;
  468.     return beg;
  469. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement