Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <windows.h>
- #include <conio.h>
- #include <fstream>
- #include <cstdlib>
- using namespace std;
- fstream dostawcy_txt;
- fstream towar_txt;
- fstream zamowienie_txt;
- struct dostawca {
- int id;
- string nazwa;
- //string nazwisko;
- int nip;
- dostawca *nastepna; // wskaŸnik na nastêpny element
- dostawca(); // konstruktor
- };
- dostawca::dostawca() {
- nastepna = 0; // konstruktor
- }
- struct lista {
- dostawca *pierwsza; // wskaŸnik na pocz¹tek listy
- void dodaj_dostawce (string nazwa, int nip);
- void usun_dostawce (int nr);
- void usun_all ();
- void wyswietl_liste ();
- void zapisz_do_pliku();
- void zapisz_do_pliku3(int nr1);
- void wczytaj();
- //void zamowienie();
- lista();
- };
- lista::lista() {
- pierwsza = 0; // konstruktor
- }
- void lista::dodaj_dostawce(string nazwa, int nip)
- {
- dostawca *nowa = new dostawca; // tworzy nowy element listy
- // wype³niamy naszymi danymi
- nowa->nazwa = nazwa;
- //nowa->nazwisko = nazwisko;
- nowa->nip = nip;
- if (pierwsza==0) // sprawdzamy czy to pierwszy element listy
- {
- // je¿eli tak to nowy element jest teraz pocz¹tkiem listy
- pierwsza = nowa;
- }
- else
- {
- // w przeciwnym wypadku wêdrujemy na koniec listy
- dostawca *temp = pierwsza;
- while (temp->nastepna)
- {
- // znajdujemy wskaŸnik na ostatni element
- temp = temp->nastepna;
- }
- temp->nastepna = nowa; // ostatni element wskazuje na nasz nowy
- nowa->nastepna = 0; // ostatni nie wskazuje na nic
- }
- }
- void lista::wyswietl_liste()
- {
- // wskaznik na pierszy element listy
- dostawca *temp = pierwsza;
- int a;
- a=1;
- // przewijamy wskazniki na nastepne elementy
- while (temp)
- {
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
- cout <<"id: ";
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
- cout<< a;
- temp->id = a;
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
- cout<< " nazwa: ";
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
- cout<< temp->nazwa;
- //SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
- //cout<< " nazwisko: ";
- //SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
- //cout<< temp->nazwisko;
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
- cout<<" nip: ";
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
- cout<< temp->nip<< endl;
- temp=temp->nastepna;
- a++;
- }
- }
- void lista::zapisz_do_pliku3(int nr1)
- {
- // jezeli to pierwszy element listy
- //if (nr1==1)
- //{
- dostawca *temp = pierwsza;
- int i,j=1;
- // zamowienie_txt.open("zam1.txt",ios::out);
- //dostawca *temp2 = pierwsza;
- while(temp)
- {
- if(nr1==j)
- {
- dostawcy_txt.open("zamowienie.txt",ios::out);
- //dostawca *temp2 = pierwsza;
- // while (temp2)
- //{
- dostawcy_txt<<"======Zamowienie======\nId dostawcy: "<<temp->id<<endl;
- dostawcy_txt<<"Nazwa dostwcy: "<<temp->nazwa<<endl;
- //dostawcy_txt<<"Nazwa2 dostawcy: "<<temp->nazwisko<<endl;
- dostawcy_txt<<"NIP dostawcy: "<<temp->nip<<endl;
- //temp2=temp2->nastepna;
- //}
- dostawcy_txt.close();
- break;
- }
- temp = temp->nastepna;
- j++;
- }
- //zamowienie_txt.close();
- // pierwsza = temp->nastepna; //poczatek listy, 1 el. wskazuje na 2 el. itd..
- }
- void lista::zapisz_do_pliku()
- {
- dostawcy_txt.open("dostawcy.txt",ios::out);
- dostawca *temp2 = pierwsza;
- while (temp2)
- {
- dostawcy_txt<<temp2->id<<endl;
- dostawcy_txt<<temp2->nazwa<<endl;
- //dostawcy_txt<<temp2->nazwisko<<endl;
- dostawcy_txt<<temp2->nip<<endl;
- temp2=temp2->nastepna;
- }
- dostawcy_txt.close();
- }
- void lista::wczytaj()
- {
- string linia;
- dostawcy_txt.open("dostawcy.txt",ios::in);
- int nr_linii=1;
- string nazwa, nazwisko;
- int nip,id;
- while (getline(dostawcy_txt, linia))
- {
- switch(nr_linii)
- {
- //case 1:
- // id=atoi(linia.c_str());
- //cout<<id<<endl; break;
- case 2:
- nazwa=linia;
- cout<<nazwa<<endl;break;
- //nowa->nazwa = linia;break;
- case 3:
- nazwisko=linia;
- cout<<nazwisko<<endl;break;
- //nowa->nazwisko=linia;break;
- case 4:
- nip=atoi(linia.c_str());
- cout<<nip<<endl;break;
- //nowa->nip=nip; break;
- }
- if(nr_linii==4)
- {
- nr_linii=0;
- dostawca *nowa = new dostawca; // tworzy nowy element listy
- // wype³niamy naszymi danymi
- nowa->nazwa = nazwa;
- //nowa->nazwisko = nazwisko;
- nowa->nip = nip;
- if (pierwsza==0) // sprawdzamy czy to pierwszy element listy
- {
- // je¿eli tak to nowy element jest teraz pocz¹tkiem listy
- pierwsza = nowa;
- }
- else
- {
- // w przeciwnym wypadku wêdrujemy na koniec listy
- dostawca *temp = pierwsza;
- while (temp->nastepna)
- {
- // znajdujemy wskaŸnik na ostatni element
- temp = temp->nastepna;
- }
- temp->nastepna = nowa; // ostatni element wskazuje na nasz nowy
- nowa->nastepna = 0; // ostatni nie wskazuje na nic
- }
- }
- nr_linii++;
- }
- dostawcy_txt.close();
- getch();getch();
- }
- void lista::usun_dostawce (int nr)
- {
- // jezeli to pierwszy element listy
- if (nr==1)
- {
- dostawca *temp = pierwsza;
- pierwsza = temp->nastepna; //poczatek listy, 1 el. wskazuje na 2 el. itd..
- }
- // je¿eli nie jest to pierwszy element
- if (nr>=2)
- {
- int j = 1;
- // do usuniecia srodkowego elemetnu potrzebujemy wskaznika na dostawce n-1
- // wskaznik *temp bedzie wskaznikiem na dostawce poprzedzajaca dostawce usuwana
- dostawca *temp = pierwsza;
- while (temp)
- {
- // sprawdzamy czy wskaznik jest na osobie n-1 niz usuwana
- if ((j+1)==nr) break;
- // jezeli nie to przewijamy petle do przodu
- temp = temp->nastepna;
- j++;
- }
- // wskaznik *temp wskazuje teraz na dostawce n-1
- // nadpisujemy wkaznik osoby n na dostawce n+1
- // bezpowrotnie tracimy dostawce n-ta
- // dodatkowo sprawdzamy czy aby nie jest to ostatni element
- // wtedy nalezy wyzerowac ostatni wskaznik
- if (temp->nastepna->nastepna==0)
- temp->nastepna = 0;
- // jezeli nie byl to ostatni element
- else
- temp->nastepna = temp->nastepna->nastepna;
- }
- }
- void lista::usun_all ()
- {
- pierwsza=0;
- }
- struct towar {
- int id;
- string nazwa;
- string nazwisko;
- int ilosc;
- towar *nastepna; // wskaŸnik na nastêpny element
- towar(); // konstruktor
- };
- towar::towar() {
- nastepna = 0; // konstruktor
- }
- struct lista2 {
- towar *pierwsza; // wskaŸnik na pocz¹tek listy
- void dodaj_towar (string nazwa, string nazwisko, int ilosc);
- void usun_towar (int nr);
- void usun_all2 ();
- void wyswietl_liste2 ();
- void zapisz_do_pliku2();
- void zapisz_do_pliku4(int nr1);
- void wczytaj2();
- void zamowienie2();
- lista2();
- };
- lista2::lista2() {
- pierwsza = 0; // konstruktor
- }
- void lista2::dodaj_towar(string nazwa, string nazwisko, int ilosc)
- {
- towar *nowa = new towar; // tworzy nowy element listy
- // wype³niamy naszymi danymi
- nowa->nazwa = nazwa;
- nowa->nazwisko = nazwisko;
- nowa->ilosc = ilosc;
- if (pierwsza==0) // sprawdzamy czy to pierwszy element listy
- {
- // je¿eli tak to nowy element jest teraz pocz¹tkiem listy
- pierwsza = nowa;
- }
- else
- {
- // w przeciwnym wypadku wêdrujemy na koniec listy
- towar *temp = pierwsza;
- while (temp->nastepna)
- {
- // znajdujemy wskaŸnik na ostatni element
- temp = temp->nastepna;
- }
- temp->nastepna = nowa; // ostatni element wskazuje na nasz nowy
- nowa->nastepna = 0; // ostatni nie wskazuje na nic
- }
- }
- void lista2::wyswietl_liste2()
- {
- // wskaznik na pierszy element listy
- towar *temp = pierwsza;
- //cout<<"Pierwsza z wyswietl: "<<pierwsza<<endl;
- int a;
- a=1;
- // przewijamy wskazniki na nastepne elementy
- while (temp)
- {
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
- cout <<"id: ";
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
- cout<< a;
- temp->id = a;
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
- cout<< " nazwa: ";
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
- cout<< temp->nazwa;
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
- cout<< " nazwisko: ";
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
- cout<< temp->nazwisko;
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
- cout<<" ilosc: ";
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
- cout<< temp->ilosc<< endl;
- temp=temp->nastepna;
- a++;
- }
- }
- void lista2::zapisz_do_pliku2()
- {
- towar_txt.open("towar.txt",ios::out);
- towar *temp2 = pierwsza;
- while (temp2)
- {
- towar_txt<<temp2->id<<endl;
- towar_txt<<temp2->nazwa<<endl;
- towar_txt<<temp2->nazwisko<<endl;
- towar_txt<<temp2->ilosc<<endl;
- temp2=temp2->nastepna;
- }
- towar_txt.close();
- }
- void lista2::zapisz_do_pliku4(int nr1)
- {
- //towar_txt.open("dostawa",ios::out|ios::app);
- towar *temp = pierwsza;
- int i,j=1;
- // zamowienie_txt.open("zam1.txt",ios::out);
- //dostawca *temp2 = pierwsza;
- while(temp)
- {
- if(nr1==j)
- {
- dostawcy_txt.open("zamowienie.txt",ios::out|ios::app);
- //dostawca *temp2 = pierwsza;
- // while (temp2)
- //{
- dostawcy_txt<<"ID towaru: "<<temp->id<<endl;
- dostawcy_txt<<"Nazwa towaru: "<<temp->nazwa<<endl;
- dostawcy_txt<<"Nazwa towaru2: "<<temp->nazwisko<<endl;
- dostawcy_txt<<"Ilosc towaru: "<<temp->ilosc<<endl<<endl;
- //temp2=temp2->nastepna;
- //}
- dostawcy_txt.close();
- break;
- }
- temp = temp->nastepna;
- j++;
- }
- }
- void lista2::wczytaj2()
- {
- string linia;
- towar_txt.open("towar.txt",ios::in);
- int nr_linii=1;
- string nazwa, nazwisko;
- int ilosc,id;
- while (getline(towar_txt, linia))
- {
- switch(nr_linii)
- {
- //case 1:
- // id=atoi(linia.c_str());
- //cout<<id<<endl; break;
- case 2:
- nazwa=linia;
- cout<<nazwa<<endl;break;
- //nowa->nazwa = linia;break;
- case 3:
- nazwisko=linia;
- cout<<nazwisko<<endl;break;
- //nowa->nazwisko=linia;break;
- case 4:
- ilosc=atoi(linia.c_str());
- cout<<ilosc<<endl;break;
- //nowa->nip=nip; break;
- }
- if(nr_linii==4)
- {
- nr_linii=0;
- towar *nowa = new towar; // tworzy nowy element listy
- // wype³niamy naszymi danymi
- nowa->nazwa = nazwa;
- nowa->nazwisko = nazwisko;
- nowa->ilosc = ilosc;
- if (pierwsza==0) // sprawdzamy czy to pierwszy element listy
- {
- // je¿eli tak to nowy element jest teraz pocz¹tkiem listy
- pierwsza = nowa;
- }
- else
- {
- // w przeciwnym wypadku wêdrujemy na koniec listy
- towar *temp = pierwsza;
- while (temp->nastepna)
- {
- // znajdujemy wskaŸnik na ostatni element
- temp = temp->nastepna;
- }
- temp->nastepna = nowa; // ostatni element wskazuje na nasz nowy
- nowa->nastepna = 0; // ostatni nie wskazuje na nic
- }
- }
- nr_linii++;
- }
- towar_txt.close();
- getch();getch();
- }
- void lista2::usun_towar(int nr)
- {
- // jezeli to pierwszy element listy
- if (nr==1)
- {
- towar *temp = pierwsza;
- pierwsza = temp->nastepna; //poczatek listy, 1 el. wskazuje na 2 el. itd..
- }
- // je¿eli nie jest to pierwszy element
- if (nr>=2)
- {
- int j = 1;
- // do usuniecia srodkowego elemetnu potrzebujemy wskaznika na dostawce n-1
- // wskaznik *temp bedzie wskaznikiem na dostawce poprzedzajaca dostawce usuwana
- towar *temp = pierwsza;
- while (temp)
- {
- // sprawdzamy czy wskaznik jest na osobie n-1 niz usuwana
- if ((j+1)==nr) break;
- // jezeli nie to przewijamy petle do przodu
- temp = temp->nastepna;
- j++;
- }
- // wskaznik *temp wskazuje teraz na dostawce n-1
- // nadpisujemy wkaznik osoby n na dostawce n+1
- // bezpowrotnie tracimy dostawce n-ta
- // dodatkowo sprawdzamy czy aby nie jest to ostatni element
- // wtedy nalezy wyzerowac ostatni wskaznik
- if (temp->nastepna->nastepna==0)
- temp->nastepna = 0;
- // jezeli nie byl to ostatni element
- else
- temp->nastepna = temp->nastepna->nastepna;
- }
- }
- void lista2::usun_all2 ()
- {
- pierwsza=0;
- }
- int main()
- {
- lista *baza = new lista; //tworzymy liste
- lista2 *baza2 = new lista2;
- int wybor=-4,po;
- int id,nip,a,id1,id2,ilosc;
- string nazwa, nazwisko,av;
- while (true)
- {
- system("cls");
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
- cout<<"================================="<<endl<<"Lista dostawcow"<<endl<<endl;
- baza->wyswietl_liste();
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
- cout<<"================================="<<endl;
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
- cout<<"================================="<<endl<<"Lista towarow"<<endl<<endl;
- baza2->wyswietl_liste2();
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
- cout<<"================================="<<endl;
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
- cout<<" Menu"<<endl;
- cout<<"1 - dodaj dostawce"<<endl;
- cout<<"2 - usun dostawce"<<endl;
- cout<<"3 - zapisz dostawcow do pliku"<<endl;
- cout<<"4 - wczytaj z pliku dostawcow"<<endl;
- cout<<"5 - dodaj towar"<<endl;
- cout<<"6 - usun towar"<<endl;
- cout<<"7 - zapisz towary do pliku"<<endl;
- cout<<"8 - wczytaj z pliku towary"<<endl;
- cout<<"9 - stworz zamowienie"<<endl;
- cout<<"99 - exit"<<endl;
- cin>>wybor;
- getline(cin,av);
- switch(wybor)
- {
- case 1:
- {
- cout<<"nazwa: ";
- getline(cin,nazwa);
- //cout<<"Podaj nazwisko: ";
- //getline(cin,nazwisko);
- cout<<"Podaj nip: ";
- cin>>nip;
- baza->dodaj_dostawce(nazwa,nip);
- break;}
- case 2:
- cout<<"Podaj id dostawcy do usuniecia: ";
- cin>>id;
- baza->usun_dostawce(id);
- break;
- case 3:
- baza->zapisz_do_pliku();
- break;
- case 4:
- baza->usun_all();
- baza->wczytaj();
- break;
- case 5:
- {
- cout<<"Podaj nazwe: ";
- getline(cin,nazwa);
- cout<<"Podaj nazwe cd.: ";
- getline(cin,nazwisko);
- cout<<"Podaj ilosc: ";
- cin>>ilosc;
- baza2->dodaj_towar(nazwa,nazwisko,ilosc);
- getch();getch();
- break;}
- case 6:
- cout<<"Podaj id towaru do usuniecia: ";
- cin>>id;
- baza2->usun_towar(id);
- break;
- case 7:
- baza2->zapisz_do_pliku2();
- case 8:
- baza2->usun_all2();
- baza2->wczytaj2();
- break;
- case 9:
- cout<<"Podaj id dostawcy: ";
- cin>>id1;
- cout<<"Podaj id towaru: ";
- cin>>id2;
- baza->zapisz_do_pliku3(id1);
- dostawcy_txt.open("zamowienie.txt",ios::out|ios::app);
- dostawcy_txt<<"\n\n===Towary==="<<endl;
- dostawcy_txt.close();
- baza2->zapisz_do_pliku4(id2);
- cout<<"Pomyślnie stworzono zamowienie!"<<endl;
- while(TRUE)
- {
- cout<<"Czy chcesz dodac kolejny towar?(0-nie;1-tak) ";
- cin>>po;
- if(po==1)
- {
- cout<<"Podaj id towaru: ";
- cin>>id2;
- dostawcy_txt.open("zamowienie.txt",ios::out|ios::app);
- //dostawcy_txt<<"\n\n===Towary==="<<endl;
- dostawcy_txt.close();
- baza2->zapisz_do_pliku4(id2);
- cout<<"Pomyślnie stworzono zamowienie!"<<endl;
- }
- else
- break;
- }
- break;
- case 99:
- delete (baza);
- exit(0);
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement