Advertisement
Mikeellee

projekt_hurt

Feb 13th, 2020
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.99 KB | None | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <conio.h>
  4. #include <fstream>
  5. #include <cstdlib>
  6.  
  7. using namespace std;
  8.  
  9. struct dostawca {
  10.     int id;
  11.     string nazwa;
  12.     int nip;
  13.     dostawca *nastepna;    // wskaznik na nastêpny element
  14.     dostawca();            // konstruktor
  15. };
  16.  
  17. dostawca::dostawca() {
  18.     nastepna = 0;       // konstruktor
  19. }
  20.  
  21. struct lista {
  22.     dostawca *pierwsza;  // wskaznik na pocz¹tek listy
  23.     void dodaj_dostawce ();
  24.     void usun_dostawce ();
  25.     void wyswietl_menu ();
  26.     void zam_dostawca();
  27.     lista();
  28. };
  29.  
  30. lista::lista() {
  31.     pierwsza = 0;       // konstruktor
  32. }
  33. void lista::dodaj_dostawce()
  34. {
  35.     string nazwa;
  36.      int nip;
  37.     cout<<"nazwa: ";
  38.                 getline(cin,nazwa);
  39.                 getline(cin,nazwa);
  40.                 cout<<"Podaj nip: ";
  41.                 cin>>nip;
  42.     dostawca *nowa = new dostawca;    // tworzy nowy element listy
  43.     nowa->nazwa = nazwa;
  44.     nowa->nip = nip;
  45.  
  46.     if (pierwsza==0) // sprawdzamy czy to pierwszy element listy
  47.     {
  48.         // je¿eli tak to nowy element jest teraz poczatkiem listy
  49.         pierwsza = nowa;
  50.     }
  51.     else
  52.     {
  53.         // w przeciwnym wypadku wêdrujemy na koniec listy
  54.         dostawca *temp = pierwsza;
  55.  
  56.         while (temp->nastepna)
  57.         {
  58.             // znajdujemy wskaŸnik na ostatni element
  59.             temp = temp->nastepna;
  60.         }
  61.  
  62.         temp->nastepna = nowa;  // ostatni element wskazuje na nasz nowy
  63.         nowa->nastepna = 0;     // ostatni nie wskazuje na nic
  64.     }
  65. }
  66.  
  67. void lista::wyswietl_menu()
  68. {
  69.     system("cls");
  70.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
  71.         cout<<"================================="<<endl<<"Lista dostawcow"<<endl<<endl;
  72.     // wskaznik na pierszy element listy
  73.     dostawca *temp = pierwsza;
  74.     int a;
  75.     a=1;
  76.     // przewijamy wskazniki na nastepne elementy
  77.     while (temp)
  78.     {
  79.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  80.             cout <<"id: ";
  81.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  82.             cout<< a;
  83.             temp->id = a;
  84.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  85.             cout<< " nazwa dostawcy: ";
  86.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  87.             cout<< temp->nazwa;
  88.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  89.             cout<<" nip: ";
  90.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  91.             cout<< temp->nip<< endl;
  92.  
  93.         temp=temp->nastepna;
  94.         a++;
  95.     }
  96.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
  97.         cout<<"================================="<<endl;
  98. }
  99.  
  100. void lista::zam_dostawca()
  101. {
  102.     fstream dostawcy_txt;
  103.         int nr1;
  104.         cout<<"Podaj id dostawcy: ";
  105.         cin>>nr1;
  106.  
  107.         dostawca *temp = pierwsza;
  108.         int i,j=1;
  109.  
  110.     while(temp)
  111.     {
  112.         if(nr1==j)
  113.         {
  114.         dostawcy_txt.open("zamowienie.txt",ios::out);
  115.         dostawcy_txt<<"======Zamowienie======\nId dostawcy:     "<<temp->id<<endl;
  116.         dostawcy_txt<<"Nazwa dostwcy:   "<<temp->nazwa<<endl;
  117.         dostawcy_txt<<"NIP    dostawcy: "<<temp->nip<<endl;
  118.  
  119.         dostawcy_txt.close();
  120.         break;
  121.         }
  122.         temp = temp->nastepna;
  123.         j++;
  124.     }
  125. }
  126.  
  127. void lista::usun_dostawce ()
  128. {
  129.     int nr;
  130.     cout<<"Podaj id dostawcy do usuniecia: ";
  131.     cin>>nr;
  132.     if (nr==1)
  133.     {
  134.         dostawca *temp = pierwsza;
  135.         pierwsza = temp->nastepna;
  136.     }
  137.    
  138.     else
  139.     {
  140.         int j = 1;
  141.  
  142.         dostawca *temp = pierwsza;
  143.         while (temp)
  144.         {
  145.             if ((j+1)==nr) break;
  146.            
  147.             temp = temp->nastepna;
  148.             j++;
  149.         }
  150.  
  151.         if (temp->nastepna->nastepna==0)
  152.             temp->nastepna = 0;
  153.  
  154.         else
  155.             temp->nastepna = temp->nastepna->nastepna;
  156.     }
  157. }
  158.  
  159. struct towar {
  160.     int id;
  161.     string nazwa;
  162.     string nazwisko;
  163.     int ilosc;
  164.     towar *nastepna;    // wskaŸnik na nastêpny element
  165.     towar();            // konstruktor
  166. };
  167.  
  168. towar::towar() {
  169.     nastepna = 0;       // konstruktor
  170. }
  171.  
  172. struct lista2 {
  173.     towar *pierwsza;  // wskaŸnik na pocz¹tek listy
  174.     void dodaj_towar ();
  175.     void usun_towar ();
  176.     void wyswietl_menu2 ();
  177.     void zam_towar();
  178.     lista2();
  179. };
  180.  
  181. lista2::lista2() {
  182.     pierwsza = 0;       // konstruktor
  183. }
  184. void lista2::dodaj_towar()
  185. {
  186.     string nazwa;
  187.     int ilosc;
  188.     cout<<"Podaj nazwe: ";
  189.     getline(cin,nazwa);
  190.     getline(cin,nazwa);
  191.     cout<<"Podaj ilosc: ";
  192.     cin>>ilosc;
  193.  
  194.     towar *nowa = new towar;    // tworzy nowy element listy
  195.     nowa->nazwa = nazwa;
  196.     nowa->ilosc = ilosc;
  197.  
  198.     if (pierwsza==0) // sprawdzamy czy to pierwszy element listy
  199.     {
  200.         // je¿eli tak to nowy element jest teraz pocz¹tkiem listy
  201.         pierwsza = nowa;
  202.     }
  203.  
  204.     else
  205.     {
  206.         // w przeciwnym wypadku wêdrujemy na koniec listy
  207.         towar *temp = pierwsza;
  208.  
  209.         while (temp->nastepna)
  210.         {
  211.             // znajdujemy wskaŸnik na ostatni element
  212.             temp = temp->nastepna;
  213.         }
  214.  
  215.         temp->nastepna = nowa;  // ostatni element wskazuje na nasz nowy
  216.         nowa->nastepna = 0;     // ostatni nie wskazuje na nic
  217.     }
  218. }
  219.  
  220. void lista2::wyswietl_menu2()
  221. {
  222.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
  223.         cout<<"================================="<<endl<<"Lista towarow"<<endl<<endl;
  224.     // wskaznik na pierszy element listy
  225.     towar *temp = pierwsza;
  226.     //cout<<"Pierwsza z wyswietl: "<<pierwsza<<endl;
  227.     int a;
  228.     a=1;
  229.     // przewijamy wskazniki na nastepne elementy
  230.     while (temp)
  231.     {
  232.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  233.             cout <<"id: ";
  234.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  235.             cout<< a;
  236.             temp->id = a;
  237.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  238.             cout<< " nazwa towaru: ";
  239.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  240.             cout<< temp->nazwa;
  241.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  242.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  243.             cout<< temp->nazwisko;
  244.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  245.             cout<<" ilosc: ";
  246.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  247.             cout<< temp->ilosc<< endl;
  248.  
  249.         temp=temp->nastepna;
  250.         a++;
  251.     }
  252.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
  253.         cout<<"================================="<<endl;
  254.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  255.  
  256.         cout<<"     Menu"<<endl;
  257.         cout<<"1 - dodaj dostawce"<<endl;
  258.         cout<<"2 - usun  dostawce"<<endl;
  259.         cout<<"3 - dodaj towar"<<endl;
  260.         cout<<"4 - usun  towar"<<endl;
  261.         cout<<"5 - stworz zamowienie"<<endl;
  262.  
  263.  
  264.  
  265.         cout<<"9 - exit"<<endl;
  266.  
  267. }
  268.  
  269.  
  270. void lista2::zam_towar()
  271. {
  272.     fstream dostawcy_txt;
  273.     int nr1,po;
  274.     dostawcy_txt.open("zamowienie.txt",ios::out|ios::app);
  275.                 dostawcy_txt<<"\n\n===Towary==="<<endl;
  276.                 dostawcy_txt.close();
  277.  
  278.     while(TRUE)
  279.                 {
  280.                     cout<<"id towar: ";
  281.                 cin>>nr1;
  282.  
  283.                 towar *temp = pierwsza;
  284.  
  285.         int i,j=1;
  286.        // zamowienie_txt.open("zam1.txt",ios::out);
  287.     //dostawca *temp2 = pierwsza;
  288.     while(temp)
  289.     {
  290.         if(nr1==j)
  291.         {
  292.         dostawcy_txt.open("zamowienie.txt",ios::out|ios::app);
  293.     //dostawca *temp2 = pierwsza;
  294.    // while (temp2)
  295.     //{
  296.         dostawcy_txt<<"ID towaru:       "<<temp->id<<endl;
  297.         dostawcy_txt<<"Nazwa towaru:    "<<temp->nazwa<<endl;
  298.         //dostawcy_txt<<"Nazwa towaru2:   "<<temp->nazwisko<<endl;
  299.         dostawcy_txt<<"Ilosc towaru:    "<<temp->ilosc<<endl<<endl;
  300.  
  301.         //temp2=temp2->nastepna;
  302.     //}
  303.         dostawcy_txt.close();
  304.         break;
  305.         }
  306.         temp = temp->nastepna;
  307.         j++;
  308.  
  309.     }
  310.  
  311.  
  312.  
  313.  
  314.                 cout<<"Czy chcesz dodac kolejny towar?(0-nie;1-tak) ";
  315.                 cin>>po;
  316.                 if(po==0)
  317.                         break;
  318.  
  319.  
  320.  
  321.  
  322.  
  323.     //int nr1,po;
  324.     //cout<<"Podaj id towaru: ";
  325.     //cin>>nr1;
  326.  
  327.     //towar_txt.open("dostawa",ios::out|ios::app);
  328.                 }
  329. }
  330.  
  331. void lista2::usun_towar()
  332. {
  333.     int nr;
  334.     cout<<"Podaj id towaru do usuniecia: ";
  335.     cin>>nr;
  336.     if (nr==1)
  337.     {
  338.         towar *temp = pierwsza;
  339.         pierwsza = temp->nastepna; //poczatek listy, 1 el. wskazuje na 2 el. itd..
  340.     }
  341.  
  342.     if (nr>=2)
  343.     {
  344.         int j = 1;
  345.         towar *temp = pierwsza;
  346.  
  347.         while (temp)
  348.         {
  349.             // sprawdzamy czy wskaznik jest na osobie n-1 niz usuwana
  350.             if ((j+1)==nr) break;
  351.  
  352.             // jezeli nie to przewijamy petle do przodu
  353.             temp = temp->nastepna;
  354.             j++;
  355.         }
  356.  
  357.         if (temp->nastepna->nastepna==0)
  358.             temp->nastepna = 0;
  359.  
  360.         // jezeli nie byl to ostatni element
  361.         else
  362.             temp->nastepna = temp->nastepna->nastepna;
  363.     }
  364. }
  365.  
  366.  
  367. int main()
  368. {
  369.     lista *baza = new lista;
  370.     lista2 *baza2 = new lista2;
  371.     int wybor;
  372.  
  373.     while (true)
  374.     {
  375.         baza->wyswietl_menu();
  376.         baza2->wyswietl_menu2();
  377.  
  378.         cin>>wybor;
  379.         switch(wybor)
  380.         {
  381.             case 1:
  382.                 baza->dodaj_dostawce();
  383.                 break;
  384.             case 2:
  385.                 baza->usun_dostawce();
  386.                 break;
  387.             case 3:
  388.                 baza2->dodaj_towar();
  389.                 break;
  390.             case 4:
  391.                 baza2->usun_towar();
  392.                 break;
  393.             case 5:
  394.                 baza->zam_dostawca();
  395.                 baza2->zam_towar();
  396.                 break;
  397.             case 9:
  398.                 delete (baza);
  399.                 exit(0);
  400.                 break;
  401.         }
  402.     }
  403.     return 0;
  404. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement