Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <cstdlib>
- #include <conio.h>
- #include <cstring>
- using namespace std;
- int ile;
- char wybor;
- fstream plik;
- string *imie, *nazwisko;
- int *nr_tel;
- int main()
- {
- for(;;)
- {
- // Wyswietlenie menu glownego
- cout << "Witaj!" << endl;
- cout << "1. Utworzenie nowego pliku." << endl;
- cout << "2. Zastapienie danych istniejacego pliku." << endl;
- cout << "3. Nadpisanie danych istniejacego pliku." << endl;
- cout << "4. Wyswietlenie danych istniejacego pliku." << endl;
- cout << "5. Wyjscie z programu."<<endl;
- cout << "Co chcesz zrobic? Wybierz wlasciwy numer: ";
- wybor=getch(); // Pobranie znaku z klawiatury
- switch(wybor)
- {
- case '1': // Wykonaj, jezeli uzytkownik chce utworzyc nowy plik
- {
- system("cls");
- cout << "Ile zestawow danych zawierajacych: ";
- cout << endl << "imie osoby,";
- cout << endl << "nazwisko osoby,";
- cout << endl << "numer telefonu osoby,";
- cout << endl << "chcesz podac?";
- cin >> ile; // Zapisanie do zmiennej 'ile' ilosci zestawow danych
- system("cls"); // Wyczyszczenie zawartosci ekranu
- imie = new string [ile]; // Utworzenie tablicy do imion
- nazwisko = new string [ile]; // Utworzenie tablicy do nazwisk
- nr_tel = new int [ile]; // Utworzenie tablicy do numerow telefonow
- for(int i=0; i<ile; i++) // Podanie danych
- {
- cout << "Podaj "<<i+1<<". imie: ";
- cin >> *imie;
- cout << "Podaj "<<i+1<<". nazwisko: ";
- cin >> *nazwisko;
- cout << "Podaj "<<i+1<<". numer telefonu: ";
- cin >> *nr_tel;
- imie++; nazwisko++; nr_tel++;
- system("cls"); // Wyczyszczenie ekranu po podaniu danych dla jednego zestawu
- }
- imie-=ile;
- nazwisko-=ile;
- nr_tel-=ile;
- plik.open("zestawy_danych.txt", ios::out); // Otworzenie pliku tekstowego
- for(int i=0; i<ile; i++) // Przekazanie danych z tablic do pliku
- {
- plik<<*imie<<endl;
- plik<<*nazwisko<<endl;
- plik<<*nr_tel<<endl;
- imie++; nazwisko++; nr_tel++;
- }
- plik.close(); // Zamkniecie pliku
- delete [] imie; delete [] nazwisko; delete [] nr_tel; // Zwolnienie pamieci
- break; // Przerwanie case'a '1'
- }
- case '2': // Wykonaj, jesli uzytkownik chce zastapic dane istniejacego pliku
- {
- plik.open("zestawy_danych.txt", ios::out);
- if(plik.good()==false)
- {
- cout << "Nie znaleziono istniejacego pliku. Byc moze jeszcze go nie stworzyles, badz usunales go z folderu.";
- plik.close();
- cout <<endl<<"Wcisnij ENTER, aby zakonczyc program.";
- cin.ignore();
- getchar();
- exit(0);
- }
- else
- {
- system("cls");
- cout << "Ile zestawow danych zawierajacych: ";
- cout << endl << "imie osoby,";
- cout << endl << "nazwisko osoby,";
- cout << endl << "numer telefonu osoby,";
- cout << endl << "chcesz podac?";
- cin >> ile; // Zapisanie do zmiennej 'ile' ilosci zestawow danych
- system("cls"); // Wyczyszczenie zawartosci ekranu
- imie = new string [ile]; // Utworzenie tablicy do imion
- nazwisko = new string [ile]; // Utworzenie tablicy do nazwisk
- nr_tel = new int [ile]; // Utworzenie tablicy do numerow telefonow
- for(int i=0; i<ile; i++) // Podanie danych
- {
- cout << "Podaj "<<i+1<<". imie: ";
- cin >> *imie;
- cout << "Podaj "<<i+1<<". nazwisko: ";
- cin >> *nazwisko;
- cout << "Podaj "<<i+1<<". numer telefonu: ";
- cin >> *nr_tel;
- imie++; nazwisko++; nr_tel++;
- system("cls"); // Wyczyszczenie ekranu po podaniu danych dla jednego zestawu
- }
- imie-=ile;
- nazwisko-=ile;
- nr_tel-=ile;
- for(int i=0; i<ile; i++) // Przekazanie danych z tablic do pliku
- {
- plik<<endl<<*imie<<endl;
- plik<<*nazwisko<<endl;
- plik<<*nr_tel<<endl;
- imie++; nazwisko++; nr_tel++;
- }
- plik.close(); // Zamkniecie pliku
- delete [] imie; delete [] nazwisko; delete [] nr_tel; // Zwolnienie pamieci
- }
- break;
- }
- case '3': // Wykonaj, jesli uzytkownik chce nadpisac dane
- {
- plik.open("zestawy_danych.txt", ios::out | ios::app);
- if(plik.good()==false)
- {
- cout << "Nie znaleziono istniejacego pliku. Byc moze jeszcze go nie stworzyles, badz usunales go z folderu.";
- plik.close();
- cout <<endl<<"Wcisnij ENTER, aby zakonczyc program.";
- cin.ignore();
- getchar();
- exit(0);
- }
- else
- {
- system("cls");
- cout << "Ile zestawow danych zawierajacych: ";
- cout << endl << "imie osoby,";
- cout << endl << "nazwisko osoby,";
- cout << endl << "numer telefonu osoby,";
- cout << endl << "chcesz dodac do istniejacego pliku?";
- cin >> ile; // Zapisanie do zmiennej 'ile' ilosci zestawow danych
- system("cls"); // Wyczyszczenie zawartosci ekranu
- imie = new string [ile]; // Utworzenie tablicy do imion
- nazwisko = new string [ile]; // Utworzenie tablicy do nazwisk
- nr_tel = new int [ile]; // Utworzenie tablicy do numerow telefonow
- for(int i=0; i<ile; i++) // Podanie danych
- {
- cout << "Podaj "<<i+1<<". imie: ";
- cin >> *imie;
- cout << "Podaj "<<i+1<<". nazwisko: ";
- cin >> *nazwisko;
- cout << "Podaj "<<i+1<<". numer telefonu: ";
- cin >> *nr_tel;
- imie++; nazwisko++; nr_tel++;
- system("cls"); // Wyczyszczenie ekranu po podaniu danych dla jednego zestawu
- }
- imie-=ile;
- nazwisko-=ile;
- nr_tel-=ile;
- for(int i=0; i<ile; i++) // Przekazanie danych z tablic do pliku
- {
- plik<<*imie<<endl;
- plik<<*nazwisko<<endl;
- plik<<*nr_tel<<endl;
- imie++; nazwisko++; nr_tel++;
- }
- plik.close(); // Zamkniecie pliku
- delete [] imie; delete [] nazwisko; delete [] nr_tel; // Zwolnienie pamieci
- }
- break;
- }
- case '4': // Wykonaj, jesli uzytkownik chce odczytac dane z pliku
- {
- plik.open("zestawy_danych.txt", ios::in); // Otwarcie pliku w trybie odczytu
- if(plik.good()==false) // Sprawdz, czy plik istnieje
- {
- cout << "Nie znaleziono istniejacego pliku. Byc moze jeszcze go nie stworzyles, badz usunales go z folderu.";
- plik.close();
- cout <<endl<<"Wcisnij ENTER, aby zakonczyc program.";
- cin.ignore();
- getchar();
- exit(0); // Wyjdz z programu
- }
- else // Wykonaj, jesli plik istnieje
- {
- int ilosc_linii; // Zmienna przechowujaca ilosc linii w pliku tekstowym
- string linia; // Zmienna przechowująca zawartość linii
- while(getline(plik, linia)) // Dokonaj inkrementacji zmiennej ilosc_linii, dopoki w pliku są linie
- {
- ilosc_linii++;
- }
- ile=ilosc_linii/3; // Zmienna okreslajaca wielkosc tablicy, czyli ilosc zestawow (jeden zestaw to trzy linie, zatem dzielimy ilosc linii przez 3)
- imie = new string [ile]; // Utworzenie tablicy do imion
- nazwisko = new string [ile]; // Utworzenie tablicy do nazwisk
- nr_tel = new int [ile]; // Utworzenie tablicy do numerow telefonow
- int nr_linii=1; // Zmienna przechowujaca numer linii
- plik.close();
- plik.open("zestawy_danych.txt", ios::in);
- while(getline(plik, linia))
- {
- switch(nr_linii)
- {
- case 1: *imie=linia; break;
- case 2: *nazwisko=linia; break;
- case 3: *nr_tel=atoi(linia.c_str()); break;
- }
- if(nr_linii==3) {nr_linii=0; imie++; nazwisko++; nr_tel++;} // Jesli odczytano linie trzecia, przyjmij numer kolejnej linii za 1
- nr_linii++; // i przestaw wskazniki o jedna 'szufladke' do przodu
- }
- imie-=ile; //
- nazwisko-=ile; // Przestaw wskazniki do ich oryginalnej pozycji
- nr_tel-=ile; //
- for(int i=0; i<ile; i++) // Wyswietl kolejno imie, nazwisko i numer telefonu i przestaw wskazniki do przodu
- {
- cout << endl << *imie;
- cout << endl << *nazwisko;
- cout << endl << *nr_tel;
- imie++; nazwisko++; nr_tel++;
- }
- plik.close(); // Zamknij plik
- delete [] imie; delete [] nazwisko; delete [] nr_tel; // Zwolnij pamiec
- }
- break;
- }
- case '5': exit(0); break;
- default: cout <<endl<< "Nie ma takiej opcji w menu."; break;
- }
- cin.ignore();
- cout << "Kliknij ENTER, aby przejsc dalej.";
- getchar();
- system("cls");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement