Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- #include<fstream>
- #include <conio.h>
- using namespace std;
- class Element
- {
- public:
- Element *nast,*pop;
- int ID;
- Element(int id){
- ID=id;
- nast=NULL;
- pop=NULL;
- }
- void drukuj(){
- cout << "ID:";
- }
- virtual void intro(){
- cout << "Element z id:" << ID <<endl;
- }
- //klasę pochodną zwierzę zawierającą pola imię i wiek
- virtual string GetName(){
- return "Element";
- }
- virtual int getWiek(){
- return 0;
- }
- virtual void zapiszDoPliku(ofstream *plik){
- (*plik) << "Element"<<endl;
- (*plik) << "ID: " << ID <<endl;
- }
- };
- class zwierze :public Element
- {
- public:
- string imie;
- int wiek;
- zwierze(string N,int W,int I): Element(I){
- imie=N;
- wiek=W;
- }
- string getType(){
- return "Zwierze:";
- }
- string getImie(){
- return imie;
- }
- int getWiek(){
- return wiek;
- }
- void intro(){
- cout << getType() << " " << imie << ", wiek: " << wiek << "\n";
- }
- void zapiszDoPliku(ofstream *plik) {
- (*plik) << getType()<<endl;
- (*plik) << "ID: " << ID << " Imie: " << imie << " Wiek: " << wiek <<endl;
- }
- };
- class Kot: public zwierze{
- public:
- Kot(string N,int W,int I):zwierze(N,W,I){}
- string getType(){
- return "Kot";
- }
- };
- class Pies: public zwierze{
- public:
- Pies(string N,int W,int I):zwierze(N,W,I){}
- string getType(){
- return "Pies";
- }
- };
- class Lista
- {
- public:
- Element *pierwszy, *ostatni;
- int ilosc;
- Lista()
- {
- pierwszy=NULL;
- ostatni=NULL;
- ilosc=0;
- }
- void drukuj()
- {
- Element * temp =pierwszy;
- while (temp) /*temp!=NULL*/
- {
- temp->intro();
- temp=temp->nast;
- }
- }
- Element *Utworz(int id) {
- return new Element(id);
- }
- void dodaj_na_koniec(Element * E) //to mam zamienic
- {
- if (pierwszy==NULL)
- {
- pierwszy=E;
- ostatni=E;
- }
- else
- {
- ostatni->nast = E; /* za ostatnim stoi nowy*/
- E->pop=ostatni; /*przed nowym ma stac ostatni */
- ostatni =E; /* ostatni element staje sie przedostatnim,
- a role ostatniego spelnia nowy*/
- }
- ilosc++;
- }
- Element *Utworz(int id) {
- return new Element(id);
- }
- };
- class zoo:public Lista{
- public:
- void dodajZwierze(){
- int flag=1;
- while(flag){
- string typ;
- cout<<"Jakie zwierze dodajesz?(kot,pies)";
- cin>>typ;
- if(typ=="kot"){
- dodaj_na_koniec(UtworzKota());
- flag=0;
- }
- else if( typ == "pies" ){
- dodaj_na_koniec( UtworzPsa() );
- flag = 0;
- }
- else{
- cout << "Nieprawidlowy typ zwierzecia \n";
- }
- }
- }
- void wyszukajPoImieniu(){
- string imie;
- cout << "Podaj imie: ";
- cin >> imie;
- Element *Temp = pierwszy;
- while( Temp ) {
- if( Temp->getImie() == imie ){
- Temp->intro();
- }
- Temp = Temp->nast;
- }
- }
- void wyszukajPoWieku(){
- int wiek;
- cout << "Podaj wiek: ";
- cin >> wiek;
- Element *Temp = pierwszy;
- while( Temp ) {
- if( Temp->getWiek() == wiek ){
- Temp->intro();
- }
- Temp = Temp->nast;
- }
- }
- void wyszukajPoImieniuIWieku(){
- string imie;
- cout << "Podaj imie: ";
- cin >> imie;
- int wiek;
- cout << "Podaj wiek: ";
- cin >> wiek;
- Element *Temp = pierwszy;
- while( Temp ) {
- if( Temp->getWiek() == wiek && Temp->getImie() == imie ){
- Temp->intro();
- }
- Temp = Temp->nast;
- }
- }
- Kot *UtworzKota() {
- string imie;
- int wiek;
- cout << "Podaj imie: ";
- cin >> imie;
- cout << "Podaj wiek: ";
- cin >> wiek;
- return new Kot(imie, wiek, ilosc);
- }
- Pies *UtworzPsa() {
- string imie;
- int wiek;
- cout << "Podaj imie: ";
- cin >> imie;
- cout << "Podaj wiek: ";
- cin >> wiek;
- return new Pies(imie, wiek, ilosc);
- }
- void zapisz_do_pliku()
- {
- ofstream plik;
- plik.open("lista1.txt");
- if (!plik.good()) {cout << "blad otwarcia";exit(10);}
- plik << "zoo " <<ilosc<<endl;
- Element * temp=pierwszy;
- while(temp)
- {
- temp->zapisz_do_pliku(&plik);
- temp=temp->get_nast();
- }
- plik.close();
- }
- void odczyt_z_pliku()
- {
- ifstream plik;
- plik.open("lista1.txt");
- if (!plik.good()) {cout << "blad otwarcia 1";exit(10);}
- ///Lista ilosc
- string text;
- plik >> text;
- if (text!="zoo") {cout << "blad otwarcia 2"<<text;exit(10);}
- int I;
- plik >> I;///ilosc
- for (int i =0;i<I;i++)
- {
- plik >> text;
- string IdNaglowek, ImieNaglowek, WiekNaglowek;
- string imie;
- int id, wiek;
- if( text == "Kot" || text == "Pies" ){
- plik >> IdNaglowek;
- if( IdNaglowek != "ID:" ){ cout << "blad otwarcia 3 "<<IdNaglowek;exit(10); }
- plik >> id;
- plik >> ImieNaglowek;
- if( ImieNaglowek != "Imie:" ){ cout << "blad otwarcia 4 "<<ImieNaglowek;exit(10); }
- plik >> imie;
- plik >> WiekNaglowek;
- if( WiekNaglowek != "Wiek:" ){ cout << "blad otwarcia 5 "<<WiekNaglowek;exit(10); }
- plik >> wiek;
- if( text == "Kot" ){
- Kot *kot = new Kot(imie, wiek, id);
- dodaj_na_koniec(kot);
- }
- if( text == "Pies" ){
- Pies *pies = new Pies(imie, wiek, id);
- dodaj_na_koniec(pies);
- }
- }
- else{
- cout << "blad odczytu";
- exit(10);
- }
- }
- plik.close();
- }
- void menu(int numer){
- if( numer == 0 ){
- cout << "> 1. Zapisz do zoo.txt\n";
- }else{
- cout << "1. Zapisz do zoo.txt\n";
- }
- if( numer == 1 ){
- cout << "> 2. Odczytaj z zoo.txt\n";
- }else{
- cout << "2. Odczytaj z zoo.txt\n";
- }
- if( numer == 2 ){
- cout << "> 3. Dodaj zwierzaka\n";
- }else{
- cout << "3. Dodaj zwierzaka\n";
- }
- if( numer == 3 ){
- cout << "> 4. Wyszukaj po imieniu\n";
- }else{
- cout << "4. Wyszukaj po imieniu\n";
- }
- if( numer == 4 ){
- cout << "> 5. Wyszukaj po wieku\n";
- }else{
- cout << "5. Wyszukaj po wieku\n";
- }
- if( numer == 5 ){
- cout << "> 6. Wyszukaj po imieniu i wieku\n";
- }else{
- cout << "6. Wyszukaj po imieniu i wieku\n";
- }
- if( numer == 6 ){
- cout << "> 7. Koniec\n";
- }else{
- cout << "7. Koniec\n";
- }
- }
- };
- int main()
- {
- zoo *Zo = new zoo();
- int menuOn = 1;
- int menuNumer = 0;
- while (menuOn){
- system("cls");
- menu(menuNumer);
- char c;
- c=getch();
- if( c == 80 ){
- //down
- if( menuNumer == 6 ){
- menuNumer = 0;
- }else{
- menuNumer = menuNumer + 1;
- }
- }
- if( c == 72 ){
- //up
- if( menuNumer == 0 ){
- menuNumer = 6;
- }else{
- menuNumer = menuNumer - 1;
- }
- }
- if( c == '\r' ){
- system("cls");
- if( menuNumer == 0 ) {
- Zo->zapiszDoPliku();
- int secondMenu = 1;
- while( secondMenu ){
- cout << "Zapisano! [potwierdz enterem]";
- char c;
- c=getch();
- if( c == '\r' ) secondMenu = 0;
- }
- }
- if( menuNumer == 1 ){
- Zo->odczytajZPliku();
- Zo->Drukuj();
- int secondMenu = 1;
- while( secondMenu ){
- cout << "\n[potwierdz enterem]";
- char c;
- c=getch();
- if( c == '\r' ) secondMenu = 0;
- }
- }
- if( menuNumer == 2 ){
- Zo->dodajZwierze();
- }
- if( menuNumer == 3 ){
- Zo->wyszukajPoImieniu();
- int secondMenu = 1;
- while( secondMenu ){
- cout << "\n[potwierdz enterem]";
- char c;
- c=getch();
- if( c == '\r' ) secondMenu = 0;
- }
- }
- if( menuNumer == 4 ){
- Zo->wyszukajPoWieku();
- int secondMenu = 1;
- while( secondMenu ){
- cout << "\n[potwierdz enterem]";
- char c;
- c=getch();
- if( c == '\r' ) secondMenu = 0;
- }
- }
- if( menuNumer == 5 ){
- Zo->wyszukajPoImieniuIWieku();
- int secondMenu = 1;
- while( secondMenu ){
- cout << "\n[potwierdz enterem]";
- char c;
- c=getch();
- if( c == '\r' ) secondMenu = 0;
- }
- }
- if( menuNumer == 6 ) exit(0);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement