Hej, kompletnie nie rozumiem co jest nie tak, napisałem program do zapisywania bazy danych. Dodawanie osoby działa bez problemu, ale funkcja import działa nie poprawnie. Wczytuje jedynie numer pracownika i tylko pierwszą cyfrę.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class Pracownik
{
int numer;
string imie;
string nazwisko;
string specializacja;
string data_ur;
string pesel;
public:
void add_worker()
{
cout<<"DODAWANIE PRACOWNIKA:"<<endl;
cout<<"Podaj imie: ";
cin>>imie;
cout<<"Podaj nazwisko: ";
cin>>nazwisko;
cout<<"Podaj specializacje: ";
cin>>specializacja;system("CLS");
cout<<"Podaj date urodzenia: ";
cin.ignore();
getline(cin, data_ur);
cout<<"Podaj pesel: ";
cin>>pesel;
}
void show_worker()
{
cout<<endl<<"DANE PRACOWNIKA NUMER: "<<numer<<endl;
cout<<imie<<endl;
cout<<nazwisko<<endl;
cout<<specializacja<<endl;
cout<<data_ur<<endl;
cout<<pesel<<endl<<endl;
}
void add_nr()
{
string linia;
fstream plik;
plik.open("numer.txt", ios::in);
if(plik.good()==false){cout<<"NIE MOZNA OTWORZYC PLIKU"; exit(0);}
getline(plik, linia);
numer=atoi(linia.c_str())+1;
plik.close();
plik.open("numer.txt", ios::out);
plik<<numer;
plik.close();
}
void save_worker()
{
fstream plik;
plik.open("baza.txt", ios::out | ios::app);
plik<<numer<<endl;
plik<<imie<<endl;
plik<<nazwisko<<endl;
plik<<specializacja<<endl;
plik<<data_ur<<endl;
plik<<pesel<<endl;
plik.close();
}
void import_worker()
{
int nr_linii=1;
string linia;
fstream plik;
plik.open("baza.txt", ios::in);
if(plik.good()==false){cout<<"NIE MOZNA OTWORZYC PLIKU"; exit(0);}
while(getline(plik, linia))
{
switch(nr_linii)
{
case 1: nr_linii=atoi(linia.c_str()); break;
case 2: imie=linia; break;
case 3: nazwisko=linia; break;
case 4: specializacja=linia; break;
case 5: data_ur=linia; break;
case 6: pesel=linia; break;
}
nr_linii++;
}
plik.close();
}
};
Wyrzuca jedynie NUMER PRACOWNIKA: 1 oraz 5 enterów.