Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string>
- #include<fstream>
- 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"<<endl;
- else{
- cout<<"podaj nr id osoby ktora chcesz usunac:"<<endl;
- cin>>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"<<endl;
- }
- }
- }
- void szukaj(string nazw, osoba *lista)
- {
- osoba *p = lista;
- bool sztuka = false;
- if (p->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"<<endl;
- cin >> 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 <<endl<< "imie " << endl;
- cin >> 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<<endl << "edycja przebiegla pomyslnie" << endl;
- powrot();
- }
- }
- void sortuj(osoba *lista)
- {
- osoba *p = lista, *q =new osoba,*z=new osoba;
- int ilep = 0;
- string test;
- while (p->next != NULL)
- {
- p = p->next;
- ilep++;
- }
- p = lista;
- for (int i = 0; i <= ilep; i++)
- {
- test = p->next->nazwisko;
- if (p->nazwisko.compare(test) > 0)
- {
- q = p;
- z = p->next;
- 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;
- }
- }
- void wyswietl(osoba *lista)
- {
- osoba *p = lista, *q = lista;
- bool check = false;
- system("cls");
- sortuj(p);
- while (p != NULL)
- {
- if (p->id == 0)
- p = p->next;
- else{
- if (!p->imie.empty())
- {
- cout << p->imie << " " << p->nazwisko;
- cout << " " << p->id << endl;
- getchar();
- }
- 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;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment