home *** CD-ROM | disk | FTP | other *** search
- #include <iostream.h>
- #include <fstream.h>
-
- //zmienne globalne
- //ulatwia to znacznie napisanie
- //procedur Load i Save
- const int MAX=256; //ile max wpisow w bazie
-
- char imie[MAX][64];
- char adres[MAX][64];
- char tel[MAX][16];
-
- void Load(void)
- {
- int i=0;
- ifstream plik;
-
- plik.open("baza.txt");
-
- do {
-
- if (plik.fail())
- {
- plik.close(); return;
- }
-
- if (!plik.eof())
- {
- plik.getline(imie[i], sizeof(imie[i]), '#');
- plik.getline(adres[i], sizeof(adres[i]), '#');
- plik.getline(tel[i], sizeof(tel[i]), '#');
- plik.ignore();
- i++;
- if (i == MAX) break; //zakoncz while - brak miejsc
- }
- } while (!plik.eof()); //az do konca pliku
-
- plik.close();
- }
-
- void Save(void)
- {
- int i;
- ofstream plik;
-
- plik.open("baza.txt");
- if (plik.fail())
- {
- plik.close();
- cout << "Wystapil blad pliku!" << endl;
- exit(1);
- }
-
- for (i=0; i<MAX; i++)
- if (imie[i][0] != NULL)
- {
- plik << imie[i] << '#'
- << adres[i] << '#'
- << tel[i] << '#' << endl;
- }
-
- plik.close();
- }
-
- void main(void)
- {
- int i, z=0;
- char cmd[4];
- char temp[MAX];
-
- //ustaw jako puste
- //zabezpieczenie przez smieciami
- //w pamieci RAM
- for (i=0; i<MAX; i++)
- {
- imie[i][0] = NULL;
- adres[i][0] = NULL;
- tel[i][0] = NULL;
- }
-
- //wczytaj z dysku istniejaca baze
- //jesli nie ma pliku, to pusta baza
- Load();
-
- //policz ile zajetych miejsc
- for (i=0; i<MAX; i++)
- if (imie[i][0] != NULL) z++;
-
- do {
- cout << "Prosta baza teleadresowa." << endl
- << "Wolnych wpisow: " << MAX - z << endl << endl
- << "1. Dodaj nowy wpis" << endl
- << "2. Usun istniejacy wpis" << endl
- << "3. Pokaz zawartosc bazy" << endl
- << "0. Koniec pracy" << endl << endl
- << "? ";
- cin.get(cmd, sizeof(cmd));
- cin.ignore();
-
- switch (cmd[0])
- {
- case '1':
- //mamy wolne?
-
- if (z != MAX)
- {
- //znajdz pierwszy pusty
- for (i=0; i<MAX; i++)
- if (imie[i][0] == NULL)
- {
- cout << "Podaj imie: ";
- cin.get(imie[i], sizeof(imie[i]));
- cin.ignore();
-
- cout << "Podaj adres: ";
- cin.get(adres[i], sizeof(adres[i]));
- cin.ignore();
-
- cout << "Podaj numer telefonu: ";
- cin.get(tel[i], sizeof(tel[i]));
- cin.ignore();
-
- z++; //zwieksz liczbe zajetych
- break; //przerwij wykonywanie petli for
- }
- }
- else
- {
- cout << "Brak wolnych wpisow!!!" << endl;
- }
- break;
-
- case '2':
- cout << "Usuwanie - podaj imie: ";
- cin.get(temp, sizeof(temp));
- cin.ignore();
- for (i=0; i<MAX; i++)
- if (!strcmp(imie[i], temp))
- {
- imie[i][0] = NULL;
- adres[i][0] = NULL;
- tel[i][0] = NULL;
- z--;
- cout << "Usunieto wpis!" << endl;
- break; //for
- }
- if (i == MAX) cout << "Nie znaleziono takiego wpisu!" << endl;
- break;
-
- case '3':
- for (i=0; i<MAX; i++)
- {
- if (imie[i][0] != NULL)
- cout << imie[i] << "\t"
- << adres[i] << "\t"
- << tel[i] << endl;
- }
- cout << endl;
- break;
-
- case '0':
- break;
- }
-
- } while (cmd[0] != '0');
-
- Save();
- }
-