Baza danych osobowych z zapisem do pliku
Kod był wyświetlany 4179 razy.
    /*
  Name: Baza danych osobowych z zapisem do pliku
  Copyright: GPL GNU
  Author: WJL
  Date: 12-05-09 23:01
  Description: 
  Baza danych osobowych z zapisem do pliku
*/

#include <iostream>
#include <string>
#include <fstream>

using namespace std;
int i;   

/*deklaracja struktury kartoteka*/
struct kartoteka
{
  string imie;
  string nazwisko;
  string data_urodzenia;
  string nr_albumu;
};       
kartoteka dane[500]; 

/*deklaracja funkcji*/
void Dodaj(); 
void Zapisz();
void Modyfikacja();       
void Baza();
void Usun();

/*program główny*/

int main()
{
int k;
short x;

cout<<"\n\n\tWczytanie danych ";
cout<<"\n\n\t1 - TAK wczytanie danych z istniejacego pliku baza.txt";
cout<<"\n\t2 - NIE - utworzenie pustego pliku ";
cout<<"\n\n\tPodaj nr opcji: ";
cin>>x;
if(x==1)
{
ifstream plik("baza.txt", ios::in);
plik >> i;
if (!plik)                        
        {
         cout << "\n\n\t\tBrak pliku - program zostanie zakonczony";
         cout<<"\n\n\t\t";
         system("pause"); 
         return 0;
         }
   else
   {      
  int j = 0;
  do
  {
    plik >>dane[j].imie;
    plik >>dane[j].nazwisko;
    plik >>dane[j].data_urodzenia;
    plik >>dane[j].nr_albumu;        
    j++;
  } 
  while( !plik.eof() );
  cout <<"\n\n\tWczytano dane. Nacisnij ENTER!";
  getchar(); 
  getchar(); 
  } }
  
  system("cls");
  cout << "\n\n\t\t";

/*menu programu - umożliwia wielokrotne wykonywanie operacji w bazie danych*/
  do
  {
    cout <<"\n\t\t   Obecnie w bazie znajduja sie "<<i<<" rekordow\n\n";
    cout <<"\n\t\t1. Dodaj nowe dane\n";
    cout <<"\n\t\t2. Zapis danych\n";
    cout <<"\n\t\t3. Edycja danych\n";
    cout <<"\n\t\t4. Odtworz zawartosc bazy\n";
    cout <<"\n\t\t5. Usun wpis z bazy\n";
    cout <<"\n\n\n\t\t0. zakonczenie programu ";
  
    /*---wybór opcji---*/
    
    cout<<"\n\n\t\tOpcja nr: ";
    cin>>k;
    if(k>5 || k<0)
    { 
      system("cls");
      cout<<"\n\n\n\t\tBlad danych !!!";
      cout<<"\n\n\n\t\tDzialanie programu zakonczono!!!\n\n";
      system ("pause");
      return 0;
    };
   
    switch (k)
    {
      case 0: cout<<"Dzialanie programu zakonczono\n ";
              system("pause");
              return 0;
              break;
      case 1: Dodaj();
              break;
      case 2: Zapisz();
              break;
      case 3: Modyfikacja();
              break;
      case 4: Baza();
              break;
      case 5: Usun();
              break;
    }
    
    system("cls");    
  } 
  while (k!= 0);
   
   cin.ignore();
   getchar();
   return 0;  
}   

/*zakonczenie programu głównego*/

/*Funkcja - wczytanie danych z istniejącego pliku baza.txt */

void Wczytaj()
{
ifstream plik("baza.txt", ios::in);
plik >> i;
if (!plik)                        
        {
         cout << "\n\n\t\tBrak pliku - program zostanie zakonczony";
         cout<<"\n\n\t\t";
         system("pause"); 
         }
   else
   {      
  int j = 0;
  do
  {
    plik >>dane[j].imie;
    plik >>dane[j].nazwisko;
    plik >>dane[j].data_urodzenia;
    plik >>dane[j].nr_albumu;        
    j++;
  } 
  while( !plik.eof() );
  cout <<"\n\n\tWczytano dane. Nacisnij ENTER!";
  getchar(); 
  getchar(); 
  } }

/* Dodanie nowego rekordu do bazy danych*/
void Dodaj()
{
  system("cls");
  cout <<"\n\n\t\tPodaj imie : ";       
  cin >>dane[i].imie;
  cout <<"\n\n\t\tPodaj nazwisko: ";
  cin >>dane[i].nazwisko;
  cout <<"\n\n\t\tPodaj date urodzenia: ";
  cin >>dane[i].data_urodzenia;
  cout <<"\n\n\t\tPodaj nr ewidencyjny: ";
  cin >>dane[i].nr_albumu;
  i++;
  cin.ignore();
  cout <<"\n\n\t\tNacisnij dowolny klawisz";
  getchar();
}

/*zapisanie rekordu do pliku tekstowego */
void Zapisz()
{
  ofstream plik("baza.txt",ios::trunc);
  plik <<i<<"\n";

  for (int j = 0; j < i; j++)
  {
    plik <<dane[j].imie<<"\n";
    plik <<dane[j].nazwisko<<"\n";
    plik <<dane[j].data_urodzenia<<"\n";
    plik <<dane[j].nr_albumu<<"\n";
  }
  system("cls");
  cout <<"\n\n\t\tDane zostaly zapisane! \n\n\t\t";
  system("pause");
    
}

/*Funkcja wyświetla zawartość bazy danych*/
void Baza()
{
  int j;
  system("cls");
  if ( i != 0)                             
  {
    cout<<"\n\n\n";
    for (j = 0; j < i; j++)   
    {                              
      cout <<"*-----------------------------------------------------------------------*"<<endl;
      cout <<"x     Rekord nr "<<j+1<<": \n";
      cout <<"x     Imie: "<<dane[j].imie<<"\n";
      cout <<"x     Nazwisko: "<<dane[j].nazwisko<<"\n";
      cout <<"x     Data urodzenia: "<<dane[j].data_urodzenia<<"\n";
      cout <<"x     Nr_albumu: "<<dane[j].nr_albumu<<"\n";
      cout <<"x";
      cout <<"------------------------------------------------------------------------- "<<endl;
    }
  }
  else
  cout <<"\n\nNie ma zadanego rekordu w bazie\n\n\t\t";
  system("pause");
}

/*Funkcja umozliwia zmiane zawartosci wybranego rekordu*/

void Modyfikacja()
{
  
  int nr;
  if (i != 0)
  {
    system("cls");
    cout <<"\n\n\t\tPodaj numer rekordu przeznaczonego do edycji: ";
    cin >>nr;
    nr=nr - 1;
    cin.ignore();

    if (nr<0 || nr > i)
    {
     system("cls");
     cout <<"\n\n\t\tNie mozna wykonac operacji - brak danych\n\n\t\t";
     system("pause");
    }
    else
    {
     system("cls");
     cout <<"\n\n\t\tPodaj imie :";
     cin>>dane[nr].imie;                                                                      
     cout <<"\n\n\t\tPodaj nazwisko:";
     cin>>dane[nr].nazwisko;
     cout <<"\n\n\t\tDate urodzenia:";
     cin>>dane[nr].data_urodzenia;
     cout <<"\n\n\t\tPodaj nr albumu: \n";
     cin>>dane[nr].nr_albumu;
     cout <<"\n\n\t\tZmiane danych wykonano - rekord "<<nr +1 <<" został zmieniony!\n\n\t\t";
     cin.ignore();
     getchar();
     Zapisz();
      }
     }
  else
  {
    system("cls");
    cout <<"\n\n\t\tNie ma rekordow w bazie. Nacisnij dowolny klawisz";
    system("pause");
  }
}

void Usun()
{
  int nr;

 
    cout <<"\n\n\t\tPodaj numer rekordu ktory chcesz usunac: ";
    cin >>nr;
    nr=nr-1;
    cin.ignore();
 
     if (i != 0)
     {
    if (nr > i)
    {
    cout <<"\n\n\t\tOperacja nie moze byc wykonana brak rekordu o takim numerze";
    getchar();
    }
    else
    {
      for (short k = nr; k < i; k++)    
      {
        dane[k-1].imie = dane[k].imie;   //polega na zastapieniu elementu , elementem nastepnym,  na nastepnie i--
        dane[k-1].nazwisko = dane[k].nazwisko;
        dane[k-1].data_urodzenia = dane[k].data_urodzenia;
        dane[k-1].nr_albumu = dane[k].nr_albumu;
      }
      i--;
      
      system("cls");
      cout <<"\n\n\tOperacja zakonczyla sie sukcesem! rekord o numerze "<<nr<<" zostal usuniety!\n\n";
      getchar();
      Zapisz();
    }
  }
  else
  {
    cout <<"\n\n\t\tNie ma rekordu w bazie!! Wcisnij ENTER!";
    getchar();
    
  }
}    
Pobierz plik tekstowy
Załączniki
Administrator WJL
PHP&SQL coded by NOVA-IT