#include #include #include #include #include #include using namespace std; typedef struct osoba { long unsigned int id; string imie; string nazwisko; string data; string ulica; string miasto; string inne; struct osoba *next, *prev; } osoba; osoba *prime = new osoba; long unsigned int ziemniak = 0; void menu(); void dodaj(osoba *lista); void usun(string naziwsko); void szukaj(string, osoba); void sortuj(osoba); void wyswietl(osoba *lista); void modyfikuj(int ,osoba); void zapisz(osoba *lista); void odczyt(string gg); void powrot(); int main() { prime->next = NULL; prime->prev = NULL; menu(); return 0; } void powrot() { cout << endl << "wcisnij enter by powrocic do menu"; getchar(); getchar(); system("cls"); menu(); } void dodaj(osoba *lista) { osoba *p, *nowy; p = lista; while (p->next != NULL) p = p->next; nowy = new osoba; nowy->id = ziemniak+1; nowy->imie = prime->imie; nowy->nazwisko = prime->nazwisko; nowy->data = prime->data; nowy->ulica = prime->ulica; nowy->miasto = prime->miasto; nowy->inne = prime->inne; nowy->prev = p; nowy->next = NULL; p->next = nowy; ziemniak++; } void usun(string nazw,osoba *lista) { osoba *p = lista,*pomoc=new osoba; bool si = true,jest=false,szuka=false; int idd; while (p!= NULL) { if (p->nazwisko == nazw) { cout << p->imie << " " << p->nazwisko << " " << p->data << " " << p->ulica << " " << p->miasto << " " << p->inne <<" "<< p->id << endl; szuka = true; } p = p->next; } if(szuka==false) cout<<"nie znaleziono osoby o podanym nazwisku"<>idd; p = lista; while (si) { if (p->id == idd) { pomoc=p; p=pomoc->prev; p->next=pomoc->next; p=p->next; p->prev=pomoc->prev; delete pomoc; si = false; jest = true; } else p = p->next; } if (jest == false){ cout << "nie znaleziono osoby o podanym id:" << idd; powrot(); } else{ powrot(); cout<<"usunieto"<id == 0) p = p->next; while (p!= NULL) { if (p->nazwisko == nazw) { cout << p->imie << " " << p->nazwisko << " " << p->data << " " << p->ulica << " " << p->miasto << " " << p->inne <<" "<< p->id << endl; sztuka = true; } p = p->next; } if (sztuka == false) { int co_teraz=0; cout << "nie znaleziono osoby o podanym naziwsku, wcisnij:\n 1- by powrocic do menu\n 2 - by szukac dalej" << endl; cin >> co_teraz; if (co_teraz == 1) powrot(); if (co_teraz == 2) { string jeszcze_raz; cout << "podaj naziwsko sooby do wyszukania:"; cin >> jeszcze_raz; szukaj(jeszcze_raz, prime); } while (co_teraz != 1 || co_teraz != 2) { cout << endl << "podano zla wartosc, wpisz liczbe jeszcze raz"<> co_teraz; } } } void zapisz(osoba *lista) { system("cls"); fstream plik; string gg; osoba *p = lista, *q = lista; bool check = false; cout << "podaj nazwe pliku" << endl; cin >> gg; gg += ".txt"; if (p->id == 0) p = p->next; plik.open(gg.c_str(), ios::out); while (p != NULL) { if (check == false) { check = true; while (q->next != NULL) q = q->next; if (p->id == q->id) p = p->next; } else{ plik << p->imie << ";"; plik << p->nazwisko << ";"; plik << p->data << ";"; plik << p->ulica << ";"; plik << p->miasto << ";"; plik << p->inne << "\n"; p = p->next; } } cout << endl << "zapisano"; plik.close(); powrot(); } void odczyt(string gg, osoba *lista) { osoba *p = lista, *nowy; while (p->next != NULL) p = p->next; string ggg = gg + ".txt"; fstream plik; plik.open(ggg.c_str(), ios::in); while (!plik.eof()) { nowy = new osoba; getline(plik, nowy->imie, ';'); getline(plik, nowy->nazwisko, ';'); getline(plik, nowy->data, ';'); getline(plik, nowy->ulica, ';'); getline(plik, nowy->miasto, ';'); getline(plik, nowy->inne); p->id = ziemniak; nowy->prev = p; nowy->next = NULL; p->next = nowy; cout << nowy->imie; cout << " " << nowy->nazwisko; p = p->next; ziemniak++; } cout << endl << "wczytano"; ziemniak--;//o 1 za duzo plik.close(); powrot(); } void modyfikuj(int id ,osoba *lista) { osoba *p = lista,*nowy=new osoba; bool si = false; while (p->next != NULL) { if (p->id == 0) p = p->next; if (p->id != id) p = p->next; else { cout << p->imie << " " << p->nazwisko << " " << p->data << " " << p->ulica << " " << p->miasto << " " << p->inne<<" " << p->id << endl; cout <> p->imie; cout << "nazwisko " << endl; cin >> p->nazwisko; cout << "data " << endl; cin >> p->data; cout << "ulica " << endl; cin >> p->ulica; cout << "miasto " << endl; cin >> p->miasto; cout << "inne " << endl; cin >> prime->inne; si = true; break; } } if (si == false) { cout << "brak osoby o takim id" << endl; powrot(); } if (si==true) { cout<next != NULL) p = p->next; p = p->prev; ilep = p->id; p = lista; if (p->id == 0) p = p->next; for (int i = 0; i <= ilep - 1; i++) { test = p->next->nazwisko; if (p->nazwisko > test) { q = p; z = p->next; p->id = z->id; p->imie = z->imie; p->nazwisko = z->nazwisko; p->ulica = z->ulica; p->miasto = z->miasto; p->inne = z->inne; p->data = z->data; p = p->next; p->imie = q->imie; p->nazwisko = q->nazwisko; p->ulica = q->ulica; p->miasto = q->miasto; p->inne = q->inne; p->data = q->data; } else p = p->next; } while (p->prev != NULL) p = p->prev; while (p != NULL) { if (p->id == 0) p = p->next; else{ if (!p->imie.empty()) { cout << p->imie << " " << p->nazwisko; cout << " " << p->id << endl; } p = p->next; } } getchar(); getchar(); powrot(); } void menu() { int menu; cout << "1. Dodaj osobe" << endl; cout << "2. Usun osobe" << endl; cout << "3. Wyszukaj osobe" << endl; cout << "4. Wyswietl baze nazwiskami" << endl; cout << "5. Modifikuj osobe po ID" << endl; cout << "6. Zapisz do pliku" << endl; cout << "7. Odczyt z pliku" << endl; cout << "8. Exit" << endl; cin >> menu; while (menu <= 0 || menu > 8) { if (menu <= 0 || menu > 8) { getchar(); cout << endl << "podaj wartosc z przedzialu od 1-8"; cin >> menu; } } switch (menu) { case 1: { system("cls"); cout << "imie " << endl; cin >> prime->imie; getchar(); cout << "nazwisko " << endl; cin >> prime->nazwisko; getchar(); cout << "data " << endl; cin >> prime->data; cout << "ulica " << endl; cin >> prime->ulica; cout << "miasto " << endl; cin >> prime->miasto; cout << "inne " << endl; cin >> prime->inne; prime->id = NULL; prime->prev = NULL; dodaj(prime); powrot(); } break; case 2:{ system("cls"); string nazwisko; cout << "podaj nazwisko osoby do usuniecia:" << endl; cin >> nazwisko; usun(nazwisko,prime); } ; break; case 3:{ system("cls"); string nazwisko; cout << "podaj nazwisko osoby do odszukania:" << endl; cin >> nazwisko; szukaj(nazwisko, prime); }; break; case 4:wyswietl(prime); break; case 5:{ int i; system("csl"); cout << "podaj nr id do modyfikacji:" << endl; cin >> i; modyfikuj(i, prime); }; break; case 6:zapisz(prime); break; case 7:{ system("cls"); string gg; cout << "podaj nazwe pliku do otrawcia" << endl; cin >> gg; odczyt(gg, prime); powrot(); }; break; case 8: break; } }