1. W wewnętrznej pętli wczytujesz tylko jedną linię i przypisujesz ją do wszystkich zmiennych (imie, nazwisko, numer)
2. Nie potrzebujesz tablic. Nic nie wnoszą, tylko zamieszanie robią
Wprowadziłem kilka poprawek
void LogowanieKlienta()
{
system("cls");
while (1)
{
cout << "Witamy na zakupach online" << endl;
cout << "Dostepne opcje:" << endl;
cout << "1. Zaloguj" << endl;
cout << "2. Stworz konto" << endl;
char o = _getch();
switch (o)
{
case '1': {
cout << "Prosze podac swoj numer klienta: ";
int id;
cin >> id;
fstream klienci;
klienci.open("klienci.txt", ios::in);
while (!klienci.eof())
{
string imie, nazwisko;
int numer;
getline(klienci, imie);
getline(klienci, nazwisko);
cin >> numer;
if (cin.bad()) // sprawdzamy czy nie było błędu odczytu
break;
cin.ignore(); // usuwamy koniec lini ze strumienia
system("PAUSE");
if (id == numer)
{
klienci.close();
cout << "Witamy " << imie << " " << nazwisko << ". Zapraszamy na zakupy" << endl;
}
}
cout << "Takiego numeru nie ma w systemie. Wprowadz numer klienta ponownie lub zaloz nowe konto." << endl;
PandC();
klienci.close();
} break;
case '2':
cout << "2" << endl;
break;
default:
Default();
break; // ten break jest niepotrzebny
}
}
}